Ejemplo n.º 1
0
def view_collection():
    params = request.args

    uc_id = params['uc_id']
    uc = (collection for collection in g.user_session.user_collections
          if collection["id"] == uc_id).next()
    traits = uc["members"]

    trait_obs = []
    json_version = []

    for atrait in traits:
        name, dataset_name = atrait.split(':')
        if dataset_name == "Temp":
            group = name.split("_")[2]
            dataset = create_dataset(dataset_name,
                                     dataset_type="Temp",
                                     group_name=group)
            trait_ob = trait.GeneralTrait(name=name, dataset=dataset)
        else:
            dataset = create_dataset(dataset_name)
            trait_ob = trait.GeneralTrait(name=name, dataset=dataset)
            trait_ob = trait.retrieve_trait_info(trait_ob,
                                                 dataset,
                                                 get_qtl_info=True)
        trait_obs.append(trait_ob)

        json_version.append(trait.jsonable(trait_ob))

    collection_info = dict(trait_obs=trait_obs, uc=uc)

    if "json" in params:
        return json.dumps(json_version)
    else:
        return render_template("collections/view.html", **collection_info)
def view_collection():
    params = request.args
    print("PARAMS in view collection:", params)

    if "uc_id" in params:
        uc_id = params['uc_id']
        uc = model.UserCollection.query.get(uc_id)
        traits = json.loads(uc.members)
    else:
        user_collections = json.loads(Redis.get(user_manager.AnonUser().key))
        this_collection = {}
        for collection in user_collections:
            if collection['id'] == params['collection_id']:
                this_collection = collection
                break
        #this_collection = user_collections[params['collection_id']]
        traits = this_collection['members']

    print("in view_collection traits are:", traits)

    trait_obs = []
    json_version = []

    for atrait in traits:
        name, dataset_name = atrait.split(':')
        if dataset_name == "Temp":
            group = name.split("_")[2]
            dataset = create_dataset(dataset_name, dataset_type = "Temp", group_name = group)
            trait_ob = trait.GeneralTrait(name=name, dataset=dataset)
        else:
            dataset = create_dataset(dataset_name)
            trait_ob = trait.GeneralTrait(name=name, dataset=dataset)
            trait_ob = trait.retrieve_trait_info(trait_ob, dataset, get_qtl_info=True)
        trait_obs.append(trait_ob)

        json_version.append(trait.jsonable(trait_ob))

    if "uc_id" in params:
        collection_info = dict(trait_obs=trait_obs,
                               uc = uc)
    else:
        collection_info = dict(trait_obs=trait_obs,
                               collection_name=this_collection['name'])
    if "json" in params:
        print("json_version:", json_version)
        return json.dumps(json_version)
    else:
        return render_template("collections/view.html",
                           **collection_info
                           )
Ejemplo n.º 3
0
def view_collection():
    params = request.args

    if g.user_session.logged_in and "uc_id" in params:
        uc_id = params['uc_id']
        uc = (collection for collection in g.user_session.user_collections if collection["id"] == uc_id).next()
        traits = uc["members"]
    else:
        user_collections = json.loads(Redis.get(user_manager.AnonUser().key))
        this_collection = {}
        for collection in user_collections:
            if collection['id'] == params['collection_id']:
                this_collection = collection
                break

        traits = this_collection['members']

    trait_obs = []
    json_version = []

    for atrait in traits:
        name, dataset_name = atrait.split(':')
        if dataset_name == "Temp":
            group = name.split("_")[2]
            dataset = create_dataset(dataset_name, dataset_type = "Temp", group_name = group)
            trait_ob = trait.GeneralTrait(name=name, dataset=dataset)
        else:
            dataset = create_dataset(dataset_name)
            trait_ob = trait.GeneralTrait(name=name, dataset=dataset)
            trait_ob = trait.retrieve_trait_info(trait_ob, dataset, get_qtl_info=True)
        trait_obs.append(trait_ob)

        json_version.append(trait.jsonable(trait_ob))

    if "uc_id" in params:
        collection_info = dict(trait_obs=trait_obs,
                               uc = uc)
    else:
        collection_info = dict(trait_obs=trait_obs,
                               collection_name=this_collection['name'])
    if "json" in params:
        return json.dumps(json_version)
    else:
        return render_template("collections/view.html",
                           **collection_info
                           )
