Create networkx graph from network tables
    
    >>> from perseuspy import read_networks, nx
    >>> network_table, networks = read_networks(folder)
    >>> graphs = nx.from_perseus(network_table, networks)

def from_perseus(network_table, networks):
    """
    Create networkx graph from network tables
    
    >>> from perseuspy import read_networks, nx
    >>> network_table, networks = read_networks(folder)
    >>> graphs = nx.from_perseus(network_table, networks)
    """
    graphs = []
    for guid, graph_attr in zip(network_table['GUID'], network_table.values):
        network = networks[guid]
        edge_table = network['edge_table']
        if edge_table[['Source', 'Target']].duplicated().any():
            warnings.warn('Duplicate edges were found and ignored in network {}'.format(network['name']))
        G = nx.from_pandas_edgelist(edge_table, 'Source', 'Target', True, create_using=nx.DiGraph())
        for attr, value in zip(network_table.columns, graph_attr):
            G.graph[attr] = value
        node_table = network['node_table']
        if node_table['Node'].duplicated().any():
            warnings.warn('Duplicate nodes were found and ignored in network {}'.format(network['name']))
        node_column = node_table['Node']
        for name, attributes in zip(node_column, node_table.values):
            if name not in G:
                G.add_node(name)
            for attr, value in zip(node_table.columns, attributes):
                G.node[name][attr] = value
        graphs.append(G)
    return graphs