EffelsbergActuator

class pyoof.actuator.EffelsbergActuator(frequency=<Quantity 34.75 GHz>, nrot=1, sign=-1, order=5, sr=<Quantity 3.25 m>, pr=<Quantity 50. m>, resolution=1000, limits_amplitude=<Quantity [-5., 5.] mm>, path_lookup=None, n_reflections=2)[source]

Bases: object

Several tasks for the Effelsberg telescope and the active surface control system located in the 6.5 m sub-reflector. The purpose of all these functions is to transform the phase-error maps obtained from the core pyoof routines, to an equivalent actuator perpendicular displacement to correct those effects seen in the main phase-error maps.

Attributes
frequencyQuantity

Frequency of the observation in Hertz.

nrotint

This is a required rotation to apply to the phase maps (obtained from fit_zpoly) to get the right orientation of the active surface look-up table in the active surface control system.

signint

It is the value of the phase-error amplitude as seen from the active surface, same as nrot is a convention for the Effelsberg telescope.

resolutionint

Resolution for the phase-error map, usually used resolution = 1000 in the pyoof package.

limits_amplitudeQuantity

This is the maximum and minimum amplitude that the actuators can make in a displacement, for the Effelsberg active surface control system is \(\pm5 \mathrm{mm}\).

path_lookupstr

Path for the current look-up table that controls the active surface control system. If None it will select the default table from the FEM model.

self.n_reflectionsint

Number of reflections in the transformation factor tfactor from amplitude in actuators to aperture phase distribution.

Methods Summary

ellipsoidal_actuator_correction([r, a, b])

The truncated ellipsoidal in the sub-reflector has its actuators located across all its surface in 4 concentric rings.

fit_all(phase_pr, alpha)

Wrapper for all least-squares minimizations, Zernike circle polynomials (fit_zpoly) and gravitational deformation model (fit_grav_deformation).

fit_grav_deformation(K_coeff_alpha, alpha)

Finds the full set for a gravitational deformation model given a list of elevations in alpha.

fit_zpoly(phase_pr, alpha[, fem])

Simple Zernike circle polynomial fit to a single phase-error map.

generate_phase_pr(g_coeff, alpha, eac)

Generate a set of phase for the primary reflector phase_pr, given the gravitational deformation coefficients g_coeff for a new set of elevations alpha.

grav_deformation(g_coeff, alpha)

Simple decomposition of the telescope elastic structure and gravitational force into a gravitational deformation model.

interp_surface2rings(actuator_sr)

Bivariate spline approximation over a rectangular mesh.

itransform(phase_pr)

Inverse transformation for transform.

plot([data_r, figsize, title])

Simple plot function for the 11 FEM look-up tables.

read_lookup(interp)

Simple reader for the Effelsberg active surface look-up table.

transform(actuator_sr)

Transformation required to get from the actuators displacement in the sub-reflector to the phase-error map in the primary dish.

write_lookup(fname, actuator_sr)

Easy writer for the active surface standard formatting at the Effelsberg telescope.

Methods Documentation

ellipsoidal_actuator_correction(r=None, a=<Quantity 14.305 m>, b=<Quantity 7.3872 m>)[source]

The truncated ellipsoidal in the sub-reflector has its actuators located across all its surface in 4 concentric rings. This correction takes into account the direction of the applied actuator displacement in order to decompose it in a only vertical component with respect to the telescope pointing axis (\(z_f\)) and not with respect to the sub-reflector normal surface vector.

Parameters
rQuantity

Grid value for the radial variable in length units. If None it will use the default configuration.

aQuantity

Major axis ellipse in length units.

bQuantity

Minor axis ellipse in length units.

Returns
correctionndarray

Two dimensional grid correction to be applied to the phase-error. It is just a simply multiplication of the two.

fit_all(phase_pr, alpha)[source]

Wrapper for all least-squares minimizations, Zernike circle polynomials (fit_zpoly) and gravitational deformation model (fit_grav_deformation).

Parameters
phase_prQuantity

Phase-error map for the primary dish. It must have shape (alpha.size, resolution, resolution).

alphaQuantity

List of elevation angles related to phase_pr.shape[0].

Returns
g_coeffndarray

Two dimensional array for the gravitational deformation coefficients found in the least-squares minimization. The shape of the array will be given by the Zernike circle polynomial order n and the size of the g_coeff coefficients in grav_deformation.

K_coeff_alphandarray

Two dimensional array for the Zernike circle polynomials coefficients. The shape is (alpha.size, N_K_coeff).

fit_grav_deformation(K_coeff_alpha, alpha)[source]

Finds the full set for a gravitational deformation model given a list of elevations in alpha. The list of Zernike circle polynomials coefficients, K_coeff_alpha, must be given in the same order as alpha.

Parameters
K_coeff_alphandarray

Two dimensional array for the Zernike circle polynomials coefficients. The shape is (alpha.size, N_K_coeff).

alphaQuantity

List of elevation angles related to phase_pr.shape[0].

Returns
g_coeffndarray

