def generate_random_ensemble(self, rnd_num=100): """ """ self.random_graphs = list() rewire = net_rnd.NetworkRewiring() rewire.conditions = null.check_structured self.mtf_counts = net_subs.triadic_census(self) for i in xrange(rnd_num): (rnd, success) = rewire.randomise(self) rnd.mtf_counts = net_subs.triadic_census(rnd) # print "random", i, "flip success rate", success self.random_graphs.append(rnd)
def _normal_rewiring(args): network = args[0] i = args[1] rewire = net_rnd.NetworkRewiring() (rnd, success) = rewire.randomise(network) rnd.mtf_counts = net_subs.triadic_census(rnd) print "random", i, "flip success rate", success return rnd
def _structured_rewiring(args): network = args[0] i = args[1] rewire = net_rnd.NetworkRewiring() rewire.conditions = check_structured (rnd, success) = rewire.randomise(network) rnd.mtf_counts = net_subs.triadic_census(rnd) print "random", i, "flip success rate", success return rnd
def compute_tsp(self): if not self.mtf_counts: self.mtf_counts = net_subs.triadic_census(self) zscores = numpy.zeros(13) for mtf_num in xrange(1, 14): tricode = net_subs.num2tricode[mtf_num] zscores[mtf_num - 1] = stats.compute_zscore( self.mtf_counts.get(tricode, 0.0), [rnd.mtf_counts.get(tricode, 0.0) for rnd in\ self.random_ensemble]) return zscores
def trn_stats(genes, trn, t_factors, version): LOGGER.info("Computing TRN statistics") nodes = sorted(trn.nodes_iter()) node2id = {n: i for (i, n) in enumerate(nodes)} id2node = {i: n for (i, n) in enumerate(nodes)} (grn, node2id) = to_simple(trn.to_grn(), return_map=True) nodes = sorted(grn.nodes_iter()) regulating = {node for (node, deg) in grn.out_degree_iter() if deg > 0} regulated = set(nodes) - regulating components = sorted(nx.weakly_connected_components(grn), key=len, reverse=True) data = dict() for (a, b) in itertools.product(("in", "out"), repeat=2): data["{a}_{b}_ass".format(a=a, b=b)] = nx.degree_assortativity_coefficient(grn, x=a, y=b) census = triadic_census(grn) forward = census["030T"] feedback = census["030C"] num_cycles = sum(1 for cyc in nx.simple_cycles(grn) if len(cyc) > 2) in_deg = [grn.in_degree(node) for node in regulated] out_deg = [grn.out_degree(node) for node in regulating] data["version"] = version, data["release"] = pd.to_datetime(RELEASE[version]), data["num_genes"] = len(genes), data["num_tf"] = len(t_factors), data["num_nodes"] = len(nodes), data["num_regulating"] = len(regulating), data["num_regulated"] = len(regulated), data["num_links"] = grn.size(), data["density"] = nx.density(grn), data["num_components"] = len(components), data["largest_component"] = len(components[0]), data["feed_forward"] = forward, data["feedback"] = feedback, data["fis_out"] = trn.out_degree(TranscriptionFactor[FIS_ID, version]), data["hns_out"] = trn.out_degree(TranscriptionFactor[HNS_ID, version]), data["cycles"] = num_cycles, data["regulated_in_deg"] = mean(in_deg), data["regulating_out_deg"] = mean(out_deg), data["hub_out_deg"] = max(out_deg) stats = pd.DataFrame(data, index=[1]) in_deg = [grn.in_degree(node) for node in nodes] out_deg = [grn.out_degree(node) for node in nodes] bc = nx.betweenness_centrality(grn) bc = [bc[node] for node in nodes] dists = pd.DataFrame({ "version": version, "release": [pd.to_datetime(RELEASE[version])] * len(nodes), "node": [id2node[node].unique_id for node in nodes], "regulated_in_degree": in_deg, "regulating_out_degree": out_deg, "betweenness": bc }) return (stats, dists)
def stats(grn, version, description): nodes = sorted(grn.nodes_iter()) regulating = {node for (node, deg) in grn.out_degree_iter() if deg > 0} regulated = set(nodes) - regulating components = sorted(nx.weakly_connected_components(grn), key=len, reverse=True) data = dict() census = triadic_census(grn) forward = census["030T"] feedback = census["030C"] cycles = list(nx.simple_cycles(grn)) in_deg = [grn.in_degree(node) for node in regulated] out_deg = [grn.out_degree(node) for node in regulating] data["version"] = version data["num_components"] = len(components) data["largest_component"] = len(components[0]) data["feed_forward"] = forward data["feedback"] = feedback data["cycles"] = len(cycles) data["regulated_in_deg"] = np.mean(in_deg) data["regulating_out_deg"] = np.mean(out_deg) data["null_model"] = description stats = pd.DataFrame(data, index=[1]) return stats