Esempio n. 1
0
def from_gene_list(args):
    """Creates gene signature from a pre-existing gene list, not expression
    data.
    """
    ranked_genes = args.get('ranked_genes', [])
    gene_list = gene_list_factory.from_uploaded_ranked_genes(ranked_genes)

    try:
        required_metadata = required_metadata_factory.from_http_request(args)
    except Exception as e:
        raise HttpRequestArgumentsException('Error in required metadata '
                                            'fields', e)

    try:
        optional_metadata = optional_metadata_factory.from_http_request(args)
    except Exception as e:
        raise HttpRequestArgumentsException('Error in optional metadata '
                                            'fields', e)

    try:
        tags = tag_factory.from_http_request(args)
    except Exception as e:
        raise HttpRequestArgumentsException('Error in metadata tags', e)

    resource = database.get_or_create(Resource,
                                      code='upload',
                                      name='User uploaded gene list')

    return GeneSignature(None,
                         [gene_list],
                         required_metadata,
                         optional_metadata,
                         tags,
                         resource)
Esempio n. 2
0
def from_gene_list(args):
    """Creates gene signature from a pre-existing gene list, not expression
    data.
    """
    ranked_genes = args.get('ranked_genes', [])
    gene_list = gene_list_factory.from_uploaded_ranked_genes(ranked_genes)

    try:
        required_metadata = required_metadata_factory.from_http_request(args)
    except Exception as e:
        raise HttpRequestArgumentsException(
            'Error in required metadata '
            'fields', e)

    try:
        optional_metadata = optional_metadata_factory.from_http_request(args)
    except Exception as e:
        raise HttpRequestArgumentsException(
            'Error in optional metadata '
            'fields', e)

    try:
        tags = tag_factory.from_http_request(args)
    except Exception as e:
        raise HttpRequestArgumentsException('Error in metadata tags', e)

    resource = database.get_or_create(Resource,
                                      code='upload',
                                      name='User uploaded gene list')

    return GeneSignature(None, [gene_list], required_metadata,
                         optional_metadata, tags, resource)
Esempio n. 3
0
def from_uploaded_ranked_genes(ranked_genes):
    """Creates GeneList from a list of lists, where the first element in the
    inner list is the gene symbol and the second is the value.
    """
    gene_list = [
        RankedGene(database.get_or_create(Gene, name=g[0]), g[1])
        for g in ranked_genes
    ]
    direction = 0
    target_app_links = []
    return GeneList(gene_list, direction, target_app_links)
Esempio n. 4
0
def from_uploaded_ranked_genes(ranked_genes):
    """Creates GeneList from a list of lists, where the first element in the
    inner list is the gene symbol and the second is the value.
    """
    gene_list = [
        RankedGene(database.get_or_create(Gene, name=g[0]), g[1])
        for g in ranked_genes
    ]
    direction = 0
    target_app_links = []
    return GeneList(gene_list, direction, target_app_links)
Esempio n. 5
0
def _create_gene_signature(soft_file, args):
    """Creates a new extraction, as opposed to an extraction from the
    database.
    """
    required_metadata = required_metadata_factory.from_http_request(args)
    optional_metadata = optional_metadata_factory.from_http_request(args)
    tags = tag_factory.from_http_request(args)

    gene_lists = gene_list_factory.from_soft_file(soft_file, required_metadata,
                                                  optional_metadata, tags)
    return GeneSignature(soft_file, gene_lists, required_metadata,
                         optional_metadata, tags,
                         database.get_or_create(Resource, code='geo'))
def from_soft_file(gene_signature):
    """Performs hierarchical clustering on SOFT file.
    """
    target_app_link = __get_clustergrammer_link(gene_signature)

    # Only create the link from Clustergrammer once.
    # TODO: Move into targetapp module. API should not know about this.
    if not target_app_link:
        link = __from_soft_file(gene_signature)
        link = '{0}?preview=true'.format(link)
        target_app = database.get_or_create(TargetApp, name='clustergrammer')
        target_app_link = TargetAppLink(target_app, link)
        gene_signature.gene_lists[2].target_app_links.append(target_app_link)
        database.save_gene_signature(gene_signature)

    return target_app_link.link
Esempio n. 7
0
def from_soft_file(gene_signature):
    """Performs hierarchical clustering on SOFT file.
    """
    target_app_link = __get_clustergrammer_link(gene_signature)

    # Only create the link from Clustergrammer once.
    # TODO: Move into targetapp module. API should not know about this.
    if not target_app_link:
        link = __from_soft_file(gene_signature)
        link = '{0}?preview=true'.format(link)
        target_app = database.get_or_create(TargetApp, name='clustergrammer')
        target_app_link = TargetAppLink(target_app, link)
        gene_signature.gene_lists[2].target_app_links.append(
            target_app_link
        )
        database.save_gene_signature(gene_signature)

    return target_app_link.link
