示例#1
0
def compute_module_count(inf, is_mmod):
    if is_mmod:
        mods = eval_util.read_mmods(inf)
    else:
        mods = eval_util.read_rmods(inf)

    return len(mods)
示例#2
0
def compute_efficacy(inf, is_rmod, is_partial_module, S, mets, reacts):
    if is_rmod:
        mods = eval_util.read_mmods(inf)
    else:
        mods = eval_util.read_rmods(inf)

    sizes = []
    for mod_name, mod_metabs in mods.iteritems():
        sizes.append(len(mod_metabs))

    if is_partial_module:
        pass
        # TODO:PARTIAL: should create one big module of unused ones!? NO! DO NOTHING JUST IGNORE THEM!

    N = sum(sizes)

    p = efficacy_empirical_p(N)

    if len(sizes) != 0:
        efficacy = 1.0 * (math.log(efficacy_f(N, alpha, p)) - math.log(
            efficacy_F(sizes, len(sizes), alpha, p))) * 1.0 / (
                math.log(efficacy_f(N, alpha, p)) -
                math.log(2 * efficacy_f(math.sqrt(N), alpha, p)))
    else:
        efficacy = 0.0

    return efficacy
示例#3
0
def general_compute_distance(cached_reaction_similarities, similarity_table, table_gene_order, inf, species, criteria, factor1, factor2, is_mmod, is_partial_module, S, mets, reacts, revs, go_loaded_model, moredata_loaded_model):
    if is_mmod:
        mmods = eval_util.read_mmods(inf)
        mods = eval_util.convert_metabmod_to_reactmod(mmods, is_partial_module, S, mets, reacts)
    else:
        mods = eval_util.read_rmods(inf)

        # TODO:PARTIAL: all reactions that are not counted in modules (NO: are assigned to external module
        # and) -1 (like blocked reactions) is placed for couplings (in associated rows and columns)
        if is_partial_module:
            done_reacts = set()
            for mod_n, mod_rs in mods.iteritems():
                done_reacts.update(mod_rs)

            not_done_reacts = set(reacts) - set(done_reacts)
            if len(not_done_reacts) > 0:
                mods[eval_constants.EXTERNAL_MODULE_ID] = not_done_reacts

    if species == 'arabidopsis_irs1597':
        mods = filter_out_reactions_by_type(mods, [(0, 'R_EX')])
    else:
        mods = filter_out_reactions_by_type(mods, [(0, 'R_EX_')])

    mods_similarity_table = {}
    for mod1_name, mod1 in mods.iteritems():
        mods_similarity_table[mod1_name] = {}
        for mod2_name, mod2 in mods.iteritems():
            sim = 0
            for r1 in mod1:
                for r2 in mod2:
                    if mod1_name != mod2_name or r1 != r2:  # designed to work for overlapping modules. only filters out a gene-similarity-with-itself for intra-module
                        sim += compute_similarity_of_gene_pair(cached_reaction_similarities, r1, r2, similarity_table, species, criteria, factor1, factor2, go_loaded_model, moredata_loaded_model)
            mods_similarity_table[mod1_name][mod2_name] = sim

    # print 'mod simetable done'

    # TODO:BUG: for overlapping modules this fails because (len(rxns) - len(mods[mod_name])) is wrong
    intra_score = 0
    inter_score = 0
    for mod_name, mods_sim in mods_similarity_table.iteritems():
        intra_piece = mods_sim[mod_name] * 1.0 / pow(len(mods[mod_name]), 2)
        inter_piece = sum([mods_sim[other_mod_name] * 1.0 / (len(mods[mod_name]) * len(mods[other_mod_name])) for other_mod_name in mods_similarity_table.iterkeys() if other_mod_name != mod_name])
        if mod_name == eval_constants.EXTERNAL_MODULE_ID:
            intra_score -= intra_piece
            inter_score -= inter_piece
        else:
            intra_score += intra_piece
            inter_score += inter_piece

    # print 'done'

    return intra_score - inter_score
示例#4
0
def compute_cohesion_coupling(inf, is_mmod, is_partial_module, S, mets, reacts,
                              revs):
    couplings, blocks = compute_couplings(
        S, mets, reacts, revs,
        max(map(lambda s: len(s), reacts)) + 1,
        max(map(lambda s: len(s), mets)) + 1)

    if is_mmod:
        mmods = eval_util.read_mmods(inf)
        mods = eval_util.convert_metabmod_to_reactmod(mmods, is_partial_module,
                                                      S, mets, reacts)
    else:
        mods = eval_util.read_rmods(inf)

        # TODO:PARTIAL: all reactions that are not counted in modules (NO: are assigned to external module
        # and) -1 (like blocked reactions) is placed for couplings (in associated rows and columns)
        if is_partial_module:
            done_reacts = set()
            for mod_n, mod_rs in mods.iteritems():
                done_reacts.update(mod_rs)

            not_done_reacts = set(reacts) - set(done_reacts)
            if len(not_done_reacts) > 0:
                mods[eval_constants.EXTERNAL_MODULE_ID] = not_done_reacts

            couplings = copy.deepcopy(couplings)
            for r in not_done_reacts:
                r_idx = reacts.index(r)
                for i in range(len(reacts)):
                    couplings[i][r_idx] = -1
                    couplings[r_idx][i] = -1

    module_coupling_table, module_order_in_header = compute_module_coupling_table(
        couplings, blocks, mods, reacts)

    return compute_coupling_uncoupling_score(module_coupling_table,
                                             module_order_in_header)
示例#5
0
def compute_and_print_size_distribution(inf, is_mmod, species, method):
    out_dir = '%s/sizes' % my_constants.evalResultPath
    my_util.mkdir_p(out_dir)

    if is_mmod:
        mods = eval_util.read_mmods(inf)
    else:
        mods = eval_util.read_rmods(inf)

    sizes = []
    for mod_name, mod_metabs in mods.iteritems():
        sizes.append(len(mod_metabs))

    result_file = '%s/%s_%s.png' % (out_dir, species, method)
    alt_result_file = '%s/sc_%s_%s.png' % (out_dir, species, method)

    f = open('size_distrib.r', 'w')
    write_line(f, 'png("%s")' % result_file)
    write_line(
        f, "hist(c(%s), main='%d modules (%s)', xlab='', ylab='')" %
        (','.join([str(s) for s in sizes]), len(mods), species + ' ' + method))
    write_line(f, 'dev.off()')
    write_line(f, 'png("%s")' % alt_result_file)
    write_line(
        f,
        "stripchart(c(%s), main='%d modules (%s)', method='stack', offset=0.5, pch=1)"
        % (','.join([str(s)
                     for s in sizes]), len(mods), species + ' ' + method))
    write_line(f, 'dev.off()')
    f.close()

    res = os.system('%s size_distrib.r' % my_constants.rScriptPath)

    while not os.path.isfile(result_file):
        time.sleep(5)

    return '=HYPERLINK("%s")' % result_file