Releases: pylhc/turn_by_turn
Release 1.1.0
Release 1.0.0
This is the first major release of turn_by_turn, marking the transition from a pre-1.0 version to a stable API.
This release includes introduces some small breaking changes to the API, mainly the removal of the date attribute from the TbtData dataclass, as it was not consistently populated across all datatypes and readers.
Instead a new attribute meta has been added
which is a dictionary to hold any additional metadata that might be relevant for a specific datatype or reader in the future,
or can be used to store user-defined metadata,
but the entries should not be relied upon to be present across all datatypes or readers.
Some common meta-entries are:
date: The date and time of the measurement, if available from the file.file: The path to the file the data was loaded from.source_datatype: The datatype the data was loaded from, e.g.lhc,sps,doros, etc.comment: Any comment on the measurement.
Changed:
- Removed the
dateattribute from theTbtDatadataclass. - Reordered the parameters of the
TbtDatadataclass to havematrices,nturnsfirst, as required attributes, then optinallybunch_ids, andmeta. - Added a
metaattribute to theTbtDatadataclass to hold additional metadata as a dictionary. - Updated all readers to populate the
metaattribute with relevant metadata where available. - Restructured the
iotamodule. This should be mostly transparent to the user, unless they were using internal functions or classes from theiotamodule directly.
What's Changed
- Linter configuration and fixes by @fsoubelet in #25
- Meta-Field in TbTData by @JoschD in #28
- Coverage Config by @fsoubelet in #29
Full Changelog: 0.9.1...1.0.0
Release 0.9.1
This patch release fixes the reading of SPS files after the technical stop in 2025, during which the format seems to have been changed. The array MonPlanes in the SDDS file, which before contained 1 if the BPM was vertical and 0 if it was horizontal switched to using 3 for vertical and 0 for horizontal BPMs.
The current implementation now tries to determine the BPM plane not from this array, but from the '.H' and '.V' at the end of the BPM name in the file. Only if this ending is not present - you are able to deactivate it in the writer as this ending is also not present in the SPS model - it will first be checked if 3s are present in the array and then the new format used, otherwise it will be checked if 0s are in the array and then the new format used. Otherwise the reader will raise an informative error.
If you only have vertical BPMs in the old format or only horizontal BPMs in the new format (i.e. your MonPlanes array will consist only of 1s) this will also cause the reader to not be able to determine the format and raise an error.
What's Changed
Full Changelog: 0.9.0...0.9.1
Release 0.9.0
Release 0.9.0 adds functionality for the loading of tracking simulation data from an xtrack.Line.
A specific tracking setup and the use of ParticleMonitors is necessary.
This version introduces a new top-level function, convert, to handle data that already lives in-memory: the result of an xtrack.Line tracking and potentially data from MAD_NG, for now.
Added:
- A new module,
turn_by_turn.xtrack_line, to handle loading data from anxtrack.Lineafter tracking. See the documentation for details. - A new function,
turn_by_turn.convert, similar toturn_by_turn.read` but to handle in-memory data.
What's Changed
- Worfklows update by @fsoubelet in #15
- New sim data by @fscarlier in #13
Full Changelog: 0.4.2...0.5.0
What's Changed
Full Changelog: 0.8.0...0.9.0
Release 0.8.0
Release 0.7.2
This patch release enables the capability to read also the oscillation data from DOROS and the means to switch between positions and oscillations data.
Added:
doros_oscillations: Read/write data into the oscillations attributes of the doros-hdf5 file.doros_positions: Read/write data into the positions attributes of the doros-hdf5 file.- The original
doros-datatype defaults now tooscillations.
What's Changed
Full Changelog: 0.7.1...0.7.2
Release 0.7.1
In this patch release, the DOROS reader has been updated to handle files that have more entries on the root level than BPMs and METADATA.
- Changed:
- Identifying BPMs in DOROS data by having the
"nbOrbitSamplesRead"entry.
- Identifying BPMs in DOROS data by having the
What's Changed
Full Changelog: 0.7.0...0.7.1
Release 0.7.0
In this release, a reader and writer for DOROS BPMs in hdf5 format has been added.
Changed:
- Added DOROS
hdf5reader/writer - Clean-up of the Documentation
What's Changed
- Migrate to pyproject.toml and common workflows by @fsoubelet in #17
- Reader/writer for DOROS BPM data by @JoschD in #18
Full Changelog: 0.6.0...0.7.0
Release 0.6.0
Release 0.6.0 adds to the SPS-module the possibility to remove the trailing planes (.H/.V) from the BPM names upon reading, and adding them back on writing. Both are enabled by default.
This allows compatibility with the MAD-X models.
Added:
- sps-reader:
remove_trailing_bpm_planeremoves the trailing plane-suffixes (.H/.V) from the BPM names, if present - sps-writer:
add_trailing_bpm_planeadds plane-suffixes (.H/.V) to the BPM names, if not already present
Fixed:
- ascii-reader: returns
TbtData-object instead of the individual parts for one.
What's Changed
Full Changelog: 0.5.0...0.6.0
Release 0.5.0
Release 0.5.0 adds functionality for the loading of tracking simulation data in the trackone module.
Important: With this release the minimum supported Python version is upped to 3.8
Added:
- A new class,
TrackingData, was added toturn_by_turn.structureswhich is similar toTransverseDatabut holds all 8 dimensions (X,PX,Y,PY,T,PT,S,E). - The
read_tbtfunction inturn_by_turn.trackonehas a new boolean argument,is_tracking_data, to specify data should be loaded with this new class. Default behavior is unchanged. - The
numpy_to_tbtfunction inturn_by_turn.utils, which handles the loading, has a need argument to specify the datatype to load into. Default behavior is unchanged. - The
generate_average_tbtdatafunction inturn_by_turn.utilshandles the new class.
Fixed:
- The
fieldnamesmethod inTransverseDataandTrackingDatais now aclassmethodand is properly called.
What's Changed
- Worfklows update by @fsoubelet in #15
- New sim data by @fscarlier in #13
Full Changelog: 0.4.2...0.5.0