Skip to main content

PMCX - Python bindings for Monte Carlo eXtreme photon transport simulator

  • Copyright: (C) Matin Raayai Ardakani (2022-2023) <raayaiardakani.m at northeastern.edu>, Qianqian Fang (2019-2026) <q.fang at neu.edu>, Fan-Yu Yen (2023-2024) <yen.f at northeastern.edu>
  • License: GNU Public License V3 or later
  • Version: 0.8.1
  • URL: https://pypi.org/project/pmcx/
  • Github: https://github.com/fangq/mcx

Linux Python Module
MacOS Python Module
Windows Python Module

This module provides a Python binding for Monte Carlo eXtreme (MCX). For other binaries, including the standalone executable and the MATLAB bindings, see our website.

Monte Carlo eXtreme (MCX) is a fast photon transport simulation software for 3D heterogeneous turbid media. By taking advantage of the massively parallel threads and extremely low memory latency in a modern graphics processing unit (GPU), MCX is capable of performing Monte Carlo (MC) photon simulations at a blazing speed, typically hundreds to a thousand times faster than a fully optimized CPU-based MC implementation.

How to Install

Binary wheels with the CUDA simulator are available for Linux (x86_64) and Windows. On macOS, where CUDA is not available, pip installs a pure-python pmcx that only provides the utility functions (detweight, meanpath, loadmc2, mcxcreate etc.); to run simulations on a Mac, or on AMD/Intel GPUs, install pmcxcl, the OpenCL version, which uses these utilities; pmcx.mcxlab() also runs the simulation with pmcxcl when the CUDA module is not available.

Runtime Dependencies

  • NVIDIA GPU Driver: A CUDA-capable NVIDIA GPU and driver is required to run MCX. An up-to-date driver is recommended. The binary wheel distributed over pip runs on NVIDIA drivers with CUDA 10.2 support on Windows and CUDA 9.2 support on Linux, respectively. For more details on driver versions and their CUDA support, see the CUDA Release Notes. To download the latest driver for your system, see the NVIDIA Driver Download Page. You shouldn't need to have CUDA toolkit installed. MCX is built with the static CUDA runtime library.
  • Python: Python 3.6 and newer is required. Python 2 is not supported.
  • numpy: Used to pass/receive volumetric information to/from pmcx. To install, use either conda or pip package managers: pip install numpy or conda install numpy
  • (optional) jdata: Only needed to read/write JNIfTI output files. To install, use pip: pip install jdata on all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter using apt-get: sudo apt-get install python3-jdata. See https://pypi.org/project/jdata/ for more details.
  • (optional) bjdata: Only needed to read/write BJData/UBJSON files. To install, run pip install bjdata on all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter using apt-get: sudo apt-get install python3-bjdata. See https://pypi.org/project/bjdata/ for more details.
  • (optional) matplotlib: For plotting the results. To install, run either pip install matplotlib or conda install matplotlib

Build Instructions

