def APASS_get_calib(self, rad_min = 5): ''' adapted from code originally written by K. Zhang Parameters ---------- rad_min (optional, int or float) : search radius in decimal arcminutes Output ------ file : writes processed calibration file and sets member variables ''' if not apass: print('APASS not supported due to missing package') return # connect to APASS database connection = connect() db = AstroSQL(connection) table = db.get_table('apass') # search and format results dict_lst = db.get_by_radec(table, self.targetra, self.targetdec, rad_min) df = pd.DataFrame(data=dict_lst, columns=dict_lst[0].keys()) df = df[['RA', 'DEC', 'V', 'Verr', 'B', 'Berr', 'g', 'gerr', 'r', 'rerr', 'i', 'ierr']] df = df.replace([99.9990], [np.nan]) df.rename(columns = {'RA' : 'ra'}, inplace = True) df.rename(columns = {'DEC': 'dec'}, inplace = True) df = df.dropna() self.cal_source = 'APASS' self.cal_filename = 'cal_{}_{}.dat'.format(self.targetname, self.cal_source) df.to_csv(os.path.join(self.relative_path, self.cal_filename), sep = '\t', index=False, header = True, float_format='%9.4f')
def addgalaxyintodatabase(data, galaxy): #add 1500 galaxies at most into database if len(galaxy) > 1500: print('galaxy is longer than 1500 items, truncate to 1500') galaxy = galaxy[0:1500] db = AstroSQL(database='observation') table2 = db.get_table("voevents_galaxy") print('Adding galaxyies into voeventsgalaxy table') g = galaxy.to_pandas().astype(object) g['TriggerNumber'] = data['TriggerNumber'] g['TriggerSequence'] = data['TriggerSequence'] #g['Kait_observable'] = 'N' g['Kait_observed'] = 'N' #g['Time_observed'] = None #g['Limit_mag'] = 0 #g['Comment'] = None data = g.to_dict('records') query = table2.insert(data) query.execute()
import sys import pprint from lxml import etree from pathlib import Path from astrosql import AstroSQL PROJECT_PATH = Path(__file__).resolve().parents[1] sys.path.append(str(PROJECT_PATH)) from gcn.handlers import followupkait from gcn import voeventparser pprint = pprint.PrettyPrinter().pprint DB = AstroSQL(database='observation') voevents_table = DB.get_table('voevents') DATAPATH = PROJECT_PATH / 'test/gcn_output' fname = "ivo%3A%2F%2Fnasa.gsfc.gcn%2FFermi%23GBM_Gnd_Pos_2018-04-16T08%3A09%3A26.47_545558971_1-990" event = etree.parse(str(DATAPATH / fname)) root = event.getroot() pprint(voeventparser.parse(root)) # trigger_number = root.find("./What/Param[@name='TrigID']").attrib['value'] # voevents_table.delete().where(voevents_table.TriggerNumber == trigger_number).execute() # followupkait(str(DATAPATH/fname), root)
import requests import astropy.units as u from astropy.time import Time from astrosql import AstroSQL from astrosql.sqlconnector import connect from warnings import warn PROJECT_PATH = Path(__file__).resolve().parents[1] sys.path.append(str(PROJECT_PATH)) import gcn from gcn import voeventparser from gcn.gcnfollowup import * db = AstroSQL(database='observation') voevents_table = db.get_table("voevents") galaxy_table = db.get_table("voevents_galaxy") ######################################## # FILTERS ######################################## # TODO Deprecate the gcn filtering to use XML parsing instead. @gcn.include_notice_types( gcn.notice_types.FERMI_GBM_FLT_POS, gcn.notice_types.FERMI_GBM_GND_POS, gcn.notice_types.FERMI_GBM_FIN_POS, gcn.notice_types.SWIFT_BAT_GRB_POS_ACK, gcn.notice_types.AGILE_GRB_WAKEUP, gcn.notice_types.AGILE_GRB_GROUND, gcn.notice_types.AGILE_GRB_REFINED, gcn.notice_types.FERMI_LAT_POS_INI, gcn.notice_types.FERMI_LAT_GND, gcn.notice_types.MAXI_UNKNOWN, gcn.notice_types.MAXI_TEST, gcn.notice_types.LVC_PRELIM, gcn.notice_types.LVC_INITIAL, gcn.notice_types.LVC_UPDATE,
import pandas as pd import re import sys from pathlib import Path sys.path.append(str(Path(__file__).absolute().parents[1]/'src')) import peeweedb from sqlconnector import connect from astrosql import AstroSQL connection = connect() imagedb = AstroSQL(connection) images = imagedb.get_table('images') print("This may take a while ... ") # get rows where objname update is needed basenames = list(images.select(images.basename).where(images.objname.is_null(False).dicts()) df = pd.DataFrame(basenames) df['objname'] = [re.findall('^[^_]+', d['basename'])[0] for d in basenames] print("This may take a while") with connection.atomic(): for i,basename in enumerate(df['basename']): if i % 10000 == 0: print(i) query = (images .update(objname = df[df['basename'] == basename]['objname'].iloc[0]) .where(images.basename == basename) ) query.execute()
def addtriggersintodatabase(data): db = AstroSQL(database='observation') table1 = db.get_table("voevents") query = table1.insert(data) query.execute()