GQLAlchemy is a Python library and Object Graph Mapper (OGM) for the Memgraph graph database, with secondary support for Neo4j. It provides a fluent Cypher query builder, declarative node/relationship models (Pydantic v2-based), and full lifecycle management of graph database instances (Docker/binary), streams (Kafka, Pulsar), triggers, and high-availability routing. The library also includes a rich set of transformations for bidirectional conversion between Memgraph/Neo4j and popular graph machine learning frameworks (NetworkX, DGL, PyG, TF-GNN), as well as tabular data import (CSV, Parquet, ORC, Feather) from local filesystem, S3, and Azure Blob Storage. While primarily a software library for building graph applications, it has strong data research capabilities through its graph ML translators and ETL importers, making it a hybrid tool suited for both production graph apps and data science pipelines. The codebase is well-tested (unit and integration tests), has comprehensive CI/CD, and follows a modular architecture with abstract base classes for extensibility. However, some modules are large (e.g., monolithic query builders), and optional dependencies (PyTorch, DGL, TF-GNN, PyArrow) increase maintenance surface, with a medium level of technical drift due to some deprecated Pydantic v1 patterns and skipped tests.
NDlib is a Python library for modeling and simulating diffusion processes on complex networks, with a strong focus on epidemic compartment models and opinion dynamics. It provides a collection of built-in models (SIR, SEIR, voter model, bounded confidence, etc.), a flexible compartment-based composition system for building custom models, and a domain-specific language (NDQL) for defining models declaratively. The library also includes an interactive dashboard server for code-free experimentation, visualization modules (matplotlib and bokeh), and a sensitivity analysis runner via SALib. While the codebase demonstrates solid architectural patterns such as abstract base classes, configuration objects, and block schema registries, it suffers from significant technical drift: it retains Python 2 compatibility shims (six, future), uses outdated dependency versions, and has brittle test infrastructure. The dashboard and parser rely on dynamic code generation that is fragile. Overall, NDlib is a functional research-oriented library with reusable compartment and configuration patterns, but its maintenance has stalled, making it risky for new projects without substantial modernization.