Skip to main content

A full featured python library to read from and write to FITS files.

Project description

A python library to read from and write to FITS files.

Build Status (master) tests

Description

This is a python extension written in c and python. Data are read into numerical python arrays.

A version of cfitsio is bundled with this package, there is no need to install your own, nor will this conflict with a version you have installed.

Some Features

  • Read from and write to image, binary, and ascii table extensions.
  • Read arbitrary subsets of table columns and rows without loading all the data to memory.
  • Read image subsets without reading the whole image. Write subsets to existing images.
  • Write and read variable length table columns.
  • Read images and tables using slice notation similar to numpy arrays. This is like a more powerful memmap, since it is column-aware for tables.
  • Append rows to an existing table. Delete row sets and row ranges. Resize tables, or insert rows.
  • Query the columns and rows in a table.
  • Read and write header keywords.
  • Read and write images in tile-compressed format (RICE,GZIP,PLIO,HCOMPRESS).
  • Read/write gzip files directly. Read unix compress (.Z,.zip) and bzip2 (.bz2) files.
  • TDIM information is used to return array columns in the correct shape.
  • Write and read string table columns, including array columns of arbitrary shape.
  • Read and write complex, bool (logical), unsigned integer, signed bytes types.
  • Write checksums into the header and verify them.
  • Insert new columns into tables in-place.
  • Iterate over rows in a table. Data are buffered for efficiency.
  • python 3 support, including python 3 strings

Examples

import fitsio
from fitsio import FITS,FITSHDR

# Often you just want to quickly read or write data without bothering to
# create a FITS object.  In that case, you can use the read and write
# convienience functions.

# read all data from the first hdu that has data
filename='data.fits'
data = fitsio.read(filename)

# read a subset of rows and columns from a table
data = fitsio.read(filename, rows=[35,1001], columns=['x','y'], ext=2)

# read the header
h = fitsio.read_header(filename)
# read both data and header
data,h = fitsio.read(filename, header=True)

# open the file and write a new binary table extension with the data
# array, which is a numpy array with fields, or "recarray".

data = np.zeros(10, dtype=[('id','i8'),('ra','f8'),('dec','f8')])
fitsio.write(filename, data)

# Write an image to the same file. By default a new extension is
# added to the file.  use clobber=True to overwrite an existing file
# instead.  To append rows to an existing table, see below.

fitsio.write(filename, image)

#
# the FITS class gives the you the ability to explore the data, and gives
# more control
#

# open a FITS file for reading and explore
fits=fitsio.FITS('data.fits')

# see what is in here; the FITS object prints itself
print(fits)

file: data.fits
mode: READONLY
extnum hdutype         hduname
0      IMAGE_HDU
1      BINARY_TBL      mytable

# at the python or ipython prompt the fits object will
# print itself
>>> fits
file: data.fits
... etc

# explore the extensions, either by extension number or
# extension name if available
>>> fits[0]

file: data.fits
extension: 0
type: IMAGE_HDU
image info:
  data type: f8
  dims: [4096,2048]

# by name; can also use fits[1]
>>> fits['mytable']

file: data.fits
extension: 1
type: BINARY_TBL
extname: mytable
rows: 4328342
column info:
  i1scalar            u1
  f                   f4
  fvec                f4  array[2]
  darr                f8  array[3,2]
  dvarr               f8  varray[10]
  s                   S5
  svec                S6  array[3]
  svar                S0  vstring[8]
  sarr                S2  array[4,3]

# See bottom for how to get more information for an extension

# [-1] to refers the last HDU
>>> fits[-1]
...

# if there are multiple HDUs with the same name, and an EXTVER
# is set, you can use it.  Here extver=2
#    fits['mytable',2]


# read the image from extension zero
img = fits[0].read()
img = fits[0][:,:]

# read a subset of the image without reading the whole image
img = fits[0][25:35, 45:55]


# read all rows and columns from a binary table extension
data = fits[1].read()
data = fits['mytable'].read()
data = fits[1][:]

# read a subset of rows and columns. By default uses a case-insensitive
# match. The result retains the names with original case.  If columns is a
# sequence, a numpy array with fields, or recarray is returned
data = fits[1].read(rows=[1,5], columns=['index','x','y'])

# Similar but using slice notation
# row subsets
data = fits[1][10:20]
data = fits[1][10:20:2]
data = fits[1][[1,5,18]]

# Using EXTNAME and EXTVER values
data = fits['SCI',2][10:20]

