What is the difference between the 'load', 'read', and 'unpack' Sherpa commands?
There are several Sherpa functions which can be used to load user data into a Sherpa session. For example, the 'load', 'read', and 'unpack' commands, which have similar, but distinct, functionality:
- load - the standard way of reading data files into Sherpa and assigning them to data set IDs; this is equivalent to the "read" command in Sherpa 3.4
- unpack - these are low-level Sherpa commands used to read data files; they are more general than "load" and do not assign data set IDs to files that are read.
- read - these are Crates low-level commands to read data files; they can be used in Chips, without Sherpa open.
The filetype-specific 'load' functions load 1-D data from a user-specified file into a Sherpa session and assign it to an appropriate Sherpa data set ID. The most commonly used 'load' functions are load_pha, load_arf, and load_rmf, which load into Sherpa a specified PHA data set and the corresponding ARF and RMF response files, respectively.
ciao% sherpa
sherpa> myfile=load_pha("646_meg_p1_bin10.pha")
statistical errors were found in file '646_meg_p1_bin10.pha'
but not used; to use them, re-read with use_errors=True
read background_up into a dataset from file 646_meg_p1_bin10.pha
read background_down into a dataset from file 646_meg_p1_bin10.pha
sherpa> load_arf("646_meg_p1.arf")
sherpa> load_rmf("646_meg_p1.rmf")
sherpa> show_data()
Data Set: 1
Filter: 0.2957-12.3370 Energy (keV)
Noticed Channels: 1.0-8192.0
name = 646_meg_p1_bin10.pha
channel = Float64[8192]
counts = Float64[8192]
staterror = None
syserror = None
bin_lo = Float64[8192]
bin_hi = Float64[8192]
grouping = Int16[8192]
quality = Int16[8192]
exposure = 47341.6434672
backscal = 1.0
areascal = 1.0
grouped = True
subtracted = False
units = energy
response_ids = [1]
background_ids = [1, 2]
[rest of output omitted]
In this example, the PHA file 646_meg_p1_bin10.pha is automatically assigned to data set 1 ('id=1'), and the ARF and RMF are assigned to the first instrument response for data set 1 ('resp_id=1'). Note that the background data sets associated with the specified PHA file are automatically loaded and assigned to background IDs (bkg_id=1, bkg_id=2, etc.), since the background filenames are recorded in the header of the PHA file.
The full list of 'load' commands can be accessed by typing " *load*? " at the Sherpa prompt.
The 'read' commands are similar to the 'load' commands in that they are used to load spectral data from a PHA FITS file, tabular data from a FITS file, or a column-based text file into a Sherpa session. However, instead of assigning the loaded file to a Sherpa data set ID, the 'read' commands load the data into a "crate", which can be thought of as a filetype-specific variable.
sherpa> myfile=read_pha("data1.pi")
sherpa> print myfile
<DataPHA data set instance 'data1.pi'>
sherpa> show_data()
sherpa>
sherpa> print get_col_names(myfile)
['CHANNEL' 'PI' 'COUNTS' 'STAT_ERR' 'COUNT_RATE' 'GROUPING' 'QUALITY'
'GRP_NUM' 'CHANS_PER_GRP' 'GRP_DATA' 'GRP_STAT_ERR']
Here the data is input, but not assigned to a Sherpa data set, as show_data prints an empty line.
The 'unpack' commands can be used to load data from a crate or FITS file into a Sherpa data object:
sherpa> myfile=unpack_pha("data1.pi")
statistical errors were found in file 'data1.pi'
but not used; to use them, re-read with use_errors=True
sherpa> print myfile
[<DataPHA data set instance 'data1.pi'>]
sherpa> show_data()
sherpa>
sherpa> set_data(myfile[0])
sherpa> show_data()
Data Set: 1
Filter: 0.1248-12.4100 Energy (keV)
Noticed Channels: 1-1024
name = data1.pi
channel = Float64[1024]
counts = Float64[1024]
staterror = None
syserror = None
bin_lo = None
bin_hi = None
grouping = Int16[1024]
quality = Int16[1024]
exposure = 38564.6089269
backscal = 2.52643646989e-06
areascal = 1.0
grouped = True
subtracted = False
units = energy
rate = True
plot_fac = 0
response_ids = [1]
background_ids = [1]
Here the data is input, but not assigned to a Sherpa data set, as show_data prints an empty line. The set_data command should be used to establish a data set from a Sherpa data object such as 'myfile'.
Users familiar with the CIAO Data Model should note the following:
- Crates reads one extension of the input file, not the whole data set. The file that is written out will only contain the block which was read.
- Crates does not retain the data subspace of the file.
- Crates does not retain HISTORY or COMMENT blocks from the input file.
Please refer to the Sherpa ahelp pages for a full description of each command, including examples of usage.