Build Dependencies

  • Operating System: Windows and Linux are fully supported; For building MCX on macOS, OSX 10.13 (High Sierra) and older are highly recommended since 10.13 was the last version of macOS with NVIDIA CUDA support, and matching the CUDA compiler version with the C/C++ compiler shipped with Xcode is easier. Newer macOS versions can be used for building MCX, but need to have System Integrity Protection disabled prior to installing the CUDA toolkit due to the NVIDIA installer copying its payload under the /Developer directory under root.

  • NVIDIA CUDA Toolkit: CUDA 7.5 or newer is required. On macOS, 10.2 is the last available CUDA version. For details on how to install CUDA, see the CUDA Download Page. The NVIDIA GPU driver of the target system must support the selected CUDA toolkit.

  • Python Interpreter: Python 3.6 or above. The pip Python package manager and the wheel package (available via pip) are not required but recommended.

  • C/C++ Compiler: CUDA Toolkit supports only the following compilers:

    • GNU GCC for Linux-based distributions.
    • Microsoft Visual Studio C/C++ Compiler for Windows.
    • Apple Clang for macOS, available via Xcode. The last Xcode version supported by CUDA 10.2 is 10.3. If using an OSX version higher than 10.15 it can be downloaded and installed from Apple's Developer Website with an Apple ID. After installation, select the proper Xcode version from the commandline, and set the SDKROOT environment variable:
      sudo xcode-select -s /Applications/Xcode_10.3.app/Contents/Developer/
      export SDKROOT=/Applications/Xcode_10.3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
      

    Refer to each OS's online documentations for more in-depth information on how to install these compilers. Note that the version of the C/C++ compiler used must be supported by the CUDA toolkit version. If not, compilation will fail with an error notifying you of this problem. See the CUDA Installation Guides for more details.

  • OpenMP: The installed C/C++ Compiler should have support for OpenMP. GCC and Microsoft Visual Studio compiler support OpenMP out of the box. Apple Clang, however, requires manual installation of OpenMP libraries for Apple Clang. The easiest way to do this is via the Brew package manager, preferably after selecting the correct Xcode version:

    brew install libomp
    brew link --force libomp
    
  • CMake: CMake version 3.15 and later is required. Refer to the CMake website for more information on how to download. CMake is also widely available on package managers across all operating systems. Additionally, on Windows, make sure Visual Studio's C++ CMake tools for Windows is also installed by selecting its option during installation.

Build Steps

  1. Ensure that cmake, nvcc (NVIDIA CUDA Compiler) and the C/C++ compiler are all located over your PATH. This can be queried via echo $env:PATH on Windows or echo $PATH on Linux. If not, locate them and add their folder to the PATH.

  2. Clone the repository and switch to the pmcx/ folder:

git clone --recursive https://github.com/fangq/mcx.git
cd mcx/pmcx
  1. One can run python3 setup.py install or python3 -m pip install . to both locally build and install the module

  2. If one only wants to locally build the module, one should run python3 -m pip wheel .

  3. If the binary module is successfully built locally, you should see a binary wheel file pmcx-X.X.X-cpXX-cpXX-*.whl stored inside the mcx/pmcx folder. You can install this wheel package using python3 -m pip install --force-reinstall pmcx-*.whl to force installing this locally compiled pmcx module and overwrite any previously installed versions.

  4. To build only the pure-python package with the utility functions, without CUDA, set the environment variable PMCX_PURE_PYTHON=1 before running python3 -m pip wheel .; this produces a pmcx-X.X.X-py3-none-any.whl.

How to use

The PMCX module is easy to use. You can use the pmcx.gpuinfo() function to first verify if you have NVIDIA/CUDA compatible GPUs installed; if there are NVIDIA GPUs detected, you can then call the mcxlab() function, or run(), to launch a photon simulation.

A simulation can be defined conveniently in two approaches - a one-liner and a two-liner:

  • For the one-liner, one simply passes each MCX simulation setting as a keyword argument. The supported setting names are compatible with nearly all the input fields of the MATLAB version of MCX - MCXLAB
import pmcx
import numpy as np
import matplotlib.pyplot as plt

res = pmcx.run(nphoton=1000000, vol=np.ones([60, 60, 60], dtype='uint8'), tstart=0, tend=5e-9, 
               tstep=5e-9, srcpos=[30,30,0], srcdir=[0,0,1], prop=np.array([[0, 0, 1, 1], [0.005, 1, 0.01, 1.37]]))
res['flux'].shape

plt.imshow(np.log10(res['flux'][30,:, :]))
plt.show()
  • Alternatively, one can also define a Python dict object containing each setting as a key, and pass on the dict object to pmcx.run(), or preferably, pmcx.mcxlab()
import pmcx
import numpy as np
cfg = {'nphoton': 1000000, 'vol':np.ones([60,60,60],dtype='uint8'), 'tstart':0, 'tend':5e-9, 'tstep':5e-9,
       'srcpos': [30,30,0], 'srcdir':[0,0,1], 'prop':[[0,0,1,1],[0.005,1,0.01,1.37]]}
res = pmcx.run(cfg)      # pmcx.run returns detected photon data as a concatenated 2D array res['detp'], same for res['traj']
# or alternatively/preferably
res = pmcx.mcxlab(cfg)   # pmcx.mcxlab calls pmcx.run, and postprocess res['detp'] and res['traj'] raw data into dict form