# Slicing with reverse (flipped) striding
data = fits[1][40:25]
data = fits[1][40:25:-5]

# all rows of column 'x'
data = fits[1]['x'][:]

# Read a few columns at once. This is more efficient than separate read for
# each column
data = fits[1]['x','y'][:]

# General column and row subsets.
columns=['index','x','y']
rows = [1, 5]
data = fits[1][columns][rows]

# data are returned in the order requested by the user
# and duplicates are preserved
rows = [2, 2, 5]
data = fits[1][columns][rows]

# iterate over rows in a table hdu
# faster if we buffer some rows, let's buffer 1000 at a time
fits=fitsio.FITS(filename,iter_row_buffer=1000)
for row in fits[1]:
    print(row)

# iterate over HDUs in a FITS object
for hdu in fits:
    data=hdu.read()

# Note dvarr shows type varray[10] and svar shows type vstring[8]. These
# are variable length columns and the number specified is the maximum size.
# By default they are read into fixed-length fields in the output array.
# You can over-ride this by constructing the FITS object with the vstorage
# keyword or specifying vstorage when reading.  Sending vstorage='object'
# will store the data in variable size object fields to save memory; the
# default is vstorage='fixed'.  Object fields can also be written out to a
# new FITS file as variable length to save disk space.

fits = fitsio.FITS(filename,vstorage='object')
# OR
data = fits[1].read(vstorage='object')
print(data['dvarr'].dtype)
    dtype('object')


# you can grab a FITS HDU object to simplify notation
hdu1 = fits[1]
data = hdu1['x','y'][35:50]

# get rows that satisfy the input expression.  See "Row Filtering
# Specification" in the cfitsio manual (note no temporary table is
# created in this case, contrary to the cfitsio docs)
w=fits[1].where("x > 0.25 && y < 35.0")
data = fits[1][w]

# read the header
h = fits[0].read_header()
print(h['BITPIX'])
    -64

fits.close()


# now write some data
fits = FITS('test.fits','rw')


# create a rec array.  Note vstr
# is a variable length string
nrows=35
data = np.zeros(nrows, dtype=[('index','i4'),('vstr','O'),('x','f8'),
                              ('arr','f4',(3,4))])
data['index'] = np.arange(nrows,dtype='i4')
data['x'] = np.random.random(nrows)
data['vstr'] = [str(i) for i in xrange(nrows)]
data['arr'] = np.arange(nrows*3*4,dtype='f4').reshape(nrows,3,4)

# create a new table extension and write the data
fits.write(data)

# can also be a list of ordinary arrays if you send the names
array_list=[xarray,yarray,namearray]
names=['x','y','name']
fits.write(array_list, names=names)

# similarly a dict of arrays
fits.write(dict_of_arrays)
fits.write(dict_of_arrays, names=names) # control name order

# append more rows to the table.  The fields in data2 should match columns
# in the table.  missing columns will be filled with zeros
fits[-1].append(data2)

# insert a new column into a table
fits[-1].insert_column('newcol', data)

# insert with a specific colnum
fits[-1].insert_column('newcol', data, colnum=2)

# overwrite rows
fits[-1].write(data)

# overwrite starting at a particular row. The table will grow if needed
fits[-1].write(data, firstrow=350)


# create an image
img=np.arange(2*3,dtype='i4').reshape(2,3)

# write an image in a new HDU (if this is a new file, the primary HDU)
fits.write(img)

# write an image with rice compression
fits.write(img, compress='rice')

# control the compression
fimg=np.random.normal(size=2*3).reshape(2, 3)
fits.write(img, compress='rice', qlevel=16, qmethod='SUBTRACTIVE_DITHER_2')

# lossless gzip compression for integers or floating point
fits.write(img, compress='gzip', qlevel=None)
fits.write(fimg, compress='gzip', qlevel=None)

# overwrite the image
fits[ext].write(img2)

# write into an existing image, starting at the location [300,400]
# the image will be expanded if needed
fits[ext].write(img3, start=[300,400])

# change the shape of the image on disk
fits[ext].reshape([250,100])

# add checksums for the data
fits[-1].write_checksum()

# can later verify data integridy
fits[-1].verify_checksum()

# you can also write a header at the same time.  The header can be
#   - a simple dict (no comments)
#   - a list of dicts with 'name','value','comment' fields
#   - a FITSHDR object

