omc3

Python 3 codes for beam optics measurements and corrections in circular particle accelerators

https://github.com/pylhc/omc3

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    6 of 15 committers (40.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (19.2%) to scientific vocabulary

Keywords

accelerator-physics analysis cern frequency-analysis mad-x omc optics optics-measurements particle-accelerators plots python
Last synced: 6 months ago · JSON representation

Repository

Python 3 codes for beam optics measurements and corrections in circular particle accelerators

Basic Info
Statistics
  • Stars: 14
  • Watchers: 15
  • Forks: 10
  • Open Issues: 67
  • Releases: 68
Topics
accelerator-physics analysis cern frequency-analysis mad-x omc optics optics-measurements particle-accelerators plots python
Created over 7 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Codeowners Zenodo

README.md

omc3 logo 3

Tests GitHub last commit GitHub release DOI

This is the python-tool package of the Optics Measurements and Corrections team (OMC) at CERN.

Most of the codes are generic and not limited to CERN accelerators, and the package can easily be used for your favorite circular accelerator. To see how to adapt this for your machine, see our documentation, Model section. To contribute, see our guidelines on the OMC website.

Documentation

Installing

The package is deployed on PyPI and can easily be installed via pip:

bash python -m pip install omc3

For development purposes, we recommend creating a new virtual environment and installing from VCS in editable mode with all extra dependencies (cern for packages only available in the CERN GPN, test for pytest and relevant plugins, and doc for packages needed to build documentation).

bash git clone https://github.com/pylhc/omc3 python -m pip install --editable "omc3[all]"

Functionality

Codes can then be run with either python -m omc3.SCRIPT --FLAG ARGUMENT or calling the .py file directly.

Main Scripts Main scripts to be executed lie in the [`/omc3`](omc3) directory. These include: - `hole_in_one.py` to perform frequency analysis on turn by turn BPM data and infer optics (and more) for a given accelerator. - `kmod_importer.py` to average, import and calculate lumi-imbalace K-modulation results. - `knob_extractor.py` to extract from `NXCALS` the value of given knobs in the machine at a given time. - `model_creator.py` to generate optics models required for optics analysis. - `global_correction.py` to calculate corrections from measurement files. - `response_creator.py` to provide correction response files. - `tbt_converter.py` to convert different turn by turn data types to `SDDS`, potentially adding noise. - `amplitude_detuning_analysis.py` to perform amp. det. analysis on optics data with tune correction. - `madx_wrapper.py` to start a `MAD-X` run with a file or string as input.
Plotting Scripts Plotting scripts for analysis outputs can be found in [`/omc3/plotting`](omc3/plotting): - `plot_spectrum.py` to generate plots from files generated by frequency analysis. - `plot_bbq.py` to generate plots from files generated by BBQ analysis. - `plot_amplitude_detuning.py` to generate plots from files generated by amplitude detuning analysis. - `plot_optics_measurements.py` to generate plots from files generated by optics_measurements. - `plot_tfs.py` all-purpose tfs-file plotter. - `plot_kmod_results.py` to plot the beta and waist of the K-modulation results.
Other Scripts Other general utility scripts are in [`/omc3/scripts`](omc3/scripts): - `update_nattune_in_linfile.py` to update the natural tune columns in the lin files by finding the highest peak in the spectrum in a given interval. - `write_madx_macros.py` to generate `MAD-X` tracking macros with observation points from a TWISS file. - `merge_kmod_results.py` to merge LSA results files created by kmod, and add the luminosity imbalance if the 4 needed IP/Beam files combination are present. - `fake_measurement_from_model.py` to create a fake measurement based on a model TWISS file. - `betabeatsrc_output_converter.py` to convert outputs from our old codes to `omc3`'s new standardized format. - `linfile_clean.py` to automatically clean given columns in lin files. - `kmod_average.py` to calculate the average of multiple K-modulation measurements. - `kmod_import.py` to import a K-modulation measurement into an optics-measurement directory. - `kmod_lumi_imbalace.py` to calculate the luminosity imbalance between two IPs from averaged K-modulation files. - `bad_bpms_summary.py` to collect and summarize the bad BPMs from GUI runs. Example use for these scripts can be found in the [`tests`](tests) files. Documentation including relevant flags and parameters can be found at .

License

This project is licensed under the MIT License - see the LICENSE file for details.

Owner

  • Name: PyLHC
  • Login: pylhc
  • Kind: organization
  • Location: CERN

Organisation for the OMC Team at CERN, in BE-ABP-LNO.

GitHub Events

Total
  • Create event: 51
  • Commit comment event: 1
  • Issues event: 57
  • Release event: 20
  • Watch event: 1
  • Delete event: 34
  • Issue comment event: 178
  • Push event: 305
  • Pull request review comment event: 445
  • Pull request review event: 453
  • Pull request event: 68
  • Fork event: 2
Last Year
  • Create event: 51
  • Commit comment event: 1
  • Issues event: 57
  • Release event: 20
  • Watch event: 1
  • Delete event: 34
  • Issue comment event: 178
  • Push event: 305
  • Pull request review comment event: 445
  • Pull request review event: 453
  • Pull request event: 68
  • Fork event: 2

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 197
  • Total Committers: 15
  • Avg Commits per committer: 13.133
  • Development Distribution Score (DDS): 0.782
Past Year
  • Commits: 21
  • Committers: 4
  • Avg Commits per committer: 5.25
  • Development Distribution Score (DDS): 0.238
Top Committers
Name Email Commits
lmalina l****a@c****h 43
JoschD j****y@g****m 36
JoschD 2****D 33
Felix Soubelet 1****t 29
mihofer m****r@c****h 23
awegsche a****r@c****h 9
awegsche a****1@g****m 8
jaimecp89 j****9@g****m 4
Maël Le Garrec m****c@c****h 4
tpersson t****n@c****h 3
Maël Le Garrec m****l@l****g 1
fscarlier f****r 1
Hector Garcia Morales h****s@c****h 1
Felix Soubelet f****t@p****m 1
JacquelineKeintzel 4****l 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 90
  • Total pull requests: 119
  • Average time to close issues: almost 2 years
  • Average time to close pull requests: about 1 month
  • Total issue authors: 8
  • Total pull request authors: 11
  • Average comments per issue: 1.17
  • Average comments per pull request: 1.76
  • Merged pull requests: 90
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 29
  • Pull requests: 26
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 14 days
  • Issue authors: 3
  • Pull request authors: 7
  • Average comments per issue: 0.17
  • Average comments per pull request: 1.42
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JoschD (66)
  • awegsche (7)
  • mihofer (6)
  • tpersson (6)
  • emaclean (5)
  • fsoubelet (4)
  • Mael-Le-Garrec (4)
  • lmalina (4)
Pull Request Authors
  • JoschD (69)
  • fsoubelet (28)
  • awegsche (17)
  • Mael-Le-Garrec (6)
  • fscarlier (6)
  • mihofer (6)
  • tpersson (5)
  • jgray-19 (4)
  • wvangoet (2)
  • yangelis (1)
  • lmalina (1)
Top Labels
Issue Labels
Type: Feature (27) Enhancement (23) Type: Bug (22) Estimate: Easy (17) Bug (15) Estimate: Normal (11) Priority: High (10) Priority: Low (10) Domain: GUI (9) Type: Maintenance (9) Priority: Medium (8) Status: In Progress (8) Feature (6) Type: Question (6) Minor Issue (5) Priority: Critical (5) Estimate: Complicated (4) GUI (3) Domain: Physics (3) Type: Documentation (2) Good First Issue (2) Question (2) Important Issue (1) Maintenance (1) Status: On Hold (1) Documentation (1) Status: Review Needed (1)
Pull Request Labels
Enhancement (22) Bugfix (20) Estimate: Easy (18) Type: Maintenance (16) Feature (15) Type: Feature (14) Status: Review Needed (13) Estimate: Normal (12) Release (11) Bug (11) Type: Bug (11) Priority: Medium (10) Priority: Low (10) Maintenance (10) Type: Release (10) Priority: High (10) Minor Issue (9) Status: In Progress (9) Domain: GUI (7) GUI (6) Documentation (6) Important Issue (5) Domain: Physics (5) Type: CI/CD (3) CI/CD (3) Status: On Hold (2) Type: Documentation (2) Priority: Critical (2) Estimate: Complicated (1)