The detected photon data returned by pmcx.mcxlab() can be post-processed with the utility functions included in this module, for example, pmcx.detweight(res['detp'], cfg['prop']) computes the detected photon weights, and pmcx.meanpath(res['detp'], cfg['prop']) the mean partial path lengths.

Python ports of all the MCXLAB demo scripts can be found in the examples/ folder (see examples/README.md).

Log output

The messages of pmcx.run() - the echo of the cfg fields and the simulation log (the banner, timings and absorbed fraction) - are controlled by cfg['flog'], as in MATLAB: 2 (default) prints them to Python's sys.stdout, so they show in Jupyter notebooks; 1 prints them to the stdout of the process, and 0 does the same without the banner; a string appends them to that file. cfg['flog'] = os.devnull silences everything; errors are still raised as Python exceptions.

Reproducible simulations

By default, pmcx runs in the autopilot mode (cfg['autopilot']=1), where photons are dispatched to the GPU threads dynamically for speed. As a result, two runs with the same cfg['seed'] agree statistically, but do not simulate the identical set of photons. To reproduce a simulation exactly, set cfg['autopilot']=0 together with a fixed cfg['seed'], and keep the thread settings (cfg['nthread'], cfg['nblocksize']) unchanged.

Metadata

Release files for pmcx 0.8.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 pmcx 0.8.1
File Actions
pmcx-0.8.1-py3-none-any.whl Python 3 none any Details for pmcx-0.8.1-py3-none-any.whl
pmcx-0.8.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-pp310-pypy310_pp73-win_amd64.whl PyPy 3.10 PyPy 3.10 7.3 Windows x86-64 Details for pmcx-0.8.1-pp310-pypy310_pp73-win_amd64.whl
pmcx-0.8.1-pp39-pypy39_pp73-win_amd64.whl PyPy 3.9 PyPy 3.9 7.3 Windows x86-64 Details for pmcx-0.8.1-pp39-pypy39_pp73-win_amd64.whl
pmcx-0.8.1-pp38-pypy38_pp73-win_amd64.whl PyPy 3.8 PyPy 3.8 7.3 Windows x86-64 Details for pmcx-0.8.1-pp38-pypy38_pp73-win_amd64.whl
pmcx-0.8.1-pp37-pypy37_pp73-win_amd64.whl PyPy 3.7 PyPy 3.7 7.3 Windows x86-64 Details for pmcx-0.8.1-pp37-pypy37_pp73-win_amd64.whl
pmcx-0.8.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pmcx-0.8.1-cp313-cp313-win_amd64.whl
pmcx-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pmcx-0.8.1-cp312-cp312-win_amd64.whl
pmcx-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pmcx-0.8.1-cp311-cp311-win_amd64.whl
pmcx-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pmcx-0.8.1-cp310-cp310-win_amd64.whl
pmcx-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details for pmcx-0.8.1-cp39-cp39-win_amd64.whl
pmcx-0.8.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details for pmcx-0.8.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
pmcx-0.8.1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details for pmcx-0.8.1-cp38-cp38-win_amd64.whl
pmcx-0.8.1-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details for pmcx-0.8.1-cp37-cp37m-win_amd64.whl
pmcx-0.8.1-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details for pmcx-0.8.1-cp36-cp36m-win_amd64.whl

Total release size: 214.4 MB

Release files / pmcx-0.8.1-py3-none-any.whl

Download URL pmcx-0.8.1-py3-none-any.whl
Size 43.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bfba6a6b57149f7e46d667208b9e47909161ffb5c29af02802371fb240721218
BLAKE2b-256 checksum
How to use checksums
b560088de1e9bed3c08284a1137eb506bb2f23309fdef116e9760fdd2c521df0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
071439a85a932182b2555e8335f8e540f10ade159cb5ea1318565fa9ccdfffba
BLAKE2b-256 checksum
How to use checksums
8a20edf1a6a290a4d04b38defcdd57d6cdc513aee140c2f8de144f17e587ab61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-pp310-pypy310_pp73-win_amd64.whl

