fix: weigh dislike negatively for weighted degree

This commit is contained in:
julius 2025-04-16 12:59:50 +02:00
parent a6d0f528d0
commit 6902ffdca6
Signed by: julius
GPG Key ID: C80A63E6A5FD7092

View File

@ -58,6 +58,7 @@ def graph_json(
request: Annotated[ request: Annotated[
TeamScopedRequest, Security(verify_team_scope, scopes=["analysis"]) TeamScopedRequest, Security(verify_team_scope, scopes=["analysis"])
], ],
networkx_graph: bool = False,
): ):
nodes = [] nodes = []
edges = [] edges = []
@ -124,11 +125,22 @@ def graph_json(
) )
G = nx.DiGraph() G = nx.DiGraph()
G.add_nodes_from([n["id"] for n in nodes]) G.add_nodes_from([n["id"] for n in nodes])
G.add_weighted_edges_from([(e["source"], e["target"], e["size"]) for e in edges]) G.add_weighted_edges_from(
[
(
e["source"],
e["target"],
e["size"] if e["data"]["relation"] == 2 else -e["size"],
)
for e in edges
]
)
in_degrees = G.in_degree(weight="weight") in_degrees = G.in_degree(weight="weight")
nodes = [ nodes = [
dict(node, **{"data": {"inDegree": in_degrees[node["id"]]}}) for node in nodes dict(node, **{"data": {"inDegree": in_degrees[node["id"]]}}) for node in nodes
] ]
if networkx_graph:
return G
return JSONResponse({"nodes": nodes, "edges": edges}) return JSONResponse({"nodes": nodes, "edges": edges})