Esempio n. 8
0
def _create_gene_signature(soft_file, args):
    """Creates a new extraction, as opposed to an extraction from the
    database.
    """
    required_metadata = required_metadata_factory.from_http_request(args)
    optional_metadata = optional_metadata_factory.from_http_request(args)
    tags = tag_factory.from_http_request(args)

    gene_lists = gene_list_factory.from_soft_file(
        soft_file,
        required_metadata,
        optional_metadata, tags
    )
    return GeneSignature(
        soft_file,
        gene_lists,
        required_metadata,
        optional_metadata,
        tags,
        database.get_or_create(Resource, code='geo')
    )
Esempio n. 9
0
def from_geo(args):
    """Constructs a SoftFile
    """
    accession = args['dataset']

    if not file_manager.file_exists(accession):
        file_manager.download(accession)

    dataset = database.get_geo_dataset(accession)
    if not dataset:
        platform = args['platform']
        if platform.index('GPL') == 0:
            platform = platform[3:]

        title = args.get('title')
        summary = args.get('summary')
        if not title or not summary:
            title, summary = eutils.get_title_and_summary(accession)
            print('Fetched title and summary from EUtils API: %s, %s' %
                  (title, summary))

        dataset = GeoDataset(accession=accession,
                             platform=platform,
                             organism=args['organism'],
                             title=title,
                             summary=summary)
    else:
        print('Dataset %s already exists!' % (accession))

    a_cols = get_param_as_list(args, 'A_cols')
    b_cols = get_param_as_list(args, 'B_cols')

    # Use get_or_create to track GSMs. We don't do this for custom files.
    control = [
        database.get_or_create(SoftFileSample, name=sample, is_control=True)
        for sample in a_cols
    ]
    experimental = [
        database.get_or_create(SoftFileSample, name=sample, is_control=False)
        for sample in b_cols
    ]
    samples = control + experimental

    genes, a_vals, b_vals, selections, stats = parser.parse(
        accession, True, dataset.platform, samples)

    if 'normalize' not in args or args['normalize'] == 'True':
        normalize = True
    else:
        normalize = False

    genes, a_vals, b_vals = cleaner.clean(genes, a_vals, b_vals, normalize)

    text_file = file_manager.write(accession, dataset.platform, normalize,
                                   genes, a_vals, b_vals, samples, selections,
                                   stats)

    return SoftFile(samples,
                    dataset,
                    text_file,
                    genes,
                    a_vals,
                    b_vals,
                    stats=stats,
                    normalize=normalize)
Esempio n. 10
0
def from_geo(args):
    """Constructs a SoftFile
    """
    accession = args['dataset']

    if not file_manager.file_exists(accession):
        file_manager.download(accession)

    dataset = database.get_geo_dataset(accession)
    if not dataset:
        platform = args['platform']
        if platform.index('GPL') == 0:
            platform = platform[3:]

        title = args.get('title')
        summary = args.get('summary')
        if not title or not summary:
            title, summary = eutils.get_title_and_summary(accession)
            print('Fetched title and summary from EUtils API: %s, %s' % (title, summary))

        dataset = GeoDataset(
            accession=accession,
            platform=platform,
            organism=args['organism'],
            title=title,
            summary=summary
        )
    else:
        print 'Dataset %s already exists!' % accession

    a_cols = get_param_as_list(args, 'A_cols')
    b_cols = get_param_as_list(args, 'B_cols')

    # Use get_or_create to track GSMs. We don't do this for custom files.
    control = [database.get_or_create(SoftFileSample,
                                      name=sample,
                                      is_control=True) for sample in a_cols]
    experimental = [database.get_or_create(SoftFileSample,
                                           name=sample,
                                           is_control=False) for sample in b_cols]
    samples = control + experimental

    genes, a_vals, b_vals, selections, stats = parser.parse(accession,
                                                            True,
                                                            dataset.platform,
                                                            samples)

    if 'normalize' not in args or args['normalize'] == 'True':
        normalize = True
    else:
        normalize = False

    genes, a_vals, b_vals = cleaner.clean(genes, a_vals, b_vals, normalize)

    text_file = file_manager.write(accession, dataset.platform, normalize,
                                   genes, a_vals, b_vals, samples, selections,
                                   stats)

    return SoftFile(
        samples, dataset, text_file,
        genes, a_vals, b_vals,
        stats=stats, normalize=normalize
    )