Parser/transformator for MAD-X sequences

pip install madseq==0.4.4



Build Status Coverage Latest Version Downloads License


Script to parse MAD-X sequences from a source file and perform simple transformations on the elements.


  • docopt to parse command line options
  • pydicti to store and access element attributes
  • pyyaml to parse slicing definition and use YAML output format


The setup is to be performed as follows

python install


The command should be called as follows:

Usage: [-j|-y] [-s <slice>] [<input>] [<output>] (--help | --version)

    -j, --json                      Use JSON as output format
    -y, --yaml                      Use YAML as output format
    -s <slice>, --slice=<slice>     Set slicing definition file
    -h, --help                      Show this help
    -v, --version                   Show version information

If <input> is not specified the standard input stream will be used to read the input file. Respectively, the standard output stream will be used if <output> is not specified.

The slicing definition defines a list of slicing instructions where each entry is a dictionary with the following groups of mutually exclusive keys:

str type: match only elements with the specified type
str name: match only elements with the specified name

bool use_at: use manually entered AT values, default is True

float density: slice element with the specified number of slices per meter
int slice: slice element using a fixed count, default=1

bool makethin: whether to convert the slices to MULTIPOLE

bool template: whether to put a template for the element in front

str style: slicing style, either 'uniform' or 'loop', defaults to 'uniform'

Example file:

- type: drift
  density: 10
- name: B1DK1
  slice: 10
  makethin: true
  style: uniform

Note, that even if an element is matched by multiple rules, only the first one will be used.


  • Do not use multi line commands in the input sequences. At the moment these are not parsed correctly!
  • Do not add any at= position arguments in the input sequences. The madseq script takes care of this responsibility.