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
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
- PIP:
pip install pmcxsee https://pypi.org/project/pmcx/
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 numpyorconda install numpy - (optional) jdata: Only needed to read/write JNIfTI output files. To install, use pip:
pip install jdataon 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 bjdataon 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 matplotliborconda 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
/Developerdirectory 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
pipPython package manager and thewheelpackage (available viapip) 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
SDKROOTenvironment 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
-
Ensure that
cmake,nvcc(NVIDIA CUDA Compiler) and the C/C++ compiler are all located over yourPATH. This can be queried viaecho $env:PATHon Windows orecho $PATHon Linux. If not, locate them and add their folder to thePATH. -
Clone the repository and switch to the
pmcx/folder:
git clone --recursive https://github.com/fangq/mcx.git
cd mcx/pmcx
-
One can run
python3 setup.py installorpython3 -m pip install .to both locally build and install the module -
If one only wants to locally build the module, one should run
python3 -m pip wheel . -
If the binary module is successfully built locally, you should see a binary wheel file
pmcx-X.X.X-cpXX-cpXX-*.whlstored inside themcx/pmcxfolder. You can install this wheel package usingpython3 -m pip install --force-reinstall pmcx-*.whlto force installing this locally compiledpmcxmodule and overwrite any previously installed versions. -
To build only the pure-python package with the utility functions, without CUDA, set the environment variable
PMCX_PURE_PYTHON=1before runningpython3 -m pip wheel .; this produces apmcx-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)
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.