20181115 Create NEW KL_v26 from data collected on 20180912

Compare Mode shapes from KL_v26, KL_v22 and bad_KL_v26 (previously KL_v26)

The important thing to note is that both the KL_v26 and KL_v22 (which we measured good reconstructors) look like astigmatism. The Bad (old) KL_v26 astigmatism has several pure modes mixed together and can be seen as astigmatism plus some higher order modes. This mixing of modes is probably due to the high telescope vibrations present when the Influence functions were measured used for the determination of the Bad (old) KL_v26 basis set. This mixing in the Bad (old) KL_v26 is much stronger for high order modes while the KL_v26 and KL_v22 high order modes look "pure" (symetric).

The new KL_v26 Basis Set look quite good and should (but no guarantee) make good reconstructors.

  • astigmatism: Image order KL_v26, KL_v22, bad_KL_v26
    astig_v26.jpg astig_v22.jpg astig_v26_bad.jpg

  • High Order: Image order KL_v26, KL_v22, bad_KL_v26
    high_v26.jpg high_v22.jpg high_v26_bad.jpg

KL_v26 Creation

21:22 Start by creating mm object
  • aoidl
  • @startup
  • IDL> restore, '/local/aomeas/adsec_calib/if_functions/20180912_032706/adsec_save.sav', /v
% RESTORE: Portable (XDR) SAVE/RESTORE file.
% RESTORE: Save file written by AOeng@dxadsec.mountain.lbto.org, Thu Sep 13 04:45:00 2018.
% RESTORE: IDL version 7.1 (linux, x86_64).
% RESTORE: Restored variable: ADSEC_SAVE.
IDL> adsec=adsec_save
IDL> help, adsec                                                                         
ADSEC (ADSEC_BLOCK)
                STRUCT    = ->  Array[1]
IDL> help, adsec, /struct
** Structure <24726b8>, 123 tags, length=12951176, data length=12943081, refs=2:
   N_ACTUATORS     INT            672
   N_CRATES        INT              6
   N_BCU           INT              6
   N_BOARD_PER_BCU INT             14
   N_DSP_PER_BOARD INT              2
   N_ACT_PER_DSP   INT              4
   ACT_COORDINATES FLOAT     Array[2, 672]
   ACT_W_CURR      INT       Array[657]
   ACT_WO_CURR     INT       Array[15]
   ACT_W_POS       INT       Array[656]
   ACT_WO_POS      INT       Array[16]
   ACT_W_CL        INT       Array[646]
   ACT_WO_CL       INT       Array[26]
   ACT_WO_CL_ON_SET
                   INT       Array[1]
   ACT_WO_ICC      INT       Array[2]
   ACT_W_FFB_ON_FLAT

IDL> TN=['20180912_022930','20180912_023204','20180912_023410','20180912_023548','20180912_023823','20180912_024037','20180912_024314','20180912_024423','20180912_024545','20180912_024659','20180912_024818','20180912_024937','20180912_025043','20180912_025330','20180912_025504','20180912_025606','20180912_025705','20180912_025808','20180912_025916','20180912_030026','20180912_030432','20180912_030539','20180912_030642','20180912_030742','20180912_030843','20180912_031001','20180912_031108','20180912_031419','20180912_031517','20180912_031616','20180912_031718','20180912_031816','20180912_031941','20180912_032148','20180912_032304','20180912_032359','20180912_032504','20180912_032600','20180912_032706']
  • IDL> mm=obj_new('mirmodes', TN, binning=4)
