def query_GaiaDR1(self, ID=None): from astroquery.gaia import Gaia key = 'Gaia DR1' if ID is None: ID = self.IDs[key] tbl = Table(names = ('source_id',), dtype = (int,)) for i, gid in tqdm(enumerate(ID)): if not isinstance(gid, str): tbl.add_row(None) tbl[-1][key] = int(re.sub(r"\D", "", gid)) elif len(gid) == 0: tbl.add_row(None) else: gid = int(gid.replace(key+' ', '')) adql_query = "select * from gaiadr1.gaia_source where source_id=%i" % (gid) job = Gaia.launch_job(adql_query).get_results() idx = np.where(job['source_id'].quantity == gid)[0] if len(idx) > 0: tbl = avstack([tbl, job[idx]]) else: tbl.add_row(None) tbl[-1][key] = int(re.sub(r"\D", "", gid)) self.GDR1 = tbl return self.GDR1
def add_to_table(job, tbl, identifier): if len(job) == 0: add_empty_row(tbl) else: for i, row in enumerate(job[0]): if row[identifier] in id: tbl = avstack([tbl, row]) break
def query_TIC(self, ID=None, radius = 10.0*u.arcsec): key = 'TIC' if ID is None: ID = self.IDs['TIC'] tbl = Table(names = ('ID',), dtype = (str,)) for i, id in tqdm(enumerate(ID)): if not isinstance(id, str): add_empty_row(tbl) else: job = Catalogs.query_object(objectname=id, catalog='TIC', objType='STAR', radius = 10.0*u.arcsec) ridx = job['ID'] == str(id.replace('TIC ','')) if len(job[ridx][0]) > 0: tbl = avstack([tbl, job[ridx][0]]) else: add_empty_row(tbl) self.TIC = tbl if not hasattr(self, 'simbad'): self.query_simbad(ID) for i in range(len(self.IDs)): if len(self.IDs['2MASS'][i])==0 and (self.TIC['TWOMASS'][i] != 0): self.IDs['2MASS'][i] = '2MASS J'+self.TIC['TWOMASS'][i] if len(self.IDs['HIP'][i])==0 and (self.TIC['HIP'][i] != 0): self.IDs['HIP'][i] = 'HIP '+self.TIC['HIP'][i] if len(self.IDs['TYC'][i])==0 and (self.TIC['TYC'][i] != 0): self.IDs['TYC'][i] = 'TYC '+self.TIC['TYC'][i] if len(self.IDs['KIC'][i])==0 and (self.TIC['KIC'][i] != 0): self.IDs['KIC'][i] = 'KIC '+self.TIC['KIC'][i] return self.TIC
def query_EPIC(self, ID=None, radius = 10.0*u.arcsec): import warnings from astropy.utils.metadata import MergeConflictWarning warnings.filterwarnings("ignore", category = MergeConflictWarning) if ID is None: ID = self.IDs['EPIC'] tbl = Table(names = ('ID',), dtype = (int,)) for i, id in tqdm(enumerate(ID)): id = id.replace('EPIC ','') if not isinstance(id, str): add_empty_row(tbl) else: v = Vizier(column_filters={"ID":f"=={id}", 'OType':'STAR'}) job = v.get_catalogs('IV/34/epic') ridx = job[0]['ID'].quantity == int(id) if len(job[0][ridx]) > 0: tbl = avstack([tbl, job[0][ridx][0]]) else: add_empty_row(tbl) self.EPIC = tbl # Fill in blank IDs where possible if not hasattr(self,'simbad'): self.query_simbad(ID) for i in range(len(self.IDs)): if len(self.IDs['2MASS'][i])==0: self.IDs['2MASS'][i] = '2MASS J'+self.EPIC['_2MASS'][i] self.query_simbad(self.IDs['2MASS']) return self.EPIC
def query_KIC(self, ID = None, radius = 10.0*u.arcsec): warnings.filterwarnings("ignore", category = MergeConflictWarning) if ID is None: ID = self.IDs['KIC'] tbl = Table(names = ('KIC',), dtype = (int,)) for i, id in tqdm(enumerate(ID)): if not isinstance(id, ): tbl.add_row(None) tbl[-1]['KIC'] = int(re.sub(r"\D", "", id)) else: job = Vizier.query_object(object_name = id, catalog = 'V/133/kic', radius = radius) if len(job) > 0: id_int = int(id.replace('KIC','')) idx = job[0]['KIC'] == id_int id_int = int(id.replace('KIC','')) idx = job[0]['KIC'] == id_int tbl = avstack([tbl, job[0][idx]]) else: tbl.add_row(None) tbl[-1]['KIC'] = int(re.sub(r"\D", "", id)) warnings.warn(f'Unable to find KIC entry for {id}') self.KIC = tbl return self.KIC