| | |
- astro.main.ProcessTarget.ProcessTarget(common.database.DBMeta.DBMixin, astro.main.OnTheFly.OnTheFly)
-
- BaseFrame(common.database.DataObject.DataObject, astro.main.ProcessTarget.ProcessTarget)
- common.database.DataObject.DataObject(common.database.DBMain.DBObject)
-
- BaseFrame(common.database.DataObject.DataObject, astro.main.ProcessTarget.ProcessTarget)
class BaseFrame(common.database.DataObject.DataObject, astro.main.ProcessTarget.ProcessTarget) |
| |
A base class for persistent FITS file objects
BaseFrame inherits from the persistent DataObject class and the
ProcessTarget mixin. DataObject provides data retrieval and
storage facilities for the FITS files. All BaseFrame objects are
ProcessTargets (have a make method).
BaseFrame itself is intended to be an abstract baseclass.
A BaseFrame instance defines a number of attributes,
image -- An eclipse.image object (default None), read if needed,
or by load_image()
header -- An darma.header object (default None), read if needed,
or by load_header(), or created by build_header()
history -- A list of strings containing the history of the object.
currently not read from the header, but used by
build_header() |
| |
- Method resolution order:
- BaseFrame
- common.database.DataObject.DataObject
- common.database.DBMain.DBObject
- astro.main.ProcessTarget.ProcessTarget
- common.database.DBMeta.DBMixin
- __builtin__.object
- astro.main.OnTheFly.OnTheFly
Methods defined here:
- __init__(self, **kw)
- build_header(self)
- Fill a default header with values from descriptors
- commit_subwinstat(self)
- Conditionally commit subwindow statistics
- display(self, viewer='skycat', filename=None)
- Independent display method for all frames.
- empty_header(self)
- Initalize to a default (empty) header
- estimate_statistics(self, pixmap=None, zone=None, max_iter=5, threshold=5.0)
- Estimate the mean, median and stddev, by iteratively excluding
pixelvalues deviating too far from the median
Arguments:
pixmap -- optional map for bad pixels (default=None)
zone -- optional region (x0, y0, x1, y1) (default=None)
max_iter -- The maximum number of iterations
sig_thresh -- The threshold in number of standard deviations
- get_previous_version(self, level=0)
- Return previous version of this object. If it does not exist,
return None.
level: depth of query for previous version (0 goes as deep as
possible)
- initialize_astrom_attribute(self)
- initialize_chip_attribute(self)
- initialize_filter_attribute(self)
- initialize_imstat_attribute(self)
- initialize_instrument_attribute(self)
- initialize_lamp_attribute(self)
- initialize_observingblock_attribute(self)
- initialize_template_attribute(self)
- inspect(self, pixels=None, zone=None, kappa=3.0, iterations=2, cmap=None, vmin=None, vmax=None, interpolation='lanczos', width=6, ratio=None, viewer='skycat', force_figure=False, force_viewer=False, subplot_size=50, contour_levels=20, num_bins=100, extension=None, compare=False, level=0, other=None, clip=False, color=False)
- Optional visual inspection for quality control displays image in a
PyLab (MatPlotLib) window or optionally in an external viewer.
pixels: optional list or array representing the image to be
inspected (can be MxN for greyscale, or MxNx3 for RGB)
zone: tuple of (x0, y0, x1, y1) representing the image
coordinates of the two oposing corners of the sub
image to consider
kappa: the factor by which the dynamic range is increased in
units of sigma (0 gives full range)
iterations: number of iterations in the kappa-sigma range clipping
cmap: PyLab color map instance
vmin: lower display range in native units (e.g. ADU)
vmax: upper display range in native units (e.g. ADU)
interpolation: type of interpolation the PyLab viewer uses (nearest,
bilinear, etc.)
width: width of the PyLab figure window (in inches)
ratio: ratio by which to scale the figure height (default:
x_dim/y_dim)
viewer: external viewer to use in case the image is too large
force_figure: always use the PyLab figure window (Be Careful!
Statistics calculations on large images can be very
time and memory consuming.)
force_viewer: always use the viewer
subplot_size: width and height in pixels of region of interest
contour_levels: number of contour levels for the contour plot of the
region of interest
num_bins: number of bins in the histogram plot
extension: extension of the filetype to save plot to (png, ps,
or eps) None disables saving
compare: compare this frame to its previous version using
difference imaging (current-previous), pixels is
ignored
level: depth of query for previous version (0 goes as deep
as possible) when compare is True
other: a second of the same type of Frame object to replace
previous when compare is True (if color is True,
other can be a list of two images)
clip: kappa-sigma clip each image prior to subtraction when
compare is True
color: use color combining (RGB) instead of differencing
when compare is True (kappa, vmin/vmax only honored
when clip is True), this image is R, other is B if
single, other is [G, B] if it is a list
(EXPERIMENTAL)
When force_viewer is False, inspect() displays basic image
statistics (mean, stddev) and then a representation of the image
that can be zoomed and panned. Pressing various keys will give
different results described below in a region of interest described
by subplot_size:
q - closes the most recent plot window when pressed in the
main window
[space] - displays the X and Y coordinate (FITS standard unit
indexed) and the count level
a - performs aperture photometry on brightest feature in the
region of interest (NOT YET IMPLEMENTED)
c - displays a contour plot of the region of interest (see
contour_levels)
h - displays a histogram of the pixel values of the region of
interest (see num_bins)
r - displays a radial plot of the brightest feature in the
region of interest
s - displays a surface plot of the region of interest
p - displays profile plots in both X and Y dimensions versus
intensity (count level)
NOTE: None of the commands above work in the subplots.
- is_compressed(self)
- Find out if a FITS file is compressed
- load_header(self)
- Initialize self.header
- load_image(self, readonly=0)
- Initialize self.image.
- make_background(self)
- Make a background image,
Returns a new BaseFrame object. The name of the new file is
"name.back.fits"
- make_subwinstat(self)
- Compute statistics on subwindows
- read_header(self)
- Read a header into descriptors.
The descriptor is assumed to include a number of all caps
attributes that map directly to FITS header keywords. In
addition, if any of the following attributes are present, this
routine will initialize those attributes.
Initialized attributes: instrument, chip, filter, lamp, imstat,
astrom, observing_block, template
- retrieve(self)
- Retrieve this frame from the data server and uncompress it if it has
been compressed with FITSIO.
- save(self, filename='', overwrite=1)
- statistics(self, pixmap=None, zone=None)
- Compute statistics and store in self.imstat.
Arguments:
pixmap -- optional pixelmap object (default=None)
zone -- optional region (x0, y0, x1, y1) (default=None)
- update_header(self)
- Update a header with values from descriptors
- update_history(self)
- Update a header with history
History is maintained in the instance attribute
history. History is written by appending string to the history
list.
Data descriptors defined here:
- NAXIS1
- Length of data in axis 1 [pixel]
- NAXIS2
- Length of data in axis 2 [pixel]
- creation_date
- Date this object was created [None]
- filename
- The name of the associated file [None]
- globalname
- The name used to store and retrieve file to and from Storage [None]
- imstat
- Image statistics for the frame [None]
- is_valid
- Manual/external flag to disqualify bad data (SuperFlag) [None]
- object_id
- The object identifier
The object identifier is an attribute shared by all persistent
instances. It is the prime key, by which object identity is established
- process_status
- A flag indicating the processing status [None]
- quality_flags
- Automatic/internal quality flag [None]
Methods inherited from common.database.DataObject.DataObject:
- FileName(self)
- Return the pathame of the object
- Name(self)
- Return the name of the object
- check_mandatory_dependencies(self)
- check if all the mandatory dependencies are set
- commit(self)
- derive_hash(self)
- Apply hashing function to the contents of the file that is part of
this object.
The SHA hashing function is used to calculate a hash value of the
contents of this DataObject. The hash value is returned as a
hexadecimal string.
- distinct(self, param_list)
- This method returns the distinct values from an input list. The
current implementation is kinda cheesy.
- exists(self)
- Test is the file existsts
- get_canonical_name(self, processlevel='')
- The canonical name of a DataObject.
- get_pathname(self)
- Getter for pathname
- is_on_dataserver(self)
- Checks if file is accessable on the dataserver.
NOTE: A return of False does NOT imply the file is not on any
dataserver! It is simply not on any accessable
dataserver.
- is_stored(self)
- locate(self)
- See common/net/dataserver_client.py (Data_IO.locate).
Returns a list of strings describing all dataservers where the file is
located as well as a few properties of the file, i.e.
['ip=...,port=...,path=...,size=...,mdate=...,
'ip=...,port=...,path=?,size=?,mdate=?']
Question marks indicate that this dataserver is not reachable.
- name_insert_suffix(self, suffix)
- name_replace_suffix(self, suffix)
- name_with_new_suffix(self, suffix)
- release(self)
- set_filename(self, pathname=None, processlevel='')
- Specify a filename for this DataObject or use the default filename.
This method is used to set the filename attribute of a DataObject.
If called without a filename, the filename is set to the canonical name.
Classes that are derived from DataObject are expected to define a
method get_canonical_name() that returns the name for an instance
of that class. This is mandatory for CalFiles (or files that are
store()d on the data server) and optional for other files.
- set_pathname(self, pathname)
- Setter for pathname
- set_process_parameters_from_dict(self, pars={})
- pars is a dictionary of the type e.g.:
{'BiasFrame.process_params.SIGMA_CLIP':8}
- set_stored(self)
- set_user_config(self, pars={})
- store(self)
- store_with_hash_as_name(self, prefix='', suffix='fits')
- Name the file after the hash value of the file and store it.
First the hash value of the file is calculated. The pathname of the
dataobject is renamed to the hash value with the given suffix appended.
Then the file is stored.
Class methods inherited from common.database.DataObject.DataObject:
- is_cal(cls) from common.database.DBMeta.DBObjectMeta
- Test for being cal, derived raw classes should set _IS_CAL to 1
- is_config(cls) from common.database.DBMeta.DBObjectMeta
- Test for being config, derived raw classes should set _IS_CONFIG to 1
- is_raw(cls) from common.database.DBMeta.DBObjectMeta
- Test for being raw, derived raw classes should set _IS_RAW to 1
- is_science(cls) from common.database.DBMeta.DBObjectMeta
- Test for being science, derived raw classes should set _IS_SCIENCE to 1
- is_seq(cls) from common.database.DBMeta.DBObjectMeta
- Test for being seq, derived raw classes should set _IS_SEQ to 1
- is_support(cls) from common.database.DBMeta.DBObjectMeta
- Test for being config, derived raw classes should set _IS_SUPPORT to 1
Data descriptors inherited from common.database.DataObject.DataObject:
- pathname
Data and other attributes inherited from common.database.DataObject.DataObject:
- filepath = './'
- localname = ''
- mandatory_dependencies = ()
- storage = <common.net.dataserver_client.Storage at 0xc66a70>
Methods inherited from common.database.DBMain.DBObject:
- __del__(self)
- Destructor for the DBObject
This destructor is called by the garbage collector for the transient
part of the DBObject. When it is called it calls the gc_transient()
method of the DBProxy implementation. The implementation of the
gc_transient() method can then decide what to do with the persistent
counterpart.
E.g. the database can be synchronized with its transient counterpart.
Another possibility is that the gc_transient() implementation checks
whether any attributes of a read-only object have changed since an
object was fetched from the database. If there are differences an
exception can be raised.
- __reduce__(self)
- Method necessary to create picklable objects
This mehod return a tuple containg a function object used for
unpickling and a picklable state tuple, to be used as argument
to the unpickle function. If necessary this object is registered
in the pickle cache
- as_dict(self, seqnr=1, dependency_name='', dictionary={}, allow_lazy_typed_list=False)
- Method much like the info method, but returns a dictionary.
Dictionary looks like:
{'<classname>.<property1_name>.<property2_name>': value,
'<classname>.<property2_name>.<property3_name>': value}
Problem: infinite loops for cold/flat dependencies. It seems a maximum
recursion depth limits the problem.
- get_creator(self)
- Returns the name of the user who created this object.
- get_persistent(self)
- get_project(self)
- Returns the name of the project to which this object belongs.
- info(self, level=0, doc=False, _indent=0, _printclass=True)
- Print the values of all persistent properties of the object.
level : level of introspection
doc : display docstrings for attributes
_indent : internal parameter used for formatting
_printclass : internal parameter used for formatting
- inverse_objects(self, max_results=100)
- Iterate through and return all objects that use the current object
max_results The maximum number of objects returned per query
- inverse_query(self)
- go through all inverse properties to see if this object is used
- persists(self)
- Returns whether an object is already made persistent or transient.
- recommit(self)
- Commits changes to an object, without following links.
Class methods inherited from common.database.DBMain.DBObject:
- get_inverse_properties(cls, props=None) from common.database.DBMeta.DBObjectMeta
- return all inverse properties
that are all the properties that point to this class
Data descriptors inherited from common.database.DBMain.DBObject:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
Data and other attributes inherited from common.database.DBMain.DBObject:
- __metaclass__ = <class 'common.database.DBMeta.DBObjectMeta'>
- This is the metaclass for persistent classes
Provides:
__new__ -- manages class construction
__call__ -- manages object instantiation
- database = <common.database.DBOracle.DBProxy instance at 0xa630e0>
- pickle_id = None
Methods inherited from astro.main.ProcessTarget.ProcessTarget:
- check_observing_blocks(self, childs)
- check if all childs have the same observing_block
- check_templates(self, childs)
- check if all childs have the same template
- compare(self)
- Quality Control -- basic trend analysis
The compare() method is used for default trend analysis. This
is done by comparing with a previous version of the same
object (last weeks bias, for example). This may be as simple
as comparing attribute values, but may also involve more
complex computations (e.g., subtracting the two images, and
analysing the residuals)
- derive_timestamp(self)
- Set the creation_date attribute
- get_dependencies(self)
- Return a list of names of attributes that are required for make()
- get_qcflags_set(self)
- Return a list of names of flags that have been set.
- get_qcflags_set_dict(self)
- Return a dictionary of flags that have been set. The key is the
name, the value is a tuple of (index, docstring).
- is_compared(self)
- Return true if the object has been compared
- is_inspected(self)
- Return true if the object has been inspected
- is_made(self)
- Return true if the object has been made
- is_ok(self)
- Return true if no quality control flags have been set.
- is_verified(self)
- Return true if the object has been verified
- make(self)
- Construct this object from the provided data.
The make method is expected to produce all data and compute
all values associated with this object (i.e.: reduce the
data). It is assumed that the object will have a number of
dependencies which have to be satisfied. A dependency is
assumed to be satisfied if the dependency is not None. In the
case that the dependency is itself a ProcessTarget, the
dependency should be made.
Use the method get_dependencies() to get a list of attributes
on whose values this target depends.
- set_compared(self)
- Set the process status to indicate that the object has been
compared.
- set_inspected(self)
- Set the process status to indicate that the object has been
inspected.
- set_made(self)
- Set the process tatus to indicate that the object has been made
- set_verified(self)
- Set the process status to indicate that the object has been
verified.
- verify(self)
- Quality Control -- internal consistency
This method inspects the values of various attributes of the
object to see if these are within the expected range for that
object. The purpose of this method is mostly to perform
sanity-checks on measured results. It is assumed that the
required measurements (for example image statistics) are done
during data reduction (i.e. while executing make()), and stored
in persistent attributes.
Class methods inherited from astro.main.ProcessTarget.ProcessTarget:
- get_qcflags(cls) from common.database.DBMeta.DBObjectMeta
- Return a list of attribute names of QCflag() objects.
- select(cls, **searchterms) from common.database.DBMeta.DBObjectMeta
- Class method to select RawFrames, Calfiles and ReducedScienceFrames
from the database.
Syntax example:
q = RawScienceFrame.select(instrument='WFI', filter='#842',
chip='ccd50', time_from='2000-01-02 04:45:46',
time_to='2000-01-02 05:03:00')
Possible search terms:
----------------------
check_quality - (Default 1) Exclude invalidated data (quality_flags!=0)
check_validity - (Default 1) Exclude invalidated data (is_valid=0)
chip - select of the same CCD ('ccd50', 'ccd51', etc.)
date - select of the same date (i.e. date at the start of
observing night, in yyyy-mm-dd format)
exptime - select frames with similar exposure time
(EXPTIME-0.8sec to EXPTIME+0.8 sec)
extension - select (raw) frames for a certain extension of its
RawFitsData object
filename - select a frame(!) by its filename
filter - select of the same filter ('#842', '#843', etc.)
instrument - select of the same instrument ('WFI', 'WFC', 'OCAM')
object - select for OBJECT header keyword, uses "like"
functionality, which allows wildcards "*" and "?"
time_from - precise form of date, in yyyy-mm-dd hh:mm:ss format
time_to - required when using time_from
- select_for_raw(cls, raw, overscan=None, check_quality=1, check_validity=1) from common.database.DBMeta.DBObjectMeta
- Class method to select the most recent valid calfile for the
provided raw frame from the database.
- select_for_reduced(cls, reduced, overscan=None, check_quality=1, check_validity=1) from common.database.DBMeta.DBObjectMeta
- Synonym for the select_for_raw method; the implementation should
be identical.
Data and other attributes inherited from astro.main.ProcessTarget.ProcessTarget:
- PROCESS_TIME = 0
- STATUS_COMPARE = 2
- STATUS_INSPECT = 3
- STATUS_MAKE = 0
- STATUS_VERIFY = 1
Class methods inherited from common.database.DBMeta.DBMixin:
- get_persistent_attributes(cls) from common.database.DBMeta.DBObjectMeta
- return a list of persistent attributes
Methods inherited from astro.main.OnTheFly.OnTheFly:
- Flagged(self)
- Check if any flag is set
return 1 for flag is set
return 0 no flag
- after_do_make(self, switches=None)
- extra make statements, this method can be overridden by OnTheFly classes to
implement extra make statements which will be executed after the make of self
- after_set_onthefly_dependencies(self, switches, advanced)
- this method is called after the onthefly method set_onthefly_dependencies
derived classes can implement this method to customize the dependencies
setting after this has been done automatically by onthefly
- after_uptodate_object(self, dependencies_missing, dependencies_new, dependencies_obsolete)
- The uptodate_object method determines if the object is uptodate, and will result in three listings :
dependencies_missing - missing mandatory dependencies
dependencies_new - new dependencies
dependencies_obsolete - current dependencies that are obsolete
Derived classes can override this method to tweak the listings
- check_for_mandatory(self, dep_str, dep_new)
- check if dependency is mandatory and present
dep_str is the name of the attribute, dep_new is the (attribute) object
- get_onthefly_dependencies(self, advanced=None)
- Method retrieves a list of all dependencies used for
on-the-fly processing
Return: [dependency, dependency class, dependency name]
- uptodate(self, date_time=None, template=None, switches=None, advanced=None)
- This method checks if the object is up-to-date, for the given datetime.
OnTheFly_uptodate class has the functionality for checking uptodate
Class methods inherited from astro.main.OnTheFly.OnTheFly:
- exist(cls, date_time=None, chip=None, filter=None, object_id=None, parent=None, parent_attr=None, template=None, extra=[], advanced=None, switches=None) from common.database.DBMeta.DBObjectMeta
- for the given parameters and class return the most
recent object(s), or None
- get_onthefly(cls, date_time=None, filter=None, chip=None, object_id=None, advanced=None, switches=None, template=None, parent=None, parent_attr=None) from common.database.DBMeta.DBObjectMeta
- For the given parameters and class get the object,
if the object does not exist -> make it.
This is done recursively for all dependencies.
The object can only be made if there are raws
| |