Hypergraph is data structure library to create a directed hypergraph in which a hyperedge can join any number of vertices.

Overview

graph


GitHub Workflow Status Crates.io docs.rs

Hypergraph is a data structure library to generate directed hypergraphs.

A hypergraph is a generalization of a graph in which a hyperedge can join any number of vertices.

Features

This library enables you to:

  • represent non-simple hypergraphs with two or more hyperedges - with different weights - containing the exact same set of vertices
  • represent self-loops - i.e., hyperedges containing vertices directed to themselves one or more times
  • represent unaries - i.e., hyperedges containing a unique vertex

Additional features:

  • Safe Rust implementation
  • Proper error handling
  • Stable indexes assigned for each hyperedge and each vertex

Installation

Add this to your Cargo.toml (replace current_version with the latest version of the library):

[dependencies]
hypergraph = "curent_version"

Usage

Please read the documentation to get started.

You might also like...
rustodrive is a rust client library for communicating with ODrives using the CAN protocol.

rustodrive is a WIP client library for communicating with ODrives using the CAN protocol. It is more than a simple CAN sender/receiver and has many co

Grsql is a great tool to allow you set up your remote sqlite database as service and CRUD(create/read/update/delete) it using gRPC.

Grsql is a great tool to allow you set up your remote sqlite database as service and CRUD (create/ read/ update/ delete) it using gRPC. Why Create Thi

An awesome CLI for SurrealDB migrations (provides commands to scaffold, create and apply migrations).

SurrealDB Migrations An awesome CLI for SurrealDB migrations (provides commands to scaffold, create and apply migrations). cargo install surrealdb-mig

The most efficient, scalable, and fast production-ready serverless REST API backend which provides CRUD operations for a MongoDB collection

Optimal CRUD Mongo Goals of This Project This is meant to be the most efficient, scalable, and fast production-ready serverless REST API backend which

This represents staked SOL, and can be sold for wSOL in the wSOL/stSOL Liquidity Pool

This represents staked SOL, and can be sold for wSOL in the wSOL/stSOL Liquidity Pool (paying a fee to skip the unstaking cool-down period). The value of your stSOL holdings is automatically incremented each epoch when staking rewards are paid.

The rust client for CeresDB. CeresDB is a high-performance, distributed, schema-less, cloud native time-series database that can handle both time-series and analytics workloads.

The rust client for CeresDB. CeresDB is a high-performance, distributed, schema-less, cloud native time-series database that can handle both time-series and analytics workloads.

Rust client for the anna-rs KVS that can run in the WasmEdge Runtime

wasmedge-anna-client wasmedge-anna-client is a Rust client for anna-rs based on Tokio for WasmEdge. It communicates with Anna routing nodes and KVS no

Materialize simplifies application development with streaming data. Incrementally-updated materialized views - in PostgreSQL and in real time. Materialize is powered by Timely Dataflow.
Materialize simplifies application development with streaming data. Incrementally-updated materialized views - in PostgreSQL and in real time. Materialize is powered by Timely Dataflow.

Materialize is a streaming database for real-time applications. Get started Check out our getting started guide. About Materialize lets you ask questi

🐸Slippi DB ingests Slippi replays and puts the data into a SQLite database for easier parsing.
🐸Slippi DB ingests Slippi replays and puts the data into a SQLite database for easier parsing.

The primary goal of this project is to make it easier to analyze large amounts of Slippi data. Its end goal is to create something similar to Ballchasing.com but for Melee.

