def generate_download_link(data): """ Crappy way for downloading data as csv. The URL is modified on-the-fly. TODO: try https://github.com/thedirtyfew/dash-extensions/ """ if data is None: return "" else: pdf = extract_properties(data, None) # drop cutouts from download for the moment pdf = pdf.drop(columns=[ 'b:cutoutDifference_stampData', 'b:cutoutScience_stampData', 'b:cutoutTemplate_stampData' ]) csv_string = pdf.to_csv(index=False, encoding='utf-8') csv_string = "data:text/csv;charset=utf-8," + urllib.parse.quote( csv_string) return csv_string
def card_variable_button(data): """ Add a card containing button to fit for variable stars """ pdf = extract_properties(data, [ 'i:objectId', 'i:jd', 'd:cdsxmatch', 'i:objectidps1', 'i:distpsnr1', 'i:neargaia', 'i:distnr', ]) pdf = pdf.sort_values('i:jd', ascending=False) id0 = pdf['i:objectId'].values[0] cdsxmatch = pdf['d:cdsxmatch'].values[0] distnr = pdf['i:distnr'].values[0] objectidps1 = pdf['i:objectidps1'].values[0] distpsnr1 = pdf['i:distpsnr1'].values[0] neargaia = pdf['i:neargaia'].values[0] classification = extract_fink_classification_single(data) card = dbc.Card([ html.H5("ObjectID: {}".format(id0), className="card-title"), html.H6("Fink class: {}".format(classification), className="card-subtitle"), dcc.Markdown(""" --- ```python # Neighbourhood SIMBAD: {} PS1: {} Distance (PS1): {:.2f} arcsec Distance (Gaia): {:.2f} arcsec Distance (ZTF): {:.2f} arcsec ``` """.format(cdsxmatch, objectidps1, float(distpsnr1), float(neargaia), float(distnr))), dbc.Row(nterms_base), dbc.Row(submit_varstar_button) ], className="mt-3", body=True) return card
def card_download(data): """ Card containing a button to download object data """ pdf = extract_properties(data, ['i:objectId']) objectid = pdf['i:objectId'].values[0] card = dbc.Card([ dbc.ButtonGroup([ dbc.Button(html.A('Download Object Data', id="download-link", download="{}.csv".format(objectid), href=generate_download_link(data), target="_blank", style={"color": "white"}), id='download', target="_blank", href="") ]) ], className="mt-3", body=True) return card
def card_sn_properties(data): """ Add a card containing SN alert data """ pdf = extract_properties(data, [ 'i:objectId', 'i:ra', 'i:dec', 'i:jd', 'd:cdsxmatch', 'd:snn_snia_vs_nonia', 'd:snn_sn_vs_all', 'd:rfscore', 'i:classtar', 'i:ndethist', 'i:drb', 'i:distnr', 'i:magpsf', 'i:magnr', 'i:fid' ]) pdf = pdf.sort_values('i:jd', ascending=False) id0 = pdf['i:objectId'].values[0] snn_snia_vs_nonia = pdf['d:snn_snia_vs_nonia'].values[0] snn_sn_vs_all = pdf['d:snn_sn_vs_all'].values[0] rfscore = pdf['d:rfscore'].values[0] classtar = pdf['i:classtar'].values[0] ndethist = pdf['i:ndethist'].values[0] drb = pdf['i:drb'].values[0] ra0 = pdf['i:ra'].values[0] dec0 = pdf['i:dec'].values[0] distnr = pdf['i:distnr'].values[0] magpsfs = pdf['i:magpsf'].astype(float).values magnrs = pdf['i:magnr'].astype(float).values fids = pdf['i:fid'].values if float(distnr) < 2: deltamagref = np.round(magnrs[0] - magpsfs[0], 3) else: deltamagref = None mask = fids == fids[0] if np.sum(mask) > 1: deltamaglatest = np.round(magpsfs[mask][0] - magpsfs[mask][1], 3) else: deltamaglatest = None classification = extract_fink_classification_single(data) card = dbc.Card([ html.H5("ObjectID: {}".format(id0), className="card-title"), html.H6("Fink class: {}".format(classification), className="card-subtitle"), dcc.Markdown(""" --- ```python # SuperNNova classification SN Ia score: {:.2f} SNe score: {:.2f} # Random Forest classification RF score: {:.2f} ``` --- ```python # Variability Dmag (latest): {} Dmag (reference): {} ``` --- ```python # Extra properties Classtar: {:.2f} Detection in the survey: {} DL Real bogus: {:.2f} ``` --- """.format(float(snn_snia_vs_nonia), float(snn_sn_vs_all), float(rfscore), deltamaglatest, deltamagref, float(classtar), ndethist, float(drb))), html.Br(), dbc.ButtonGroup([ dbc.Button( 'TNS', id='TNS', target="_blank", href= 'https://wis-tns.weizmann.ac.il/search?ra={}&decl={}&radius=5&coords_unit=arcsec' .format(ra0, dec0)), dbc.Button( 'SIMBAD', id='SIMBAD', target="_blank", href= "http://simbad.u-strasbg.fr/simbad/sim-coo?Coord={}%20{}&Radius=0.08" .format(ra0, dec0)), dbc.Button( 'NED', id='NED', target="_blank", href= "http://ned.ipac.caltech.edu/cgi-bin/objsearch?search_type=Near+Position+Search&in_csys=Equatorial&in_equinox=J2000.0&ra={}&dec={}&radius=1.0&obj_sort=Distance+to+search+center&img_stamp=Yes" .format(ra0, dec0)), dbc.Button( 'SDSS', id='SDSS', target="_blank", href= "http://skyserver.sdss.org/dr13/en/tools/chart/navi.aspx?ra={}&dec={}" .format(ra0, dec0)), ]) ], className="mt-3", body=True) return card
def card_id(data): """ Add a card containing basic alert data """ pdf = extract_properties(data, [ 'i:objectId', 'i:candid', 'i:jd', 'i:ra', 'i:dec', 'd:cdsxmatch', 'i:objectidps1', 'i:distpsnr1', 'i:neargaia', 'i:distnr', 'i:magpsf', 'i:magnr', 'i:fid' ]) pdf = pdf.sort_values('i:jd', ascending=False) id0 = pdf['i:objectId'].values[0] candid0 = pdf['i:candid'].values[0] ra0 = pdf['i:ra'].values[0] dec0 = pdf['i:dec'].values[0] date0 = convert_jd(float(pdf['i:jd'].values[0])) cdsxmatch = pdf['d:cdsxmatch'].values[0] distnr = pdf['i:distnr'].values[0] objectidps1 = pdf['i:objectidps1'].values[0] distpsnr1 = pdf['i:distpsnr1'].values[0] neargaia = pdf['i:neargaia'].values[0] magpsfs = pdf['i:magpsf'].astype(float).values magnrs = pdf['i:magnr'].astype(float).values fids = pdf['i:fid'].values if float(distnr) < 2: deltamagref = np.round(magnrs[0] - magpsfs[0], 3) else: deltamagref = None mask = fids == fids[0] if np.sum(mask) > 1: deltamaglatest = np.round(magpsfs[mask][0] - magpsfs[mask][1], 3) else: deltamaglatest = None classification = extract_fink_classification_single(data) card = dbc.Card([ html.H5("ObjectID: {}".format(id0), className="card-title"), html.H6("Fink class: {}".format(classification), className="card-subtitle"), dcc.Markdown(""" ```python # General properties Date: {} RA: {} deg Dec: {} deg ``` --- ```python # Variability Dmag (latest): {} Dmag (reference): {} ``` --- ```python # Neighbourhood SIMBAD: {} PS1: {} Distance (PS1): {:.2f} arcsec Distance (Gaia): {:.2f} arcsec Distance (ZTF): {:.2f} arcsec ``` --- """.format(date0, ra0, dec0, deltamaglatest, deltamagref, cdsxmatch, objectidps1, float(distpsnr1), float(neargaia), float(distnr))), dbc.ButtonGroup([ dbc.Button( 'TNS', id='TNS', target="_blank", href= 'https://wis-tns.weizmann.ac.il/search?ra={}&decl={}&radius=5&coords_unit=arcsec' .format(ra0, dec0)), dbc.Button( 'SIMBAD', id='SIMBAD', target="_blank", href= "http://simbad.u-strasbg.fr/simbad/sim-coo?Coord={}%20{}&Radius=0.08" .format(ra0, dec0)), dbc.Button( 'NED', id='NED', target="_blank", href= "http://ned.ipac.caltech.edu/cgi-bin/objsearch?search_type=Near+Position+Search&in_csys=Equatorial&in_equinox=J2000.0&ra={}&dec={}&radius=1.0&obj_sort=Distance+to+search+center&img_stamp=Yes" .format(ra0, dec0)), dbc.Button( 'SDSS', id='SDSS', target="_blank", href= "http://skyserver.sdss.org/dr13/en/tools/chart/navi.aspx?ra={}&dec={}" .format(ra0, dec0)), ]) ], className="mt-3", body=True) return card