Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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