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 )
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
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)