{"id":15286771,"url":"https://github.com/simonschoelly/simplevaluegraphs.jl","last_synced_at":"2026-03-16T15:05:02.684Z","repository":{"id":46111191,"uuid":"153994248","full_name":"simonschoelly/SimpleValueGraphs.jl","owner":"simonschoelly","description":"A LightGraphs.jl compatible graph package for graphs with multiple vertex, edge and graph metadata.","archived":false,"fork":false,"pushed_at":"2022-07-17T10:19:22.000Z","size":635,"stargazers_count":15,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-16T11:41:43.740Z","etag":null,"topics":["edge-values","graph","graph-algorithms","hacktoberfest","julia","julia-language","juliagraphs","lightgraphs","weighted-graphs"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonschoelly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-21T09:58:57.000Z","updated_at":"2025-07-26T22:13:16.000Z","dependencies_parsed_at":"2022-07-24T23:46:32.836Z","dependency_job_id":null,"html_url":"https://github.com/simonschoelly/SimpleValueGraphs.jl","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/simonschoelly/SimpleValueGraphs.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschoelly%2FSimpleValueGraphs.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschoelly%2FSimpleValueGraphs.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschoelly%2FSimpleValueGraphs.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschoelly%2FSimpleValueGraphs.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonschoelly","download_url":"https://codeload.github.com/simonschoelly/SimpleValueGraphs.jl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonschoelly%2FSimpleValueGraphs.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271248143,"owners_count":24726034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["edge-values","graph","graph-algorithms","hacktoberfest","julia","julia-language","juliagraphs","lightgraphs","weighted-graphs"],"created_at":"2024-09-30T15:18:29.276Z","updated_at":"2026-03-16T15:05:02.610Z","avatar_url":"https://github.com/simonschoelly.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimpleValueGraphs.jl\n\n![](https://img.shields.io/badge/lifecycle-maturing-blue.svg)\n[![version](https://juliahub.com/docs/SimpleValueGraphs/version.svg)](https://juliahub.com/ui/Packages/SimpleValueGraphs/aub6U)\n[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://simonschoelly.github.io/SimpleValueGraphs.jl/stable)\n[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://simonschoelly.github.io/SimpleValueGraphs.jl/dev)\n![CI](https://github.com/simonschoelly/SimpleValueGraphs.jl/workflows/CI/badge.svg?branch=master)\n[![codecov](https://codecov.io/gh/simonschoelly/SimpleValueGraphs.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/simonschoelly/SimpleValueGraphs.jl)\n[![](https://img.shields.io/badge/chat-Zulip%23graphs-yellow)](https://julialang.zulipchat.com/#narrow/stream/228745-graphs)\n\nSimpleValueGraphs is a [Graphs.jl](https://github.com/JuliaGraphs/Graphs.jl) compatible package for graphs with multiple, homogeneous vertex, edge and graph metadata. In particular it provides:\n- an abstract interface for graphs with metadata\n- concrete implementations of mutable graphs with metadata\n\nCompared to [SimpleWeightedGraphs.jl](https://github.com/JuliaGraphs/SimpleWeightedGraphs.jl) it has the following advantages:\n- vertex and graph metadata\n- multiple edge metadata\n- faster structural modifications of graphs\n\nCompared to [MetaGraphs.jl](https://github.com/JuliaGraphs/MetaGraphs.jl) it has the following advantages:\n- faster access and modifications of metadata\n- better type stability when accessing metadata\n\n## Example\n\n```julia\nusing SimpleValueGraphs\n\nusing Graphs: smallgraph\nusing Plots\nusing GraphRecipes: graphplot\nusing Colors: RGB, Color\n\n# Load a Graphs.SimpleGraph\ngs = smallgraph(:house)\n\n# Convert to a ValGraph with vertex and edge values\ngv = ValGraph(gs;\n    # Two names vertex values:\n    # - color: A random color\n    # - label: The vertex identifier as a string\n    vertexval_types=(color=Color, label=String),\n    vertexval_init=v -\u003e (rand(RGB), string(v)),\n    # One unnamed edge value:\n    # A string s -- d from source to destination of each edge\n    edgeval_types=(String, ),\n    edgeval_init=(s, d) -\u003e (\"$s -- $d\",)\n)\n\n# Plot this graph using the vertex and edge values\ngraphplot(gv;\n    nodecolor = [get_vertexval(gv, v, :color) for v in vertices(gv)],\n    names = [get_vertexval(gv, v, :label) for v in vertices(gv)],\n    edgelabel=weights(gv; zerovalue=\"\")\n)\n```\n![example output](https://github.com/simonschoelly/SimpleValueGraphs.jl/blob/master/docs/assets/readme-example-output.png)\n\n## Benchmarks\n\nThis is a comparison of running `Graphs.dijkstra_shortest_paths` on the [egonets-Facebook](https://snap.stanford.edu/data/egonets-Facebook.html) graph for multiple graph types.\n\n| graph type                                        | time (ms) |\n| ------------------------------------------------- | --------- |\n| Graphs.SimpleGraph + Matrix weights               | 6.5       |\n| Graphs.SimpleGraph + SparseMatrixCSC weights      | 11.4      |\n| SimpleWeightedGraphs.SimpleWeightedGraph          | 11.7      |\n| MetaGraphs.MetaGraph                              | 141.9     |\n| SimpleValueGraphs.ValGraph                        | 12.4      |\n\nCurrently a lot of Graphs.jl algorithms do not optimally work with graphs that store edge metadata\ninternally. The next benchmark is an optimized version of the same algorithm that can be found\nin `SimpleValueGraphs.Experimental.dijkstra_shortests_pasts`. Clearly, this is a huge improvement for\n`ValGraph` and `SimpleWeightedGraph`.\n\n| graph type                                        | time (ms) |\n| ------------------------------------------------- | --------- |\n| Graphs.SimpleGraph + Matrix weights               | 6.8       |\n| Graphs.SimpleGraph + SparseMatrixCSC weights      | 10.8      |\n| SimpleWeightedGraphs.SimpleWeightedGraph          | 2.9       |\n| MetaGraphs.MetaGraph                              | 147.3     |\n| SimpleValueGraphs.ValGraph                        | 3.1       |\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonschoelly%2Fsimplevaluegraphs.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonschoelly%2Fsimplevaluegraphs.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonschoelly%2Fsimplevaluegraphs.jl/lists"}