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 pyqt 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-matplotlib-qt4 python-devel sympy h5py python-tables scipy (after running yum install epel-release to install the EPEL distribution). 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 pyqt 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

  • pyqt

  • 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.4.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.4-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

pyspecdata-0.9.45.4-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.4-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.4-cp314-cp314-macosx_15_0_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

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

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

pyspecdata-0.9.45.4-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.4-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.4-cp313-cp313-macosx_15_0_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

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

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

pyspecdata-0.9.45.4-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.4-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.4-cp312-cp312-macosx_15_0_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

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

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

pyspecdata-0.9.45.4-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.4-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.4-cp311-cp311-macosx_15_0_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

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

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyspecdata-0.9.45.4-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.4-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.4-cp310-cp310-macosx_15_0_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

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

Uploaded CPython 3.10macOS 15.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

pyspecdata-0.9.45.4-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.4-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.4-cp39-cp39-macosx_15_0_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.9macOS 15.0+ x86-64

pyspecdata-0.9.45.4-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.4.tar.gz.

File metadata

  • Download URL: pyspecdata-0.9.45.4.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.4.tar.gz
Algorithm Hash digest
SHA256 87debf7d127756f3921221d7c7b088d2d850062dc9675f9c229aaaf73cce759c
MD5 4ca79367b8870cedc8668d024955af7f
BLAKE2b-256 4023bcc0bc857f7a8e2838779c55c7ff0c23aecb6305c9398a9471091740eb14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4a9d999badf8444591a5d597222653175e146eeec3801a6519975d6192bb4c6a
MD5 995b7e0b8e76b54db0a6affeae74e7ba
BLAKE2b-256 a21d9304adfe7993be59110a1b5312e8a2b25b61ed9b558539d6c17db6881bbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 782407f6de1c4a40040f9b0f8676f1c13fc62aacab431833de717a2730a5425c
MD5 15de4a12ae87c80443094a99585fec70
BLAKE2b-256 be9d81ff3fc16397c2df69383400f59bd002809f81bd48ef734b09ed4e84d4e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 602f66bc12dbd2ee04f60dc3dff6f4bb957f33dcf0254a901871a49e8f1efd6a
MD5 0737c287b2e1d48022962c641d58f55d
BLAKE2b-256 05305cee3666f371839750d803a0df9061c8fe6cd2ad7361e473e6196b539746

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.4-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 8d0550180030222dd66cee8448652d710bf943ce77208a61e68fb5c363541175
MD5 d55c136bdded94322e0ea08b52c1794e
BLAKE2b-256 11bc4c9e25ffe6b076c86f444146d706760d4930a484e5328d964d0cd34251ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7543e4e5975c1efdc4a9541ec8981e6dc29c386e6151524e2f48eda3ca06190b
MD5 027536dc99cc89c39ec9beb4c752b759
BLAKE2b-256 a2436d229d4a427db123501d4bd2231823fedf06149ace998c5923f6cd819f62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 700cd4fd36ffa7480733f26b38946789b8410d3f13cccf4b667e092d8b73754d
MD5 5f804f5060eb35e112f0ea3b83a7b0cb
BLAKE2b-256 4022cc2a3551e73b40e388a494a5b2c0cc1d97474240f4b07c284b20cbebcfc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d4d438d2aa15a445de3ef48ced8c9e25faf09e6fd9cff3df5b70593d90d1d7e4
MD5 74fb8a4541af3f17fdac76ccf9d56214
BLAKE2b-256 1eb6df1fc9a12e6c83175f2a56f02c567b21b5d9e836099b0e38dcc406d8ae82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 220acf803addd86db9114dd19e0b40c443e8b03d6151ffaae4474928bdc1d6c7
MD5 870169fe1a3fb0e07828ec1983d95c66
BLAKE2b-256 4ea9a4a1cdb9d48897dce91c780e54209459c3def0b3c0cad1be5e495a6ae767

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.4-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 9a8f354248c1323e86b99412d520741c4dde08bff544c6266192a31e0a10cb74
MD5 211f6a100c48c54ffdd4d1848fed6b69
BLAKE2b-256 8b844350053cf87fb534d03ef9604a911d2e5d724778e36c41fba8f545f59864

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 44b7a97f1955d7ab862bd168a0adbdfbafc637c8233ba40e72dbb9d7da2f29c3
MD5 760bd3fc736ba718d5742f31feb68767
BLAKE2b-256 38f58469ece877ebad36a82ed4d8a5245dbabbadb5fe34a94fbcd6953767e8cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f347a5c1daa99ecd7257aa27e41e21e7b593bdd197cbb24699aca7b14e51998b
MD5 78cfcc2bd819ce55138e713765b5b507
BLAKE2b-256 ec6dc71e4e89965e9b6f6a350f6b6bf0cee5dc197a10c23cd5fe96b0589ece02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8ba6b26d16b2243251362e4d1ccdb32a2b828e53c537883f742a53d21cd51063
MD5 3b7a570f31f2553e3d5f14f25ff44746
BLAKE2b-256 a1b12862c46a0ad8828d6673f655da29aa89c5b5cf01e94628071f05822a8a10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09fb0eedaf43e90e59912382f68b034d469bf6e6b66c4670679e51a54b5f1de4
MD5 e517e24d4405255cbc5a228f2a475b76
BLAKE2b-256 128fb8fb4237d56721b15b6e847be4ba4652c80a6da2e0ec400976188ea59d84

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.4-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1139745ca8d8e08d8c872449291e8a6309bb55cbcddcdbd68a3c61a731d51394
MD5 14ad87da71bff3d81dcbd79136f94f07
BLAKE2b-256 0f4911d79dcd53f878c305c9f7bc5e2cfca64ef5cdb4c57193724b5732c669c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c59688218a7e36e882f2f8477e1ce3c99abfbf39f79b24d8d7ede68dc25c44f4
MD5 f12d8af6e06c48b7ec0d54311590775d
BLAKE2b-256 8b5872562210bb977c1502e5d7fc67940c121f6b1afc06dfd3450e14c7c016af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3cb749378b5537c2cfd868730781d4a3a249dfea361c5d279296ce9950a2d545
MD5 7c79ac2f2a881f11b6b0abb0bdfe1e3c
BLAKE2b-256 f2fe1e0dfdf40fb4d92c7e4eb6a6bae1035ba26ab0cf2edc39cc0259ebafc304

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d11c28710da01fc131e1829fc71b7ce326d2c617b1917f22ecaba15c5df03805
MD5 6ef075d218d3df99b1dcfdd5bb85f962
BLAKE2b-256 5eb16ea0daad8c874dcff86b27be71f86411400c10bde3f5a55d45a40ee27d7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4e08a4c728397f54f207fe462f796060dcc59bcdf9e9918e201831ebe6e61ba
MD5 a69d39509a5ee7c0287e84d2af169083
BLAKE2b-256 5654efb1b62bcf94bbe6e68be483458f76556abb9930e866089da62a6c24bfce

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.4-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 029e1836ad9536cb647ef89977b635a8604f2e0d34491323ff61ee38103955ca
MD5 feb7c3f6b1916518f34fd97062528528
BLAKE2b-256 195bca40c7fb88543776274ebd2b4a50b5196f0dd573b5aa6b8c02832fabfc57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 948ad61cb59760a38097f6619678c5f9b8dfb35d312537ca0f7700c3893c15ad
MD5 f378716955aea95afba256839059d3ca
BLAKE2b-256 c69229488e8265b8865bca12cce43e29c5b9069055b7c394b3f2aaac94c01690

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 54a206ba5a63473a7afbaab1956809407cdc0b1ae5f124c493ab4b49348731d9
MD5 597b99e1d0ee2039158bb3a496530ac0
BLAKE2b-256 2084d25633c2052657f000446150cfb76428ad0b6e0409c54f0787348d28f017

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c06a336c23976108e36c5c9f9a6125798da1f35e4e9823824ec01abdc97a20c3
MD5 3e455fa9b2822763e925ec7c4b7df782
BLAKE2b-256 44fe370a9ad6a6daba3639504e74f548134238b52d7f1685d50e4a4fe6478358

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc3a136d139ae3456da6d8ec40da4fffd4f2916acdf5144f160cac8758b8a550
MD5 ceeb6eb1cba5021ac82d053b917702ed
BLAKE2b-256 5ab4c4866d683cb43a478bbd8fb8bc05e780f85db72c21c17cb94545f4ff6741

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.4-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 351d5a9fa6603431e0647a3d0f0ed1b50fb843df2f2ba7de89d7f5cd23fd2fcd
MD5 5a8be613e14b89a1b58cc0a020b15019
BLAKE2b-256 e10ba2ad29318b874905e4cdf391b42e87577cbda46fb65ba9d1bea180fe65ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 121483549b4516abc5af8cfc12cb45ecd49cc98b027d9ea9961989b9e349615e
MD5 95c70bf2e80cc5911e4581f4c4b8d885
BLAKE2b-256 a2e6a06b0c7447a6344e4605a0512fc700d7c5984ac6145559c498b5e1e05194

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fabf5086b17f9f49664c646d6b42b6e1ebb5c1cc8da8d1f2053160e7654a547d
MD5 61e002a09db39a9c82b20ff505ff1229
BLAKE2b-256 4d40f79ad9a095e2a54cabb2beaeddc1caf4dd8134a125a3c090f14d3f8e044c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3de36bf280d193afd11b3a45722fa972a9ede30d219acccfec835a72482601a2
MD5 5d59afad5bf41bc83bfef574de8942ae
BLAKE2b-256 0470796cdfd01ac2cce692f9805041760cf4e2943c21a7dc7cde19a41f2b07c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d46a100fe650634e7e665abbc07e5deccff97aefb0485830278d53f2dee0a464
MD5 16723a0a85d72cef2f0de4c6037d7a7f
BLAKE2b-256 9dc6bd3ad0566913afa38d3585bee378dd85e023fe40b60ff13182b742a53452

See more details on using hashes here.

File details

Details for the file pyspecdata-0.9.45.4-cp39-cp39-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp39-cp39-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 18de0901d8f7c988da6cf4ee92c4ef8b4ba72521cf04ff7e479980d0919b12da
MD5 ba64231707d476f55b6136697abdce5e
BLAKE2b-256 c572ffb63e16e67bb4d04073e201b4ef21c81ed1b5e18b1a6fe632143dced8d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.4-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 5bea22ea11692b3e0fd26a906c9b7c5bf59f346144df1cbf5ab9109bafe68fee
MD5 cd9534bf914f07f73348afaefd012b79
BLAKE2b-256 d396e8427561b6c33fbe51d39063cdba69767466676c51b226aafc08fa394d8d

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