Example #1
0
def glds_summary(accession):
    """Report factors, assays, and/or raw JSON"""
    rargs = parse_rargs(request.args)
    try:
        glds = GLDS(accession)
    except GeneLabJSONException as e:
        raise FileNotFoundError(e)
    if rargs.display_rargs["fmt"] == "raw":
        return display_object([glds._json], {"fmt": "json"})
    else:
        return display_object(glds.summary_dataframe, rargs.display_rargs)
Example #2
0
def get_data(accession, assay_name, rargs=None):
    """Serve any kind of data"""
    if rargs is None:
        rargs = parse_rargs(request.args)
    assay, message, status = get_assay(accession, assay_name, rargs)
    if assay is None:
        return message, status
    filename = resolve_file_name(assay, rargs)
    table_data = try_sqlite(accession,
                            assay.name,
                            rargs.data_rargs,
                            expect_date=assay.glds_file_dates.get(
                                filename, -1))
    if table_data is None:
        table_data = retrieve_table_data(assay, filename, rargs.data_rargs)
        dump_to_sqlite(accession,
                       assay.name,
                       rargs.data_rargs,
                       table_data,
                       set_date=assay.glds_file_dates.get(filename, -1))
    if rargs.display_rargs["fmt"] in {"tsv", "json"}:
        return display_object(filter_table_data(table_data,
                                                rargs.data_filter_rargs),
                              rargs.display_rargs,
                              index="auto")
    else:
        raise NotImplementedError("fmt={}".format(rargs.display_rargs["fmt"]))
Example #3
0
def assay_metadata(accession, assay_name):
    """DataFrame view of metadata, optionally queried"""
    rargs = parse_rargs(request.args)
    assay, message, status = get_assay(accession, assay_name, rargs)
    if assay is None:
        return message, status
    subset, _ = subset_metadata(assay.metadata, rargs)
    return display_object(subset, rargs.display_rargs, index=True)
Example #4
0
def assay_factors(accession, assay_name):
    """DataFrame of samples and factors in human-readable form"""
    rargs = parse_rargs(request.args)
    assay, message, status = get_assay(accession, assay_name, rargs)
    if assay is None:
        return message, status
    else:
        if rargs.non_data_rargs["cls"]:
            if rargs.display_rargs["fmt"] != "tsv":
                error_mask = "{} format is unsuitable for CLS (use tsv)"
                raise GeneLabException(
                    error_mask.format(rargs.display_rargs["fmt"]))
            else:
                obj = assay.factors(
                    cls=rargs.non_data_rargs["cls"],
                    continuous=rargs.non_data_rargs["continuous"])
                return display_object(obj, {"fmt": "raw"})
        else:
            return display_object(assay.factors(),
                                  rargs.display_rargs,
                                  index=True)
Example #5
0
def get_gct(accession, assay_name, rargs):
    """Get GCT formatted processed data; needs to be refactored!"""
    assay, message, status = get_assay(accession, assay_name, rargs)
    if assay is None:
        return message, status
    pdata = try_sqlite(accession, assay.name, rargs.data_rargs)
    if pdata is None:
        pdata = get_data(accession, assay.name, rargs=rargs)
    gct_header = "#1.2\n{}\t{}\n".format(*pdata.shape)
    pdata.columns = ["Description"] + list(pdata.columns)[1:]
    pdata.insert(loc=0, column="Name", value=pdata["Description"])
    gct_data = gct_header + pdata.to_csv(sep="\t", index=False)
    return display_object(gct_data, {"fmt": "raw"})