OrbitEX is a C++ implementation of the OrbitSI subgraph isomorphism algorithm. It finds all occurrences of a small pattern graph within a larger data graph.
To compile and run this project, you will need:
- A C++ compiler supporting the C++17 standard (e.g.,
g++ 8or newer). - The
makebuild automation tool. Python 3andpytestfor running the test suite.
To build the executable, simply run the make command from the root directory of the project:
makeThis will compile all necessary source files from both the application (src/) and the internal Escape library (extern/Escape/). The final executable will be created at build/orbitsi.
Once compiled, you can run the program from the command line.
./build/orbitsi --data <path_to_data_graph> --pattern <path_to_pattern_graph> [options]--data <path>: (Required) The file path to the large data graph.--pattern <path>: (Required) The file path to the smaller pattern graph (query).--graphlet-size <3|4|5>: (Optional) The size of the graphlets to use for orbit counting (3, 4, or 5). Defaults to 4.--iterate <N>: (Optional) Set maximum filtering iterations (NLF + Orbit Filter).N=1runs 1 pass (default).N=0iterates until candidate sets reach convergence (fixpoint). Cannot be combined with--use-full-graph.--induced: (Optional) If present, performs an induced subgraph isomorphism search. By default, it performs a standard non-induced subgraph isomorphism search.--use-full-graph: (Optional) Perform orbit counting and search backtracking on the full data graph instead of candidate subgraphs. Cannot be combined with--iterate.--verbose: (Optional) Print all matching node mappings to the console.
./build/orbitsi --data test/data_graph/HPRD.graph --pattern test/query_graph/query_dense_16_104.graph./build/orbitsi --data test/data_graph/HPRD.graph --pattern test/query_graph/query_dense_16_104.graph --graphlet-size 5 --use-full-graph --verbose./build/orbitsi --data test/data_graph/HPRD.graph --pattern test/query_graph/query_dense_16_104.graph --iterate 0The project includes a parameterized test suite (test/test_orbitsi.py) to verify match counts against test/expected_output.res.
To run the test suite using default 4-node graphlets:
make testTo run the test suite for specific graphlet sizes (3, 4, or 5):
GRAPHLET_SIZE=3 pytest test/
GRAPHLET_SIZE=4 pytest test/
GRAPHLET_SIZE=5 pytest test/To remove all compiled object files and the final executable, run:
make clean