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.

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, please don’t hesitate to reach out to us at jmf356 [at] cornell.edu; 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 m2w64-toolchain are for building compiled extensions such as the ILT).

    • On an ASUS Vivobook, conda looks like it’s completely dead → 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

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, pySpecData also offers a (we think superior) method that downloads local copies of files on-demand using rclone. 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.)

Inside the RcloneRemote section, 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

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.

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

Uploaded CPython 3.14Windows x86-64

pyspecdata-0.9.45.3-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.3-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.3-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.3-cp314-cp314-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

pyspecdata-0.9.45.3-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.3-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.3-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.3-cp313-cp313-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

pyspecdata-0.9.45.3-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.3-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.3-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.3-cp312-cp312-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

pyspecdata-0.9.45.3-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.3-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.3-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.3-cp311-cp311-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyspecdata-0.9.45.3-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.3-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.3-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.3-cp310-cp310-macosx_15_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

pyspecdata-0.9.45.3-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.3-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.3-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.3-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.3.tar.gz.

File metadata

  • Download URL: pyspecdata-0.9.45.3.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.3.tar.gz
Algorithm Hash digest
SHA256 dd2dcf0560f42626346ec402bfe8ee95f57b95efce23b3eb09931f00e7d6c49a
MD5 c576b82f84c2f2c9e3dba72db9cbd762
BLAKE2b-256 c42c88483d9241b3136eb850d212af71789baf50e3693c1c5e1aa00150f8ae3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 564af0b45cd86203fefc634c6895685a0924a8eaf045046e802665107e2850a3
MD5 daf8b86d928d9c39fc92414ee6933d86
BLAKE2b-256 d610250609b78f1b2a4019b3318bfba99aec90b950a612fb5336ecb261c5e367

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e5dc1d3304b7440ccb3b112d67e074276c0c42b5201d240957523ae199c2d1c1
MD5 d8eca7cb0c8e1666574246b2293b4804
BLAKE2b-256 54bd53d64cc4e9dcdfa98344d2bc30ef183deaa2453a7404d0f82b7753e70c71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6b25419bc03283de902329362e7b22569840b438753d1cb5887754443dc93531
MD5 b17266ebb62bc6c69295c4b8ef5b0816
BLAKE2b-256 100f400bd46f52eabc92ff3cbe61eac869974633dd9b6c1ca23e95db4662d0a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 82a65ae708b3b58180c972c3a16f8265f93bc1dc860d5591fab9435af3cbd32c
MD5 fa54e1b6be1fae9b31c94edb0f26c7aa
BLAKE2b-256 baf8c01df7c25682f13a41123be330d39172d28e521fc8a829494bf62614c4a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ff4cf1301692367468c4ba2ce376a5d2b742d887534e54f5ec30d0cd76b3ca25
MD5 6faf5546be484d3042ea8d5d00d26a64
BLAKE2b-256 7289edec44d56b3ef0474ae14733e9af0d95997830b111cc6344061b747f08da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6da06b1daad5a28ddc497c48be659bbc61b1f12f551beb8bd9d0fc96b98ae8f6
MD5 4a602ebfe53280b8e46a3fd95db125e5
BLAKE2b-256 e18d1d63d09fb4556c0d5a05b14279cb68cf4f25a11ad1d31b9e4fd9c849db9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3565bd1944c340aa7991502af1e76149749247a095a1072890507667b2291d61
MD5 f27e230a0e1f133be472daf87a99dab8
BLAKE2b-256 2089b009f193b125df675b92ea7d3d692d21ec81c12d08dec93e567ef8873a3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c3131fbfb202ffe2f9190807b64fe22b4d6bf5f139ca6cf0af561886933d72c
MD5 d3be9b7d3a6c88e8dbb2784f6edd2f6d
BLAKE2b-256 118cf6eb08b61898a745fa0dc3b0fe43b16c514fdcff47e08f733fb82e77b01a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1b789e027d6a0550bd5dac67dc15f0f169f735b97c7e7933e9b54e7316bbe6ec
MD5 2b1ca5680bbec8874b0e753aa85668f6
BLAKE2b-256 0a75d494c201e8469696a9258ad8c8f83a0c6ea28c5207fa93aab90bb1b25a9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 411ed2082ed36add55171c11b1334528ce464401b21d386cb01f21a1c3b0ecb5
MD5 b65c2d5ce72f03ada972766fc988407b
BLAKE2b-256 dc95b87d97f19d26d6658db2a1f003830d475391ad0a2424827f936c65c68fd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 29b9340737703a34f38a684134117516bafcc0c94a5252c0b3818c268f1afee7
MD5 164e883e330313d6417e0fd65c4a3bcf
BLAKE2b-256 1b7f9226845f7adcfd5b52437a642e0140132b4bfca49ae3b70880778e86edff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ed9dc3cc1dab09e41694102a7b65949950c0dd04e6cb27526b1ed66f08873e84
MD5 7be1b6db45325fd77cde630530d7abb3
BLAKE2b-256 e2aadf10a32f3c13a72f39dfb806cfd5a8fec429a17aeead8d945bf95debbca9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee5d790f0d9ac4f3d4f7b29493eb3391d9037a4a7c292062f136410e1a92601c
MD5 d267f87c6988a8460736605f71dc2cca
BLAKE2b-256 7e2837f04aefec5c16bfc2bb1d814a831194a157a7c1408ae02ce4298bd357e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 83e56cc247408476a3dfe12c35ee899363c4c653f8d833f0d2e5e0718d6a9640
MD5 2908a44db4656624cfcb73f7436994e6
BLAKE2b-256 7d74b25717186da620753140f64d9341999dc3d0aaf49cd769326657780e3938

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 360d096a34ec38a8be42b84f1b5f562b0e07ed7e9c2728d6b80e5df661a2b18b
MD5 f6d28d4cb119022aab3a465719bb4a01
BLAKE2b-256 f2d1b61256c31b30662be73182a3239d0dcba3ba9609e71f0c9af7dee185874d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e8131915018e91cd1fb2a89428db7de0f51cfc1fcce31b9a1d44b898cb680d96
MD5 0dbb2b8583d0f799729f6569a047e921
BLAKE2b-256 f095b8edeab1b03ff2f054c174c71ee2bc04e9c743de50caf976361dbf8eeae6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35e82c37969a335725fc70d63fe2b493f4aeb3639249f0695d7a69bf972732ff
MD5 f109ab31a30c803b0893955335b0fd9e
BLAKE2b-256 013f40c5d39fe6f15ace235f444f2fa528fa643df6c0ba72c4e7060e3a0977fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 01a18dad3468fb2f4f17d5077d93cd01a469feef64ef5c4cbf3bd840ddcf33a4
MD5 fd67eea75b0167a00bc67db4c35d0455
BLAKE2b-256 29c83c060384786a556d9825b1d09c71bdd3b24ba11c1e9d498a6f4535bbc709

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 ced30c4236b4659aa4dbe69fbf90264acac3ca00cea8fc3295ef2f9907851d73
MD5 098f1311e7783aa69b2ea3aeea87b0ef
BLAKE2b-256 4268906e4fb3a84f69d3026c78d133e4b2671f8666dc680f9da3971c6b5137f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b5b13bc60791bc20d494d964861ee22a6d888ef15027309ad5f0fa3418008898
MD5 8db00013765779574a27bf21c656de6c
BLAKE2b-256 16e28ebda065267b7cb4dc54e8e813c6cf8be0f6bbc6d1ee15617ed5694887e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4fc06e7ebfe573da34b0b10f2e05aaa50670f21c8e5435764f2436e47d5b3c29
MD5 0f1190912b80cb04244e7022823e5c1d
BLAKE2b-256 aa7ea3fe90fbbddd443dbe51de6adb920aead35b9e7a7adbc09fc8c66f5eb7fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 610e9abb384ddfd88c4cb78ab88b74794a8c941284921f099bf0400d0cefa1ab
MD5 22ae0c708fa77e2510794d585dac3a0c
BLAKE2b-256 6822be39257e4f7f0de5b1407dbdb8a923f94f8c0d6b7bc432498eae55b90bd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f1e3969fe1386d9e9c729e51d2b7b592309b304a4ec07392bfdcd26ce5fb5695
MD5 8edee018ec2b3cad7b61b150e5e2193e
BLAKE2b-256 08c90859efac8dc197289e983249aa72a5cedd3a64461152018d98dbec66a419

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 8e8743eb4ca81a65cdeff1538dcaaa62340304ddb64a508a024c7d814df6d279
MD5 f4038fac5325ba8a65ea5287327d08bf
BLAKE2b-256 21b521d380ebe3a98403faca4b374b790b7ed22607a74f16f3d8793ccbb82e6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 5ab796a1fc4f28890f07ec735aa54ac1884c06afe872aba402e1448c35eb0bb1
MD5 373581781dfa052a88d05c152d02db70
BLAKE2b-256 bff9fd4a51e55b2e1c58fb4dfd974add6e8edf40e7dba68b1e05700f832f4de4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 73c70a5e4201c0ebadcf5b968f4a2415a86effb8d4aef99ab4a011f02f9e9c3f
MD5 073f2f847db82d1272c2cbeff1b822d7
BLAKE2b-256 ceecbd78dec99f72b616281cc87846a32fbc64099e6a06d4eca01f8b0d8aa472

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 386d0a109c4d7e5c1857fbc1afb3607921ae1d8c9d1f5d5f83ed2e5ec6ce420e
MD5 94cd65b53e72de8ee03988785da30e27
BLAKE2b-256 743029bbaf1165d350e7f70256b4af4bd2a0d9df70b8aa02ffe78ad6769af694

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 671cc657cde2f6b8d583c7b19fde52c2f2b09d88d87657e0529adc3d26fc4e05
MD5 e6f63ebec5a5def226edb131f8500abe
BLAKE2b-256 e228616d36f1c94ee4aa6beeed9c6d5569ad269b9e25afef8fb3feb24f6e8647

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp39-cp39-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 fcb05be17c325b2b699e9f2a62ec5b4fd12e14c2270eb14b35f7fe2b3d48f510
MD5 972728e77b8cb4d4ef935f2f7ff37057
BLAKE2b-256 02926862cee7d5776cde4029001aeda44e4f4bac4b85f2d79ea165f4d5ad3c2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyspecdata-0.9.45.3-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 de6e8d6babdc5d2a53b52ed997521be5e9288249f1286091e016354db21755f8
MD5 f3b0db0d5938fd764b649a19093860c7
BLAKE2b-256 149610e9b41073521a4064aa75f847e3d05d8b536b74494401c04b8cca120cad

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