.. _developer-guide:
*********************
Developer information
*********************
This section describes the internal structure of the pipeline framework. It is
intended for developers who plan to work on the framework code itself.
.. _code-structure:
Structure of the code
=====================
The pipeline code can be obtained from `USG Subversion
`_. There are five
top-level directories:
``deploy``
IPython system deployment scripts. See the section on
:ref:`parallelisation with IPython ` for more details,
but note that the use of IPython within the pipeline is *deprecated*.
``docs``
Documentation and examples. See the section on :ref:`available
documentation ` for details.
``mac``
MAC/SAS EventPort interface code. See the :ref:`mac-interface` section for
details.
``framework``
The framework code itself. This is implemented as the Python module
:mod:`lofarpipe`; see its documentation for details. A ``distutils`` based
setup script, ``setup.py``, is included for easy installation: see the
section on :ref:`installing the framework `.
``recipes``
A collection of :ref:`recipes `, intended to both demonstrate
the operation of the framework and serve as useful pipeline components.
Recipes intended for different pipelines may be stored in separate
directories: for example, the ``sip`` directory contains recipes for
useful to the :ref:`standard imaging pipeline `.
External components
===================
.. _ipython-deprecated:
IPython
-------
The IPython system was extensively used by earlier versions of this framework,
but is now *deprecated*. Both recipe and framework developers are urged to
avoid using it wherever possible. However, until all existing recipes
(including those not distributed with the framework) have been converted to
use another system, the IPython support in the framework should be maintained.
That includes:
* :class:`lofarpipe.support.clusterhandler.ClusterHandler`
* :func:`lofarpipe.support.clusterhandler.ipython_cluster`
* :class:`lofarpipe.support.ipython.LOFARTask`
* :class:`lofarpipe.support.ipython.IPythonRecipeMixIn`
* :func:`lofarpipe.support.utilities.build_available_list`
* :func:`lofarpipe.support.utilities.clear_available_list`
* :func:`lofarpipe.support.utilities.check_for_path`
Conversely, once all IPython-based recipes in active use have been replaced,
the IPython support code should be removed from the framework.
.. _documentation:
Available documentation
=======================
.. todo::
Describe the available documentation in the docs directory: what the
examples are, how to build the Sphinx documenation.
.. _mac-interface:
MAC/SAS interface
=================
.. todo::
Describe current status of MAC/SAS interface.