def _trait_has_no_children_left(self, trait): explorer = ex.Explorer(config_properties=self.properties) studies = explorer.get_list_of_studies_for_trait(trait) if len(studies) == 1 and studies[0] == self.study: return True else: return False
def studies_for_trait(trait): args = request.args.to_dict() try: start, size = apiu._get_start_size(args) except ValueError as error: logging.error("/traits/" + trait + "/studies. " + (str(error))) raise BadUserRequest(str(error)) try: explorer = ex.Explorer(apiu.properties) studies = explorer.get_list_of_studies_for_trait(trait) study_list = apiu._create_study_info_for_trait(studies, trait) end = min(start + size, len(study_list)) response = apiu._create_response( collection_name='studies', method_name='api.get_studies_for_trait', start=start, size=size, index_marker=size, data_dict=study_list[start:end], params=dict(trait=trait)) return simplejson.dumps(response) except NotFoundError as error: logging.error("/traits/" + trait + "/studies. " + (str(error))) raise RequestedNotFound(str(error))
def setup_method(self): # initialize explorer with local path properties.h5files_path = "./outputexplorer" self.explorer = ex.Explorer(properties) self.loaded_traits = ['t1', 't2', 't3'] self.loaded_studies = ['s1', 's2', 's11', 's12', 's3', 's4', 's5'] self.loaded_studies_t1 = ['s1', 's2', 's11', 's12'] self.loaded_studies_t3 = ['s5']
def trait(trait): try: explorer = ex.Explorer(config_properties=properties) if explorer.has_trait(trait): response = apiu._create_info_for_trait(trait) return simplejson.dumps(response, ignore_nan=True) except NotFoundError as error: logging.error("/traits/" + trait + ". " + (str(error))) raise RequestedNotFound(str(error))
def _create_chromosome_info(chromosome): explorer = ex.Explorer(apiu.properties) if explorer.has_chromosome(chromosome): chromosome_info = {'chromosome': chromosome, '_links': {'self': apiu._create_href(method_name='api.get_chromosome', params={'chromosome': chromosome}), 'associations': apiu._create_href(method_name='api.get_chromosome_assocs', params={'chromosome': chromosome})}} return chromosome_info raise NotFoundError("Chromosome " + str(chromosome))
def qtl_group(qtl_group): try: explorer = ex.Explorer(config_properties=properties) if explorer.get_studies_of_tissue(tissue): response = apiu._create_info_for_tissue(tissue) return simplejson.dumps(response, ignore_nan=True) else: raise RequestedNotFound("Tissue: {} not found".format(tissue)) except NotFoundError as error: logging.error("/tissue/" + tissue + ". " + (str(error))) raise RequestedNotFound(str(error))
def tissue_study(study, tissue=None): try: explorer = ex.Explorer(apiu.properties) if explorer.check_study(study): response = apiu._create_info_for_study(study=study, tissue=tissue) return simplejson.dumps(response, ignore_nan=True) else: raise RequestedNotFound("Study: {}.".format(study)) except (NotFoundError, SubgroupError) as error: logging.error("/studies/" + study + ". " + (str(error))) raise RequestedNotFound(str(error))
def genes(): args = request.args.to_dict() try: start, size = apiu._get_start_size(args) except ValueError as error: logging.error("/genes. " + (str(error))) raise BadUserRequest(str(error)) explorer = ex.Explorer(apiu.properties) genes = explorer.get_list_of_genes() gene_list = apiu._get_gene_list(genes=genes, start=start, size=size) response = apiu._create_response(collection_name='gene', method_name='api.get_genes', start=start, size=size, index_marker=size, data_dict=gene_list) return simplejson.dumps(response)
def chromosomes(): chromosomes_list = [] for chromosome in range(1, (properties.available_chromosomes + 1)): try: explorer = ex.Explorer(apiu.properties) explorer.has_chromosome(chromosome) # adding plus one to include the available_chromosomes number chromosome_info = _create_chromosome_info(chromosome) chromosomes_list.append(chromosome_info) except NotFoundError: logging.debug("Chromosome %s does not have data...", str(chromosome)) response = OrderedDict({'_embedded': {'chromosomes': chromosomes_list}}) return simplejson.dumps(response)
def qtl_groups(): args = request.args.to_dict() try: start, size, p_lower, p_upper, pval_interval, quant_method, snp, _, gene, study, trait, paginate, links, qtl_group = apiu._get_basic_arguments(args) except ValueError as error: logging.error("/qtl_groups. " + (str(error))) raise BadUserRequest(str(error)) explorer = ex.Explorer(apiu.properties) qtls = explorer.get_qtl_list() qtl_list = apiu._get_qtl_list(qtls=qtls, start=start, size=size, links=links) response = apiu._create_response(collection_name='qtl_groups', method_name='api.get_qtl_groups', start=start, size=size, index_marker=size, data_dict=qtl_list) return simplejson.dumps(response)
def study_list(): args = request.args.to_dict() try: start, size = apiu._get_start_size(args) except ValueError as error: logging.error("/study_list. " + (str(error))) raise BadUserRequest(str(error)) explorer = ex.Explorer(apiu.properties) studies = explorer.get_list_of_studies() # default size is max unless specified: if 'size' not in args: size = len(studies) study_list = apiu._get_study_list_no_info(studies=studies, start=start, size=size) response = apiu._create_response(collection_name='studies', method_name='api.get_studies', start=start, size=size, index_marker=size, data_dict=study_list) return simplejson.dumps(response)
def traits(): args = request.args.to_dict() #need to add in study to url if present try: start, size = apiu._get_start_size(args) study = apiu._retrieve_endpoint_arguments(args, "study") except ValueError as error: logging.error("/molecular_phenotypes. " + (str(error))) raise BadUserRequest(str(error)) explorer = ex.Explorer(apiu.properties) if study: traits = explorer.get_trait_of_study(study_to_find=study) trait_list = apiu._get_trait_list(traits=traits) response = apiu._create_response(collection_name='molecular_trait_id', method_name='api.get_traits', params={'study': study}, start=start, size=size, index_marker=size, data_dict=trait_list) else: traits = explorer.get_list_of_traits() trait_list = apiu._get_trait_list(traits=traits, start=start, size=size) response = apiu._create_response(collection_name='molecular_trait_id', method_name='api.get_traits', start=start, size=size, index_marker=size, data_dict=trait_list) return simplejson.dumps(response)
def _find_study_info(study, trait=None): if trait is None: explorer = ex.Explorer(config_properties=properties) trait = explorer.get_trait_of_study(study) return trait
def _get_all_traits(self): explorer = ex.Explorer(self.properties) return explorer.get_list_of_traits()
def main(): # pragma: no cover args = argument_parser(sys.argv[1:]) # pragma: no cover trait, study, chromosome, bp_interval, snp, pval_interval = au.convert_search_args( args) # pragma: no cover find_all = args.all # pragma: no cover start = args.start # pragma: no cover if start is None: # pragma: no cover start = 0 else: start = int(start) size = args.size # pragma: no cover if size is None: # pragma: no cover size = 20 else: size = int(size) search = Search(properties) # pragma: no cover if find_all: # pragma: no cover result, index_marker = search.search_all_assocs( start=start, size=size, pval_interval=pval_interval) elif trait is not None: if study is not None: result, index_marker = search.search_study( trait=trait, study=study, start=start, size=size, pval_interval=pval_interval) else: result, index_marker = search.search_trait( trait=trait, start=start, size=size, pval_interval=pval_interval) elif study is not None: explorer = ex.Explorer(properties) trait = explorer.get_trait_of_study(study) result, index_marker = search.search_study(trait=trait, study=study, start=start, size=size, pval_interval=pval_interval) elif chromosome is not None: if snp is not None: result, index_marker = search.search_snp( snp=snp, start=start, size=size, study=study, pval_interval=pval_interval, chromosome=chromosome) else: result, index_marker = search.search_chromosome( chromosome=chromosome, start=start, size=size, bp_interval=bp_interval, study=study, pval_interval=pval_interval) elif snp is not None: result, index_marker = search.search_snp(snp=snp, start=start, size=size, study=study, pval_interval=pval_interval) else: raise ValueError("Input is wrong!") if result is not None: # pragma: no cover for name, dataset in result.items(): print(name, dataset) else: print("Result is empty!")