Explicans

Explicans is an interactive environment for the efficient creation and inspection of explanations of quantitative calculations. Explicans is particularly geared to business applications, in which models are often computationally simple, but complex for humans to understand. All code is open-sourced under the GPL.

See Mission and Justification to learn why Explicans is a worthwhile project.

Status

Explicans is not useful software. You can see pretty much all it does on the screenshots page. Recently I have discovered the R language which is a great fit and a very impressive language. To avoid reinventing the wheel, I am studying R now and trying to figure out how I can help that project out with the ideas presented on this site.

Recently Status:

  • October 16, 2009:
    • Added basic, slightly buggy, 2D table support
    • Discovered the R language, will need a couple months to thoroughly learn that language and see if I can help them add features like automatic recalculation, relative references, etc.
    • Because I won't be updating the code for a while at least, finished putting up the screenshots page and uploaded a zip/tarball of the current source.
  • September 24, 2009:
    • Row/column formulas
    • Automatic array functions (e.g. "A+B" can work if A and B are both arrays).
  • September 13, 2009:
    • New object system instead of using python objects. This makes it even slower but I think it was necessary.
    • Support for strings and a few basic string operations.
    • Support for methods, so "hello world".upper now works.
    • Relative references—you can now say next and get the next cell, me.up.next(3) etc.
  • September 6, 2009:
    • Switched parser generator from pyparsing to ANTLR. Supposedly ANTLR is more sophisticated and has a number of language backends (but the python one isn't very polished)
    • Instead of the laughable "algorithm" Explicans used before to determine evaluation order, now use lazy evaluation. This has the right complexity (O(1)) but will still need to be changed because long complications will exhaust the stack space.
  • September 2, 2009:
    • Code is now hosted using Mercurial at Savannah. See this link for more information.

Download

In case you want to get the code even though it doesn't do anything that not's on the screenshots page, you can download it here:

The two packages are the same except one is in tar-gzip form and the other is zipped. It should run out of the box on Linux or Windows, and hopefully other platforms. To run it you need a recent version of Python v2.x, Qt4, and the python qt wrapper, PyQt4. To generate the parser I used ANTLR. The grammar file is included, but if you want to alter the grammar you will need to download that also. If you just want to browse the code online, see the Savannah Mercurial web gateway.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License