Exemple #1
0
def r_igraph_max_ave_degree(g):
    """
  Compute local triangle count of graph g and save as necessary
  *Global graph attributes can only be stored in the graph*

  @param g: The igraph graph loaded via Rpy2 i.e. an R object

  @return: Same graph an input but with added invariant as an attribute
  """

    mad = r_igraph_get_attr(
        g, "eigvals",
        "g")  # See if we already have computed eigenvalues for the graph
    if mad == NULL:  # Ok then compute top 1 eig ourself
        mad = r_igraph_eigs(g, 1, return_eigs=True, save_fn=None)[0]
    else:
        mad = float(mad[0].split(",")[0]
                    [1:])  # The largest eigenvalue is held at index 0

    if mad is not None:
        g = r_igraph_set_graph_attribute(g, "max_ave_degree", mad)
    else:  # More than likely ran out of memory
        print "Failed to estimate max ave degree because eigensolver failed ..."

    return g  # return so we can use for other attributes
Exemple #2
0
  if return_eigs: return eigs # used for MAD

  if save_fn:
    save_fn = os.path.abspath(save_fn)
    createSave(save_fn[0], eigs[0][0]) # eigenvalues
    createSave(save_fn[1], eigs[0][1]) # eigenvectors
    print "Eigenvalues saved as %s ..." % save_fn[0]
    print "eigenvectors ssaved as %s ..." % save_fn[1]
  else:

    global gl_eigvects
    gl_eigvects = eigs[0][1]

    print "Setting eigenvalues as graph attr ..."
    g = r_igraph_set_graph_attribute(g, "eigvals", "["+", ".join(map(cut, (eigs[0][0])))+"]") # Return a comma separated string

    eig_idx = eigs[1]
    print "Mapping eigenvectors ..."
    eigvects = map(get_str_eigvects, [(idx, idx+nev) for idx in xrange(0, ((len(eigs[1]))*nev), nev)])
    del eigs

    print "Setting eigenvectors as vertex attr ..."
    g = r_igraph_set_vertex_attr(g, "latent_pos", value=eigvects, index=eig_idx, is_str=True) # Could not create char sequences only lists :-/
    print "Eigenvalue computation not saved to disk. Eigen-pairs added as graph attributes ...."

  return g

def get_str_eigvects(idx):
  """
  Used for mapping to get eigenvectors that correspond to each vertex of the graph
Exemple #3
0
    if return_eigs: return eigs  # used for MAD

    if save_fn:
        save_fn = os.path.abspath(save_fn)
        createSave(save_fn[0], eigs[0][0])  # eigenvalues
        createSave(save_fn[1], eigs[0][1])  # eigenvectors
        print "Eigenvalues saved as %s ..." % save_fn[0]
        print "eigenvectors ssaved as %s ..." % save_fn[1]
    else:

        global gl_eigvects
        gl_eigvects = eigs[0][1]

        print "Setting eigenvalues as graph attr ..."
        g = r_igraph_set_graph_attribute(
            g, "eigvals", "[" + ", ".join(map(cut, (eigs[0][0]))) +
            "]")  # Return a comma separated string

        eig_idx = eigs[1]
        print "Mapping eigenvectors ..."
        eigvects = map(get_str_eigvects,
                       [(idx, idx + nev)
                        for idx in xrange(0, ((len(eigs[1])) * nev), nev)])
        del eigs

        print "Setting eigenvectors as vertex attr ..."
        g = r_igraph_set_vertex_attr(
            g, "latent_pos", value=eigvects, index=eig_idx,
            is_str=True)  # Could not create char sequences only lists :-/
        print "Eigenvalue computation not saved to disk. Eigen-pairs added as graph attributes ...."