Comments
  • Invalid dot output in integration test

    Invalid dot output in integration test

    The integration test in tests/test.rs seems to create an invalid dot file (which is normally just printed to the void and not actually used). The output is:

    digraph {
        edge [penwidth=0.5, arrowhead=normal, arrowsize=0.5, fontsize=8.0];
        node [color=gray20, fontsize=8.0, fontcolor=white, style=filled, shape=circle];
        rankdir=LR;
    
        0 [label="Vertex {\l    name: \"d\",\l}\l"];
        1 [label="Vertex {\l    name: \"b\",\l}\l"];
        2 [label="Vertex {\l    name: \"c\",\l}\l"];
    
    
         [color="#0c8946", fontcolor="#0c8946", label="\"yup\"\l"];
         [color="#5309a3", fontcolor="#5309a3", label="\"foo_\"\l"];
    
        0 -> 2 [color="#5b7a07", fontcolor="#5b7a07", label="\"bar\"\l"];
    }
    

    It seems to be outputting two edges with connection zero nodes, so just the attributes are being printed? When I run this through dot it errors (because it expected "A -> B" befre the "[color=..."). Is this an error in the dot writing code which is producing vertices without members?

    bug 
    opened by DrGabble 2
  • Link to hypergraph definition

    Link to hypergraph definition

    I was intrigued by this crate, but hadn't encountered hypergraphs before, so a link to a definition would be great. (Alternatively, or additionally, you might want to add a short definition of an ordered hypergraph to the README.)

    Also, there's lots of useful background information in wikipedia which it wouldn't be appropriate to include in the README.

    documentation 
    opened by glyn 1
  • Feat/stable indexes

    Feat/stable indexes

    This PR is mostly about bringing index stability for vertices and hyperedges, as discussed in #14. This is a huge refactoring since all the public methods are now returning a Result with custom errors. This was also a good opportunity to tackle some bugs...

    There are still some points to clarify / fix:

    • [X] Update the readme - the generated documentation is not enough to understand what the project is about
    • [X] Create a logo - nice to have
    • [X] ~Adjust #16 - dot rendering - since the underlying structure has changed quiet significantly~ Won't do / dropping it from core
    enhancement 
    opened by yamafaktory 0
  • Using dot-writer library

    Using dot-writer library

    Would you be averse to me refactoring your graphviz code to use my new dot-writer library? Largely for my own selfish reasons (so I can put it through its paces and put it out in the world a bit), but arguably it could make your code more readable, strongly typed and terser?

    Happy to do the pull request myself of course (I might have to anyway as it might be missing a function here or there that your dot output needs), and equally understand if you'd like to minimize dependancies / leave things as they are.

    opened by DrGabble 0
Owner
Davy Duperron
Senior software engineer who love to learn on a daily basis (he/him) #Rustlang #TypeScript
Davy Duperron
This code features a viper-client, which can connect to a viper-server, a custom interface made for Comelit devices.

Viper Client ?? (WIP) This is code for my intercom; specifically for the Comelit Mini Wi-Fi MSFV. This features a ViperClient which can talk to the Co

Gerard 4 Feb 20, 2023
Scalable and fast data store optimised for time series data such as financial data, events, metrics for real time analysis

OnTimeDB Scalable and fast data store optimised for time series data such as financial data, events, metrics for real time analysis OnTimeDB is a time

Stuart 2 Apr 5, 2022
OBKV Table Client is Rust Library that can be used to access table data from OceanBase storage layer.

OBKV Table Client is Rust Library that can be used to access table data from OceanBase storage layer. Its access method is different from JDBC, it skips the SQL parsing layer, so it has significant performance advantage.

OceanBase 4 Nov 14, 2022
RefineDB - A strongly-typed document database that runs on any transactional key-value store.

RefineDB - A strongly-typed document database that runs on any transactional key-value store.

Heyang Zhou 375 Jan 4, 2023
rust_arango enables you to connect with ArangoDB server, access to database, execute AQL query, manage ArangoDB in an easy and intuitive way, both async and plain synchronous code with any HTTP ecosystem you love.

rust_arango enables you to connect with ArangoDB server, access to database, execute AQL query, manage ArangoDB in an easy and intuitive way, both async and plain synchronous code with any HTTP ecosystem you love.

Foretag 3 Mar 24, 2022
Bind the Prisma ORM query engine to any programming language you like ❤️

Prisma Query Engine C API Bind the Prisma ORM query engine to any programming language you like ❤️ Features Rust bindings for the C API Static link li

Prisma ORM for community 10 Dec 15, 2022
Bind the Prisma ORM query engine to any programming language you like ❤️

Prisma Query Engine C API Bind the Prisma ORM query engine to any programming language you like ❤️ Features Rust bindings for the C API Static link li

Odroe 6 Sep 9, 2022
a tokio-enabled data store for triple data

terminusdb-store, a tokio-enabled data store for triple data Overview This library implements a way to store triple data - data that consists of a sub

TerminusDB 307 Dec 18, 2022
A Modern Real-Time Data Processing & Analytics DBMS with Cloud-Native Architecture, built to make the Data Cloud easy

A Modern Real-Time Data Processing & Analytics DBMS with Cloud-Native Architecture, built to make the Data Cloud easy

Datafuse Labs 5k Jan 9, 2023
Implements the packet parser for Gran Turismo 7 telemetry data, allowing a developer to retrieve data from a running game.

gran-turismo-query Implements the packet parser for Gran Turismo 7 telemetry data, allowing a developer to retrieve data from a running game. Features

Carlos Menezes 3 Dec 11, 2023