Saving and Retrieving Data#
To save data to disk, first specify the name of the output data file using the
fileout command. The default file is called “GBTIDL keep.fits”. The
name of the data file must end in “.fits”. Spectra can be written to this file
using either the keep or nsave command.
keep#
The keep command saves a spectrum to the output file, appending the data
to the end of that file. For example:
getnod,30 ; Get some data
fileout,’mysave.fits’ ; Open an output file
keep ; Writes the PDC to the file
getnod,32 ; Get some more data
keep ; Write the PDC to file
getfs,48,/nofold ; Get some more data
keep ; Writes the PDC to file
keep,5 ; Writes info in DC 5 to file
nsave#
The nsave feature allows you to store data in a file and attach an identifing number
(the nsave value) to that entry so that the data can be overwritten or retrieved according to
the nsave value. The utility essentially gives you access to an unlimited number of storage
slots on disk, somewhat like the 16 global buffers kept in memory.
The following GBTIDL procedures are relevant to the nsave features.
Command |
Purpose |
|---|---|
fileout |
Set the output file; note this can be used for both keep and nsave |
nget |
Retrieve a spectrum with a given nsave value |
nsave |
Store a spectrum to disk with the given nsave value |
sprotect_off |
Enable overwrite permission |
sprotect_on |
Disable overwrite permission |
The following sequence shows how to store and retrieve a spectrum using the nsave feature:
fileout, ’mynsave.fits’ ; Open a file for writing
getrec, 10 ; Get some data
nsave, 101 ; Store it to the keep file
scale, 5 ; Perform some operations
nsave, 102 ; Store it with a different nsave value
nget, 101 ; Retrieve the spectrum at nsave=101
The next example shows a more sophisticated nsave example. Here each nsave entry stores a calibrated
integration from a scan. The example demonstrates how the nsave values can be overwritten and each
nsave entry has an attached meaning to the data, for example nsave=1002 is the data associated with
scan=100, int=2. As the calibration of this integration is refined, the spectra are simply stored back
into that nsave slot.
fileout, ’mynsave.fits’ ; Open a file for writing
for i=0,5 do begin $ ; Store each integration
getnod, 100, int=i & $
nsave, 1000+i & $
endfor
nget, 1002 ; Retrieve one of the entries
bias, 0.1 ; Do some work on it
nsave, 1002 ; And reinsert it into the file
for i=0,5 do begin $ ; Now execute a loop to average all
nget, 1000+i & $ ; the data including the processed
accum & $ ; integration. This loop could be
endfor ; made into a separate procedure.
ave
Retrieving Data from the Output File#
To retrieve data saved using GBTIDL, it is possible to open the file as an input file and use
the get and getrec commands. The following example illustrates.
getnod, 101 ; Get a spectrum from a previously defined input file
fileout, ’mydata.fits’ ; Set the output file name
keep ; Store the spectrum in record 0 of the keep file
getnod, 103 ; Get more data
keep ; Store the next spectrum in record 1
fileout, ’KEEP.fits’ ; Close mydata.fits and open a new output file
filein, ’mydata.fits’ ; Reopen mydata.fits it as an input file
getrec, 0 ; Retrieve the first entry
Alternatively, data can be retrieved directly from the output file using kgetrec or kget.
getnod, 101 ; Get a spectrum from a previously defined input file
fileout, ’mydata.fits’ ; Set the output file name
keep ; Store the spectrum in record 0 of the keep file
getnod, 103 ; Get more data
keep ; Store the next spectrum in record 1
kget, scan=101 ; Retrieves scan 101 from the output data file and places it in the PDC
The kget command uses the same selection parameters as the get procedure.