Skip to content

Latest commit

 

History

History
64 lines (40 loc) · 1.59 KB

README.md

File metadata and controls

64 lines (40 loc) · 1.59 KB

Python tools for elegant

This repository contains Python tools for post processing of elegant simulation data. There are multiple examples in the examples folder, whereby each example includes a separate Readme.md file with further instructions.

Installation

  1. Install elegant

  2. Install this package:

    • If you intend to make changes to this repository, clone and install it with:

      git clone git@github.com:nobeam/eleganttools.git
      pip install -Ue ./eleganttools
      
    • If you just want to use this package:

      pip install -U git+https://github.com/nobeam/eleganttools.git
      

Usage

Dealing with Self Describing Data Sets (SDDS)

Load the twiss data from the twiss.twi SDDS file into a Python dictionary:

from eleganttools import SDDS

twiss = SDDS("/path/to/twiss.twi").as_dict()

You can now access items of the twiss data via:

twiss["betax"]

Or, assign multiple items to individual Python variables:

s, beta_x, beta_y = (twiss[key] for key in ("s", "betax", "betay"))

It is also possible to load the data into a pandas dataframe and use the slightly more convenient dot notation:

df = SDDS("/path/to/twiss.twi").as_dataframe()
df.betax

Matplotlib convenience functions

This package comes with some matplotlib convenience functions.

Draw the magnets of the lattice on top of a matplotlib axis:

from eleganttools import draw_elements

fig, ax = plt.subplots()
ax.plot(twiss["s"], twiss["betax"])
draw_elements(ax, twiss)