def process_objlist(infilename, outfilename): """ Given filename of file containing ssmid / time of observation for series of objects, """ """ generate ephemerides for all of those objects at all of the given times """ # initialize JPL ephemerides for oorb ephem_datfile = "" oo.pyoorb.oorb_init(ephemeris_fname=ephem_datfile) # read input file and process objects / times for each object into dictionary of time lists filein = open(infilename, 'r') objidprev = 0 objlist = [] obsdatedict = {} for line in filein: objid, obsdate = line.split() objid = int(objid) obsdate = float(obsdate) if objid != objidprev: objlist.append(objid) objidprev = objid obsdatedict[objid] = [obsdate] else: obsdatedict[objid].append(obsdate) filein.close() # open connection to orbit database db, cursor = ui.sqlConnect(dbname='ssm', verbose=False) objects = [] for id in objlist: keys = ('q', 'e', 'i', 'node', 'argperi', 't_peri', 'h_v', 'g_value', 'ssmid', 'objtype') query = "select q, e, i, node, argperi, t_peri, h_v, g_value, ssmid, objtype from orbits where ssmid=%d" %(id) results = ui.sqlQuery(cursor, query, verbose=False) data = {} i = 0 for key in keys: data[key] = float(results[0][i]) i = i+1 data['epoch'] = 49353.16 mymo = mo.MovingObject(data['q'], data['e'], data['i'], data['node'], data['argperi'], data['t_peri'], data['epoch'], magHv=data['h_v'], phaseGv=data['g_value'], objid=data['ssmid'], objtype=data['objtype']) objects.append(mymo) # generate ephemerides for each moving object fileout = open(outfilename, 'w') i = 0 for mobj in objects: objname = objlist[i] mjdTaiList = obsdatedict[objname] mobj.calcEphemeris(mjdTaiList, obscode=807, timescale=4.0) i = i+1 for mjdTai in mjdTaiList: thismjd = mobj.mjdTaiStr(mjdTai) obstime, ra, dec, dradt, ddecdt, magV = mobj.Ephemerides[thismjd].getPosition() print >>fileout, objname, obstime, ra, dec, dradt, ddecdt, magV fileout.close()
def get_opsimValues(opsim, offset=0, drows=nobs): conn, cursor = ui.sqlConnect() query = 'select fieldRA*180/PI(), fieldDec*180/PI(), expmjd, filter, altitude*180/PI(), azimuth*180/PI(), airmass, xparency, seeing, sunAlt*180/PI(), sunAz*180/PI(), MoonAlt*180/PI(), moonPhase, moonIllum, skybrightness_modified, 5sigma_modified from %s group by expmjd' %(opsim) results = ui.sqlQueryLimited(cursor, query, offset=offset, drows=drows) keys = ('ra', 'dec', 'expmjd', 'filter', 'alt', 'az', 'airmass', 'cloud', 'seeing', 'sunalt', 'sunaz', 'moonalt', 'moonphase', 'moonillum', 'skybright', 'maglimit') opsimdata = ui.assignResults(results, keys) ui.sqlEndConnect(conn, cursor) return opsimdata
def get_opsimObs_inputs(opsim, offset=0, drows=nobs): conn, cursor = ui.sqlConnect() query = 'select fieldRA*180/PI(), fieldDec*180/PI(), expmjd, filter, exptime from %s group by expmjd' %(opsim) results = ui.sqlQueryLimited(cursor, query, offset=offset, drows=drows) keys = ('ra', 'dec', 'expmjd', 'filter', 'exptime') keytypes = ('float', 'float', 'float', 'str', 'int') data = ui.assignResults(results, keys) ui.writeDatafile('test_%s' %(opsim), data, keys) ui.sqlEndConnect(conn, cursor) return
def get_opsimValues(opsim, offset=0, drows=nobs): conn, cursor = ui.sqlConnect() query = 'select fieldRA*180/PI(), fieldDec*180/PI(), expmjd, filter, altitude*180/PI(), azimuth*180/PI(), airmass, xparency, seeing, sunAlt*180/PI(), sunAz*180/PI(), MoonAlt*180/PI(), moonPhase, moonIllum, skybrightness_modified, 5sigma_modified from %s group by expmjd' % ( opsim) results = ui.sqlQueryLimited(cursor, query, offset=offset, drows=drows) keys = ('ra', 'dec', 'expmjd', 'filter', 'alt', 'az', 'airmass', 'cloud', 'seeing', 'sunalt', 'sunaz', 'moonalt', 'moonphase', 'moonillum', 'skybright', 'maglimit') opsimdata = ui.assignResults(results, keys) ui.sqlEndConnect(conn, cursor) return opsimdata
def get_opsimObs_inputs(opsim, offset=0, drows=nobs): conn, cursor = ui.sqlConnect() query = 'select fieldRA*180/PI(), fieldDec*180/PI(), expmjd, filter, exptime from %s group by expmjd' % ( opsim) results = ui.sqlQueryLimited(cursor, query, offset=offset, drows=drows) keys = ('ra', 'dec', 'expmjd', 'filter', 'exptime') keytypes = ('float', 'float', 'float', 'str', 'int') data = ui.assignResults(results, keys) ui.writeDatafile('test_%s' % (opsim), data, keys) ui.sqlEndConnect(conn, cursor) return
def process_objlist(infilename, outfilename): """ Given filename of file containing ssmid / time of observation for series of objects, """ """ generate ephemerides for all of those objects at all of the given times """ # initialize JPL ephemerides for oorb ephem_datfile = "" oo.pyoorb.oorb_init(ephemeris_fname=ephem_datfile) # read input file and process objects / times for each object into dictionary of time lists filein = open(infilename, 'r') objidprev = 0 objlist = [] obsdatedict = {} for line in filein: objid, obsdate = line.split() objid = int(objid) obsdate = float(obsdate) if objid != objidprev: objlist.append(objid) objidprev = objid obsdatedict[objid] = [obsdate] else: obsdatedict[objid].append(obsdate) filein.close() # open connection to orbit database db, cursor = ui.sqlConnect(dbname='ssm', verbose=False) objects = [] for id in objlist: keys = ('q', 'e', 'i', 'node', 'argperi', 't_peri', 'h_v', 'g_value', 'ssmid', 'objtype') query = "select q, e, i, node, argperi, t_peri, h_v, g_value, ssmid, objtype from orbits where ssmid=%d" % ( id) results = ui.sqlQuery(cursor, query, verbose=False) data = {} i = 0 for key in keys: data[key] = float(results[0][i]) i = i + 1 data['epoch'] = 49353.16 mymo = mo.MovingObject(data['q'], data['e'], data['i'], data['node'], data['argperi'], data['t_peri'], data['epoch'], magHv=data['h_v'], phaseGv=data['g_value'], objid=data['ssmid'], objtype=data['objtype']) objects.append(mymo) # generate ephemerides for each moving object fileout = open(outfilename, 'w') i = 0 for mobj in objects: objname = objlist[i] mjdTaiList = obsdatedict[objname] mobj.calcEphemeris(mjdTaiList, obscode=807, timescale=4.0) i = i + 1 for mjdTai in mjdTaiList: thismjd = mobj.mjdTaiStr(mjdTai) obstime, ra, dec, dradt, ddecdt, magV = mobj.Ephemerides[ thismjd].getPosition() print >> fileout, objname, obstime, ra, dec, dradt, ddecdt, magV fileout.close()