def run_ephem_main(reproc=False): ''' The main controller for the module. It executes the code in ephem_main and writes the output to the database. ''' #print 'Processing ' + str(len(file_list)) + ' files.' count = 0 query_list = session.query(MasterFinders, MasterImages).\ join(MasterImages).\ options(subqueryload('master_images_rel')).\ filter(or_(MasterFinders.jpl_ra != None, MasterFinders.jpl_dec != None)).\ all() print 'Processing ' + str(len(query_list)) + ' files.' for record in query_list: if record.MasterFinders.ephem_x == None \ or record.MasterFinders.ephem_y == None \ or reproc == True: file_dict = get_header_info(\ os.path.join(\ record.MasterImages.file_location[0:-4], record.MasterImages.fits_file)) delta_x, delta_y = calc_delta(file_dict, record.MasterFinders) ephem_x, ephem_y = calc_pixel_position(file_dict, delta_x, delta_y) update_dict = {} update_dict['ephem_x'] = int(ephem_x) update_dict['ephem_y'] = int(ephem_y) session.query(MasterFinders).\ filter(MasterFinders.id == record.MasterFinders.id).\ update(update_dict) count = counter(count) session.commit() session.close()
def run_ephem_main(reproc=False): ''' The main controller for the module. It executes the code in ephem_main and writes the output to the database. ''' # Build the record list and log the length. query_all_records = session.query(MasterFinders, MasterImages).\ join(MasterImages).\ options(subqueryload('master_images_rel')) logging.info('{} total records in master_finders.'.\ format(query_all_records.count())) if reproc == True: query_list = query_all_records.all() logging.info('reproc == True, Reprocessing all records') else: logging.info('reproc == False') query_list = session.query(MasterFinders, MasterImages).\ join(MasterImages).\ options(subqueryload('master_images_rel')).\ filter(or_(MasterFinders.jpl_ra != None, MasterFinders.jpl_dec != None)).\ all() logging.info('Processing {} files where ephem_x or ephem_y IS NULL.'.\ format(len(query_list))) for counter, record in enumerate(query_list): logging.info('Working on {}'.\ format(record.MasterImages.name, record.MasterFinders.object_name)) file_dict = get_header_info(\ os.path.join(\ record.MasterImages.file_location[0:-4], record.MasterImages.fits_file)) delta_x, delta_y = calc_delta(file_dict, record.MasterFinders) ephem_x, ephem_y = calc_pixel_position(file_dict, delta_x, delta_y) update_dict = {} update_dict['ephem_x'] = int(ephem_x) update_dict['ephem_y'] = int(ephem_y) session.query(MasterFinders).\ filter(MasterFinders.id == record.MasterFinders.id).\ update(update_dict) if counter % 100 == 0: session.commit() session.close()
def insert_record(moon_dict, master_images_id): ''' Make a new record to be in the master_finders table. ''' record = MasterFinders() record.object_name = moon_dict['object'] record.jpl_ra = moon_dict['jpl_ra'] record.jpl_dec = moon_dict['jpl_dec'] try: record.diameter = float(moon_dict['jpl_ang_diam']) except Exception as err: logging.critical('{0} {1} {2}'.format( type(err), err.message, sys.exc_traceback.tb_lineno)) try: record.magnitude = float(moon_dict['jpl_APmag']) except Exception as err: logging.critical('{0} {1} {2}'.format( type(err), err.message, sys.exc_traceback.tb_lineno)) record.master_images_id = master_images_id record.version = __version__ session.add(record) session.commit()
def build_sub_images_table_main(filename, reproc): ''' The main controller. ''' assert os.path.splitext(filename)[1] == '.png', \ 'Expected .png got ' + filename path = os.path.split(filename)[0] basename = os.path.basename(filename) master_filename = get_master_filename(basename) master_images_query = session.query(MasterImages).filter(\ MasterImages.name == master_filename).one() sub_images_query = session.query(SubImages).filter(\ SubImages.name == basename).count() image_width, image_height = get_image_size(filename) # Make the input dict record_dict = {} record_dict['master_images_id'] = master_images_query.id record_dict['master_images_name'] = master_images_query.name record_dict['name'] = basename record_dict['file_location'] = path record_dict['image_width'] = image_width record_dict['image_height'] = image_height record_dict['region'] = get_region(filename) if sub_images_query == 0: record = SubImages() insert_record(record_dict, record) elif sub_images_query == 1: sub_images_query = session.query(SubImages).filter(\ SubImages.name == basename).update(record_dict) session.commit() else: pass session.close()
def build_finders_table_main(reproc): ''' Calculate the ephemeris information for the subimages. ''' query = session.query(MasterFinders).count() print str(query) + ' total ephemerides' query = session.query(MasterFinders, MasterImages)\ .join(MasterImages, MasterImages.id == MasterFinders.master_images_id)\ .filter(MasterFinders.ephem_x >= 0)\ .filter(MasterFinders.ephem_y >= 0)\ .filter(MasterFinders.ephem_x <= 1725)\ .filter(MasterFinders.ephem_y <= 1300)\ .filter(MasterImages.drz_mode == 'wide')\ .all() print str(len(query)) + ' ephemerides in wide mode image FOVs' count = 0 for record in query: count = counter(count) region_list = get_region_list(record.MasterFinders.ephem_x, record.MasterFinders.ephem_y) for region in region_list: add_new_record(record, region) session.commit() session.close()
def update_record(moon_dict, master_images_id): ''' Update a record in the master_finders table. ''' update_dict = {} update_dict['object_name'] = moon_dict['object'] update_dict['jpl_ra'] = moon_dict['jpl_ra'] update_dict['jpl_dec'] = moon_dict['jpl_dec'] try: update_dict['magnitude'] = float(moon_dict['jpl_APmag']) except Exception as err: logging.critical('{0} {1} {2}'.format( type(err), err.message, sys.exc_traceback.tb_lineno)) try: update_dict['diameter'] = float(moon_dict['jpl_ang_diam']) except Exception as err: logging.critical('{0} {1} {2}'.format( type(err), err.message, sys.exc_traceback.tb_lineno)) update_dict['master_images_id'] = master_images_id update_dict['version'] = __version__ session.query(MasterFinders).filter(\ MasterFinders.master_images_id == master_images_id, MasterFinders.object_name == moon_dict['object']).update(update_dict) session.commit()