diff --git a/README.rst b/README.rst index 80ef33936b628f951830465c7fa1173c27a9ddab..68cc90b100fb212213975f1a6147f44d3246ccf0 100644 --- a/README.rst +++ b/README.rst @@ -14,57 +14,82 @@ within the KM3NeT experiment. Installation ------------ -The project is based on images using ``singularity``, for which version -3 or higher (e.g. `v3.4 <https://sylabs.io/guides/3.4/user-guide/>`__) -is required. This is done due to the intention to provide a comparable -installation on all systems and thus make the results easily -reproducible. The main project control is based on ``make``. In order to -apply installation commands presented within this section, clone this -repository and change to the project directory: +The main `KM3BUU` project is python based using ``singularity`` for running GiBUU. +The python environment is required to have version 3.5 or higher and singularity +is required to have version 3.3 or higher (e.g. `v3.4 <https://sylabs.io/guides/3.4/user-guide/>`__). In the default workflow the singularity image is build remote from the +KM3NeT docker server, but it can also be built locally (see :ref:`Local Machine`). +`KM3BUU` is not provided via python package manager and can be installed as follows. +First the repository needs to be cloned: :: git clone https://git.km3net.de/simulation/km3buu cd km3buu -Local Machine -~~~~~~~~~~~~~ - -By “Local Machine†a computer where are root (administrative) privileges -are available is meant. These root privileges are required to build the -singularity image by yourself. In order to start the build, run the -following ``make`` command: +After downloading the repository the package can be installed via: :: - make build + pip install -e . -Compute Cluster -~~~~~~~~~~~~~~~ +GiBUU Only Usage +~~~~~~~~~~~~~~~~ +The repository design also allows the usage without python environment. +In this scenario the singularity container containing the GiBUU environment +has to be built first. This can be done locally if root privileges are available: -In order to make this project also usable in a non-root environment, the -Image is also provided via the KM3NeT Docker-Server. Within KM3NeT -computing infrastructure this is the case for the lyon compute cluster, -thus this case is customised for this environment. +:: + + make build -In order to build the singularity image based on the remote image, run -the following ``make`` command: +If root privileges are not available, e.g. running the `KM3BUU` on a compute cluster, +it also can be done remote via the KM3NeT docker server: :: make buildremote -Structure & Usage ------------------ +If the python environment is used afterwards, the file path of the container can +be written to the configuration file and is not required to be built again. -The used GiBUU jobcards are located in a sub-folder within the jobcards -folder. Each sub-folder represents a set of jobcards, which can be -processed by: +For running GiBUU the used jobcards have to be moved to a sub-folder within the +jobcards folder of the project. Each sub-folder represents a set of jobcards, +which can be passed to GiBUU by: :: make run CARDSET=examples -This command runs all jobcards within the ``jobcards/examples`` folder -and writes the output it to the folder ``output``. The folder structure +This specific command runs all jobcards within the ``jobcards/examples`` folder +and stores the output inside the folder ``output``. The folder structure is applied from the ``jobcards``\ folder. + +Tutorial +-------- +The python framework is build around the GiBUU workflow, i.e. a jobcard is +processed and the output files are written out. The jobcards are technically +FORTRAN namelists and can be created using a `Jobcard` object. In the example +this is done via loading an existing jobcard: + +.. code-block:: python3 + + >>> from km3buu.jobcard import Jobcard, read_jobcard + + >>> jc = read_jobcard("jobcards/examples/example.job") + +In the next step the jobcard is processed: + +.. code-block:: python3 + + >>> from km3buu.ctrl import run_jobcard + + >>> run_jobcard(jc, "./output") + 0 + +Finally, the output can be parsed using a `GiBUUOutput` object: + +.. code-block:: python3 + + >>> from km3buu.output import GiBUUOutput + + >>> data = GiBUUOutput("./output")