IDL> mm->summary_opds
tracknum 		 nn 	 amp [nm] 	 first 	  last 	 missing    sampling
20180912_022930 	 125 	  500.0 	 0 	 4 	 0 	 990 x 1002
20180912_023204 	 125 	  350.0 	 5 	 9 	 0 	 990 x 1002
20180912_023410 	 51 	  250.0 	 10 	 19 	 0 	 990 x 1002
20180912_023548 	 35 	  150.0 	 20 	 37 	 0 	 990 x 1002
20180912_023823 	 35 	  150.0 	 38 	 55 	 0 	 990 x 1002
20180912_024037 	 35 	  150.0 	 56 	 73 	 0 	 990 x 1002
20180912_024314 	 35 	  150.0 	 74 	 91 	 0 	 990 x 1002
20180912_024423 	 35 	  100.0 	 92 	 109 	 0 	 990 x 1002
20180912_024545 	 35 	  100.0 	 110 	 127 	 0 	 990 x 1002
20180912_024659 	 35 	   80.0 	 128 	 145 	 0 	 990 x 1002
20180912_024818 	 35 	   80.0 	 146 	 163 	 0 	 990 x 1002
20180912_024937 	 35 	   80.0 	 164 	 181 	 0 	 990 x 1002
20180912_025043 	 35 	   80.0 	 182 	 199 	 0 	 990 x 1002
20180912_025330 	 35 	   70.0 	 200 	 217 	 0 	 990 x 1002
20180912_025504 	 35 	   50.0 	 218 	 235 	 0 	 990 x 1002
20180912_025606 	 35 	   50.0 	 236 	 253 	 0 	 990 x 1002
20180912_025705 	 35 	   50.0 	 254 	 271 	 0 	 990 x 1002
20180912_025808 	 35 	   50.0 	 272 	 289 	 0 	 990 x 1002
20180912_025916 	 35 	   40.0 	 290 	 307 	 0 	 990 x 1002
20180912_030026 	 35 	   40.0 	 308 	 325 	 0 	 990 x 1002
20180912_030432 	 35 	   40.0 	 326 	 343 	 0 	 990 x 1002
20180912_030539 	 35 	   40.0 	 344 	 361 	 0 	 990 x 1002
20180912_030642 	 35 	   40.0 	 362 	 370 	 0 	 990 x 1002
20180912_030742 	 35 	   40.0 	 371 	 379 	 0 	 990 x 1002
20180912_030843 	 35 	   40.0 	 380 	 397 	 0 	 990 x 1002
20180912_031001 	 35 	   40.0 	 398 	 415 	 0 	 990 x 1002
20180912_031108 	 35 	   40.0 	 416 	 433 	 0 	 990 x 1002
20180912_031419 	 35 	   40.0 	 434 	 451 	 0 	 990 x 1002
20180912_031517 	 35 	   40.0 	 452 	 469 	 0 	 990 x 1002
20180912_031616 	 35 	   40.0 	 470 	 487 	 0 	 990 x 1002
20180912_031718 	 35 	   40.0 	 488 	 505 	 0 	 990 x 1002
20180912_031816 	 35 	   40.0 	 506 	 523 	 0 	 990 x 1002
20180912_031941 	 35 	   40.0 	 524 	 541 	 0 	 990 x 1002
20180912_032148 	 35 	   40.0 	 542 	 559 	 0 	 990 x 1002
20180912_032304 	 35 	   40.0 	 560 	 577 	 0 	 990 x 1002
20180912_032359 	 35 	   40.0 	 578 	 595 	 0 	 990 x 1002
20180912_032504 	 35 	   40.0 	 596 	 613 	 0 	 990 x 1002
20180912_032600 	 35 	   40.0 	 614 	 631 	 0 	 990 x 1002
20180912_032706 	 35 	   40.0 	 632 	 645 	 0 	 990 x 1002
  • IDL> mm->collect_opds
  • IDL> mm->mask_calibration, /SHOW
    • valid points:
      valid_points.jpg
    • union mask:
      union_mask.jpg
    • my Union:
      my_union.jpg
    • Intersect Mask:
      intersect_mask.jpg
  • IDL> mm->produce_ifmat
  • IDL> mm->check_noise
    • Surface Plot:
      surf.jpg
    • Surface RMS Plot:
      surf_rms.jpg
  • IDL> mm->inv_ifmat

