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.
As discussed in the Green-Marl language overview, 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:
CompiledProgram compileProgram(String path) CompiledProgram compileProgram(InputStream code) CompiledProgram compileProgramCode(String code)
compile_program(self, path, overwrite=False) compile_program_code(self, code, overwrite=False)
The Green-Marl code to compile can either be assigned directly (
code) or via a file path or
This method returns a
CompiledProgram instance that contains a method to run the compiled algorithm as well as
Refer to the related javadoc for details.
The following generic method in
CompiledProgram is used to run compiled algorithms:
PgxFuture<AnalysisResult<T>> runAsync(Object... args)
AnalysisResult<T> run(Object... args)
Fundamentally, the method invokes the compiled algorithm with the given arguments (
Note: The given
args must match the signature of the graph algorithm. Otherwise,
PGX throws a type mismatch exception to the client. For example, if the Green-Marl program you compiled has the
my_algorithm(G: graph, d: double; result: nodeProp<double>, avg: int): double
Then you must provide Java objects of type
VertexProperty<ID, Double> and
in that order. Note: Primitive out arguments have to be of type
Scalar. The returned
be parametrized with
The above method returns an
AnalysisResult, which contains not only the return value of the algorithm, but also other information
such as exception status and execution time.