hdict = {'somekey': 35, 'location': 'kitt peak'}
fits.write(data, header=hdict)
hlist = [{'name':'observer', 'value':'ES', 'comment':'who'},
         {'name':'location','value':'CTIO'},
         {'name':'photometric','value':True}]
fits.write(data, header=hlist)
hdr=FITSHDR(hlist)
fits.write(data, header=hdr)

# you can add individual keys to an existing HDU
fits[1].write_key(name, value, comment="my comment")

# Write multiple header keys to an existing HDU. Here records
# is the same as sent with header= above
fits[1].write_keys(records)

# write special COMMENT fields
fits[1].write_comment("observer JS")
fits[1].write_comment("we had good weather")

# write special history fields
fits[1].write_history("processed with software X")
fits[1].write_history("re-processed with software Y")

fits.close()

# using a context, the file is closed automatically after leaving the block
with FITS('path/to/file') as fits:
    data = fits[ext].read()

    # you can check if a header exists using "in":
    if 'blah' in fits:
        data=fits['blah'].read()
    if 2 in f:
        data=fits[2].read()

# methods to get more information about extension.  For extension 1:
f[1].get_info()             # lots of info about the extension
f[1].has_data()             # returns True if data is present in extension
f[1].get_extname()
f[1].get_extver()
f[1].get_extnum()           # return zero-offset extension number
f[1].get_exttype()          # 'BINARY_TBL' or 'ASCII_TBL' or 'IMAGE_HDU'
f[1].get_offsets()          # byte offsets (header_start, data_start, data_end)
f[1].is_compressed()        # for images. True if tile-compressed
f[1].get_colnames()         # for tables
f[1].get_colname(colnum)    # for tables find the name from column number
f[1].get_nrows()            # for tables
f[1].get_rec_dtype()        # for tables
f[1].get_rec_column_descr() # for tables
f[1].get_vstorage()         # for tables, storage mechanism for variable
                            # length columns

# public attributes you can feel free to change as needed
f[1].lower           # If True, lower case colnames on output
f[1].upper           # If True, upper case colnames on output
f[1].case_sensitive  # if True, names are matched case sensitive

Installation

The easiest way is using pip or conda. To get the latest release

pip install fitsio

# update fitsio (and everything else)
pip install fitsio --upgrade

# if pip refuses to update to a newer version
pip install fitsio --upgrade --ignore-installed

# if you only want to upgrade fitsio
pip install fitsio --no-deps --upgrade --ignore-installed

# for conda, use conda-forge
conda install -c conda-forge fitsio

You can also get the latest source tarball release from

https://pypi.python.org/pypi/fitsio

or the bleeding edge source from github or use git. To check out the code for the first time

git clone https://github.com/esheldon/fitsio.git

Or at a later time to update to the latest

cd fitsio
git update

Use tar xvfz to untar the file, enter the fitsio directory and type

python setup.py install

optionally with a prefix

python setup.py install --prefix=/some/path

Requirements

  • python 2 or python 3
  • a C compiler and build tools like make, patch, etc.
  • numpy (See the note below. Generally, numpy 1.11 or later is better.)

Do not use numpy 1.10.0 or 1.10.1

There is a serious performance regression in numpy 1.10 that results in fitsio running tens to hundreds of times slower. A fix may be forthcoming in a later release. Please comment here if this has already impacted your work https://github.com/numpy/numpy/issues/6467

Tests

The unit tests should all pass for full support.

pytest fitsio

Some tests may fail if certain libraries are not available, such as bzip2. This failure only implies that bzipped files cannot be read, without affecting other functionality.

Notes on Usage and Features

cfitsio bundling

We bundle cfitsio partly because many deployed versions of cfitsio in the wild do not have support for interesting features like tiled image compression. Bundling a version that meets our needs is a safe alternative.

array ordering

Since numpy uses C order, FITS uses fortran order, we have to write the TDIM and image dimensions in reverse order, but write the data as is. Then we need to also reverse the dims as read from the header when creating the numpy dtype, but read as is.

distutils vs setuptools

As of version 1.0.0, fitsio has been transitioned to setuptools for packaging and installation. There are many reasons to do this (and to not do this). However, at a practical level, what this means for you is that you may have trouble uninstalling older versions with pip via pip uninstall fitsio. If you do, the best thing to do is to manually remove the files manually. See this stackoverflow question for example.

python 3 strings

As of version 1.0.0, fitsio now supports Python 3 strings natively. This support means that for Python 3, native strings are read from and written correctly to FITS files. All byte string columns are treated as ASCII-encoded unicode strings as well. For FITS files written with a previous version of fitsio, the data in Python 3 will now come back as a string and not a byte string. Note that this support is not the same as full unicode support. Internally, fitsio only supports the ASCII character set.

TODO

  • HDU groups: does anyone use these? If so open an issue!

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

fitsio-1.2.6.tar.gz (4.5 MB view details)

Uploaded Source

Built Distributions

fitsio-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl (862.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

fitsio-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (836.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

fitsio-1.2.6-cp313-cp313-macosx_14_0_arm64.whl (728.6 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

fitsio-1.2.6-cp313-cp313-macosx_13_0_x86_64.whl (727.5 kB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

fitsio-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl (862.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

fitsio-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (836.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

fitsio-1.2.6-cp312-cp312-macosx_14_0_arm64.whl (728.6 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

fitsio-1.2.6-cp312-cp312-macosx_13_0_x86_64.whl (727.5 kB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

fitsio-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl (860.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

fitsio-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (834.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

fitsio-1.2.6-cp311-cp311-macosx_14_0_arm64.whl (728.5 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

fitsio-1.2.6-cp311-cp311-macosx_13_0_x86_64.whl (727.3 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

fitsio-1.2.6-cp310-cp310-musllinux_1_2_x86_64.whl (859.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

fitsio-1.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (833.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

fitsio-1.2.6-cp310-cp310-macosx_14_0_arm64.whl (728.5 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

fitsio-1.2.6-cp310-cp310-macosx_13_0_x86_64.whl (727.3 kB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

fitsio-1.2.6-cp39-cp39-musllinux_1_2_x86_64.whl (859.1 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

fitsio-1.2.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (833.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

fitsio-1.2.6-cp39-cp39-macosx_14_0_arm64.whl (728.5 kB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

fitsio-1.2.6-cp39-cp39-macosx_13_0_x86_64.whl (727.3 kB view details)

Uploaded CPython 3.9macOS 13.0+ x86-64

File details

Details for the file fitsio-1.2.6.tar.gz.

File metadata

  • Download URL: fitsio-1.2.6.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fitsio-1.2.6.tar.gz
Algorithm Hash digest
SHA256 33b0cdbc53f1779e3d0a765d5ab474baf6c86eccf7c21375a07671f7b09b33af
MD5 f7dc6401c260c01d9ca4e91d17b5b825
BLAKE2b-256 728c60ad8b00056a2123e98f40c0f49c4680734298708b69dc5e3822027ced1b

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 de22ca09bf2f7cfb2b7999484c9aca5fc552c787932861ce116d561538eb90b4
MD5 6a3d691de0dbca9881a6ef6698650be5
BLAKE2b-256 c388620e8d03b76e4d74f0ad175642f0bc265b37d4b4a6857e31aee3aad70d92

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d5741663d40263ebabfdda28ec4b72e68defce5d8dd695c2dd2332462f85dda
MD5 9531263cf57bd52efd0b180bcb8b33c8
BLAKE2b-256 67d134c89883a8f84814a7ede38b341bce5ca3b836a962c2116ea14c5ff0d875

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b9015cf5d3d6013259672e7e63d6959b4e21fbdcd5a38bd5ff206ef427a77458
MD5 961b7ecba39fd3ba2b255ca0aa841bdd
BLAKE2b-256 1ae0a5ccff1239a140ad26eb8e5e8d17a051218701d55a97cf21a0626de99097

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f6e91a8171a066c006969df7dbef3bdf049a78b081bd892c96e58c964ac3143e
MD5 6e95641609383e909d35421ddf3a042a
BLAKE2b-256 98c85253b349e6d29a2fa4a774c17ccf92734d31cde06c62993b623a5748d73f

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73676128ea87d1cff6ff9f071d6a5a5d0e5070a74c6e6a83ee7edd0caa40c024
MD5 7b8277e8f0b6987e2b67ac06706e486e
BLAKE2b-256 63ed80780f04be8258a650f419b61aa17cf526442ca16c97e7f90f058dc4bd68

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b48c6d87a2f52c037758d730605afd5ea576bebd99ce52d1dbbd45c9c2ce0930
MD5 d4e6ea440db73e67ad94a59802065fdc
BLAKE2b-256 2a0aac040356becd85a5064c9a23bef0f4927561f2fb4a6d6d8c088070b17401

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 23785371de318aee799f0a2cfc6d887c1df89bb5b8db9461dd425cdb7f54f149
MD5 f1279a678744848d63ca658ea2234cfc
BLAKE2b-256 53b2d7497ecbee79cd972aa8d8e39fdb246af4e789f58efe4977d413d9934bfc

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 c30da5472c79c02e424eb47b92d8e22ed82eb0e8155e8541f23af7162375e6ee
MD5 c233e68afb580c22dd0ebb13bff7c408
BLAKE2b-256 e73be89b1edcf9172c199d1a8b85ee7b792400d148a8a2f2f99d29169337cfe8

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ff966bb4eb64deaa16e0ccf2eadd96b0daa394c52d12d8ad345a9e6fae2e6466
MD5 c605990bb9b1c20f0e41ee83ddfef932
BLAKE2b-256 e0fa5aeff4f74941a493f2b02cf7440bdf801b2e81ec8813c425f77066b3a241

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b216fd076165b26a8c626c06c2e1999fcec0fafe70c87c3a82118ba15ac7ede8
MD5 17a683b5f501d52098ff6e5b15d318de
BLAKE2b-256 630dbb8ae47d1b0c5ce5f34cc380e686db0a16dc637277dcdb1e8d60c24ca18b

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0f5ae019043668a3c776d171c54167818a6248ee96ab850a30f4bba9f85009d2
MD5 2d76c80b826aa2d42848014f72d9967c
BLAKE2b-256 bb5e75fd51bb6daeb99a33c74433bfb350335722ba13d584665432c71ca67e2c

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d04d330e508ea401cc31a89974d0cf94fa1e442160c59e2ec973bfc2d21c1a0a
MD5 3ba8a2ccfe82fbac56821388fe6eab04
BLAKE2b-256 ba1c527af1f94d863a54ed80db11e20694c9ec534188ab334ce1d2a18cd3a39a

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9e6e55dd03c97fcc078cd2f9b782b73e3fd5d258308309f5e6028a5f3d406f64
MD5 b77e716f143b14b47c7a4b50b84f44ce
BLAKE2b-256 5291eae64fa74ee11bcfe72cc804139763b6b9ae64c051e0bfd98159a282330f

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c4fa1695472481aa651e4febbe30dc4fde559962e1677cf56b42519dbcc8a3b0
MD5 3675d945eae83bb757cc48cb10d5a489
BLAKE2b-256 57e239cca749b8e9e2a730f2add08e75b17d7820850327072db2b8be2af94eba

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a00472b919a9e7931eec6961710088b3651f3c3058dac14ada7e27e6d86d2265
MD5 84621983b3ed05e8bbcafb2ac91dfa87
BLAKE2b-256 e680b2be3e74041955080a450f32e6a089ef35fc06a098c9a874d86132927c4c

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8aa2c52bf94e4f6439771f8defd1dc4e7bab1414eeba5517395c4fe8558ec1f8
MD5 926f88590364ff9205ef740861547cfe
BLAKE2b-256 53931888a6e44f6cc15aa0056b80a32e39163dc10da24be335bedcdfca4a9327

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ee890b42b3974c8d694b24e742826f134f54d4b77a457fdef3447f77b484b754
MD5 0dbf355f740e960f0e43aacf385fa300
BLAKE2b-256 059feb4ab9fd4578c4fd2cb138fd1a573876553e95b465edb7c15c5ee84eeeb9

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc6dbbf29d9cda567dc733e4b5c9ae1ac8e317fd2c77f644c3b37a941bf28704
MD5 1ab5b1866003c440e5cd2b5a89bea0f9
BLAKE2b-256 07403fee295bfff445b915cf006a0d5b76be2b3323bcd286c77a9e3900c39bff

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 856cfbfda1fd320f3ca074b4c673b19cda7732df103869dcd20a423d22746158
MD5 71a98beb4b406af45bb3f5870b499bca
BLAKE2b-256 c787c35ebb3a425028e060ed177fba12066e90f0639d2202a8b16e388b4128b3

See more details on using hashes here.

File details

Details for the file fitsio-1.2.6-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.6-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 efc0ced7efb05d1dc95a1d3d340ba18be0f3c3d1bad3dd188aeda106b809fae5
MD5 23466deb76720c48f85995bea9074869
BLAKE2b-256 d4b5f67e5f2ad4fb52239a13254b7695dbd4400b8f1fd1a69be74b2defc17ff7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page