GraphTea is a software framework for working on graphs and social networks. It helps you to:
- Draw a graph
- Get reports about it
- Run algorithms on it
- Visualize it
Runs on Windows / Linux / macOS (Java-based).
GraphTea has grown into a family of related tools. Here is a map of all variants:
| Repository | Language | Status | Description |
|---|---|---|---|
| GraphTea | Java | ✅ Active | Core desktop application |
| GTea | Java | ✅ Active | Online/server version |
| GTeaShell | Java | ✅ Active | Shell/CLI version |
| GSearchTea | Java | ✅ Active | Big-data graph search (Flink/Spark) |
| CGTea | C++ | ✅ Active | Lightweight C++ desktop version |
| CGTeaQt | C++ | 🔧 Experimental | Qt-based desktop version |
| CGTeaWeb | C++ | 🔧 Experimental | Web version via Emscripten/WASM |
| WASMTea | WASM | 🔧 Experimental | Pure WebAssembly browser version |
| GTeaJS | JavaScript | 🔧 Experimental | JavaScript/web port |
| GTeaMinimal | Java | 📦 Minimal | Stripped-down Java version |
| rust_gtea | Rust | 🚧 In progress | Rust rewrite |
| SpringTea | Java | 🚧 In progress | Spring Boot-based version |
See this video
Execute run.bat (Windows), or run.sh (Linux/macOS).
Manually:
java -jar graphtea-main.jar
- Make your changes
- Run
make.sh(or type./make.shin terminal) - It will compile your changes and run the application.
Manually:
- Open terminal
cd src/scriptsant— this will build the application in the binary folder.- For seeing your changes, follow the Run steps above.
Note: Apache Ant must be installed.
Modify SampleAlgorithm.java. You can also make reports, generators, file formats, and actions.
- Draw graphs with a mouse or using predefined generators (trees, complete graphs, stars, generalized Petersen, etc.)
- Analyze graphs with built-in reports (connected components, chromatic number, independence number, girth, triangles, etc.)
- Run algorithms step by step with visual feedback — useful for teaching
- Visualize social networks and large graphs with layout algorithms
- Export to image files or LaTeX for papers and reports
- Extend with custom plugins (Java or MATLAB) by dropping files into the extensions directory
- Check conjectures on thousands of graphs at once and open the counterexamples
Reports > Conjecture Checker... tests a claim about graph invariants on many graphs and shows the graphs where it fails or is tight. Write the claim as a formula, choose the graphs, and press Check. The Examples button fills in and runs the cases below.
| Conjecture | Graphs | What you see |
|---|---|---|
energy <= 2*m |
all graphs, n = 1–7 | Holds; equality exactly for matchings |
energy >= 2*sqrt(m) |
connected graphs, n = 2–7 | Holds; equality for complete bipartite graphs |
chromatic_number = max_clique_size |
connected graphs, stop at first counterexample | False; the smallest counterexample is C5 |
wiener_index <= (n^3 - n)/6 |
trees, n = 2–14 | Holds; equality for paths |
chromatic_number <= 2, only where is_bipartite = 1 |
connected graphs, n = 2–7 | A condition restricts the graphs tested |
energy = 2*(n - 1) |
the Complete Graph family, n = 2–30 | Holds for every Kn |
wiener_index >= n*(n - 1) - m |
20 random connected graphs per n, n = 10–30 | Holds; tight when the diameter is 2 |
- Invariants.
n,m,maxdeg,mindegandavgdegare built in, and every report that returns a number can be used under a name made from its title (Wiener Index becomeswiener_index). The Invariants... button lists them all. - Formulas.
+ - * / ^,sqrt,ln,log,exp,abs,floor,ceil,min,max,choose, the constantspiande, and in conditionsand,or,not. Dividing by zero makes a value undefined rather than infinite. - Graphs. Every graph, connected graph or tree on n vertices (all graphs up to 8 vertices are built in; with nauty's
genginstalled, up to 11), a generator family, random graphs, a graph6 file, or the graphs open in tabs. - Reports with several bounds. For reports such as M3 Bound Conjecture, which compute a quantity and many candidate bounds in one table, choose Columns of a report to see which bounds hold.
- Results. Double-click a graph to open it in a new tab, or export the graphs shown as CSV or graph6. Values within 0.00001 count as equal, since reports round their answers.
GraphTea includes a curated collection of benchmark graphs under Generate Graph > Benchmark Graphs, covering classic named graphs and standard random graph models used in research:
| Graph | Vertices | Edges | Description |
|---|---|---|---|
| Grotzsch Graph | 11 | 20 | Triangle-free graph with chromatic number 4 (Mycielski of C5) |
| Heawood Graph | 14 | 21 | 3-regular bipartite graph; smallest 6-cage |
| Pappus Graph | 18 | 27 | 3-regular bipartite graph of girth 6 |
| Frucht Graph | 12 | 18 | Smallest 3-regular graph with trivial automorphism group |
| Zachary Karate Club | 34 | 78 | Classic social network benchmark for community detection (Zachary 1977) |
| Barabasi-Albert Graph | n | ~n·m | Scale-free graph with power-law degree distribution (params: n, m) |
| Watts-Strogatz Graph | n | ~n·k/2 | Small-world graph combining high clustering with short paths (params: n, k, betaPercent) |
Post in Issues and we will get back to you.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Added some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
- Current Developers:
- Mohammad Ali Rostami — rostamiev [at] gmail [dot] com
- Azin Azadi — aazadi [at] gmail [dot] com
- E. Suresh — sureshkako [at] gmail [dot] com
