Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def file_exists_in_database(self, filename):
"""Checks if an entry for filename exists in the bias stats
database.
Parameters
----------
filename : str
The full path to the uncal filename
Returns
-------
file_exists : bool
``True`` if filename exists in the bias stats database
"""
query = session.query(self.stats_table)
results = query.filter(self.stats_table.uncal_filename == filename).all()
if len(results) != 0:
file_exists = True
else:
file_exists = False
return file_exists
file_type : str
``dark`` or ``flat``. Specifies the type of file whose
previous search time is queried.
Returns
-------
query_result : float
Date (in MJD) of the ending range of the previous MAST query
where the dark monitor was run.
"""
if file_type.lower() == 'dark':
mjd_field = self.query_table.dark_end_time_mjd
elif file_type.lower() == 'flat':
mjd_field = self.query_table.flat_end_time_mjd
sub_query = session.query(self.query_table.aperture,
func.max(mjd_field).label('maxdate')
).group_by(self.query_table.aperture).subquery('t2')
# Note that "self.query_table.run_monitor == True" below is
# intentional. Switching = to "is" results in an error in the query.
query = session.query(self.query_table).join(
sub_query,
and_(
self.query_table.aperture == self.aperture,
mjd_field == sub_query.c.maxdate,
self.query_table.run_monitor == True
)
).all()
query_count = len(query)
if query_count == 0:
Returns
-------
query_result : float
Date (in MJD) of the ending range of the previous MAST query
where the bias monitor was run.
"""
sub_query = session.query(
self.query_table.aperture,
func.max(self.query_table.end_time_mjd).label('maxdate')
).group_by(self.query_table.aperture).subquery('t2')
# Note that "self.query_table.run_monitor == True" below is
# intentional. Switching = to "is" results in an error in the query.
query = session.query(self.query_table).join(
sub_query,
and_(
self.query_table.aperture == self.aperture,
self.query_table.end_time_mjd == sub_query.c.maxdate,
self.query_table.run_monitor == True
)
).all()
query_count = len(query)
if query_count == 0:
query_result = 57357.0 # a.k.a. Dec 1, 2015 == CV3
logging.info(('\tNo query history for {}. Beginning search date will be set to {}.'.format(self.aperture, query_result)))
elif query_count > 1:
raise ValueError('More than one "most recent" query?')
else:
query_result = query[0].end_time_mjd
def most_recent_search(self):
"""Query the query history database and return the information
on the most recent query for the given ``aperture_name`` where
the readnoise monitor was executed.
Returns
-------
query_result : float
Date (in MJD) of the ending range of the previous MAST query
where the readnoise monitor was run.
"""
query = session.query(self.query_table).filter(and_(self.query_table.aperture==self.aperture,
self.query_table.run_monitor==True)).order_by(self.query_table.end_time_mjd).all()
if len(query) == 0:
query_result = 57357.0 # a.k.a. Dec 1, 2015 == CV3
logging.info(('\tNo query history for {}. Beginning search date will be set to {}.'.format(self.aperture, query_result)))
else:
query_result = query[-1].end_time_mjd
return query_result
Type of bad pixel being examined. Options are ``hot``,
``dead``, and ``noisy``
Returns
-------
new_pixels_x : list
List of x coordinates of new bad pixels
new_pixels_y : list
List of y coordinates of new bad pixels
"""
if pixel_type not in ['hot', 'dead', 'noisy']:
raise ValueError('Unrecognized bad pixel type: {}'.format(pixel_type))
db_entries = session.query(self.pixel_table) \
.filter(self.pixel_table.type == pixel_type) \
.filter(self.pixel_table.detector == self.detector) \
.all()
already_found = []
if len(db_entries) != 0:
for _row in db_entries:
x_coords = _row.x_coord
y_coords = _row.y_coord
for x, y in zip(x_coords, y_coords):
already_found.append((x, y))
# Check to see if each pixel already appears in the database for
# the given bad pixel type
new_pixels_x = []
new_pixels_y = []
Type of bad pixel being examined. Options are ``hot``,
``dead``, and ``noisy``
Returns
-------
new_pixels_x : list
List of x coordinates of new bad pixels
new_pixels_y : list
List of y coordinates of new bad pixels
"""
if pixel_type not in ['hot', 'dead', 'noisy']:
raise ValueError('Unrecognized bad pixel type: {}'.format(pixel_type))
db_entries = session.query(self.pixel_table) \
.filter(self.pixel_table.type == pixel_type) \
.filter(self.pixel_table.detector == self.detector) \
.all()
already_found = []
if len(db_entries) != 0:
for _row in db_entries:
x_coords = _row.x_coord
y_coords = _row.y_coord
for x, y in zip(x_coords, y_coords):
already_found.append((x, y))
# Check to see if each pixel already appears in the database for
# the given bad pixel type
new_pixels_x = []
new_pixels_y = []
the dark monitor was executed.
Returns
-------
query_result : float
Date (in MJD) of the ending range of the previous MAST query
where the dark monitor was run.
"""
sub_query = session.query(self.query_table.aperture,
func.max(self.query_table.end_time_mjd).label('maxdate')
).group_by(self.query_table.aperture).subquery('t2')
# Note that "self.query_table.run_monitor == True" below is
# intentional. Switching = to "is" results in an error in the query.
query = session.query(self.query_table).join(
sub_query,
and_(
self.query_table.aperture == self.aperture,
self.query_table.end_time_mjd == sub_query.c.maxdate,
self.query_table.run_monitor == True
)
).all()
query_count = len(query)
if query_count == 0:
query_result = 57357.0 # a.k.a. Dec 1, 2015 == CV3
logging.info(('\tNo query history for {}. Beginning search date will be set to {}.'
.format(self.aperture, query_result)))
elif query_count > 1:
raise ValueError('More than one "most recent" query?')
else:
def load_data(self):
"""Query the database tables to get data"""
# Determine which database tables are needed based on instrument
self.identify_tables()
# Query database for all data in NIRCamDarkDarkCurrent with a matching aperture
self.dark_table = session.query(self.stats_table) \
.filter(self.stats_table.aperture == self._aperture) \
.all()
self.pixel_table = session.query(self.pixel_table) \
.filter(self.pixel_table.detector == self.detector) \
.all()
def most_recent_search(self):
"""Query the query history database and return the information
on the most recent query for the given ``aperture_name`` where
the dark monitor was executed.
Returns
-------
query_result : float
Date (in MJD) of the ending range of the previous MAST query
where the dark monitor was run.
"""
sub_query = session.query(self.query_table.aperture,
func.max(self.query_table.end_time_mjd).label('maxdate')
).group_by(self.query_table.aperture).subquery('t2')
# Note that "self.query_table.run_monitor == True" below is
# intentional. Switching = to "is" results in an error in the query.
query = session.query(self.query_table).join(
sub_query,
and_(
self.query_table.aperture == self.aperture,
self.query_table.end_time_mjd == sub_query.c.maxdate,
self.query_table.run_monitor == True
)
).all()
query_count = len(query)
if query_count == 0:
def load_data(self):
"""Query the database tables to get data"""
# Determine which database tables are needed based on instrument
self.identify_tables()
# Query database for all data in NIRCamDarkDarkCurrent with a matching aperture
self.dark_table = session.query(self.stats_table) \
.filter(self.stats_table.aperture == self._aperture) \
.all()
self.pixel_table = session.query(self.pixel_table) \
.filter(self.pixel_table.detector == self.detector) \
.all()