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