Skip to content

Releases: GiulioRossetti/ASH

Bulbasaur

19 Nov 15:44
7db0fe3

Choose a tag to compare

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: PresenceStore abstract base class for managing temporal edge presence
  • IntervalPresenceStore: Memory-efficient implementation for sparse, long-lived interactions
  • DensePresenceStore: 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_attributes parameter from ASH initialization
  • Both node and edge attributes are now enabled
  • Core methods now have shorter, clearer naming
  • Unified API for temporal queries. The start and end parameters are always available, except for node-attributed measures that act on specific timestamps. Those use tid instead
  • 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 s parameter support for customizing walk behavior
  • Strict time-respecting constraints with improved validation

Hypergraph Generators

  • New module: ash_model.generators with 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.multiego for 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_segregation for 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 fundamentals
    • 01-attribute_analysis.ipynb: Attribute analysis workflows
    • 02-walks.ipynb: Path and walk algorithms
    • 03-generators.ipynb: Generating synthetic hypergraphs
    • 04-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

05 Apr 10:44

Choose a tag to compare

First ash_model release.
Base implementation of undirected Attributed Stream Hypergraphs.