Tweak Mask 0.13, 0.99

  • IDL> mm->tweak_mask, '.13.99', oc=0.13, radmax=0.99
  • IDL> mm->tweak_ifmat, '.13.99'
    • Tweaked Mask with inner diameter oc=0.13, radmax=0.99:
      teaked_mask.jpg
  • IDL> mm->showme_the_modes, nrows=16, ncol=20, zoom=0.22
  • IDL> list=indgen(327)+320
  • IDL> mm->showme_the_modes, mode_num_idx=list, nrows=16, ncol=20, zoom=0.22
    • Mirror Modes:
      mm_mode_1.jpg
    • Mirror Modes:
      mm_mode_2.jpg
  • IDL> mm->inv_ifmat, mask_id='.13.99'
  • IDL> klf = obj_new('klfit', mm, '.13.99')
  • IDL> klf->create_theo_kls
  • IDL> save, klf, file='/local/aomeas/adsec_calib/if_functions/20180912_mirmodes/klf_1.sav'
  • IDL> klf->create_ortho_fitted_kls
  • IDL> save, klf, file='/local/aomeas/adsec_calib/if_functions/20180912_mirmodes/klf_2.sav'
  • IDL> klf->check_fitting

Interactive Mask 0.19, 0.29

  • IDL> mm->collect_opds
  • IDL> mm->mask_calibration, /SHOW
  • IDL> mm->produce_ifmat
  • IDL> mm->check_noise
  • IDL> mm->inv_ifmat
  • IDL> mm->interactive_tweak_mask
    • Outer=0.29, Inner=0.29
    • intersect_gmask_rebin_.29.29.sav
  • IDL> mm->tweak_ifmat, '.29.29'
  • IDL> save, mm, file='/local/aomeas/adsec_calib/if_functions/20180912_mirmodes/mm_.29.29.sav'
  • IDL> klf = obj_new('klfit', mm, '.29.29')
  • IDL> klf->create_theo_kls
  • IDL> print, klf->kl_fit_dir()
    • /towerdata/adsec_calib/if_functions/20180912_mirmodes/KLdata_fit_.29.29_/
  • IDL> help, mm
    • MM OBJREF = <ObjHeapVar12(MIRMODES)>
  • IDL> mm->save_MMmatrix, 'FLAO1', mask_id='.29.29'
    • Loading IF matrix...
    • Loading MM2C....
    • Saving MMmatrix file: /towerdata/adsec_calib/if_functions/20180912_mirmodes/MMmatrix_FLAO1_20180912.sav
  • IDL> klf->save_KLmatrix, "KL_v26"
    • Restoring KL data...
    • % READFITS: Now reading 672 by 672 array
    • Saving KLmatrix file: /towerdata/adsec_calib/if_functions/20180912_mirmodes/KLdata_fit_.29.29_/KLmatrix_KL_v26.sav
  • IDL> restore, '/local/aomeas/adsec_calib/if_functions/20180912_mirmodes/MMmatrix_FLAO1_20180912.sav', /v
    • % RESTORE: Portable (XDR) SAVE/RESTORE file.
    • % RESTORE: Save file written by AOeng@dxadsec.mountain.lbto.org, Fri Nov 16 02:37:49 2018.
    • % RESTORE: IDL version 7.1 (linux, x86_64).
    • % RESTORE: Restored variable: MMMATRIX.
    • % RESTORE: Restored variable: DPIX.
    • % RESTORE: Restored variable: IDX_MASK.
    • % RESTORE: Restored variable: XX.
    • % RESTORE: Restored variable: YY.
    • % RESTORE: Restored variable: MM2C.
    • % RESTORE: Restored variable: ADSEC_SAVE.
    • % RESTORE: Restored variable: MM_INFO.
  • IDL> print, dpix
    • 216
  • IDL> im2mmmatrix_new, '20180912', rebfactor=4
    • ..
    • ...
    • MMMATRIX FLOAT = Array[646, 35813]
    • DPIX LONG = 216
    • XX FLOAT = Array[35813]
    • YY FLOAT = Array[35813]
    • MM2C DOUBLE = Array[646, 672]
    • IDX_MASK LONG = Array[35813]
    • $ADOPT_MEAS/adsec_calib/optical-projection/20180912/MMmatrix.sav
    • $ADOPT_MEAS/adsec_calib/optical-projection/20180912
  • IDL> make_offload_matrix_proj_new, '20180912', nzernike=22, /save
  • [AOeng@dxadsec 20180912]$ pwd
    • /local/aomeas/adsec_calib/optical-projection/20180912
  • [AOeng@dxadsec 20180912]$ ls -1
    • MMmatrix.sav
    • pmz.fits
    • pos2modes.fits

