You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+44-20Lines changed: 44 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,19 +1,31 @@
1
1
# Changelog
2
2
3
-
## v0.7.0[🚧 Work in Progress]
3
+
## v0.7.1[🚧 Work in Progress]
4
4
5
-
This is a major release with significant upgrades under the hood of Cheetah. Despite extensive testing, you might still encounter a few bugs. Please report them by opening an issue, so we can fix them as soon as possible and improve the experience for everyone.
We are proud to announce this new major release of Cheetah! This is probably the biggest release since the original Cheetah release, with many with significant upgrades under the hood. Cheetah is now fully vectorised and compatible with PyTorch broadcasting rules, while additional physics and higher fidelity options for existing physics have also been introduced. Despite extensive testing, you might still encounter a few bugs. Please report them by opening an issue, so we can fix them as soon as possible and improve the experience for everyone.
6
18
7
19
### 🚨 Breaking Changes
8
20
9
-
- Cheetah is now vectorised. This means that you can run multiple simulations in parallel by passing a batch of beams and settings, resulting a number of interfaces being changed. For Cheetah developers this means that you now have to account for an arbitrary-dimensional tensor of most of the properties of you element, rather than a single value, vector or whatever else a property was before. (see #116, #157, #170, #172, #173, #198, #208, #213, #215, #218, #229, #233, #258, #265, #284, #291) (@jank324, @cr-xu, @hespe, @roussel-ryan)
21
+
- Cheetah is now vectorised. This means that you can run multiple simulations in parallel by passing a batch of beams and settings, resulting a number of interfaces being changed. For Cheetah developers this means that you now have to account for an arbitrary-dimensional tensor of most of the properties of you element, rather than a single value, vector or whatever else a property was before. (see #116, #157, #170, #172, #173, #198, #208, #213, #215, #218, #229, #233, #258, #265, #284, #291) (@jank324, @cr-xu, @Hespe, @roussel-ryan)
10
22
- As part of the vectorised rewrite, the `Aperture` no longer removes particles. Instead, `ParticleBeam.survival_probabilities` tracks the probability that a particle has survived (i.e. the inverse probability that it has been lost). This also comes with the removal of `Beam.empty`. Note that particle losses in `Aperture` are currently not differentiable. This will be addressed in a future release. (see #268) (@cr-xu, @jank324)
11
-
- The fifth particle coordinate `s` is renamed to `tau`. Now Cheetah uses the canonical variables in phase space $(x,px=\frac{P_x}{p_0},y,py, \tau=c\Delta t, \delta=\Delta E/{p_0 c})$. In addition, the trailing "s" was removed from some beam property names (e.g. `beam.xs` becomes `beam.x`). (see #163, #284) (@cr-xu, @hespe)
23
+
- The fifth particle coordinate `s` is renamed to `tau`. Now Cheetah uses the canonical variables in phase space $(x,px=\frac{P_x}{p_0},y,py, \tau=c\Delta t, \delta=\Delta E/{p_0 c})$. In addition, the trailing "s" was removed from some beam property names (e.g. `beam.xs` becomes `beam.x`). (see #163, #284) (@cr-xu, @Hespe)
12
24
-`Screen` no longer blocks the beam (by default). To return to old behaviour, set `Screen.is_blocking = True`. (see #208) (@jank324, @roussel-ryan)
13
-
- The way `dtype`s are determined is now more in line with PyTorch's conventions. This may cause different-than-expected `dtype`s in old code. (see #254) (@hespe, @jank324)
14
-
-`Beam.parameters()` no longer shadows `torch.nn.Module.parameters()`. The previously returned properties now need to be queried individually. (see #300) (@hespe)
15
-
-`e1` and `e2` in `Dipole` and `RBend` have been renamed and made more consistent between the different magnet types. They now have prefixes `dipole_` and `rbend_` respectively. (see #289) (@hespe, @jank324)
16
-
- The `_transfer_map` property of `CustomTransferMap` has been renamed to `predefined_transfer_map`. (see #289) (@hespe, @jank324)
25
+
- The way `dtype`s are determined is now more in line with PyTorch's conventions. This may cause different-than-expected `dtype`s in old code. (see #254) (@Hespe, @jank324)
26
+
-`Beam.parameters()` no longer shadows `torch.nn.Module.parameters()`. The previously returned properties now need to be queried individually. (see #300) (@Hespe)
27
+
-`e1` and `e2` in `Dipole` and `RBend` have been renamed and made more consistent between the different magnet types. They now have prefixes `dipole_` and `rbend_` respectively. (see #289) (@Hespe, @jank324)
28
+
- The `_transfer_map` property of `CustomTransferMap` has been renamed to `predefined_transfer_map`. (see #289) (@Hespe, @jank324)
17
29
18
30
### 🚀 Features
19
31
@@ -27,27 +39,27 @@ This is a major release with significant upgrades under the hood of Cheetah. Des
27
39
-`Quadrupole` now supports tracking with Cheetah's matrix-based method or with Bmad's more accurate method (see #153) (@jp-ga, @jank324)
28
40
- Port Bmad-X tracking methods to Cheetah for `Quadrupole`, `Drift`, and `Dipole` (see #153, #240) (@jp-ga, @jank324)
29
41
- Add `TransverseDeflectingCavity` element (following the Bmad-X implementation) (see #240, #278#296) (@jp-ga, @cr-xu, @jank324)
30
-
-`Dipole` and `RBend` now take a focusing moment `k1` (see #235, #247) (@hespe)
31
-
- Implement a converter for lattice files imported from Elegant (see #222, #251, #273, #281) (@hespe, @jank324)
32
-
-`Beam` and `Element` objects now have a `.clone()` method to create a deep copy (see #289) (@hespe, @jank324)
42
+
-`Dipole` and `RBend` now take a focusing moment `k1` (see #235, #247) (@Hespe)
43
+
- Implement a converter for lattice files imported from Elegant (see #222, #251, #273, #281) (@Hespe, @jank324)
44
+
-`Beam` and `Element` objects now have a `.clone()` method to create a deep copy (see #289) (@Hespe, @jank324)
33
45
-`ParticleBeam` now comes with methods for plotting the beam distribution in a variety of ways (see #292) (@roussel-ryan, @jank324)
34
46
35
47
### 🐛 Bug fixes
36
48
37
49
- Now all `Element` have a default length of `torch.zeros((1))`, fixing occasional issues with using elements without length, such as `Marker`, `BPM`, `Screen`, and `Aperture`. (see #143) (@cr-xu)
38
50
- Fix bug in `Cavity``_track_beam` (see #150) (@jp-ga)
39
-
- Fix issue where dipoles would not get a unique name by default (see #186) (@hespe)
51
+
- Fix issue where dipoles would not get a unique name by default (see #186) (@Hespe)
40
52
- Add `name` to `Drift` element `__repr__` (see #201) (@ansantam)
41
53
- Fix bug where `dtype` was not used when creating a `ParameterBeam` from Twiss parameters (see #206) (@jank324)
42
54
- Fix bug after running `Segment.inactive_elements_as_drifts` the drifts could have the wrong `dtype` (see #206) (@jank324)
43
55
- Fix an issue where splitting elements would result in splits with a different `dtype` (see #211) (@jank324)
44
56
- Fix issue in Bmad import where collimators had no length by interpreting them as `Drift` + `Aperture` (see #249) (@jank324)
45
-
- Fix NumPy 2 compatibility issues with PyTorch on Windows (see #220, #242) (@hespe)
57
+
- Fix NumPy 2 compatibility issues with PyTorch on Windows (see #220, #242) (@Hespe)
46
58
- Fix issue with Dipole hgap conversion in Bmad import (see #261) (@cr-xu)
47
-
- Fix plotting for segments that contain tensors with `require_grad=True` (see #288) (@hespe)
48
-
- Fix bug where `Element.length` could not be set as a `torch.nn.Parameter` (see #301) (@jank324, @hespe)
49
-
- Fix registration of `torch.nn.Parameter` at initilization for elements and beams (see #303) (@hespe)
50
-
- Fix warnings about NumPy deprecations and unintentional tensor clones (see #308) (@hespe)
59
+
- Fix plotting for segments that contain tensors with `require_grad=True` (see #288) (@Hespe)
60
+
- Fix bug where `Element.length` could not be set as a `torch.nn.Parameter` (see #301) (@jank324, @Hespe)
61
+
- Fix registration of `torch.nn.Parameter` at initilization for elements and beams (see #303) (@Hespe)
62
+
- Fix warnings about NumPy deprecations and unintentional tensor clones (see #308) (@Hespe)
51
63
52
64
### 🐆 Other
53
65
@@ -57,13 +69,25 @@ This is a major release with significant upgrades under the hood of Cheetah. Des
57
69
- Update reference from arXiv preprint to PRAB publication (see #166) (@jank324)
58
70
- Rename converter modules to the respective name of the accelerator code (see #167) (@jank324)
59
71
- Added imports to the code example in the README (see #188) (@jank324)
60
-
- Refactor definitions of physical constants (see #189) (@hespe)
72
+
- Refactor definitions of physical constants (see #189) (@Hespe)
61
73
- Fix the quadrupole strength units in the quadrupole docstring (see #202) (@ansantam)
62
-
- Add CI runs for macOS (arm64) and Windows (see #226) (@cr-xu, @jank324, @hespe)
74
+
- Add CI runs for macOS (arm64) and Windows (see #226) (@cr-xu, @jank324, @Hespe)
63
75
- Clean up CI pipelines (see #243, #244) (@jank324)
64
76
- Fix logo display in README (see #252) (@jank324)
65
-
- Made `Beam` an abstract class (see #284) (@hespe)
77
+
- Made `Beam` an abstract class (see #284) (@Hespe)
66
78
- Releases are now automatically archived on Zenodo and given a DOI (@jank324)
79
+
- The Acknowledgements section in the README has been updated to reflect new contributors (see #304) (@jank324, @AnEichler)
where the optional keyword argument `beam` is the incoming beam represented by the reference particles. Cheetah will use a default incoming beam, if no beam is passed.
93
93
@@ -122,7 +122,7 @@ If you use Cheetah, please cite the following two papers:
122
122
123
123
Activate your virtual environment. (Optional)
124
124
125
-
Install the cheetah package as editable
125
+
Install the `cheetah` package as editable
126
126
127
127
```sh
128
128
pip install -e .
@@ -137,7 +137,38 @@ pre-commit install
137
137
138
138
## Acknowledgements
139
139
140
-
We acknowledge the contributions of the following people to the development of Cheetah: Jan Kaiser, Chenran Xu, Oliver Stein, Annika Eichler, Andrea Santamaria Garcia and others.
140
+
### Author Contributions
141
+
142
+
The following people have contributed to the development of Cheetah:
143
+
144
+
- Jan Kaiser (@jank324)
145
+
- Chenran Xu (@cr-xu)
146
+
- Annika Eichler (@AnEichler)
147
+
- Andrea Santamaria Garcia (@ansantam)
148
+
- Christian Hespe (@Hespe)
149
+
- Oliver Stein (@OliStein523)
150
+
- Grégoire Charleux (@greglenerd)
151
+
- Remi Lehe (@RemiLehe)
152
+
- Axel Huebl (@ax3l)
153
+
- Juan Pablo Gonzalez-Aguilera (@jp-ga)
154
+
- Ryan Roussel (@roussel-ryan)
155
+
- Auralee Edelen (@lee-edelen)
156
+
157
+
### Institutions
158
+
159
+
The development of Cheetah is a joint effort by members of the following institutions:
<imgsrc="https://github.com/desy-ml/cheetah/raw/master/images/university_of_chicago.png"alt="University of Chicago"style="width: 11em;"vspace="2em"/>
<imgsrc="https://github.com/desy-ml/cheetah/raw/master/images/university_of_liverpool.png"alt="University of Liverpool"style="width: 10em;"vspace="2em"/>
The work to develop Cheetah has in part been funded by the IVF project InternLabs-0011 (HIR3X) and the Initiative and Networking Fund by the Helmholtz Association (Autonomous Accelerator, ZT-I-PF-5-6).
172
+
Further, we gratefully acknowledge funding by the EuXFEL R&D project "RP-513: Learning Based Methods".
173
+
This work is also supported by the U.S. Department of Energy, Office of Science under Contract No. DE-AC02-76SF00515 and the Center for Bright Beams, NSF Award No. PHY-1549132.
143
174
In addition, we acknowledge support from DESY (Hamburg, Germany) and KIT (Karlsruhe, Germany), members of the Helmholtz Association HGF.
The work to develop Cheetah has in part been funded by the IVF project InternLabs-0011 (HIR3X) and the Initiative and Networking Fund by the Helmholtz Association (Autonomous Accelerator, ZT-I-PF-5-6).
181
+
Further, we gratefully acknowledge funding by the EuXFEL R&D project "RP-513: Learning Based Methods".
182
+
This work was also supported by the U.S. National Science Foundation under Award PHY-1549132, the Center for Bright Beams.
183
+
In addition, we acknowledge support from DESY (Hamburg, Germany) and KIT (Karlsruhe, Germany), members of the Helmholtz Association HGF.
0 commit comments