Download URL pmcx-0.8.1-pp310-pypy310_pp73-win_amd64.whl
Size 9.7 MB
Tags PyPy 3.10 PyPy 3.10 7.3 Windows x86-64
SHA-256 checksum
How to use checksums
d41b1b07dc10b8c35330db842392c0fe671796d133e2e47d32b23cab15553534
BLAKE2b-256 checksum
How to use checksums
25add72438a7f93c8c2d447b100315ce6d873acc4e666eef0ebbea3d6e7828d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-pp39-pypy39_pp73-win_amd64.whl

Download URL pmcx-0.8.1-pp39-pypy39_pp73-win_amd64.whl
Size 9.7 MB
Tags PyPy 3.9 PyPy 3.9 7.3 Windows x86-64
SHA-256 checksum
How to use checksums
2a48e84361aa38f3cb98fa8db527884c75dbaedf62fa9217d4aaecafc0696bb4
BLAKE2b-256 checksum
How to use checksums
2e89431dfade8dc12cb1546522b6760b3863741a0c3b4fa6a24a41576cc07be5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-pp38-pypy38_pp73-win_amd64.whl

Download URL pmcx-0.8.1-pp38-pypy38_pp73-win_amd64.whl
Size 9.7 MB
Tags PyPy 3.8 PyPy 3.8 7.3 Windows x86-64
SHA-256 checksum
How to use checksums
e79d3b617bd82bd11993420399795d83428334062b94c9c207b6adfde4e68e77
BLAKE2b-256 checksum
How to use checksums
8a14cccb927cbfba7a83ef3b5f37b29e8223e16d69b0bc8c363e5b591be0d338
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-pp37-pypy37_pp73-win_amd64.whl

Download URL pmcx-0.8.1-pp37-pypy37_pp73-win_amd64.whl
Size 9.7 MB
Tags PyPy 3.7 PyPy 3.7 7.3 Windows x86-64
SHA-256 checksum
How to use checksums
27b1a732bf0e43f02006cd8a03e9393890c150c2ad961446eb87ceeb13be3075
BLAKE2b-256 checksum
How to use checksums
89d0dd0ca990e371b6042707a44e2739360eeeba4772dbcdfaa336f81fa37f4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b1c684bcf6b3f99276e5e8fb12092ce5f34ca407a3c5ab84adcf20396965066f
BLAKE2b-256 checksum
How to use checksums
4a8bce3d717c191647cba0e511e186812f182b6c87e3accebb5bd483e6f3d2ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b349b13900de70accdcb6c88b0aec685ffa059b2ff78e993273256092db8076f
BLAKE2b-256 checksum
How to use checksums
8f7b2ccebdb5414814e6a6342c961718ae7deefb028216f934e185841cc10f87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
818521b06224f6160f003b14c2520cec79054f00ec0b40972507272dd9b35b3f
BLAKE2b-256 checksum
How to use checksums
757244fe53b5ce02ce33119159cab28b071f375607525f0fc8763083ab8c5e04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
49ed40b464b43290923ad030147ae2849ae5840496715169e8b76e72719e6de4
BLAKE2b-256 checksum
How to use checksums
dae1e29c068a91f12444b0c5dd1ed2cb12eca205ec9d51659a5f50b913a95c10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp313-cp313-win_amd64.whl

Download URL pmcx-0.8.1-cp313-cp313-win_amd64.whl
Size 9.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
1e63c1837f7bba3bebe6bf892583f8837a6b6fc228ad922e7c574766d2ac4b4a
BLAKE2b-256 checksum
How to use checksums
375ccb0e59c3f3ff9bd45bc85165745712b59b691d5ff8fe03771bacc4770e8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5654687c21e6a7e32ae18dd803990ead39a3df7517be452982deea6c8967f839
BLAKE2b-256 checksum
How to use checksums
ced4a140f09e2dcdd0f07b2d6c3fcbde8eba2281803094920a23302d86b5de9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp312-cp312-win_amd64.whl

