The shift/check for full rotation (backward/forward) for the 4 binnings requires about 1:30h of daytime + another 30 minutes to setup the WFS.

The pupils files has a file called pupdata.txt, this files has the dimension of the pupils for every binning and the positions x y of the centers.

Output of the pupdata file looks like; (eg bin4)

12.52 25.00 36.00 0.00
12.52 37.00 36.00 0.00
12.52 25.00 24.00 0.00
12.52 37.00 24.00 0.00

Looking at the Ocam viewer and the display of the pupils the scheme of positions are:

1-> 12.52 25.00 36.00 0.00
2-> 12.52 37.00 36.00 0.00
3-> 12.52 25.00 24.00 0.00
4-> 12.52 37.00 24.00 0.00



  • Deploy the ArgosCalibraiton unit.
  • Set Flat the AdsecSX /DX.
  • From adsec machine: >Enable_rr_mode.
  • White source shutter to OPEN FULL(304).
  • Telescope rotator (RFBG or LFBG) rotation speed change from 5 deg/sec to 1 deg/sec.
  • AOS:
    • Acquire, center pupils and Done.
  • Use the WFS control GUI to setup the loop parameters and the Adsec enginnering Gui for the modes to apply.
    • WFS control GUI:
    • Frequency to 200
    • bin=1
    • modulation=10l/D
    • EGAIN=300
    • Adsec engineering GUI:
    • 10_modi gain.
    • WFS control GUI. Close loop.
  • Adsec enginnering GUI.
    • ENABLE the offload (LO OFFLOAD TO TCS)
Once the loop is close the wobble script can be executed.

Execution of the script.

Directory: ~/SOUL.latest/scripts/
  • wobble_test_forward/backward.py


Once the script is running the rotator will move backward or forward depending of the option in the script. The positions of the camera lens and pupils errors are storaged and they can be displayed in the DMS or using the Auxilliayr loop GUI..


Display the camera lens position and pupils errors using the DMS and identify the shift to apply based on number of steps that the camera lens stage x and y reaches the limit.

A rough estimation of the pupil displacement: 25 step of the camera lens corresponds for bin1, and a max of about 100 for Bin4.
  • One pixel Bin 1 ~ 25 steps

The pupil position error should be:
  • Bin1: <0.3
  • Bin2 to 4: <0.5

Example for Bin2.



Open a python shell from the WFS GUI or using the command line.
  • > from Adopt import makePupils
  • > makePupils.movePupils('previous pupil',x,y,240,mode)
    • bin1 ->mode2
    • bin2 ->mode3
    • bin3>-mode4
    • bin4->mode5
  • eg:
  • A shift of -1 pixel in x and y direction for Bin4 (mode5)
[AOeng@soul-sxwfs ~]$ thaoshell.py >>> from AdOpt import makePupils >>> makePupils.movePupils( '20180719_032236', -1, -1, 240, 5) 


Edit the file:$ADOPT_ROOT/conf/wfs/current/processConf/pupilcheckocam2.conf and apply the offset for the bin shifted.

Add the same offset for x and y.


Crop of the file:

# Offset the center used for four-images split

offXBin1 int 0

offYBin1 int 5 # Change for 20210210_205151

offXBin2 int 0

offYBin2 int 2 # Changed for 20210126_190622

offXBin3 int 0

offYBin3 int 1

offXBin4 int 0

offYBin4 int 1


1. Open a terminal execute the comand:

> change_ocam_mode.py 2

The number 2 is for the bin1 ( mode 2) ocam operation mode.
  • bin2 ->mode3
  • bin3>-mode4
  • bin4->mode5
2. Select the new pupil generated number.


selecting the last pupil with number 49.

47: 20210510_220430
48: 20210510_221455
49: 20211014_162849
Enter selection:
eg: 49
AGW power interface loaded
ocam2 interface loaded
ccd47 interface loaded
WARNING: MasterDiagnostic is not working properly. Impossible to notify it if frame size changes !
ttctrl interface loaded
Lamp interface loaded
Camera lens interface loaded
Calling setHObinningOrCcdMode with mode=2
Setting pupil: 20211014_162849
waitProcessStop(): process pupilcheckocam2 did not stop after 10 seconds, sending kill signal
stopProcessByName(): process pupilcheckocam2 killed

load the new pupil to the ao table.

  • Copy the directory linked to the default AO table; table_LUCIFER_-ACE/TTM
  • Edit the field corresponding for the binning and change the pupil file name.
  • Change the link to the new file. eg. table_LUCIFER_ACE-AO.txt -> table_LUCIFER_ACE-AO.txt.20220119
  • ln -sf <new directory> <table_LUCI-default>


Run the Pupil rotation test again to verify the camera lens has the range.

Open the OCAM viewer and check if the image of the close loop pupils masks are shifted respecs to the original previous one.


  • Fabio email

Pupil generation

On AOeng@soul-sxwfs use the "movePupils" functions in the "makePupils" python package:makePupils.movePupils( 'TNpupille', shiftX, shiftY, CCDsize_at_bin1, modo)Will generate a new pupil with shifted masks.Example:
[AOeng@soul-sxwfs ~]$ thaoshell.py >>> from AdOpt import makePupils >>> makePupils.movePupils( '20180719_032236', -1, -1, 240, 5) 
In order to test the new pupils, reload the mode and re-apply the loop parameters (because the modulation will be now zero).

Pupilcheck shift

You will probably need to offset the pupilcheck split position, away from the theoretical CCD center. The file to modify is:$ADOPT_ROOT/conf/wfs/current/processConf/pupilcheckocam2.conf
# Offset the center used for four-images split, in pixels. offXBin1 int 0 offYBin1 int -3 offXBin2 int 0 offYBin2 int 0 offXBin3 int 0 offYBin4 int 0 offXBin4 int 0

-- JuanCarlosGuerra - 10 Feb 2021
Topic revision: r17 - 16 Dec 2022, JuanCarlosGuerra
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback