or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

configuration.mdconstants.mdconvolution.mdcoordinates.mdcosmology.mdfits-io.mdindex.mdmodeling.mdnddata.mdsamp.mdstatistics.mdtables.mdtime.mdtimeseries.mduncertainty.mdunits-quantities.mdutils.mdvisualization.mdwcs.md

fits-io.mddocs/

0

# FITS File I/O

1

2

Complete FITS (Flexible Image Transport System) file support for reading, writing, and manipulating astronomical data files with headers, image data, and binary tables.

3

4

## Capabilities

5

6

### Basic FITS Operations

7

8

High-level functions for common FITS file operations including reading data and headers, writing files, and updating existing files.

9

10

```python { .api }

11

def open(name, mode='readonly', memmap=None, save_backup=False, cache=True, lazy_load_hdus=True, **kwargs):

12

"""

13

Open a FITS file and return an HDUList object.

14

15

Parameters:

16

- name: file name or file-like object

17

- mode: file access mode ('readonly', 'update', 'append', 'denywrite', 'ostream')

18

- memmap: use memory mapping for large files

19

- save_backup: save backup when updating files

20

- cache: cache file in memory

21

- lazy_load_hdus: load HDUs only when accessed

22

23

Returns:

24

HDUList: list of Header Data Units

25

"""

26

27

def getdata(filename, *args, header=False, lower=None, upper=None, view=None, **kwargs):

28

"""

29

Get data from FITS file.

30

31

Parameters:

32

- filename: FITS file name

33

- *args: HDU specification (ext, extname, extver)

34

- header: also return header

35

- lower, upper: data range bounds

36

- view: numpy slice for data subset

37

38

Returns:

39

ndarray or tuple: data array, optionally with header

40

"""

41

42

def getheader(filename, *args, **kwargs):

43

"""

44

Get header from FITS file.

45

46

Parameters:

47

- filename: FITS file name

48

- *args: HDU specification

49

50

Returns:

51

Header: FITS header object

52

"""

53

54

def writeto(filename, data, header=None, output_verify='exception', overwrite=False, checksum=False, **kwargs):

55

"""

56

Write data to FITS file.

57

58

Parameters:

59

- filename: output file name

60

- data: data array to write

61

- header: FITS header

62

- output_verify: verification level

63

- overwrite: overwrite existing file

64

- checksum: compute checksums

65

"""

66

67

def append(filename, data, header=None, checksum=False, verify=True, **kwargs):

68

"""Append HDU to existing FITS file."""

69

70

def update(filename, data, *args, header=None, verify=True, **kwargs):

71

"""Update HDU in existing FITS file."""

72

73

def info(filename, output=None, **kwargs):

74

"""

75

Print summary information about FITS file.

76

77

Parameters:

78

- filename: FITS file name

79

- output: output stream (default: stdout)

80

"""

81

```

82

83

### HDU Classes and Structure

84

85

HDU (Header Data Unit) classes representing different types of FITS extensions with headers and data.

86

87

```python { .api }

88

class HDUList:

89

"""

90

List-like container for FITS Header Data Units.

91

92

Parameters:

93

- hdus: list of HDU objects

94

- file: associated file object

95

"""

96

def __init__(self, hdus=[], file=None): ...

97

98

def writeto(self, fileobj, output_verify='exception', overwrite=False, checksum=False):

99

"""Write HDUList to file."""

100

101

def append(self, hdu):

102

"""Append HDU to list."""

103

104

def insert(self, index, hdu):

105

"""Insert HDU at specified index."""

106

107

def info(self, output=None):

108

"""Print information about HDUs."""

109

110

def verify(self, option='warn'):

111

"""Verify FITS standard compliance."""

112

113

def close(self):

114

"""Close associated file."""

115

116

def __getitem__(self, key):

117

"""Get HDU by index, name, or (name, version)."""

118

119

class PrimaryHDU:

120

"""

121

Primary Header Data Unit (first HDU in FITS file).

122

123

Parameters:

124

- data: data array

125

- header: FITS header

126

- do_not_scale_image_data: disable automatic scaling

127

- uint: treat signed integers as unsigned

128

- scale_back: scale data when writing

129

"""

130

def __init__(self, data=None, header=None, do_not_scale_image_data=False, uint=False, scale_back=None): ...

131

132

@property

133

def data(self):

134

"""HDU data array."""

135

136

@property

137

def header(self):

138

"""HDU header."""

139

140

def writeto(self, name, output_verify='exception', overwrite=False, checksum=False): ...

141

142

class ImageHDU(PrimaryHDU):

143

"""Image extension HDU."""

144

def __init__(self, data=None, header=None, name=None, **kwargs): ...

145

146

class BinTableHDU:

147

"""

148

Binary table HDU.

149

150

Parameters:

151

- data: table data (structured array, Table, etc.)

152

- header: FITS header

153

- name: extension name

154

- uint: handle unsigned integers

155

- character_as_bytes: handle character columns

156

"""

157

def __init__(self, data=None, header=None, name=None, uint=False, character_as_bytes=False): ...

158

159

@classmethod

160

def from_columns(cls, columns, header=None, nrows=None, fill=False, **kwargs):

161

"""Create from Column objects."""

162

163

class TableHDU:

164

"""ASCII table HDU."""

165

def __init__(self, data=None, header=None, name=None): ...

166

167

class CompImageHDU:

168

"""Compressed image HDU."""

169

def __init__(self, data=None, header=None, name=None, compression_type='RICE_1', **kwargs): ...

170

```

