Skip to main content

Object-Oriented, Multi-dimensional Spectroscopic Data Processing

Project description

https://zenodo.org/badge/24356894.svg

To learn more about pyspecdata, you can head over to the documentation.

If you already know that you want to install, see Installation

Please note this package is heavily utilized by three other packages that our lab manages on github:

We have somewhat recently added fast compiled Fortran functions for things like 2D ILT (Tikhonov regularization with basis set compression) for NMR (Nuclear Magnetic Resonance), so please read the install instructions carefully!

pySpecData

Object-oriented Python package for processing spectral data – or in general, n-dimensional data with labeled axes (i.e. N-dimensional gridded data or “nddata”). It depends on numpy, which provides very fast manipulations of N-dimensional gridded arrays (“ndarray”). This package has some overlap with xarray, but it doesn’t attempt to mimic pandas notation, shooting instead for very compact notation for natural slicing, etc. It mainly focuses on making it easier to quickly write good code for processing spectroscopy data. In particular, it takes care of various features related to fourier transformation, error propagation, and direct products in multidimensional data with little to no interaction from the user.

If you are working in a lab developing new spectroscopic methodologies, then this package is definitely for you. If you deal with multi-dimensional data of some other form, then it’s likely for you. Features include:

Features

  • Labeled axes allow one to manipulate datasets (potentially with different dimensions) without having to explicitly keep track of what the different dimensions correspond to. Code becomes more legible. Also, tiling, direct product, and gridding functions become obsolete.

  • Fourier transformation with automatic manipulation of axes.

  • Automatic error propagation.

  • Commands like plot(data) will generate a plot with automatically labeled axes, errors, and units. All of this information is also written to HDF5 when the data is saved.

  • Simplified curve fitting that takes advantage of labeled axes and Python’s symbolic algebra package (sympy).

  • The code is written so that it can be integrated into a nicely formatted PDF lab notebook.

    • The same code can be run on the command line (to generate pop-up plot windows) and embedded into a LaTeX document.

    • Extension to other output formats, such as HTML or markdown, should be relatively straightforward.

  • In a multimedia environment like jupyter, you don’t need a separate plot command. The code can automatically choose a plotting style appropriate to the code (eventually, the general preferences for this can just be configured at the beginning of the jupyter notebook).

More detailed web documentation will be coming soon.

NMR/ESR specific

Because it was written primarily for NMR and ESR data, it also includes:

  • Routines for reading commercial raw data (e.g. Bruker, Kea) into nddata objects with all relevant information.

  • The object-oriented features make it much easier to process raw phase-cycled data and to simultaneously view multiple (potentially interfering) coherence pathways.

  • Contains functions for baseline correction, peak integration, etc.

  • (Not yet in packaged version) A basic compiled routine for propagating density matrices that can be used to predict the response to shaped pulses.

Version Notes

Note that the current version is intended just for collaborators, etc. (Though, if you do really want to use it for interesting science, we are happy to work with you to make it work for your purposes.) A public-use version 1.0.0, to be accompanied by useful demonstrations, is planned within a year. (Note that the email currently linked to the PyPI account is infrequently checked –if you have interest in this software, please find J. Franck’s website and contact by that email.)

Roadmap.

Installation

We have worked out deployment using github actions. This means that you can now just do pip install pyspecdata!

Some notes:

  • Most likely, you will want to make sure you have pyqt installed so you can run pyspecdata_dataconfig (a GUI as of Nov 25). This controls the file-finding mechanism in pyspecdata, which allows you to run the same code on different computers, where you’ve put the data in different locations.

  • We require numpy 2.0. This might mean you will need to upgrade ALL packages that depend on numpy, so that they can support numpy 2.0. Or, if you enjoy putting off the inevitable, make a separate environment.

Notes for Development install

