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 setup.py install
The command should be called as follows:
Usage:
madseq.py [-j|-y] [-s <slice>] [<input>] [<output>]
madseq.py (--help | --version)
Options:
-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.