Running Custom Graph Algorithms
This section explains the API’s ability to compile and run custom algorithms. The APIs for built-in algorithms can be found in our Analyst API section.
Compiling Custom Algorithms
PGX allows users to implement custom graph algorithms with the Green-Marl DSL. PGX then compiles the given graph algorithm, so that it may be executed.
The following are the PgxSession
methods used to compile custom algorithms:
1session.compile_program(path, overwrite=False)
2program = session.compile_program_code(code, overwrite=False)
The Green-Marl code to compile can either be assigned directly (code
) or via a file path.
This method returns a CompiledProgram
instance that contains a method to run the compiled algorithm as well as signature information.
Running Algorithms
The following generic method in CompiledProgram
is used to run compiled algorithms:
1program.run(*argv)
Fundamentally, the method invokes the compiled algorithm with the given arguments (args
).
Note
The given args
must match the signature of the graph algorithm. Otherwise, PGX throws a type mismatch exception to the client.
The above method returns a Dict
object, which contains not only the return value of the algorithm, but also other information
such as exception status and execution time.
1code = "proc program1(graph g; map<vertex, vertex> m) {" \
2 + " for(v: g.nodes) {" \
3 + " m[v] = v;" \
4 + " }" \
5 + "}"
6path = self.pgx_test_resources + "/graph_diameter.gm"
7# label_end: example
8# The following are the PgxSession methods used to compile custom algorithms:
9# label_start: compiling_custom_algorithms
10session.compile_program(path, overwrite=False)
11program = session.compile_program_code(code, overwrite=False)
12# label_end: compiling_custom_algorithms
13# Running algorithms
14graph = session.read_graph_with_properties(self.cfg_tiny_het_graph)
15map = graph.create_map("vertex", "vertex")
16program.run(graph, map)