Important note: the package ships Fortran-based extensions that are used to provide fast ILT methods. We believe this is a useful feature. Unfortunately, while the instructions below work for most cases, not everyone’s system is set up equally well for Fortran compilation. If you experience difficulties, and are interested in messing with the code, please don’t hesitate to reach out to us at jmf356 [at] cornell.edu. We’re always happy to test the code for new applications! Fortunately if you just want to use the library, not develop/tweak it, pip install pyspecdata should now satisfy your needs (i.e. you don’t need the development install).

we would be happy for the opportunity to test distribution on new platforms! In all situations, note that this is a development library that works very well in our hands – we are happy to hear from you and work with you to try to broaden its applicability!

On Windows with Anaconda 3.X, just run:

  • Remember that for new installs of anaconda, you need to turn off the python “execution alias” in windows to prevent windows from overriding all the importnat commands! Also, all of below are tested in the “anaconda prompt” in admin mode.

  • conda install -y -c anaconda numpy scipy sympy pyside6 pytables matplotlib h5py libpython

  • conda install -y -c conda-forge gcc_win-64 gfortran_win-64 binutils_win-64

    • If you’ve installed before, you might need to first do conda remove -y m2w64-toolchain (this is an older toolchain that breaks with numpy 2.0)

    • (the libpython and all the packages on this line are for building compiled extensions such as the ILT).

    • On an ASUS Vivobook, conda looks like it’s completely dead, but it’s not → just be patient and give it an hour. (If you look online, you’ll find plenty of info about how sloooooow conda is now, especially for conda forge, and can find some advice on using the mamba drivers to speed it up, though on a cheap new computer with windows 11 JMF has had very little luck.)

  • conda install -y meson meson-python ninja (the new build system to replace distutils)

  • Note: pip --version must be greater than 21.3 (this is what you need for an editable install using meson).

    • If it’s not, run conda update pip

Then follow the installation for developers below. We have a package on pip, but it currently lags behind the github repo.

On CentOS7, we’ve tested yum install python-matplotlib python-devel sympy h5py python-tables scipy (after running yum install epel-release to install the EPEL distribution). Install PySide6 separately if you want the Qt GUIs, then follow the installation for developers below.

On Debian, we’ve tested sudo apt-get install -y python3 python3-matplotlib libpython3.7 python3-dev python3-sympy python3-h5py python3-tables python3-scipy python3-setuptools gfortran pip. Then follow the installation for developers below.

On Ubuntu, we’ve tested: sudo apt update

  • If you are not using miniconda or something like that, then do: sudo apt install -y python3 python3-venv python3-dev gfortran libhdf5-dev meson ninja-build - This allows you to: python3 -m venv ~/.venv to create and environment and then switch to it with source ~/.venv/bin/activate (b/c more recent versions of python really don’t like to distribute packages over apt, and prefer to distribute them over pip)

  • If you are using miniconda, etc, we’ll rely on that, but you still need the modern build tools: sudo apt install -y gfortran libhdf5-dev meson ninja-build

  • Finally, in either case, make sure you have recent versions of all the packages we need: pip install 'numpy>=2.0' matplotlib sympy h5py tables scipy pint meson-python

On MacOS, if you want to install as a developer your python distribution needs to have a working Fortran compiler, since some of the modules use Fortran. We have tested conda install -c conda-forge fortran-compiler, followed by conda install -y -c anaconda numpy scipy sympy pyside6 pytables matplotlib h5py. However due to a problem with more recent versions of MacOS/xcode, you need to modify setup.py to tell it where to find the system libraries. At about line 27, you need to add something like following as a keyword arg for the Extension function: library_dirs = ["/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib"], (we recommmend just using keyword completion to find a similar directory that exists). (Feel free to contact us if you have issues with this or would like to test deployment on pip for a Mac).

More generally, these instructions are based on the fact that it’s Highly Recommended that you install the following packages using a good package-management system (conda or linux package manager), rather than relying on pip or setuptools to install them:

  • numpy

  • scipy

  • sympy

  • pyside6 (for the Qt GUIs)

  • pytables (in future work, we hope to eliminate dependence on this package)

  • matplotlib

  • h5py

  • lmfit

  • The python libraries, and a Fortran compiler. Under anaconda, these are supplied by libpython and mingw, respectively.

  • If you plan on building the documentation, you also want sphinx_rtd_theme sphinx-gallery

