{"id":20957105,"url":"https://github.com/zefrenchwan/nodz","last_synced_at":"2026-05-21T15:02:37.606Z","repository":{"id":225499627,"uuid":"766120592","full_name":"zefrenchwan/nodz","owner":"zefrenchwan","description":"general graph project","archived":false,"fork":false,"pushed_at":"2024-04-01T15:58:35.000Z","size":132,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-19T23:44:48.918Z","etag":null,"topics":["golang","graphs","networkscience"],"latest_commit_sha":null,"homepage":"","language":"Go","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/zefrenchwan.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-02T11:53:28.000Z","updated_at":"2024-03-09T13:49:20.000Z","dependencies_parsed_at":"2024-04-01T13:27:36.307Z","dependency_job_id":"eb3633e0-6438-4f0a-93c4-dbe2fa9016ef","html_url":"https://github.com/zefrenchwan/nodz","commit_stats":null,"previous_names":["zefrenchwan/nodz"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefrenchwan%2Fnodz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefrenchwan%2Fnodz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefrenchwan%2Fnodz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefrenchwan%2Fnodz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zefrenchwan","download_url":"https://codeload.github.com/zefrenchwan/nodz/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243352033,"owners_count":20276916,"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","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":["golang","graphs","networkscience"],"created_at":"2024-11-19T01:29:32.792Z","updated_at":"2025-12-27T19:52:58.161Z","avatar_url":"https://github.com/zefrenchwan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nodz\n\nA project to play with graphs and test some ideas about networks science. \nFull code is under MIT License. \n\n## Features\n\nSo far:\n* implementing graphs core definitions (central graph, nodes, links, etc)\n* random graphs with preferential attachment (Barabasi Albert) and GNP (fixed nodes size, links by probability)\n* basic stats: degree distribution, size, etc\n* gephi export for data type. Just enough to create data visualizations of graphs, **this is not a gexf library with all gexf features**\n* large structures definition: sets, iterators. Implementations so far are local, but everything is ready for other definitions \n* connected component \n\n### Next features (working on it)\n\n* walkthroughs\n\n### Features to implement one day\n\n* graph features: graph diameter, etc\n* neo4j import and export\n* observability: observer over nodes to detect changes (node creation, deletion, or links changes. Even, for some nodes, changes of states)\n* gexf import and export (again, not planning a full support for gexf)\n\n### Features that sound like good ideas, but not sure yet\n\n* REST endpoint to deal with graphs \n* DSL for non technical use (create a random graph, print basic stats, etc)\n* Sort of jupyter interface to use that DSL\n* Event based changes on graphs, apache kafka sounds like a good option\n* Distibute calculation (but, a huge amount of work)\n* graph data visualization using a dedicated server (cross project, using d3.js ?)\n\n\n## Implementation details \n\n* `examples/` contains nice code, to show some use cases\n* `graphs/` is about main definitions.  \n* `internal/` is about main implementations. \n* Use of iterators: Some graphs are HUGE, so  using **iterators** is more flexible and efficient than slices (lazy loading / pagination)\n* `internal/local/`: split definitions and local implementations. **Local implementations** are \"in memory\" implementations of general definitions \n\n### Types of graph\n\n1. **Value**BasedGraph: nodes holding content (NV type) are linked with values (LV type). Use it when you do not care about the graph structure. \n2. **Central**StructureGraph: linked nodes and you need global operations (all nodes iterations, adjacency matrix, etc)\n3. **Peers**StructureGraph: linked nodes but you discover graph from a node. **No** global operations\n\nSo far: \n\n| Type | Implementation | Local | Directed |\n|------|----------------|-------|-----------|\n| Value | [DirectedValuesGraph](https://github.com/zefrenchwan/nodz/blob/main/internal/local/directed_value_graphs.go) | YES | YES |\n| Central | [MapGraph](https://github.com/zefrenchwan/nodz/blob/main/internal/local/map_graphs.go) | YES | MIXED |\n\n### Wait, what ? How do I start with your project ? \n\n1. Open the `examples/` code and read code to get the purpose of some important classes\n2. Start with [general definition of a graph](https://github.com/zefrenchwan/nodz/blob/main/graphs/structures.go) \n3. Read `graphs/` interfaces if you need more details about `nodes`, `neighbors` or `links`. There should be no surprise, it is basic definition \n4. Have a look at `graphs_test/` to understand some high level features\n5. Then, you may want to dig into `internal_test/local_test`\n\n\n## You like graphs or network science ? \n\nThis part is about links or mentions about graphs / network science related stuff. \nIt just is \"hey, look at that if you want, I found it interesting\". \nI don't make money by advertising, I am not in position of any conflict of interest, it is pure personal opinion. \n\n### frameworks / show me some code\n\n* [Neo4j database](https://neo4j.com/), community version on premise is an excellent graph database. Neo4j is, to me, **very** pushy about its cloud solution (Aura). \n* [Apache GraphX](https://spark.apache.org/graphx/): Not a fan, but it exists and I wanted to mention it. Sounds more like an abandoned POC to me\n* [NetworkX](https://networkx.org/): perfect for its purpose, easy to use, powerful. If language is not a question, I would recommand Python and NetworkX for sure ! \n\n### Tools \n\n* [Gephi](https://gephi.org/) is a classic and efficient vizualisation tool for graphs in general, excellent for big graphs\n\n### Books \n\n* **Barabasi: Networks Science**: Author has a style, many ideas, not a lot of details about some key parts. Brilliant, really good to understand complex networks ideas. But... Not for a first read \n* **Mentzer, Fortunato, Davis: a first course in network science** : very good too, covers more topics and is easier, first read material for sure! \n* **Boullier: Propagations** (in french). WHAT A BOOK ! Very clever ideas about propagations and related use of data. A source of inspiration to go further than technical implementations\n\n### Videos\n\n* FASCINATING phenomenon : [percolation](https://www.youtube.com/watch?v=a-767WnbaCQ)\n\n### Not about graphs, but related somehow\n\n* **Russel, Norvig: Artificial intelligence**: THE book about AI. But get ready, it is a huge book that goes really in depth. Chapter 3 is excellent about exploration, and explains applications of graphs for walkthroughs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzefrenchwan%2Fnodz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzefrenchwan%2Fnodz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzefrenchwan%2Fnodz/lists"}