Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
 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