(If you don’t install these packages with your system pip will try to install them, and there is a good chance it will fail – it’s known not to work great with several of these; setuptools should error out and tell you to install the packages.)

mayavi: Mayavi can be used (and gives very nice graphics), but frequently lags behind common Python distros. Therefore, this package was written so that it doesn’t depend on mayavi. Rather, you can just import mayavi.mlab and pass it to any figure list that you initialize: figlist_var(mlab = mayavi.mlab)

Installation for developers

To install pySpecData from github, just git clone https://github.com/jmfranck/pyspecdata.git.

Then switch over to the anaconda prompt (as administrator, if you are installing system-wide), move to the directory where pyproject.toml lives (root directory of repository), and type pip install --editable . --no-build-isolation. Make sure that this terminates with a successful message, and without any compilation errors. In particular:

  • If it gives an error about permissions (will happen for a system-wide anaconda install), you need to load the anaconda prompt as admin (right click and run as administrator).

  • Near the end (above EXT compiler optimization) it should tell you that you can run pyspecdata_dataconfig. You should do this, unless you’ve installed pyspecdata before on the computer you are working at.

Important notes for conda on Windows:

  • Warning Before running the installation for developers, you must first check that the output of conda info on your git bash terminal matches the output of your anaconda prompt.

  • For reasons that we don’t understand, the Fortran compiler can give odd errors, depending on which terminal you are using to install. This appears to be Windows’ fault, rather than conda’s (?). We highly recommend trying both the Anaconda prompt, as well as the standard dos prompt (press start: type cmd) if you experience errors related to compilation.

  • If you want to build the documentation, run: conda install -y -c conda-forge sphinx sphinx-gallery

Data File Management

pySpecData is designed to run the same script on different computers, where the required data files might be stored in different paths on the different computers.

The basic strategy is that you enter information on how to find your files in the _pyspecdata config file (typically this is only required once, at setup), then the find_file and search_filename functions can use this info to find your files.

Setting up your _pyspecdata configuration file

New 0.9.45 (Nov ‘25): as long as you have pyqt installed, pyspecdata_dataconfig will now open a GUI that helps manage all the following.

Part of the pySpecData package is the datadir module, allowing the user to run the same code on different machines - even thought the location of the raw spectral data might change. This is controlled by the ~/.pyspecdata (unix-like) or ~/_pyspecdata (windows) config file, which looks like the following.

[General]
data_directory = /home/jmfranck/exp_data
qesr conversion = 162.66
qesr diameter = 0.704
qesr q = 4700

[ExpTypes]
odnp_nmr_comp/odnp = /home/jmfranck/exp_data/NMR_comp/ODNP

[mode]
figures = standard

[RcloneRemotes]
nmr_comp/odnp = jmf_teams:General/exp_data/NMR_comp/ODNP/

The General section points to the directory with the datasets of interest whether that is the direct path to the drive with the datasets or if you prefer Rclone, this data_directory points to your local folder of datasets. (This is also a good spot to include, e.g. proportionality constants for QESR, which we have done here, and which are utilized in the proc_scripts repo.)

The ExpTypes section gives the various locations to folders containing the appropriate data sets - either pointing to the cloud storage or pointing to the local directory your rclone adds files to. So when you call odnp_nmr_comp/odnp this will point to the actual location, /home/jmfranck/exp_data/NMR_comp/ODNP

Note that it’s possible to point the different exp_type directly to shared drives or to synced folders (google drive, onedrive, etc.), pySpecData also offers a (we think superior) method that downloads local copies of files on-demand using rclone. The new GUI makes it easier to set up different rclone remotes (e.g. different cloud resources at different schools or shared by different people) for different experiment times.

