Exemple #1
0
 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))
Exemple #3
0
 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)
Exemple #13
0
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
Exemple #14
0
 def _get_all_traits(self):
     explorer = ex.Explorer(self.properties)
     return explorer.get_list_of_traits()
Exemple #15
0
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!")