NEExT: Network Embedding
Experimentation Toolkit

An open-source Python framework for network science and graph machine learning.

NEExT Ready
ImportLibraryExplore Dataset Management
graph_collection → egonets → embedding
network → egonets
embedding space
⌘ Command window

job graph_embeddings · started

computing wasserstein embeddings · 3 communities detected

~/NEExT-WorkbenchProject: Social network studyReady

Built on the scientific Python stack you already trust

  • NetworkX
  • iGraph
  • NumPy
  • pandas
  • scikit-learn
  • XGBoost
Structural node featuresGraph embeddingsFeature importanceEgonet decompositionCustom metricsNetworkX + iGraphLocal WorkbenchReproducible evidence
The library

A Python library with research
infrastructure built around it.

One coherent pipeline from graph data to research evidence. Use it from a script or notebook today; reach for the Workbench when a project needs lineage and structure.

  1. graphs

    Load graphs

    Read CSV files, pandas DataFrames, or NetworkX graphs into a unified GraphCollection — on a NetworkX or iGraph backend.

  2. features

    Create features

    Compute built-in structural node features — or define your own in plain Python — across the collection, with k-hop neighborhood aggregation.

  3. embedding

    Build embeddings

    Lift node-feature distributions into graph-level vectors with Wasserstein or Sinkhorn optimal transport — or train GNN embeddings (GCN, GraphSAGE, GIN).

  4. evidence
    AUC 0.94
    F1 0.89
    ACC 0.91

    Train & compare

    Fit classifiers or regressors, score variants, and read feature importance for evidence.

The Workbench

Run real experiments on
real scientific structure.

Scientists represent molecules and other structures as graphs, compute transparent structural features, and turn them into machine-learnable vectors — all in a local, reproducible Workbench. No cloud, no upload, no account.

NEExT Ready
LibraryCreateFeatures Feature Management
molecule → graph → structural node features
structure
node feature vectors
atomdegreepagerankclusteringlsme
06 0.420.180.641.93
13 0.370.050.711.40
20 0.550.220.492.07
⌘ Command window

job compute_node_features · started

computing structural node features · 17 atoms · degree, pagerank, clustering, lsme

~/NEExT-WorkbenchProject: Mutagenicity screenReady
  • Structure as graphs

    Atoms become nodes, bonds become edges — molecules, contact maps, and networks all enter the same pipeline.

  • Features you can defend

    Transparent structural node features and feature importance — evidence you can put in a paper.

  • Local & reproducible

    Runs on your machine against your own files. Versioned artifacts, no cloud, no upload.

Agentic workflows

Drive the Workbench from any
MCP-native agent.

The Workbench speaks the Model Context Protocol, so Claude — or any MCP client — can run your whole local pipeline: configure datasets, features, embeddings and models, launch jobs, and read results back. Scoped permissions, human approval for anything destructive, and nothing ever leaves your machine.

Any MCP client127.0.0.1:8765/mcp
Agent

Cluster the karate dataset and rank its top features.

  • configure embedding write
  • run jobs run
  • cluster embedding read
  • delete artifact needs approval
Workbench
  • configure embedding
  • run jobs
  • cluster embedding
ARI
0.82
purity
0.89
127.0.0.1 · local · single-user · private readwriteruncustom-codeui-controlexportlifecycle
  • MCP-native

    A standards-based Model Context Protocol server — Claude, or any MCP client, drives it out of the box.

  • Scoped & human-approved

    Capability scopes gate every call, and anything destructive waits for your explicit approval in the Workbench.

  • Local & private

    Runs on 127.0.0.1 against your own files. No cloud, no upload — nothing ever leaves your machine.

Custom methods

Bring your own
graph signals.

Register any structural metric as a plain Python function and run it inside the same pipeline as the built-ins — from a script, a module, or a notebook cell. In the Workbench, the same contract powers custom Feature Create.

Return a DataFrame ordered node_id, graph_id, feature_0… — that's the whole contract.

custom_feature.py
import pandas as pd


def compute_feature(graph):
    degrees = [graph.G.degree(n) for n in graph.nodes]
    return pd.DataFrame({
        "node_id": graph.nodes,
        "graph_id": graph.graph_id,
        "degree_sq_0": [d ** 2 for d in degrees],
    })[["node_id", "graph_id", "degree_sq_0"]]
Quickstart

From graph data to evidence
in one readable script.

pipeline.py
from NEExT import NEExT

nxt = NEExT()

# Load graphs into one collection (NetworkX or iGraph)
graphs = nxt.read_from_csv(
    edges_path="edges.csv",
    node_graph_mapping_path="node_graph_mapping.csv",
    graph_label_path="graph_labels.csv",
    graph_type="igraph",
)

# Structural node features, computed across the collection
features = nxt.compute_node_features(graphs, feature_list=["all"])

# Graph-level embeddings via optimal transport
embeddings = nxt.compute_graph_embeddings(
    graphs,
    features,
    embedding_algorithm="approx_wasserstein",
    embedding_dimension=16,
)

# Train, score, and compare variants
results = nxt.train_ml_model(graphs, embeddings, model_type="classifier")
Get started

Install the library.
Launch the Workbench when you need it.

Pure Python, runs anywhere. Python 3.9–3.12. The Workbench is one extra install away.

1 $ pip install NEExT
2 $ pip install "NEExT[workbench]" && neext-workbench