Obviously, you need to install rclone and add it to your path to do this (see next subsection). Rclone is an amazing tool that can be configured to talk to virtually any type of cloud storage (Google Drive accounts, OneDrive and SharePoint accounts, etc.)

Setting up Rclone

To get set up with Rclone, download Rclone and follow the documentation which should include running the command rclone config enabling you to set up the location and name of the cloud drive you wish to pull from. The documentation of rclone is pretty straightforward and can walk you through this. If you are at an academic institution, we highly recommend asking your IT department for a protocol for connecting rclone to your cloud storage of choice.

As of Nov 0.9.45 (Nov 2025), the GUI presents all the rclone remotes in columns right next to your experiment types. Just pick an rclone remote from the drop-down and then give the directory on the remote in the text entry box to the right.

But, to explain how this works in the config file: Inside the RcloneRemote section of your config, each key/variable points to a properly configured remote that was set up with rclone– e.g., jmf_teams here is a properly configured remote that shows up in response to the shell command rclone config. Note: as you require datasets from other folders you will need to make new folders locally to match for Rclone. You will receive error messages that guide you to do this, and you should follow them. For example, if you required a dataset from exp_data/francklab_esr/alex you will need to go into your local exp_data folder and add a new folder called francklab_esr/alex

Notes on compilation of compiled extensions

We recently added a compiled extension that performs non-negative least-squares for regularization (DOSY/Relaxometry/etc.)

Under linux or mac, you should have a gcc and gfortran compiler installed, and should make sure you have libpython for this to work.

Under anaconda on windows, we have run into some trouble sometimes where it gives you an error 127. We recommend using the normal dos command prompt (cmd) to install pyspecdata, and make sure that your path is set such that where gcc yields a gcc.exe (NOT .bat) file and where python yields the anaconda python executable. (Recent versions of mingw appear to put .bat files in a preferential location in the path, and these .bat files seem to mess everything up, including compatibility with the git bash prompt.)

Further installation notes

Upon upgrading from Python 2.X to 3.X, we made some notes in conda_upgrade.md; this includes some useful (but possibly dated) instructions on how to implement different environments in anaconda, how to deal with AppLocker permissions, and Windows permissions generally, if you run into any of these issues.

Open an issue!

If you have issues with installing or using pyspecdata, don’t hesitate to open an issue on this page!

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

pyspecdata-0.9.45.13.tar.gz (49.4 MB view details)

Uploaded Source

Built Distributions

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

pyspecdata-0.9.45.13-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

pyspecdata-0.9.45.13-cp314-cp314-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyspecdata-0.9.45.13-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

pyspecdata-0.9.45.13-cp314-cp314-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

pyspecdata-0.9.45.13-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

pyspecdata-0.9.45.13-cp313-cp313-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyspecdata-0.9.45.13-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

pyspecdata-0.9.45.13-cp313-cp313-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

pyspecdata-0.9.45.13-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

pyspecdata-0.9.45.13-cp312-cp312-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyspecdata-0.9.45.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

pyspecdata-0.9.45.13-cp312-cp312-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

pyspecdata-0.9.45.13-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

pyspecdata-0.9.45.13-cp311-cp311-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyspecdata-0.9.45.13-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

pyspecdata-0.9.45.13-cp311-cp311-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

pyspecdata-0.9.45.13-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

pyspecdata-0.9.45.13-cp310-cp310-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyspecdata-0.9.45.13-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

pyspecdata-0.9.45.13-cp310-cp310-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

pyspecdata-0.9.45.13-cp39-cp39-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.9Windows x86-64

pyspecdata-0.9.45.13-cp39-cp39-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pyspecdata-0.9.45.13-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

pyspecdata-0.9.45.13-cp39-cp39-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

Details for the file pyspecdata-0.9.45.13.tar.gz.

File metadata

  • Download URL: pyspecdata-0.9.45.13.tar.gz
  • Upload date:
  • Size: 49.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyspecdata-0.9.45.13.tar.gz