171

172

### Header Manipulation

173

174

FITS header handling with keyword management, comments, and history records.

175

176

```python { .api }

177

class Header:

178

"""

179

FITS header with ordered keyword-value pairs.

180

181

Parameters:

182

- cards: list of Card objects or keyword-value pairs

183

- txtfile: read from text file

184

- copy: copy input data

185

"""

186

def __init__(self, cards=[], txtfile=None, copy=True): ...

187

188

def __getitem__(self, key):

189

"""Get header value by keyword."""

190

191

def __setitem__(self, key, value):

192

"""Set header keyword value."""

193

194

def __delitem__(self, key):

195

"""Delete header keyword."""

196

197

def __contains__(self, key):

198

"""Check if keyword exists."""

199

200

def append(self, card=None, useblanks=True, bottom=False, end=False):

201

"""Append card to header."""

202

203

def insert(self, key, card, useblanks=True, after=False):

204

"""Insert card before/after specified keyword."""

205

206

def remove(self, keyword, ignore_missing=False, remove_all=False):

207

"""Remove keyword from header."""

208

209

def rename_keyword(self, oldkeyword, newkeyword, force=False):

210

"""Rename header keyword."""

211

212

def set(self, keyword, value=None, comment=None, before=None, after=None, savecomment=False):

213

"""Set keyword value with optional positioning."""

214

215

def update(self, *args, **kwargs):

216

"""Update header with new keywords."""

217

218

def add_history(self, value, before=None, after=None):

219

"""Add HISTORY record."""

220

221

def add_comment(self, value, before=None, after=None):

222

"""Add COMMENT record."""

223

224

def add_blank(self, value='', before=None, after=None):

225

"""Add blank card."""

226

227

def copy(self, strip=False):

228

"""Copy header."""

229

230

class Card:

231

"""

232

Individual FITS header card (keyword-value-comment).

233

234

Parameters:

235

- keyword: FITS keyword (8 characters max)

236

- value: keyword value

237

- comment: keyword comment

238

- image: create from raw 80-character string

239

"""

240

def __init__(self, keyword=None, value=None, comment=None, image=None): ...

241

242

@property

243

def keyword(self):

244

"""FITS keyword."""

245

246

@property

247

def value(self):

248

"""Keyword value."""

249

250

@property

251

def comment(self):

252

"""Keyword comment."""

253

254

@property

255

def image(self):

256

"""80-character card image."""

257

```

258

259

## Usage Examples

260

261

### Basic FITS File Operations

262

263

```python

264

from astropy.io import fits

265

import numpy as np

266

267

# Read FITS file

268

with fits.open('image.fits') as hdul:

269

fits.info('image.fits') # Print file info

270

header = hdul[0].header # Primary header

271

data = hdul[0].data # Primary data

272

273

# Access extension by name

274

if 'EVENTS' in hdul:

275

events = hdul['EVENTS'].data

276

277

# Quick data access

278

data = fits.getdata('image.fits')

279

header = fits.getheader('image.fits')

280

data, header = fits.getdata('image.fits', header=True)

281

```

282

283

### Creating and Writing FITS Files

284

285

```python

286

# Create simple image

287

data = np.random.random((100, 100))

288

289

# Write with basic header

290

fits.writeto('output.fits', data, overwrite=True)

291

292

# Create custom header

293

hdr = fits.Header()

294

hdr['OBJECT'] = 'M31'

295

hdr['EXPTIME'] = 600.0

296

hdr['FILTER'] = 'V'

297

hdr.add_comment('This is a test image')

298

299

fits.writeto('output_with_header.fits', data, header=hdr, overwrite=True)

300

```