BRAHMS In Context

BRAHMS is an execution client for Dynamical Systems stored as SystemML documents. These documents are Systems designed by you (or someone else) using your chosen design tools; BRAHMS executes these Systems to obtain results; you use your chosen analysis tools to review the results.

The workflow below is tightly integrated with Matlab; this is not a constraint - we've worked hard to free BRAHMS from its origins as a Matlab plug-in. But we still do most of our work in Matlab, so bindings (995) are provided allowing BRAHMS to be used entirely from within Matlab. This does not imply that you must be a Matlab user to enjoy BRAHMS, it's just that bindings currently exist only for Matlab and for Notepad, and Notepad just doesn't work for me.

Where I say Matlab, feel free to try using Octave. You'd be in uncharted territory, but I see no reason why you couldn't survive out there, and I'd be very interested to hear how you got on.



In practice, it is currently difficult to design a SystemML System without using the SystemML Matlab Bindings, so you will probably do all of your design work in Matlab. A design (System) constitutes the list of Processes you need, the parametrization of each one, and the list of Links between Process output Ports and Process input Ports.


This is a matter of designing an Execution (a specification of what to do including, for example, execution stop time, multi-processing model, logging instructions) and passing these and your prepared System to BRAHMS. That's what BRAHMS does, it's an execution client for SystemML models. The execution generates two things; the output logs (i.e. the results) and an Execution Report (currently little more than performance metrics).

Note that it is relatively straightforward to perform an execution without Matlab (you just need to construct the Execution File) but it is still probably easier to use the Matlab Bindings (995), to begin with at least. You might consider not using Matlab if, for instance, you want to execute your System on embedded hardware (e.g. as a robot controller) that doesn't or can't have Matlab installed.


It is, again, largely up to you how you perform analysis of your results, but, again, you may get up to speed most quickly by following the examples in Matlab. You could import your results into any analysis program with an appropriate filter (Excel, Statistica, whatever) - it's all just numbers in the end, but filters exist for Matlab already, is all.


SystemML Systems contain Process descriptions, which are parametrizations of SystemML Process classes. BRAHMS executes these Systems by loading plug-in Modules which implement these Processes. These plug-ins are obtained over the internet from the SystemML server, or may be available locally (for instance if you authored a plug-in yourself but have not yet published it).

  • Servers are not yet up and running, so currently everything is local; either components packaged with BRAHMS, or components passed to you by another BRAHMS user, or components you authored/compiled yourself.