Releases: GiulioRossetti/ASH
Releases · GiulioRossetti/ASH
Bulbasaur
Hey everyone! This is a major release that represents a complete overhaul of the ASH (Attributed Stream Hypergraph) library from version 0.1.0. The codebase has been significantly enhanced with new features, improved performance, better documentation, and comprehensive test coverage.
Here is some news we would like to share with you.
🏗️ Core Architecture Improvements
Fewer dependencies, faster computing
We loved the halp library, which the first version was built upon. In this release, however, ASH no longer depends on it. Core hypergraph primitives have been reimplemented natively for tighter control and better performance.
Presence Store System
- New class:
PresenceStoreabstract base class for managing temporal edge presence IntervalPresenceStore: Memory-efficient implementation for sparse, long-lived interactionsDensePresenceStore: Dense implementation for faster querying (5-10x faster)- Significantly improved performance for populating and querying ASHs. Simply choose your backend by passing "dense" or "interval" to the constructor.
API Refinements
- Breaking change: Removed
edge_attributesparameter from ASH initialization - Both node and edge attributes are now enabled
- Core methods now have shorter, clearer naming
- Unified API for temporal queries. The
startandendparameters are always available, except for node-attributed measures that act on specific timestamps. Those usetidinstead - Standardized type annotations
- Refactored attribute retrieval to consistently return dictionaries
🎯 Major Features
Enhanced Walks on Static and Temporal Hypergraphs
- Static random walks: Traditional random walk algorithms for static hypergraphs
- Time-respecting random walks: Temporal random walks that respect edge timestamps
- Pathfinding algorithms: for both static and temporal hypergraphs
- Enhanced
sparameter support for customizing walk behavior - Strict time-respecting constraints with improved validation
Hypergraph Generators
- New module:
ash_model.generatorswith random and homophily-driven hypergraph generation - Support for creating synthetic attributed hypergraphs for testing and research
- Configurable generation parameters for realistic hypergraph structures
Multi-Ego Networks Module
- New module:
ash_model.multiegofor analyzing multi-ego networks in hypergraphs - Functions for extracting multi-ego networks, core multi-ego, and fractured multi-ego structures
- Similarity measures: Jaccard, Delta, and Minimum Overlapping similarity
Visualization Module
- Complete redesign of the visualization functionality
- Static hypergraph visualization with customizable layouts and styling
- Temporal hypergraph visualization with time-aware rendering
📊 Measures & Analysis
Node Profiles & Attributes
- Clear separation between node profiles and node attributes
- Node profiles now enable an algebra that simplifies aggregation operations.
- New functions for aggregate node profiles and most frequent attribute values
- Support for hyperedge-level profile analysis
Clustering Measures
- Enhanced s-clustering coefficient implementations
- Average s-local clustering coefficient
- Inclusiveness and s-intersection measures
Attribute Analysis
- Attribute consistency metrics
- Average group degree calculations
- Hyperedge and star profile entropy/purity measures
- Star profile homogeneity
Hyper-Segregation
- New module:
ash_model.measures.hyper_segregationfor measuring segregation in attributed hypergraphs
🔧 Utilities
Matrix Operations (utils.matrices)
- Adjacency matrix generation (overall and by time)
- Incidence matrix generation (overall and by time)
- Node and hyperedge ID mapping functions
NetworkX Integration (utils.networkx)
- Import from NetworkX bipartite graphs (single and lists)
- Import from NetworkX graphs (single and lists)
- Import from NetworkX maximal cliques (single and lists)
- Handle NetworkX v3.13+ generator return types
Projections (utils.projections)
- Bipartite projection (overall and by time)
- Clique projection (overall and by time)
- Line graph projection (overall and by time)
- Dual hypergraph projection (overall and by time)
📖 Input/Output
HIF Format Support
- Complete implementation of HIF (Hypergraph Interchange Format) read/write
- JSON schema validation for HIF files
- Large test dataset included
Enhanced JSON I/O
- Improved JSON serialization/deserialization
- Better handling of temporal attributes
- Profile import/export (CSV and JSONL formats)
- Stream hypergraph CSV I/O
Code Quality
- Black formatting applied consistently across codebase
- Type annotations standardized
- Improved docstrings with examples
📚 Tutorials
- New Jupyter notebook tutorials:
00-basics.ipynb: Introduction to ASH fundamentals01-attribute_analysis.ipynb: Attribute analysis workflows02-walks.ipynb: Path and walk algorithms03-generators.ipynb: Generating synthetic hypergraphs04-io.ipynb: Import/export operations
- Enhanced tutorial documentation in Sphinx
🐛 Bug Fixes
- Fixed time-respecting random walks edge cases
- Fixed method name errors in various modules
- Handle static hypergraphs correctly in temporal operations
- Handle NetworkX generator returns in v3.13+
- Fixed node neighbor counting
- and much more!
Squirtle
First ash_model release.
Base implementation of undirected Attributed Stream Hypergraphs.