Algorithm Hash digest
SHA256 490d1bfc23383f00aed9b254124344c3dd07e14a491076a2f02cc0930264cf5d
MD5 486c6e9b24d6f922cffc1a5fc6b47470
BLAKE2b-256 a66f4b7540853cd2826958254d3b520ca1469f5354b7420e00c089a73854c639

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ef824f2381d74070daa6c8c6e11b79c7933a59a065444f0bb085208f035f45d8
MD5 10144f49ee393421b4f92728c230e871
BLAKE2b-256 0fec601db3cef0206a618313ca451c7fd0071867ae2e5d1616e42aa1d4641454

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 615f767b32a967d4537bc1e675ed6a16f72500afa2ba735498fff2a1a7036d7f
MD5 d0250475719a53ee087f420d5f4c6990
BLAKE2b-256 b5f55ff1aabab97c821bb533b3e5bc72aed29f50df77c2b5137b98af18ec45ef

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6102f334fa4805634f07c27f72da4ef8548a5093d057439f88685b2f2747b82c
MD5 2747049754c4f439b17bb36b488922a9
BLAKE2b-256 f0c4ccdbef70176cfc173c29286390539c090e29142ddadd90381291caea7792

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e34139cac5d369acc9ff244737106011f5404b52173054080bce5c97ee70dbae
MD5 d89d975c7dfe464bc3904d61611f6a9a
BLAKE2b-256 b1bb3974b9bb78a0d3e6f3f70d97bfc2770cf007509ea7211dc7ce5f7a094864

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 80158ff3b205aebd61b6258ce4fff7950da2896f6452d1f50d30b76508e6bf65
MD5 cf2562dc29700f6a51c67fa9befbd601
BLAKE2b-256 522b866c23b5164eaaf8e307a33bc060b89ac9cb313f67df0d968a450f135bb5

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b58317af43440d3016beea00636fda8d34b5683aaa596b44a997707ef0ce6c80
MD5 e9ce9cf868965cefae2fb31521368cb9
BLAKE2b-256 7cbd96b7e1a5dadd5ccfb477e6ace0cffd88e6c8f3f776ce9514874955e37a73

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4d84e5fdf226a9c11db1e67bcc8dfc38df287c4db02b2e81e38de32e11f77e49
MD5 45724026659dcc80cc8d497ce26bc82c
BLAKE2b-256 886c0f8928240a8b3170bd3bd54c8eeebfa72731c985bbd3e4b9ec3f3532dfc2

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 978214d6d141cb8bd2355991a2fdd1d2c8a0c64df59907fd3467b192bfbf577e
MD5 16de2d5317ca8b6097e1454b32e7506c
BLAKE2b-256 c0c4a0841cffdac54e32a86cb59f9d9f5531f91f04e7ed21b9ea31207d68d993

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2ca7b79a4f75b068ae014c3877623f3541a4ff74865feea11086ba6c555bcb4e
MD5 9dcfe4166d5b5719e519b9f1bed7b8f2
BLAKE2b-256 f066c7794d426c2e6e666866493b90231b5c26135b82e42b0ef69e32bac0f0a0

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8bd9d0523c6827d118b535bc8a6a4bfb19cb499bafbeb06d8f76b294ab0d5ee2
MD5 68510565c4b5834da94013a63da71ff5
BLAKE2b-256 32210287a15bf601ff2f588c95c1c328d49e11e0940ef35d6e371a9c9a25929e

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 56c259610fd557648cc958e587a643a82ddb4f5ef9f6b83d8b70945909c328cd
MD5 a06757e682c68b8cd620b132aefbc1ab
BLAKE2b-256 684ebd6abbfffe0db0c9990066e61cba3305c8bbec7d76f0a8713b91473ad6aa

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ba61819d646887e2b7078d5f420c3dbe7c80afb2f045bf1b1f24548f0551552f
MD5 69e264c75248bfdee1b03e51cd15058a
BLAKE2b-256 dc8ad2bbd51efcf12d783203882228fb84376f319387fef025013c8ba7b64833

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3360c276c25a1a72fd847916c15ed0ebf5652ae8e42e2fe8f207ef850ea1db28
MD5 4ff993146b2cf2af09ee0fe05141953f
BLAKE2b-256 57222816c793deecfc75f7a64ae8ac5524b7b6af77bb777f6d1af32a1954c571

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 42688a85d74b62c2bb332a3354c717a3f781a7a40b8e5457d0eb7c92aa70829d
MD5 6ec559b0e430c0dc64febc9b0e5f146b
BLAKE2b-256 c8870a57a7b67ee0c051a0d48a16a08b9a875e86ed771a176dc0b0184d1b3635

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4ab27eb522848f3b0c46151ab85b3695f6141d84cef9a7372c5e2422421afd2
MD5 aaa16b5df64a77f37d24ead50fd7beb9
BLAKE2b-256 0a9d0ac4c500aa9221e7fc85b1709f565c1bdc8727e90cef8f6d5468295a5b09

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 5fc649222f335cdcd62e9f832e0a824175779ca7ed98fdb4970325607706e719
MD5 f8bda97e8396e85949958bb36e615687
BLAKE2b-256 a8b0b8819f12a5e4500a27b405a2b337f965055da2c0e5c5407f9d9427973f24

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 03cd08948ad155dcc2184a7cc39c6a9284347f3754d149c9a1c9254bc028c176
MD5 cb9320b95bebccc62dcdb6244368a92b
BLAKE2b-256 33e9586f7c3dc48c2083a92d2c5d0acc710aad6c236d8501f07a0a0806decb9e

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 27117b3b4b7f6a30ad5af0b11a7a5df3234538a22da96fc95c5d061e6eabcb44
MD5 c508486d87f141196c56cdc11a565d24
BLAKE2b-256 e7125473fa34900301d319f778962603f9e39cdb12fed829ff8c54c7607286a1

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 466add85fb658dbafceeba8ed96a5d34262d02b8168fd80d8d262bbd8cb9ee8f
MD5 8a077d759872b3af5eb733e839c65fbf
BLAKE2b-256 8091e8774cb0d5effe311108d1fe7fd7b4c9f590938f8095d74d5cf3ca38ae04

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 084116763009431c8ede75573865912b4b97fef5e74f95bddaffd8cc03f1ef20
MD5 22e50af2a8a6e456dfef85e02a3638c8
BLAKE2b-256 7fca4a02bfb13c9a80e05bc4a54751052a8520d11f6d4fac3a0a523c1b0e052f

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5da36eb5733f5c9f8c86639cf027fadc457121828136b7571b142c3db14b8d51
MD5 29316dfbfc80d3cfa6160d1a2805618e
BLAKE2b-256 17d343366281cf7dee840e420c1e349cd4a30dbe27ee652c79e48574988c6dbf

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0125d0b362483a864e38aee5e4a4132e31bd9dc883667b15c5a3cf49df7ca4a7
MD5 14e32da1c5689aca07b4cf095651de0d
BLAKE2b-256 e94deaf1854a59b10a205a745bcfb84c3522a18fb6f9a5fb80ea057b9e3121b8

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6822d47431f05145614ed20c5e7b9c00e8461a94d2a5354f9be536124a6bf24f
MD5 c8c8c37345120b474b5f65cb6c2ea5fa
BLAKE2b-256 6da6e4550cd1f080730a915311b992cc5520fb9f1de07109fa8fbaa045fcb04c

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.13-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.13-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 bdf5981de4a195d50a1fba7f118b2508f14a849b17c0c40a781d3361ceda14e9
MD5 060ef371006502a3fe4753d06e2da206
BLAKE2b-256 3f2ed4af0211b575a031e17b8d09b9f1098171cb672acb3b12f1eef6b47f8e13

See more details on using hashes here.

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