|
Create Good Time Interval from Mission Time Line and limits
mtl_build_gti infile outfile mtlfile [userlimit] [lkupfile] [smooth]
[clobber] [verbose]
The mtl_build_gti tool creates a Good Time Interval from an
input Mission Time Line file. The elements of the MTL that the GTI is
created from is determined by a limits file, in a FITS file format,
and an optional user provided limits string.
An optional output MTL is created, which is the subset of columns of the
input MTL that the GTI was determined from. As there is an option to
perform smoothing on the data, the output MTL will be smoothed, if
that option is selected. The input MTL will remain unchanged. An
output GTI file will either be created, or if it is an already
existent EVENT file, the GTI will be written to it.
The GTI filtering syntax is explained in detail in the
algorithms section. This format should be followed for both the
contents of lkupfile, and the value of the userlimit parameter.
DATA FORMATS
-
MTL (Input and Output):
-
The data will be contained in the first extension of the FITS
file, which will be a BINTABLE. The EXTNAME keyword value of this
extension will be MTL. All the columns will be of type double,
and besides the potential standard header keywords, there will be a
TIMEDEL keyword, whose value is the length of the MTL records, in
seconds. The only guaranteed column is time, which will be the first
one.
-
GTI Output: the output GTI file may be written to a file
that already exists. Otherwise, a new output file is created.
-
Limits Lookup FITS File:
This is a FITS file with one column, gti_limits, this is an
ASCII column, of length up to 256 characters. This is to allow for
lengthy limits conditions, although it is recommended that the user
specify conditions for individual column on separate lines. The name
of the extension containing the limits is LIMITS. Integers, real
numbers, bools, bit arrays, bytes and string columns can all be checked
against. Real numbers may use e/E scientific notation. There are
some rules for various datatypes though. String values (not column
names) should be surrounded by quotes. For boolean values, 0, 1, T or
F are allowed. The T or F do not need to be quoted as strings. For bit
arrays the syntax is as follows:
-
column_name==XNT|F
-
X denotes a bit, N is the bit number (starting from 0), and
then you specify T or F depending on whether you want it on or
not. You can specify a list of comma delimited XNT|F's. As
an example:
-
col==X0F,X2F,X5T
-
This would specify that the first and second bits should be
false, and the 6th bit should be true. It doesn't matter
what the other bits are. You can specify that all the
bits should be false by X-1F, and that they should all be
true by X-1!F. Finally, if you specify "col==0", then
the code will check that all bits are not set.
-
The following constructs are also allowed within the limits file:
-
()
&& ||
== != < > <= >= !
* + - /
fabs(), sqrt(), ln(), log(), exp(), cos(), sin(), tan(),
acos(), asin(), atan(), cosh(), sinh(), tanh()
-
In addition, there are two other, important, constructs.
-
Column Values:
-
To indicate a column value should be inserted, denote the column
as follows:
-
string:<integer value> _or_ string: _or_ string
-
The integer value is the smoothing factor that will be applied.
If it is not specified, one will be assumed. While the colon was once
necessary to denote a column rather than a string value, that is no longer
the case. The colon is only necessary if you wish to specify a smoothing
factor other than one. The "string:" notation is a legacy from earlier
versions of the tool. You can not perform limit checks against the same
column with different smooth factors, i.e., if you reference the same
column twice, but with different smoothing factors, the first smoothing
factor will be used.
As an example, say that you want to allow a column to fall
within a certain range or have a certain discrete value outside that
range. If the column was counts, and you wanted it to be smoothed
by a factor of 3, you would specify it as follows:
-
( ((0.0 <= counts:3) && (counts: <18.0)) || (counts == 23.0) )
-
The parenthesis, while not always necessary, are provided for
clarity. As another example, lets define a limits check for counts
relative to cosine of another column, declination (this doesn't make
much sense...):
-
((counts:3 != cos(declination))
-
This indicates that the value of counts, smoothed over three
rows, should not be equal to the cosine of the unsmoothed value of
declination.
-
New Columns:
-
To indicate a new column, denote it as follows:
-
string=expression
-
A new column will be created, whose value is the value of the
expression. This could simply be another column, or some relationship
of columns, constants, and functions. There is no constraint on what
datatypes may be copied (previously, the new column was forced to
type double, thus constraining the columns it could be derived from).
The new column can be referenced, after the initial "=" definition,
using the normal column notation - a simple string, or a colon and an
optional smooth factor, although this second option is pointless. Even
if a smooth factor is provided here, it won't be used. As an example,
lets define a background counts column relative to the counts column:
-
((bcounts=(counts:3 - 5))
-
This indicates that a new column, bcounts, should be created in
the output MTL file, whose value is the value of counts smoothed over
three rows, minus 5.0. Now bcounts can be used in a limits check:
-
((0 < bcounts) && (bcounts <= 2))
-
The two lines could even be combined:
-
((0 < bcounts=(counts:3 - 5)) && (bcounts <= 2))
-
This file can also contain a keyword, GTICLASS, of type string.
The value of keyword HDUCLAS2 in the output GTI is set to this. If the
keyword does not exist, then a default value of "STANDARD" is used.
-
User Limit string:
This string follows the same rules as listed above for the limits
FITS file.
ALGORITHMS
-
Application of Limits (FITS File and user limit):
-
In pipeline applications, the file will be used. For users,
the userlimit parameter may be of more use. If both are provided,
both will be used. If neither are provided, the tool will exit with
an error message. One or the other, at least, must be specified.
Each row of the gti_limits column is read into the program and,
along with the user specified limit string (unless NONE), parsed to
determine what columns ought to be in the MTL file, and what
new columns are being defined. It will attempt to open the existent
columns in the input MTL file. If they cannot be found there, they
will be searched for in the list of new columns, as the new columns
can be referenced as a normal column once they have been defined. If
the column(s) still cannot be found, then a warning will be issued, and
that entire limit string will be thrown out. This is why it is not
recommended that the user chain limits checks for multiple columns
together with &&. While this is possible, it might mean that one
check is thrown out if a second cannot have it's column requirements
met.
Once a subset of the input limits has been found that is
satisfied by the input MTL files, the gti limits will be tested once,
to ensure that there is not a type conflict, i.e. checking if a short
column is != to a string value. Integer/real values will be converted,
but if numbers and strings are mixed, a warning will be issued. If
any of the limits fail the conflict check, the limit will be thrown out,
and the process must be started again - the tool will go through the
process defined in the previous paragraph, and make sure the remaining
limits checks have all their column conditions met. Then the conflict
check is performed again. This cycle is repeated until there are no
limits left, or the conflict check passes.
Once this is done, the tool will loop over the rows of the
table, smoothing the values, and then checking the row against all of
the limits that remain. The row of smoothed values and new columns will
be written to the output file.
If the smoothing parameter is set to yes, then the value
in the columns' smooth parameter will be used to determine the size of
the boxcar smooth (this is described further below). Only those
columns which were found in the limits FITS file will be included
in the output MTL file, in addition to any new columns defined by the
limits file. Smoothed values will be written to that file, if smoothing
was allowed.
-
Nature of the Boxcar Smooth:
-
The limits FITS file defines the number of rows of data
which a given column will be smoothed over. These rows are centered
about the row which is to be smoothed for, i.e., for the third row of a
column with a smoothing factor of 5, rows 1-5 will be smoothed. In
the case of an even smoothing factor, it is promoted to the next odd
integer.
The ends of MTL files require exceptions to these rules.
Depending on the size of the smooth factor, the range of rows to
comprise the smoothing will extend beyond the ends of the file. In
these cases, the task truncates the range of rows, and averages by the
number of rows actually used. Thus, if the first row is to be
smoothed by 3, that would imply a range of -1 to 2. This is truncated
to 1-2, and the averaging value is 2 rather than 3.
Of course, it should be noted that the smoothing is done on a
column by column basis - each column within a row has it's own
individual smoothing factor. As each row is checked against the limits,
each column is smoothed by the pertinent factor.
NOTES
-
If the task fails for any reason, it returns a -1.
-
byte columns are read as shorts, which are converted to doubles due
to the smoothing application.
-
new columns that are defined should have the datatype of the expression
they are set equivalent to, but this has not been as thoroughly
tested as it ought. Use with caution.
-
for the time being, it is best to use ()'s to make complicated
limits explicit.
mtl_build_gti gti_mtl.fits out_gti.fits out_flt_mtl.fits smooth=yes
clobber=yes
This is the input MTL files.
This is a FITS table with a BINTABLE first extension, which
contains the MTL data. The file should contain the standard
ASC header as well. The file's first column will be time.
Output GTI file
File to which the GTI will be written. An existing
file may be specified, in which case the GTI
information in that file is updated.
Output smoothed/filtered MTL file
This file is a copy of the input MTL file that may have had
individual smoothing factors applied to the column data. The
file will also be a subset of the input MTL, unless ALL the
columns of the input MTL were filtered on in creating the GTI.
In the case where all columns determine the GTI and no
smoothing is applied, it will be a copy of the input. The
purpose is to provide the user with the actual data that the
GTI was created against. If this is set to NONE, none or "",
the file won't be created.
Optional user defined limit string
This is a user input string that defines an (addtional) limit
which the MTL data is checked against in creating the GTI.
Lookup table defining which MTL columns to check against
This is the lookup table defining which MTL columns to check against.
The data formats section describes what sort of limit conditions are
allowable, the algorithm section how the limits are used. The file
can also contain an optional keyword, GTICLASS, which determines the
value of the HDUCLAS2 keyword to write to the output GTI file.
Smooth the input MTL data?
This smoothing is not done in place. The input is unchanged.
The smoothing is done on a copy and written to the output. If
this is set to no, all smoothing factors in the limits file are
overriden and set to one.
Clobber output file if it exists?
Debug level.
Debug levels range from 0 (nothing) to 5, which will describe
in detail the processing that is occuring.
dmgti now properly uses the TIMEPIXR keyword to modify the
TIME column when creating GTI files from lightcurves. Users
may see a small small shift in the time filter when compared
to CIAO 3.3 because of this change.
The kernel parameter has been removed.
Support for IRAF QPOE files has been removed from CIAO.
|