Two dimensional array for the gravitational deformation coefficients found in the least-squares minimization. The shape of the array will be given by the Zernike circle polynomial order n and the size of the g_coeff coefficients in grav_deformation.

fit_zpoly(phase_pr, alpha, fem=True)[source]

Simple Zernike circle polynomial fit to a single phase-error map. Do not confuse with the fit_zpoly, the later calculates the phase-error maps from a set of beam maps, in this case we only adjust polynomials to the phase, an easier process.

Parameters
phase_prQuantity

Phase-error map for the primary dish. It must have shape (alpha.size, resolution, resolution).

alphaQuantity

List of elevation angles related to phase_pr.shape[0].

fembool

If fem (Finite Element Method) is True then the Zernike circle polynomials coefficients will be adjusted without tilt and and overall amplitude. If False it will adjust all available polynomials given by the order given to the class.

Returns
K_coeff_alphandarray

Two dimensional array for the Zernike circle polynomials coefficients. The shape is (alpha.size, N_K_coeff).

generate_phase_pr(g_coeff, alpha, eac)[source]

Generate a set of phase for the primary reflector phase_pr, given the gravitational deformation coefficients g_coeff for a new set of elevations alpha.

Parameters
g_coeffndarray

Two dimensional array for the gravitational deformation coefficients found in the least-squares minimization. The shape of the array will be given by the Zernike circle polynomial order n and the size of the g_coeff coefficients in grav_deformation.

alphaQuantity

List of new elevation angles.

eacbool

If True it will activate the ellipsoidal actuator correction, described in ellipsoidal_actuator_correction.

Returns
phase_prQuantity

Phase-error map for the primary dish. It must have shape (alpha.size, resolution, resolution).

grav_deformation(g_coeff, alpha)[source]

Simple decomposition of the telescope elastic structure and gravitational force into a gravitational deformation model. The model takes into account only the elevation angle and not azimuth (since it cancels out).

Parameters
g_coeffndarray or list

It has the list of three gravitational/elastic coefficients to supply the model.

alphaQuantity

Single angle related to the three g_coeff coefficients.

Returns
Kfloat

Single Zernike circle polynomial coefficient related to a single elevation angle alpha.

interp_surface2rings(actuator_sr)[source]

Bivariate spline approximation over a rectangular mesh. It interpolates from a two dimensional array to a one dimensional set of concentric rings. Result is in the same format as in the default look-up table, and it is ready to be written.

Parameters
actuator_srQuantity

Three dimensional array, in the pyoof format, for the actuators displacement in the sub-reflector. It must have shape (alpha.size, resolution, resolution).

Returns
lookup_tableQuantity

Array with shape lookup_table.shape = (11, 96), in the same format as in the standard look-up table at Effelsberg telescope.

itransform(phase_pr)[source]

Inverse transformation for transform.

Parameters
phase_prQuantity

Phase-error map for the primary dish. It must have shape (alpha.size, resolution, resolution).

Returns
actuator_srQuantity

Two or three dimensional array, in the pyoof format, for the actuators displacement in the sub-reflector. It must have shape (alpha.size, resolution) or (alpha.size, resolution, resolution).

plot(data_r=None, figsize=(16, 5.5), title=None)[source]

Simple plot function for the 11 FEM look-up tables. If data_r is None it will compute the standard FEM look-up table from Effelsberg.

Parameters
data_rQuantity or None

Phase-error map for the primary dish or actuator displacement sub-reflector. It must have shape (alpha.size, resolution, resolution). The array data_r can be in units of radians or length.

figsizelist or tuple

Width, height in inches.

titlestr or None

Title name.

Returns
figFigure

FEM look-up table figure.

read_lookup(interp)[source]

Simple reader for the Effelsberg active surface look-up table.

Parameters
interpbool

If True it will compute the interpolated maps.

Returns
alpha_lookupQuantity

List of angles from the look-up table.

actuator_sr_lookupQuantity

Actuators surface perpendicular displacement as seen from the sub-reflector in the standard grid format from pyoof.

transform(actuator_sr)[source]

Transformation required to get from the actuators displacement in the sub-reflector to the phase-error map in the primary dish.

Parameters
actuator_srQuantity

Two or three dimensional array, in the pyoof format, for the actuators displacement in the sub-reflector. It must have shape (alpha.size, resolution) or (alpha.size, resolution, resolution).

Returns
phase_prQuantity

Phase-error map for the primary dish. It must have shape (alpha.size, resolution, resolution).

write_lookup(fname, actuator_sr)[source]

Easy writer for the active surface standard formatting at the Effelsberg telescope. The writer admits the actuator sub-reflector perpendicular displacement in the same shape as the pyoof format (with the exact angle list as in alpha_lookup format), then it grids the data to the active surface look-up format.

Parameters
fnamestr

String to the name and path for the look-up table to be stored.

actuator_srQuantity

Two or three dimensional array, in the pyoof format, for the actuators displacement in the sub-reflector. It must have shape (11, 96) or (11, resolution, resolution). The angles must be same as alpha_lookup (alpha_lookup.size = 11).