def set_template_vars(start_vars, correlation_data):
    corr_type = start_vars['corr_type']
    corr_method = start_vars['corr_sample_method']

    if start_vars['dataset'] == "Temp":
        this_dataset_ob = create_dataset(dataset_name="Temp",
                                         dataset_type="Temp",
                                         group_name=start_vars['group'])
    else:
        this_dataset_ob = create_dataset(dataset_name=start_vars['dataset'])
    this_trait = create_trait(dataset=this_dataset_ob,
                              name=start_vars['trait_id'])

    correlation_data['this_trait'] = jsonable(this_trait, this_dataset_ob)
    correlation_data['this_dataset'] = this_dataset_ob.as_dict()

    target_dataset_ob = create_dataset(correlation_data['target_dataset'])
    correlation_data['target_dataset'] = target_dataset_ob.as_dict()

    table_json = correlation_json_for_table(correlation_data,
                                            correlation_data['this_trait'],
                                            correlation_data['this_dataset'],
                                            target_dataset_ob)

    correlation_data['table_json'] = table_json

    if target_dataset_ob.type == "ProbeSet":
        filter_cols = [7, 6]
    elif target_dataset_ob.type == "Publish":
        filter_cols = [6, 0]
    else:
        filter_cols = [4, 0]

    correlation_data['corr_method'] = corr_method
    correlation_data['filter_cols'] = filter_cols
    correlation_data['header_fields'] = get_header_fields(
        target_dataset_ob.type, correlation_data['corr_method'])
    correlation_data['formatted_corr_type'] = get_formatted_corr_type(
        corr_type, corr_method)

    return correlation_data
Ejemplo n.º 5
0
def view_collection():
    params = request.args

    uc_id = params['uc_id']
    uc = next(
        (collection for collection in g.user_session.user_collections if collection["id"] == uc_id))
    traits = uc["members"]

    trait_obs = []
    json_version = []

    for atrait in traits:
        if ':' not in atrait:
            continue
        name, dataset_name = atrait.split(':')
        if dataset_name == "Temp":
            group = name.split("_")[2]
            dataset = create_dataset(
                dataset_name, dataset_type="Temp", group_name=group)
            trait_ob = create_trait(name=name, dataset=dataset)
        else:
            dataset = create_dataset(dataset_name)
            trait_ob = create_trait(name=name, dataset=dataset)
            trait_ob = retrieve_trait_info(
                trait_ob, dataset, get_qtl_info=True)
        trait_obs.append(trait_ob)

        json_version.append(jsonable(trait_ob))

    collection_info = dict(
        trait_obs=trait_obs,
        uc=uc,
        heatmap_data_url=f"{GN_SERVER_URL}heatmaps/clustered")

    if "json" in params:
        return json.dumps(json_version)
    else:
        return render_template("collections/view.html",
                               **collection_info
                               )
