Code Monkey home page Code Monkey logo

net_ensembles's Introduction

Rust library for random graph ensembles

Crate Rust unit tests - master Docs

Minimal Rust version: 1.55.0

Implements simple sampling and monte carlo (or rather markov-) steps, that can be used to create a markov chain.

This is intended to be used for various different use cases. As such, you can easily define additional data that should be stored at each vertex.

Usage

Add this to your Cargo.toml:

[dependencies]
net_ensembles = "0.5"
# for feature "serde_support" (enabled by default) also use
serde = { version = "1.0", features = ["derive"] }

If you do not need serde support, add this instead:

[dependencies]
net_ensembles = { version = "0.5", default-features = false  }

Release Notes

See changelog. Note that savestates (created with serde) of v0.4 are incompatible with savestates generated by older versions and vise versa. Braking changes may or may not affect the loading of save states, you have to test that out yourself

currently implemented graph ensembles

  • Erdős-Rényi (x2)
  • small-world

work in progress

  • Barabási-Albert
  • Configuration Model
  • spacial networks

Note

On a 64 bit system drawing an usize consumes more randomness than on a 32 bit system, therefore ensembles drawn etc. are affected by the size of usize.

Graph

  • you can always visualize the current graph by creating a .dot file from it. There are different options for that, choose which one fits you best.

Implements measurable quantities

  • average degree
  • connected components
  • diameter
  • is_connected
  • leaf count
  • q_core
  • transitivity
  • biconnected component
  • vertex_load (closely related, often equal to betweeness)

Iterators

  • depth first search from index
  • breadth first search from index
  • over additional data

For each vertex

methods and more

  • degree
  • check adjacency with other nodes
  • access additional data

Iterators

  • iterate over indices stored in adjacency list

Documentation:

Notes

No warranties whatsoever, but since I am writing this library for my own scientific simulations, I do my best to avoid errors.

You can learn more about me and my research on my homepage.

If you notice any bugs, or want to request new features: do not hesitate to open a new issue on the repository.

vertices

  • The number of vertices has to be decided when creating a graph and cannot be changed later - at least for now.
  • I might add a method to add vertices if requested or I need it myself.

Due to implementation details, where I prioritize fast access of vertices, it is unlikely, that I will implement the option to remove vertices. If I do, it will likely be a relatively costly operation, so keep that in mind.

crates.io

  • I might move the sampling module into a different crate in the future. If I do, everything will likely be reexported at the same position as currently

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

net_ensembles's People

Contributors

pardoxa avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

maeckha

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.