Read and Update Existing FITS Files
5
This example returns the 28th (like Python lists, it is 0-indexed)
keyword’s value, an integer, 96.
Similarly, it is easy to update a keyword’s value in PyFITS, either
through keyword name or index:
Use the above syntax if the keyword is already present in the header. If
the keywordmightnot exist and you want to add it if it doesn’t, use the
update()
method:
A header consists of
Card
objects (i.e. the 80-column card-images
specified in the FITS standard). Each Card normally has up to three parts:
key, value, and comment. To see the entire list of cardimages of an HDU,
use the
ascardlist()
method :
Only the first three cards are shown above.
To get a list of all keywords, use the
keys()
method of the card list:
2.1.3  Working with Image Data
If an HDU’s data is an image, the
data
attribute of the HDU object will
return a numarray object. Refer to the numarray Manual for details of
manipulating these numerical arrays.
Here,
scidata
points to the data object in the second HDU (the first
HDU,
hdulist[0]
,being the primary HDU) in
hdulist
,which corresponds
>>> prihdr = hdulist[0].header
>>> hdr[’targname’] = ’NGC121-a’
>>> hdr[27] = 99
>>> prihdr.update(’observer’, ’Edwin Hubble’)
>>> print prihdr.ascardlist()[:3]
SIMPLE =
T / file does conform to FITS standard
BITPIX  =                   16 / number of bits per data pixel
NAXIS   =                    0 / number of data axes
>>> prihdr.ascardlist().keys()
[’SIMPLE’, ’BITPIX’, ’NAXIS’, ...]
>>> scidata = hdulist[1].data
Reorder pages in a pdf - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
move pdf pages online; change pdf page order
Reorder pages in a pdf - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
rearrange pages in pdf reader; rearrange pdf pages in preview
6
Chapter 2: A Quick Tutorial
to the
‘SCI’
extension. Alternatively, you can access the extension by its
extension name (specified in the
EXTNAME
keyword
)
:
The returned numarray object has many attributes and methods for a
user to get information about the array, e. g.:
Since image data is a numarray object, we can slice it, view it, and
perform mathematical operations on it. To see the pixel value at x=5, y=2:
Note that, like C (and unlike FORTRAN), Python is 0-indexed and the
indices havethe slowestaxis firstandfastaxislast,i.e. fora 2-D image, the
fast axis (X-axis) which corresponds to the FITS NAXIS1 keyword, is the
second index.Similarly, the sub-section ofx=11 to20 (inclusive)and y=31
to 40 (inclusive) is:
To update the value of a pixel or a sub-section:
This example changes the values of both the pixel [1,4] and the
sub-section [30:40,10:20] to the new value of 999.
>>> scidata = hdulist[’SCI’].data
If there is more than one extension with the same
EXTNAME
,
EXTVER
’s
value needs to be specified as the second argument, e.g.:
hdulist[’sci’,2]
.
>>> scidata.shape
(800, 800)
>>> scidata.type()
Float32
>>> print scidata[1,4]
>>> scidata[30:40, 10:20]
>>> scidata[30:40,10:20] = scidata[1,4] = 999
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview. Reorder TIFF Pages in C#.NET Application.
how to reorder pdf pages in reader; pdf reverse page order
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
Sort and Reorder PowerPoint Slides Range with VB amount of robust PPT slides/pages editing methods powerful & profession imaging controls, PDF document, image
reorder pages in pdf reader; how to rearrange pages in a pdf file
Read and Update Existing FITS Files
7
Next example of array arithmetics is to convert the image data from
counts to flux:
This example performs the math on the arrayin-place, thereby keeping
the memory usage to a minimum. (Note: before Python 2.2.3, the use of
"*=" may cause an error, this is fixed in later Python versions.)
If atthis point you want to preserve all the changes you made and write
it to a new file, you can use the
writeto()
method of
HDUList
(see below).
2.1.4  Working with Table Data
If you are familiar with the record array in numarray, you will find the
table data is basically a record array with some extra properties. But
familiarity with record arrays is not a prerequisite for this Guide.
Like images, the data portion of a FITS table extension is in the
.data
attribute:
To see the first row of the table:
Eachrow in the table is a
Record
object which looks like a (Python)
tuple containing elements of heterogeneous data types. In this example: an
integer, a string, a floating pointnumber, and a Boolean value. So the table
data are just an array of such Records. More commonly, a user is likely to
access the data in acolumn-wise way. This is accomplished by using the
field()
method.  To get the first column (orfield ) of the table, use:
A numarray object with the data type of the specified field is returned.
>>> photflam = hdulist[1].header[’photflam’]
>>> exptime = prihdr[’exptime’]
>>> scidata *= photflam / exptime
>>> hdulist = pyfits.open(’table.fits’)
>>> tbdata = hdulist[1].data
# assuming the first extension is a table
>>> print tbdata[0]
(1, ’abc’, 3.7000002861022949, 0)
>>> tbdata.field(0)
array([1, 2])
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
Users can use it to reorder TIFF pages in ''' &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
pdf page order reverse; how to move pages in pdf files
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
page, it is also featured with the functions to merge PDF files using C# .NET, add new PDF page, delete certain PDF page, reorder existing PDF pages and split
how to rearrange pdf pages reader; rearrange pdf pages in reader
8
Chapter 2: A Quick Tutorial
Like headerkeywords, a field can be referred eitherby index, as above,
or by name:
But howdo we know what field names we’ve got? First, let’s introduce
another attribute of the table HDU: the
.columns
attribute:
This attribute is a
ColDefs
(column definitions) object. If we use its
info()
method:
it will show all its attributes, such as names, formats, bscales, bzeros,
etc. We can also get these properties individually, e.g.:
returns a (Python) list of field names.
Since each field is a numarray object, we’ll have the entire arsenal of
numarray tools to use. We can reassign (update) the values:
>>> tbdata.field(’id’)
array([1, 2])
>>> cols = hdulist[1].columns
>>> cols.info()
name:
[’c1’, ’c2’, ’c3’, ’c4’]
format:
[’1J’, ’3A’, ’1E’, ’1L’]
unit:
[’’, ’’, ’’, ’’]
null:
[-2147483647, ’’, ’’, ’’]
bscale:
[’’, ’’, 3, ’’]
bzero:
[’’, ’’, 0.40000000000000002, ’’]
disp:
[’I11’, ’A3’, ’G15.7’, ’L6’]
start:
[’’, ’’, ’’, ’’]
dim:
[’’, ’’, ’’, ’’]
>>> cols.names
[’ID’, ’name’, ’mag’, ’flag’]
>>> tbdata.field(’flag’)[:] = 0
Read PDF in Web Image Viewer| Online Tutorials
from PDF documents; Extract images from PDF documents; Add, reorder pages in PDF files; Save and print PDF as you wish; More PDF Reading
how to rearrange pages in a pdf document; pdf change page order online
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
just following attached links. C# PDF: Add, Delete, Reorder PDF Pages Using C#.NET, C# PDF: Merge or Split PDF Files Using C#.NET.
move pages in a pdf file; how to move pages in a pdf document
Create New FITS Files
9
The
info()
method of table data will show the attributes of the record
array, many of them may seem esoteric to casual users:
2.2    Create New FITS Files
2.2.1  Save Changes
As mentioned earlier, after a user opened a file, made a few changes to
either header or data, the user can use the
writeto()
method in
HDUList
to
save the changes. This takes the version ofheaders and data in memory and
writes them to a new FITS file on disk. Subsequent operations can be
performed to the data in memory and written out to yet another different
file, all without recopying the original data to (more) memory.
willwrite the currentcontentof
hdulist
toa newdiskfile
newfile.fits
.
If a file was opened with the
update
mode, the
flush()
method can also be
used to write all the changes made since
open(),
back to the original file.
The
close()
method will do the same for a FITS file opened with
update
mode.
>>> tbdata.info()
class: <class ’pyfits.FITS_rec’>
shape: (2,)
strides: (12,)
byteoffset: 0
bytestride: 12
itemsize: 12
aligned: 0
contiguous: 1
buffer: <memory at 0x092dc3d8 with size:0x00000018 held by
object 0x4086eb20 aliasing object 0x00000000>
data pointer: 0x092dc3d8 (DEBUG ONLY)
field names: [’c1’, ’c2’, ’c3’, ’c4’]
field formats: [’1Int32’, ’1a3’, ’1Float32’, ’1Int8’]
>>> hdulist.writeto(’newimage.fits’)
>>> f = pyfits.open(’original.fits’, mode=’update’)
...    # making changes in data and/or header
>>> f.flush() # changes are written back to original.fits
.NET Multipage TIFF SDK| Process Multipage TIFF Files
SDK, developers are easily to access, extract, swap, reorder, insert, mark up and delete pages in any multi upload to SharePoint and save to PDF documents.
how to change page order in pdf document; move pages within pdf
C# Word: How to Create Word Document Viewer in C#.NET Imaging
in C#.NET; Offer mature Word file page manipulation functions (add, delete & reorder pages) in document viewer; Rich options to add
reorder pages pdf; how to move pages around in pdf file
10
Chapter 2: A Quick Tutorial
2.2.2  Create FITS Images from Scratch
So far we have demonstrated how to read and update an existing FITS
file. But how about creating a new FITS file from scratch? Such task is
very easy in PyFITS for an image HDU. We’ll first demonstrate how to
create a FITS file consisting only the primary HDU with image data.
First, we create a numarray object for the data part:
Next, we create a
PrimaryHDU
object to encapsulate the data:
we then create a
HDUList
to contain the newly created primary HDU,
and write to a new file:
That’s it! Infact, PyFITSevenprovides a shortcutforthe last two lines:
accomplishes the same!
2.2.3  Create FITS Tables from Scratch
To create a table HDU is a little more involved than image HDU,
because table’s structure needs more information. First of all, tables can
only be an extension HDU, not a primary. There are two kinds of FITS
table extensions: ASCII and binary. We’ll use binary table examples here.
To create a table from scratch, we need to define columns first, by
constructing the
Column
objects and their data. Say, we have two columns,
the first contains strings, and the second contains floating point numbers
>>> import numarray
>>> n = numarray.arange(100) # a simple sequence from 0 to 99
>>> hdu = pyfits.PrimaryHDU(n)
>>> hdulist = pyfits.HDUList([hdu])
>>> hdulist.writeto(’new.fits’)
>>> hdu.writeto(’new.fits’)
>>> a1=numarray.strings.array([’NGC1001’, ’NGC1002’, ’NGC1003’])
>>> a2=numarray.array([11.1,12.3,15.2])
>>> col1=pyfits.Column(name=’target’, format=’20A’, array=a1)
>>> col2=pyfits.Column(name=’V_mag’, format=’E’, array=a2)
Use the Convenience Functions
11
Second, create a
ColDefs
(column-definitions) object for all columns:
Now, create a new binary table HDU object by using the PyFITS
function
new_table()
:
This function returns (in this case) a
BinTableHDU
. Append it to the
hdulist
we already have:
orcreate a new
HDUList
and go through thesame steps as you did forthe
ImageHDU
. If this will be the only extension of the new FITS file and you
only have a minimal primary HDU with no data, PyFITS again provides a
short cut:
So far, we have covered the most basic features of PyFITS. In the
following chapters we’ll show more advanced examples and explain
options in each class and method.
2.3    Use the Convenience Functions
PyFITS also provides several high level ("convenience") functions.
Such a convenience function is a "canned" operation to achieve one simple
task. By using these "convenience" functions, a user does not have to
worry about opening or closing a file, all the housekeeping is done
implicitly.
The firstof these functions is
getheader()
,to getthe headerofan HDU.
Here are several examples of getting the header. Only the file name is
>>> cols=pyfits.ColDefs([col1, col2])
>>> tbhdu=pyfits.new_table(cols)
>>> hdulist.append(tbhdu)
tbhdu.writeto(’table.fits’)
12
Chapter 2: A Quick Tutorial
required for this function. The rest of the arguments are optional and
flexible to specifiy which HDU the user wants to get:
After you get the header, you can access the information in it, such as
getting and modifying a keyword value:
For the header keywords, the headeris like a dictionary, as wellas a list.
The user can access the keywords either by name or by numeric index, as
explained earlier in this chapter.
If a user only needs toread one keyword, the
getval()
function can
further simplify to just one call, instead of two as shown in the above
examples:
The function
getdata()
gets the data of an HDU.
Similar to
getheader()
,it only requires the input FITS file name while the extension
>>> getheader(’in.fits’) # get default HDU (=0), i.e. primary HDU’s header
>>> getheader(’in.fits’, 0)    # get primary HDU’s header
>>> getheader(’in.fits’, 2)    # the second extension
# the HDU with EXTNAME=’sci’ (if there is only 1)
>>> getheader(’in.fits’, ’sci’)
# the HDU with EXTNAME=’sci’ and EXTVER=2
>>> getheader(’in.fits’, ’sci’, 2)
>>> getheader(’in.fits’, (’sci’, 2)) # use a tuple to do the same
>>> getheader(’in.fits’, ext=2)      # the second extension
# the ’sci’ extension, if there is only 1
>>> getheader(’in.fits’, extname=’sci’)
# the HDU with EXTNAME=’sci’ and EXTVER=2
>>> getheader(’in.fits’, extname=’sci’, extver=2)
# ambiguous specifications will raise an exception,  DON"T DO IT!!
>>> getheader(’in.fits’, ext=(’sci’,1), extname=’err’, extver=2)
>>> from pyfits import getheader
>>> hdr = getheader(’in.fits’, 1)  # get first extension’s header
>>> filter = hdr[’filter’]   # get the value of the keyword "filter’
>>> val = hdr[10]            # get the 11th keyword’s value
>>> hdr[’filter’]=’FW555’    # change the keyword value
>>> from pyfits import getval
>>> flt = getval(’in.fits’, ’filter’, 1) # get 1st extension’s keyword
# FILTER’s value
>>> val = getval(’in.fits’, 10, ’sci’, 2) # get the 2nd sci extension’s
# 11th keyword’s value
Use the Convenience Functions
13
is specified throughthe optionalarguments. Itdoes haveone extra optional
arguemnt
header
. If
header
is setto True,this function willreturnbothdata
and header, otherwise only data is returned.
The functions introduced above are forreading. The next fewfunctions
demonstrate convenience functions for writing:
The
writeto()
function uses the provideddata and an optionalheader to
write to an output FITS file.
The
append()
function will use the provided data and the optional
header to append to an existing FITS file. If the specified output file does
not exist, it will create one.
The update() function will update the specified extension with the input
data/header. The 3rd argument can be the headerassociated with the data.
If the 3rd argument is not a header, it (and otherpositional arguments)are
assumed to be the extension specification(s). Header and extension specs
can also be keyword arguments.
Finally, the
info()
function will print out information of the specified
FITS file:
>>> from pyfits import getdata
>>> dat = getdata(’in.fits’, ’sci’, 3)
# get 3rd sci extension’s data
# get 1st extension’s data and header
>>> data, hdr = getdata(’in.fits’, 1, header=True)
>>> pyfits.writeto(’out.fits’, data,  header)
>>> pyfits.append(’out.fits’, data,  header)
>>> from pyfits import update
>>> update(file, dat, hdr, ’sci’)  # update the ’sci’ extension
>>> update(file, dat, 3)  # update the 3rd extension
>>> update(file, dat, hdr, 3)  # update the 3rd extension
>>> update(file, dat, ’sci’, 2)  # update the 2nd SCI extension
>>> update(file, dat, 3, header=hdr)  # update the 3rd extension
>>> update(file, dat, header=hdr, ext=5)  # update the 5th extension
14
Chapter 2: A Quick Tutorial
>>> pyfits.info(’test0.fits’)
Filename: test0.fits
No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU     138  ()            Int16
1    SCI         ImageHDU        61  (400, 400)    Int16
2    SCI         ImageHDU        61  (400, 400)    Int16
3    SCI         ImageHDU        61  (400, 400)    Int16
4    SCI         ImageHDU        61  (400, 400)    Int16
Documents you may be interested
Documents you may be interested