Installation

Installing and using the Zgoubidoo Python library requires a working Python 3.7+ environment.

The easiest way is to proceed with conda to set it up. In case you already have a Python 3.7 environment available, you can simply install Zgoubidoo with pip directly. Zgoubidoo has a relatively small number of dependencies, and no non-Python dependencies, except of course for Zgoubi itself. Detailed step-by-step instructions are provided in the following sections.

Compiling and installing Zgoubi

Zgoubi can be obtained from the official SourceForge repository, although we do not explicitely support the compilation and installation of Zgoubi with that method. Indeed, no platform-independent build system is provided and it is difficult to support compilation over a variety of platforms. A selection of ``Makefile``s is provided. In case one of them suits your needs, a brief description of the build process is given in the next section.

A non-official git repository, tracking the SVN repository (using git svn) is maintained in parallel with Zgoubidoo. You can contact us to obtain access. That repository provides a build system using cmake, which allow to compile over a variety of platforms and compilers.

In particular, the build process for recent versions of gfortran on Mac OS is actively supported. The dependencies are cmake and gfortran. They can be installed using your package manager, brew on Mac OS works just fine.

The following steps are recommended on a Mac:

# Install cmake on Mac OS
brew install cmake
# Install gfortran on Mac OS
brew install gcc
# Clone the git repository in a source directory
git clone https://github.com/ulb-metronu/zgoubi.git zgoubi-source
cd zgoubi-source
git checkout develop
cd ..
mkdir zgoubi-build
cd zgoubi-build
cmake ../zgoubi-source
make

The Zgoubi executable is then available in the bin directory. No specific step is required to “install” Zgoubi, but a symbolic link can be a good idea:

ln -s ./bin/zgoubi /usr/local/bin/zgoubi

Compiling Zgoubi from the official SourceForge repository

Zgoubi can be obtained from SourceForge (download or svn checkout). A Fortran compiler is required: both ifort and gfortran are supported (‘Makefile’s are provided).

After the compilation the zgoubi executable will be available in the zgoubi directory. Depending on the Makefile you use, zpop will also be built. zpop is not used by Zgoubidoo.

Zgoubidoo needs to be able to locate the zgoubi executable. The easiest way is to have it somewhere in your $PATH so that which (via Python shutil.which) is able to find it. Alternatively, it is possible to provide the path at runtime (see the zgoubidoo.Zgoubi class).

Obtaining Zgoubidoo

Zgoubidoo is hosted on github (see Zgoubidoo’s Github repository). To obtain the code using git do:

git clone https://github.com/chernals/zgoubidoo.git

The default branch (master) should be clean at all time, with all the development happening in the develop branch. It should thus be safe to pull from the master branch to get the latest version. Only the released and tagged versions are merged onto the master branch.

To stay on a released (tagged) revision:

git clone --branch 'tag_name' https://github.com/chernals/zgoubidoo.git

The releases CHANGELOG follows.

Note

2020.1 - Major stability improvements
  • Refactoring of multiple classes in georges-core (Kinematics and Sequence, among others);

  • Major clean up and testings of the elements classes;

  • Improvements in the plotting module.

2019.3 - Coherent support of the high-level ‘sequence’ API and synchrotron radiation
  • [FEATURE] A brand new ‘sequence’ API (see the ‘sequences’ module) supporting lattice description that are

code independent. They can be automatically loaded and converted from MAD-X Twiss files onto Zgoubi or MAD-X inputs; - [FEATURE] More complete Twiss computation module taking advantage of the survey and global reference frame for coordinates transformation. Twiss parameters are now correct also for strange lattices with arbitraty rotations; - [FEATURE] Now supports running MAD-X as well, with all the same nice functionalities. - [BUG FIXES] Many, many, many bug fixes;

2019.2 - Brand new support for concurrent execution of multiple Zgoubi’s instances
  • Full support for concurrent multiprocessing execution is provided;

  • Improvement capabilities for multi-dimensional parametric mappings;

  • Lots of bug fixes and documentation update.

2019.1 - First stable release.
  • See the announcement in the documentation.

2018.1 - First release!
  • Support all Zgoubi elements, altough some commands (in particular related to electric elements or spin tracking)

have never been tested; - Step-by-step computation of Twiss parameters (in a similar fashion to what pyzgoubi does) using 11 particules.

Creating a Python 3.7 environment with Conda

The Zgoubidoo repository contains a conda environment file that can be used to create a complete Python 3.7 environment suitable for Zgoubidoo:

cd path_to_zgoubidoo
conda env create --file environment.yml

or you can give a custom name to the environment with:

conda env create --file environment.yml --name your_custom_name

Installation Zgoubidoo using pip

The first step is to activate your Python 3.7 environment (only needed if you do not use a global instalaltion of Python. On Mac OS if you use the Python brew installation you should already have Python 3.7 available from your path). With conda proceed like this:

conda activate py37

where py37 is the name of the environment created by default if you used the requirement.txt file as described above.

Zgoubidoo can then be installed using pip:

cd path_to_zgoubidoo
pip install .

Upgrading Zgoubidoo:

pip install . --upgrade

Alternatively if you intend to develop Zgoubidoo you can install it in editable mode:

pip install -e .

The second method allows any change to be reflected directly to your Zgoubidoo package (only a symlink is created in site-packages). This is the recommended way if you want to stay on the latest version of Zgoubidoo (development branch develop).

Using Zgoubidoo with Jupyter Notebook

Any installation of Jupyter would work as long as the Python 3.7 kernel from the conda installation can be selected. For that it is best to install the extension nb_conda_kernels. The conda environment already contains a working installation of jupyter with the conda extensions:

conda activate py37
jupyter notebook
# Or using Jupyter Lab
jupyter lab

From there you can create a new notebook and simply import Zgoubidoo:

import zgoubidoo