Test KL_v26 via Distrubance Generation

  • $ intmatDisturbGUI
    • KL_v26
    • 20 modes
    • 3 frames
    • 10 push/pulls
    • optimized_amano_6l.fits (not important)
    • /local/aomeas/adsec_calib/M2C/KL_v26/disturb/CmdDisturb_20181116_171421.fits
$ aoidl
IDL> @startup
IDL> image = readfits("/local/aomeas/adsec_calib/M2C/KL_v26/disturb/CmdDisturb_20181116_171421.fits", head)
IDL> restore, "/local/aomeas/adsec_calib/if_functions/20180912_mirmodes/adsec_save.sav", /v
IDL> loadct, 3
IDL> i=211
IDL> display, image[i,adsec_save.act_w_cl], adsec_save.act_w_cl, /no_num, /SH, /sm

IDL> for i=200,3999 do begin display, image[i,adsec_save.act_w_cl], adsec_save.act_w_cl, /no_num, /SH, TITLE=strtrim(string(i),2), /SM & wait, 0.5
    • Only see +- Tip for 10 push/pulls. Why not 20 modes?
  • $ intmatDisturbGUI
    • KL_v26
    • 100 modes
    • 3 frames
    • 1 push/pulls
    • 672_0.1.fits (not important)
    • /local/aomeas/adsec_calib/M2C/KL_v26/disturb/CmdDisturb_20181116_172936.fits
    • Still only see +- Tip for 10 push/pulls
    • 672_0.7.fits
    • /local/aomeas/adsec_calib/M2C/KL_v26/disturb/CmdDisturb_20181116_173857.fits
  • $ intmatDisturbGUI
    • KL_v22
    • 100 modes
    • 3 frames
    • 1 push/pulls
    • 672_0.1.fits (not important)
    • /local/aomeas/adsec_calib/M2C/KL_v22/disturb/CmdDisturb_20181116_174048.fits
  • cp KL_v22/amp_envelope.fits KL_v26/.
    • /local/aomeas/adsec_calib/M2C/KL_v26/disturb/CmdDisturb_20181116_175338.fits

-- DougMiller - 15 Nov 2018
I Attachment Action Size Date Who Comment
astig_v22.jpgjpg astig_v22.jpg manage 66 K 16 Nov 2018 - 18:33 DougMiller Astigmatism
astig_v26.jpgjpg astig_v26.jpg manage 68 K 16 Nov 2018 - 18:34 DougMiller astigmatism
astig_v26_bad.jpgjpg astig_v26_bad.jpg manage 72 K 16 Nov 2018 - 18:33 DougMiller Astigmatism
high_v22.jpgjpg high_v22.jpg manage 76 K 16 Nov 2018 - 18:34 DougMiller High Order
high_v26.jpgjpg high_v26.jpg manage 75 K 16 Nov 2018 - 18:35 DougMiller High Order
high_v26_bad.jpgjpg high_v26_bad.jpg manage 80 K 16 Nov 2018 - 18:35 DougMiller High Order
intersect_mask.jpgjpg intersect_mask.jpg manage 68 K 15 Nov 2018 - 21:40 DougMiller Intersect Mask
mm_mode_1.jpgjpg mm_mode_1.jpg manage 547 K 15 Nov 2018 - 22:09 DougMiller Mirror Modes
mm_mode_2.jpgjpg mm_mode_2.jpg manage 610 K 15 Nov 2018 - 22:10 DougMiller Mirror Modes
my_union.jpgjpg my_union.jpg manage 72 K 15 Nov 2018 - 21:40 DougMiller my Union
surf.jpgjpg surf.jpg manage 86 K 15 Nov 2018 - 21:45 DougMiller Surface Plot
surf_rms.jpgjpg surf_rms.jpg manage 100 K 15 Nov 2018 - 21:46 DougMiller Surface RMS Plot
teaked_mask.jpgjpg teaked_mask.jpg manage 48 K 15 Nov 2018 - 22:09 DougMiller Tweaked Mask with inner diameter oc=0.13, radmax=0.99
union_mask.jpgjpg union_mask.jpg manage 69 K 15 Nov 2018 - 21:40 DougMiller union mask
valid_points.jpgjpg valid_points.jpg manage 140 K 15 Nov 2018 - 21:39 DougMiller valid points
Topic revision: r3 - 16 Nov 2018, DougMiller
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