Build an undirected graph of gene interactions from edgelist file.

    :param str path: The path to the edgelist file
    :param float min_edge_weight: Cutoff to keep/remove the edges, default is 0, but could also be 0.63.
    :return Graph: Protein-protein interaction graph

def parse_ppi_graph(path: str, min_edge_weight: float = 0.0) -> Graph:
    """Build an undirected graph of gene interactions from edgelist file.

    :param str path: The path to the edgelist file
    :param float min_edge_weight: Cutoff to keep/remove the edges, default is 0, but could also be 0.63.
    :return Graph: Protein-protein interaction graph
    """
    logger.info("In parse_ppi_graph()")
    graph = igraph.read(os.path.expanduser(path), format="ncol", directed=False, names=True)
    graph.delete_edges(graph.es.select(weight_lt=min_edge_weight))
    graph.delete_vertices(graph.vs.select(_degree=0))
    logger.info(f"Loaded PPI network.\n"
                f"Number of proteins: {len(graph.vs)}\n"
                f"Number of interactions: {len(graph.es)}\n")
    return graph