.. _framework: Framework components and required software =========================================================== .. contents:: :depth: 3 :local: :backlinks: entry Framework components ------------------------ See :ref:`frmchart`. The components are: - Model/computational libraries (Python, C++, etc) - Build systems, testing, and system documentation (Python, Sphinx, Matplotlib, LaTeX) (Not shown in the flowchart.) - Interfaces to data sources and systems (Python) - Framework to easily produce technical reports and automatize user's workflow (Python, Sphinx, LaTeX) Python is the unifying framework, but the model libraries can be written in any language as long as there is a way to programmatically send the requests and retrieve the results. All libraries are invoked from Python scripts. Interfaces to systems and data sources are written in Python. We can easily reformat the data to suit our purposes. SQL queries can be inserted in Python scripts, see :ref:`database`. It is easy to convert XML files to Python data structures (dictionaries) and vice-versa. We write our documentation in Sphinx, thus taking advantage of the power of Python as well as the LaTeX math rendering. Alternatively, we can produce LaTeX/PDF documents. Our framework is, in principle, platform independent - as long as there is a g++ compiler and a Python distribution for that platform. We tested our framework on Linux, Mac OSX, and Windows. More details are given in :ref:`setup`. Some functionality is platform-specific, such as running Excel-addins from Python. Required software and tools ----------------------------- No proprietary or commercial software other than what is required to talk to existing systems and data sources (outside our framework), such as Excel. Our framework is built using well-tested, widely-used open source tools and software, see :ref:`setup`. In particular we do not need any costly, poor quality technologies such as Microsoft Visual Studio.