Rogas(https://github.com/CornucopiaRG/Rogas) is a project for Network Analytics
Rogas not only can provides a high-level declarative query language to
formulate analysis queries, but also can unify different graph algorithms
within the relational environment for query processing.
The Rogas has three main components: (1) a hybrid data model, which
integrates graphs with relations so that we have these two types of data
structures respectively for network analysis and relational analysis;
(2) a SQL-like query language, which extends standard SQL with
graph constructing, ranking, clustering, and path finding operations;
(3) a query engine, which is built upon PostgreSQL and can efficiently process
network analysis queries using various graph systems and
their supporting algorithms.
My work is contained in this repository, not including the file in Rogas which is not authored with Yan Xiao. Specifically, with my mentors Minjian Liu and Qing Wang's guidance, it contains three parts:
- Design and implement the Web GUI
- Design and implement the visualisation of graph operations(CREATE, RANK, PATH, CLUSTER)
- Design and implement the backend server and modify Rogas for connecting to front-end
-
- Rescale the size of each cluster according to their proportion
-
- Score each node according to their inner-cluster edges, cluster-cluster edges and target node's degree
-
- Find max connected component in each cluster
-
- Get specified number nodes in max connected component from high score to low score
-
- Find neighbor nodes around the picked nodes
-
- Get ranked nodes
-
- Find nodes on the shortest path between ranked nodes
-
- Find nodes around the ranked nodes
-
- Get nodes on the path
-
- Find nodes around the path
- Database info panel can show the schema information of relations and graphs in the database
- Database info panel can be customised by users
- Query input panel can be extended to a larger space for complicated queries
- Show queries and their results as browser-tab style
- Asynchronous execution with loading animation
- Support paged loading for large tables
- Support graph creation, rank, path, cluster visualization
- Support large graph visualization
- Support interactive operations on graphs (drag, double click, zoom in/out)
- Support relation - graph data mapping
- Support dynamic setting
- Python 2.7
- Tornado: https://www.tornadoweb.org/en/stable/
- Postgresql: https://www.postgresql.org/
- Psycopg: https://initd.org/psycopg/
- Graph-tool: https://graph-tool.skewed.de/
- SNAP: https://snap.stanford.edu/snappy/index.html
- NetworkX: https://networkx.github.io/
Note: If you use Mac OS, the Graph-tool installed doesn't support OpenMP by default, so that you need set IS_GRAPH_TOOL_OPENMP = False in rogas/config.py.
We also make use of Bootstrap(https://getbootstrap.com/), D3.js(https://d3js.org) and ExpandingTextareas(https://github.com/bgrins/ExpandingTextareas), which are integrated into the system so you don't need install them by yourself.
- Set up your database information in rogas/config.py to connect to Postgresql
- Python run.py
- Open the browser by entering https://localhost:12345/
-
- More informative name of query tabs
-
- Reduce the discreteness of large graph when max number of display nodes is small
-
- More distinguishability in PATH visualization when the number of paths increases
More details about the Rogas, please refer to the thesis "Towards a Unified Framework for Network Analytics" collected in Australian National University (https://users.cecs.anu.edu.au/~u5170295/publications/thesis-minjian.pdf). You can also contact [email protected] or [email protected] for more information.