neo4j operations

This commit is contained in:
Ianatrix
2026-02-08 15:22:15 +01:00
parent 142ef81125
commit 4f1a5c311f

View File

@@ -2,6 +2,49 @@ import json
import pandas as pd import pandas as pd
from pathlib import Path from pathlib import Path
from collections import defaultdict from collections import defaultdict
from neo4j import GraphDatabase
NEO4J_URI = "bolt://localhost:7687"
NEO4J_USER = "neo4j"
NEO4J_PASSWORD = "password"
driver = GraphDatabase.driver(
NEO4J_URI,
auth=(NEO4J_USER, NEO4J_PASSWORD)
)
def load_nodes(df, label):
with driver.session() as session:
for _, row in df.iterrows():
session.run(
f"""
MERGE (n:{label} {{id: $id}})
SET n += $props
""",
id=row["id"],
props=row.drop("id").dropna().to_dict()
)
def load_edges(edges_df):
with driver.session() as session:
for _, row in edges_df.iterrows():
session.run(
"""
MATCH (s {id: $source})
MATCH (t {id: $target})
CALL apoc.create.relationship(s, $type, {}, t)
YIELD rel
RETURN rel
""",
source=row["source"],
target=row["target"],
type=row["type"].upper()
)
# KONFIGURATION # KONFIGURATION
@@ -433,6 +476,19 @@ network_edges_df = pd.DataFrame(network_edges)
network_nodes_df.to_csv(OUTPUT_DIR / "network_nodes.csv", index=False) network_nodes_df.to_csv(OUTPUT_DIR / "network_nodes.csv", index=False)
network_edges_df.to_csv(OUTPUT_DIR / "network_edges.csv", index=False) network_edges_df.to_csv(OUTPUT_DIR / "network_edges.csv", index=False)
load_nodes(nodes_df[nodes_df['kind']=="Gene"], "Gene")
load_nodes(nodes_df[nodes_df['kind']=="Disease"], "Disease")
load_nodes(nodes_df[nodes_df['kind']=="Compound"], "Compound")
load_nodes(nodes_df[nodes_df['kind']=="Symptom"], "Symptom")
load_nodes(nodes_df[nodes_df['kind']=="Side Effect"], "SideEffect")
load_edges(edges_df)
print(f"Network: {len(network_nodes_df)} nodes, {len(network_edges_df)} edges") print(f"Network: {len(network_nodes_df)} nodes, {len(network_edges_df)} edges")