Git Product home page Git Product logo

python_classes4mad's Introduction

PyLHC Tools

Cron Testing Code Climate coverage Code Climate maintainability (percentage) GitHub last commit GitHub release DOI

This package provides tools for particle accelerator physics complementing the optics measurement analysis tools of the omc3 package. It is a collection of useful scripts for the Optics Measurements and Corrections team (OMC) at CERN, with functionality for data analysis, corrections calculation, simulations management and machine information extraction.

Documentation

Installing

This package is Python 3.7+ compatible, and can be installed through pip:

python -m pip install pylhc

After installing, scripts can be run with either python -m pylhc.SCRIPT --FLAG ARGUMENT or by calling the Python files directly.

For development purposes, we recommend creating a new virtual environment and installing from VCS in editable mode with all extra dependencies:

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

Note: Some scripts access functionality only available on the CERN Technical Network. To use those, you should make sure to install the relevant extra dependencies with python -m pip install "pylhc[cern]".

Functionality

  • Forced DA Analysis - Script to analyze forced DA. (forced_da_analysis.py)
  • Machine Settings Info - Prints an overview over the machine settings at a given time. (machine_settings_info.py)
  • KickGroup Information - Get information about KickGroups. (kickgroups.py)
  • BSRT Logger and BSRT Analysis - Saves data coming straight from LHC BSRT FESA class and allows subsequent analysis. (bsrt_logger.py & bsrt_analysis.py )
  • BPM Calibration Factors - Compute the BPM calibration factors using ballistic optics. Two methods are available: using the beta function and using the dispersion. (bpm_calibration.py)

License

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

python_classes4mad's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python_classes4mad's Issues

Wrong condition in GenMatrix_chromcouple.make_list()

I assume that the big condition in the following function is not correct.

def make_list(x, m, modelcut, errorcut, CorD):
    """Makes list in coupling correction """
    if x == []:
        return []

    result_names_list = []
    count = 0
    for i in range(len(x.NAME)):
        bn = x.NAME[i].upper()
        if bn in m.indx:
            indx = x.indx[bn]         
            if ((abs(x.Cf1001r[indx]-m.Cf1001r[indx]) < modelcut)
                        and (abs(x.Cf1001i[indx]-m.Cf1001i[indx]) < modelcut)
                        and (x.Cf1001iERR[indx] < errorcut)
                        and (x.Cf1001rERR[indx] < errorcut)):
                result_names_list.append(x.NAME[i])
        else:
            print "Not in Response:", bn
            count=count+1

    if count > 0:
        print "Warning: ", count, "BPMs removed from data for not beeing in the model"

    return result_names_list

Take a look at the first part of the condition:
abs(x.Cf1001r[indx]-m.Cf1001r[indx])
The same index is used for experimental data(x) and model(m). This implies that both files have the same order of the BPMs but this is not the case. Some prints of one iteration:

x.indx[bn] = 0
m.indx[bn] = 15
abs(x.Cf1001r[indx]-m.Cf1001r[indx]) = 0.134812763338
abs(x.Cf1001r[index_in_x]-m.Cf1001r[index_in_m]) = 0.0254740238006

So the indexes are different for the same BPM and thus the delta of Cf1001r[i].

@Eothred
Shall I correct it?

MICADO version of Global correction(correct.py) crashes

@rogeliotomas

If correct.py will be called with the tech option 'MICADO' the script invokes Python_Classes4MAD.BCORR.bNCorrNumeric(). This function calls Python_Classes4MAD.GenMatrix.computevectorEXP() and a wrong invocation leads to a crash:

b = beat_input.computevectorEXP(X,Y,DX) - beat_input.zerovector
...
def computevectorEXP(self, x, y, dx, xbet=[], ybet=[]):
...
betx.append(xbet.BETX[xbet.indx[b]])

In the last line the code tries to access the attribute BETX of xbet but xbet equals [] since we invoked the function with only three parameters and xbet and ybet were given default values.
So the code will crash here always.

The 'SVD' version invokes it correctly(but not directly):

[deltas, varslist] = Python_Classes4MAD.GenMatrix.correctbeatEXP(phase_x, phase_y, dx, beat_inp, cut=_InputData.singular_value_cut, app=0, path=_InputData.output_path, xbet=beta_x, ybet=beta_y)

# In correctbeatEXP()
vector = beat_input.computevectorEXP(x, y, dx, xbet, ybet)

SVD version provides additionally previously read xbet and ybet(getbeta[x|y].out).

Adapted same changes for MICADO version. I added xbet(beta_x) and ybet(beta_y):

# correct.py
Python_Classes4MAD.BCORR.bNCorrNumeric(phase_x, phase_y, dx, beat_inp, cut=_InputData.singular_value_cut, ncorr=_InputData.num_of_correctors, app=0, path=_InputData.output_path, beta_x=beta_x, beta_y=beta_y)


# BCORR.py
def bNCorrNumeric(X,Y,DX, beat_input, cut=0.001, ncorr=3, app=0, tol=1e-9,path="./", beta_x=None, beta_y=None):
  ...
  b = beat_input.computevectorEXP(X,Y,DX, beta_x, beta_y)-beat_input.zerovector

Now the script delivers the result files changeparameters*.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.