def _build_networkx_graph()

in identity-resolution/notebooks/identity-graph/nepytune/usecase/undecided_users.py [0:0]


def _build_networkx_graph(g, website_url, thank_you_page_url, since):
    graph = nx.Graph()
    graph.add_node(website_url, label="website", url=website_url)
    graph.add_node(thank_you_page_url, label="thankYouPage", url=thank_you_page_url)

    for data in _get_subgraph(g, website_url, thank_you_page_url, since).toList():
        graph.add_node(data["persistent_id"], label="persistentId", pid=data["persistent_id"],
                       visited_events=Counter())

        for transient_id in data["transient_ids"]:
            graph.add_node(transient_id, label="transientId", uid=transient_id, visited_events=Counter())
            graph.add_edge(transient_id, data["persistent_id"], label="has_identity")

        for event in data["visited_events"]:
            edge = event["visited_url"], event["uid"]
            try:
                graph.edges[edge]["ts"].append(event["ts"])
            except:
                graph.add_edge(*edge, label="visited", ts=[event["ts"]])


            for node_map in graph.nodes[data["persistent_id"]], graph.nodes[event["uid"]]:
                if event["visited_url"] == website_url:
                    node_map["visited_events"][f"visited website < {since}"] += (event["ts"] < since)
                    node_map["visited_events"][f"visited website >= {since}"] += (event["ts"] >= since)
                else:
                    node_map["visited_events"][f"visited thank you page < {since}"] += (event["ts"] < since)
                    node_map["visited_events"][f"visited thank you page >= {since}"] += (event["ts"] >= since)

    return graph