All Projects → CarloLucibello → Erdos.jl

CarloLucibello / Erdos.jl

Licence: other
A library for graph analysis written Julia.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Erdos.jl

gcnn keras
Graph convolution with tf.keras
Stars: ✭ 47 (+27.03%)
Mutual labels:  graph-algorithms, graphs, networks
LightGraphs.jl
An optimized graphs package for the Julia programming language
Stars: ✭ 680 (+1737.84%)
Mutual labels:  graph-algorithms, graph-generation
jgrapht
Master repository for the JGraphT project
Stars: ✭ 2,259 (+6005.41%)
Mutual labels:  graph-algorithms, graphs
Leaderboardx
A tool for building graphs quickly
Stars: ✭ 13 (-64.86%)
Mutual labels:  graph-algorithms, graphs
Osmnx
OSMnx: Python for street networks. Retrieve, model, analyze, and visualize street networks and other spatial data from OpenStreetMap.
Stars: ✭ 3,357 (+8972.97%)
Mutual labels:  graphs, networks
kaliningraph
🕸️ Graphs, finite fields and discrete dynamical systems in Kotlin
Stars: ✭ 62 (+67.57%)
Mutual labels:  graph-algorithms, graphs
py-algorithms
Algorithms and Data Structures, solutions to common CS problems.
Stars: ✭ 26 (-29.73%)
Mutual labels:  graph-algorithms, graphs
Graphav
A Graph Algorithms Visualizer built using React, Typescript and Styled Components.
Stars: ✭ 111 (+200%)
Mutual labels:  graph-algorithms, graphs
Networkx
Network Analysis in Python
Stars: ✭ 10,057 (+27081.08%)
Mutual labels:  graph-algorithms, graph-generation
Evalne
Source code for EvalNE, a Python library for evaluating Network Embedding methods.
Stars: ✭ 67 (+81.08%)
Mutual labels:  graph-algorithms, graphs
cytoscape-sbgn-stylesheet
View biological networks via Cytoscape.js and sbgn-ml
Stars: ✭ 47 (+27.03%)
Mutual labels:  graphs, networks
Advanced-Shortest-Paths-Algorithms
Java Code for Contraction Hierarchies Algorithm, A-Star Algorithm and Bidirectional Dijkstra Algorithm. Tested and Verified Code.
Stars: ✭ 63 (+70.27%)
Mutual labels:  graph-algorithms, graphs
nxontology
NetworkX-based Python library for representing ontologies
Stars: ✭ 45 (+21.62%)
Mutual labels:  graphs, networks
Graphs.jl
An optimized graphs package for the Julia programming language
Stars: ✭ 197 (+432.43%)
Mutual labels:  graph-algorithms, graphs
Pepper Robot Programming
Pepper Programs : Object Detection Real Time without ROS
Stars: ✭ 29 (-21.62%)
Mutual labels:  graph-algorithms, graphs
Pygraphblas
GraphBLAS for Python
Stars: ✭ 252 (+581.08%)
Mutual labels:  graph-algorithms, graphs
js-data-structures
🌿 Data structures for JavaScript
Stars: ✭ 56 (+51.35%)
Mutual labels:  graphs, networks
ripples
A C++ Library for Influence Maximization
Stars: ✭ 18 (-51.35%)
Mutual labels:  graph-algorithms
ASAP
AAAI 2020 - ASAP: Adaptive Structure Aware Pooling for Learning Hierarchical Graph Representations
Stars: ✭ 83 (+124.32%)
Mutual labels:  graph-algorithms
APStreamline
Live Video Streaming Made Easy!
Stars: ✭ 98 (+164.86%)
Mutual labels:  networks

Erdos

Docs CI codecov

A graph library entirely written in Julia. Install it with

]add Erdos

Erdos implements some graph types a large number of algorithms to work with them. Moreover edge and vertex properties can be internally stored in some of the graph types (we call them networks). These features can also be exported to most common graph formats. Custom graph types can be defined inheriting from Erdos' abstract types.

Usage Example

julia> using Erdos

julia> g = Network(10, 20) # create erdos-renyi random network

julia> add_edge!(g, 1, 6); # add edge (1, 6) if it doesn't exists already

julia> eprop!(g, "w", e -> dst(e) - src(e)) # add edge property named "w"
Network(10, 20) with [] graph, [] vertex, ["w"] edge properties

julia> vprop!(g, "x", v -> rand()) # add vertex property named "x"
Network(10, 20) with [] graph, ["x"] vertex, ["w"] edge properties

julia> eprop(g, 1, 6, "w")
5

julia> vprop(g, 1, "x")
0.9016965075429149


julia> writenetwork("mygraph.graphml", g)  # save graph and properties in .graphml format

Features

Refer to the documentation to explore all the features of Erdos. Here is a comprehensive list of the implemente algorithms. (EE) denotes algorithms in the companion package ErdosExtras.

  • core functions: vertices and edges addition and removal, degree (in/out/all), neighbors (in/out/all)

  • maps dictionary like types to store properties associated to vertices and edges

  • networks store vertex/edge/graph properties (maps) inside the graph itself

  • connectivity: strongly- and weakly-connected components, bipartite checks, condensation, attracting components, neighborhood, k-core

  • operators: complement, reverse, reverse!, union, join, intersect, difference, symmetric difference, blockdiag, induced subgraphs, products (cartesian/scalar)

  • shortest paths: Dijkstra, Dijkstra with predecessors, Bellman-Ford, Floyd-Warshall, A*

  • graph datasets: A collection of real world graphs (e.g. Zachary's karate club)

  • graph generators: notorious graphs, euclidean graphs and random graphs (Erdős–Rényi, Watts-Strogatz, random regular, arbitrary degree sequence, stochastic block model)

  • I/O formats: graphml, gml, gexf, dot, net, gt. For some of these formats vertex/edge/graph properties can be read and written.

  • centrality: betweenness, closeness, degree, pagerank, Katz

  • traversal operations: cycle detection, BFS and DFS DAGs, BFS and DFS traversals with visitors, DFS topological sort, maximum adjacency / minimum cut, multiple random walks

  • flow operations: maximum flow, minimum s-t cut

  • matching: minimum weight matching on arbitrary graphs (EE), minimum b-matching (EE)

  • travelling salesman problem: a TSP solver based on linear programming (EE)

  • dismantling: collective influencer heuristic

  • drawing: different graph layouts

  • clique enumeration: maximal cliques

  • linear algebra / spectral graph theory: adjacency matrix, Laplacian matrix, non-backtracking matrix

  • community: modularity, community detection, core-periphery, clustering coefficients

  • distance within graphs: eccentricity, diameter, periphery, radius, center

  • distance between graphs: spectral_distance, edit_distance

Licence and Credits

Erdos is released under MIT License. Graphs stored in the datasets directory are released under GPLv3 License.

Huge credit goes to the contributors of LightGraphs.jl, from which this library is derived. Also thanks to Tiago de Paula Peixoto and his Python library graph-tool for inspiration and for the graphs in datasets.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].