Download URL pmcx-0.8.1-cp312-cp312-win_amd64.whl
Size 9.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7244c9086cd52f73e11a2d1ae8a46f9ebb3365495cac656934537220591d03df
BLAKE2b-256 checksum
How to use checksums
1bee248eb4f137d8f20a29d17df10f323a4acad2e5cfefb99cd82ed1b07e292e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
54a7b97049b7a443300ae1a5d0615319ace674e877348d11cb59acfc6d5fcb88
BLAKE2b-256 checksum
How to use checksums
f06d1f7a366b7a2560618fe305c2497dd6c2beb29e820245a5eda8353526b9e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp311-cp311-win_amd64.whl

Download URL pmcx-0.8.1-cp311-cp311-win_amd64.whl
Size 9.7 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
4a0f061b7611d3c43b6167f87f69809d84998e9f9ba97df3ebaad034d2c371d9
BLAKE2b-256 checksum
How to use checksums
e007369d595108f44382a1c6e945ed559de71096bacbaadee750a5043ca05506
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
85050a2bbed52121148efabb63e6a0789f1bf374d0c4cb24cca51311c7794b89
BLAKE2b-256 checksum
How to use checksums
028d5cae94c8dcb6840c97dae2d2436b1a50a6b41f199d8642a4fca42ead7c57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp310-cp310-win_amd64.whl

Download URL pmcx-0.8.1-cp310-cp310-win_amd64.whl
Size 9.7 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a53e841e3309f2d15f8ef48ff116be6ac4fe9c5a9c5b7a92bbc5f0af9f0a9de5
BLAKE2b-256 checksum
How to use checksums
0e1ca52358123f8fefc36b32813f55f438a43701b81f5646d183d80e8b1e91cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6d937fb71a50ca1a936279a8b2c5e30f8b0656bf901f03734df52974c13668c1
BLAKE2b-256 checksum
How to use checksums
18240ed74b909b719ff915b5668536e51c65fd177d3bbd0258071d92507ae9cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp39-cp39-win_amd64.whl

Download URL pmcx-0.8.1-cp39-cp39-win_amd64.whl
Size 9.7 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
a761c3cf235aec2b830a5047aba1856b58b91080232b60e6a94139b34491ed80
BLAKE2b-256 checksum
How to use checksums
5dfeeb3f6d01a51ea15fe27465b49417086d7d5e8bf33139d1a47bc9a3acebd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pmcx-0.8.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.7 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2ef168658417e3bc349c1ef9a1cd776bd1f77eefc44d4ad94ee2721ff8b55296
BLAKE2b-256 checksum
How to use checksums
0b04cd622cf22dd3c92b9faf0f0afd50d7f48a98b93d24b292a88ea29517999b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp38-cp38-win_amd64.whl

Download URL pmcx-0.8.1-cp38-cp38-win_amd64.whl
Size 9.7 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
fcc2c2f761a85b8160dbca59b6caacd81632597d9ec51b693d56bdf2f7a1b855
BLAKE2b-256 checksum
How to use checksums
4cacf9266700f6edab55e038dce0d49eb50a924ecaaa28455ac22162cc604d70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp37-cp37m-win_amd64.whl

Download URL pmcx-0.8.1-cp37-cp37m-win_amd64.whl
Size 9.8 MB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
6c5d5f8bdefcfe796aab5865700bf947b37f5ab465ebd509ceaa6d1ce3a3a4ca
BLAKE2b-256 checksum
How to use checksums
cb177d53a4db44fe5cefd32f2674c1bed23a7815db2365d20f81a36b0dba5f32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / pmcx-0.8.1-cp36-cp36m-win_amd64.whl

Download URL pmcx-0.8.1-cp36-cp36m-win_amd64.whl
Size 9.8 MB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
85e49706f8ccccd581c36f2f79896d0951648147c2788bf0d6ba7fbcd46142e6
BLAKE2b-256 checksum
How to use checksums
07e7eff91c0cbe35496604e145bc0543a261bb657e9f20b76b324a7269a69427
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for pmcx 0.8.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.

Release history Release notifications | RSS feed

This release

0.8.1 This release

23 release files No provenance

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