Skip to main content

Parser/transformator for MAD-X sequences

Project description

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.



  • fix check for filename extension


  • fix some sliced multipole coefficients

  • handle QUADRUPOLE.K1S in makethin

  • fix a naming problem when slicing with template

  • fix python3 problems


  • allow .json files to be passed as the -s parameter (extension is used to distinguish .json from .yaml)


  • use different names for slices

  • fix sequence name in comment before templates


  • add ‘use_at’ slicing option that enables to use AT values


  • internal: remove attribute access for Element properties

  • fix bugged Element.copy and .__contains__ regarding to base elements

  • fix JSON/YAML serialization errors

  • fix bugged implementation for predefined elements

  • fix bugged LOOP style

  • fix bugged makethin

  • fix bugged use_optics

  • rename ‘use_optics’ => ‘template’. technically, this is a change in the public interface, but we are still in 0.X and furthermore the feature was not working before anyway.


  • use semantic versioning <>

  • fix deep attribute lookup for elements


  • redesigned command line

  • fix erroneous parsing of MAD-X arrays, like KNL={…}

  • remove inline attributes for slicing

  • extended slicing via slicing configuration file

  • fix usability of template (predefined) elements

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

madseq-0.4.4.tar.gz (18.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page