def correlation_json_for_table(correlation_data, this_trait, this_dataset,
                               target_dataset_ob):
    """Return JSON data for use with the DataTable in the correlation result page

    Keyword arguments:
    correlation_data -- Correlation results
    this_trait -- Trait being correlated against a dataset, as a dict
    this_dataset -- Dataset of this_trait, as a dict
    target_dataset_ob - Target dataset, as a Dataset ob
    """
    this_trait = correlation_data['this_trait']
    this_dataset = correlation_data['this_dataset']
    target_dataset = target_dataset_ob.as_dict()

    corr_results = correlation_data['correlation_results']
    results_list = []

    file_name = f"{target_dataset['name']}_metadata.json"

    file_path = os.path.join(TMPDIR, file_name)
    new_traits_metadata = {}

    try:
        with open(file_path, "r+") as file_handler:
            dataset_metadata = json.load(file_handler)

    except FileNotFoundError:
        Path(file_path).touch(exist_ok=True)
        dataset_metadata = {}

    for i, trait_dict in enumerate(corr_results):
        trait_name = list(trait_dict.keys())[0]
        trait = trait_dict[trait_name]

        target_trait = dataset_metadata.get(trait_name)
        if target_trait is None:
            target_trait_ob = create_trait(dataset=target_dataset_ob,
                                           name=trait_name,
                                           get_qtl_info=True)
            target_trait = jsonable(target_trait_ob, target_dataset_ob)
            new_traits_metadata[trait_name] = target_trait
        if target_trait['view'] == False:
            continue
        results_dict = {}
        results_dict['index'] = i + 1
        results_dict['trait_id'] = target_trait['name']
        results_dict['dataset'] = target_dataset['name']
        results_dict['hmac'] = hmac.data_hmac('{}:{}'.format(
            target_trait['name'], target_dataset['name']))
        results_dict['sample_r'] = f"{float(trait['corr_coefficient']):.3f}"
        results_dict['num_overlap'] = trait['num_overlap']
        results_dict['sample_p'] = f"{float(trait['p_value']):.3e}"
        if target_dataset['type'] == "ProbeSet":
            results_dict['symbol'] = target_trait['symbol']
            results_dict['description'] = "N/A"
            results_dict['location'] = target_trait['location']
            results_dict['mean'] = "N/A"
            results_dict['additive'] = "N/A"
            if bool(target_trait['description']):
                results_dict['description'] = target_trait['description']
            if bool(target_trait['mean']):
                results_dict['mean'] = f"{float(target_trait['mean']):.3f}"
            try:
                results_dict[
                    'lod_score'] = f"{float(target_trait['lrs_score']) / 4.61:.1f}"
            except:
                results_dict['lod_score'] = "N/A"
            results_dict['lrs_location'] = target_trait['lrs_location']
            if bool(target_trait['additive']):
                results_dict[
                    'additive'] = f"{float(target_trait['additive']):.3f}"
            results_dict['lit_corr'] = "--"
            results_dict['tissue_corr'] = "--"
            results_dict['tissue_pvalue'] = "--"
            if this_dataset['type'] == "ProbeSet":
                if 'lit_corr' in trait:
                    results_dict[
                        'lit_corr'] = f"{float(trait['lit_corr']):.3f}"
                if 'tissue_corr' in trait:
                    results_dict[
                        'tissue_corr'] = f"{float(trait['tissue_corr']):.3f}"
                    results_dict[
                        'tissue_pvalue'] = f"{float(trait['tissue_p_val']):.3e}"
        elif target_dataset['type'] == "Publish":
            results_dict['abbreviation_display'] = "N/A"
            results_dict['description'] = "N/A"
            results_dict['mean'] = "N/A"
            results_dict['authors_display'] = "N/A"
            results_dict['additive'] = "N/A"
            results_dict['pubmed_link'] = "N/A"
            results_dict['pubmed_text'] = "N/A"

            if bool(target_trait['abbreviation']):
                results_dict['abbreviation_display'] = target_trait[
                    'abbreviation']
            if bool(target_trait['description']):
                results_dict['description'] = target_trait['description']
            if bool(target_trait['mean']):
                results_dict['mean'] = f"{float(target_trait['mean']):.3f}"
            if bool(target_trait['authors']):
                authors_list = target_trait['authors'].split(',')
                if len(authors_list) > 6:
                    results_dict['authors_display'] = ", ".join(
                        authors_list[:6]) + ", et al."
                else:
                    results_dict['authors_display'] = target_trait['authors']
            if 'pubmed_id' in target_trait:
                results_dict['pubmed_link'] = target_trait['pubmed_link']
                results_dict['pubmed_text'] = target_trait['pubmed_text']
            try:
                results_dict[
                    'lod_score'] = f"{float(target_trait['lrs_score']) / 4.61:.1f}"
            except:
                results_dict['lod_score'] = "N/A"
            results_dict['lrs_location'] = target_trait['lrs_location']
            if bool(target_trait['additive']):
                results_dict[
                    'additive'] = f"{float(target_trait['additive']):.3f}"
        else:
            results_dict['location'] = target_trait['location']

        results_list.append(results_dict)

    if bool(new_traits_metadata):
        # that means new traits exists
        dataset_metadata.update(new_traits_metadata)
        with open(file_path, "w+") as file_handler:
            json.dump(dataset_metadata, file_handler)
    return json.dumps(results_list)