Getting started with ELAB

General considerations about Object-Oriented IDL

We assume the user is skilled with IDL use. Here follows just a small help about OO syntax with IDL

IDL version previous to 8.0

In IDL <8.0 the syntax is quite bad.

To create an object of class pippo (whose code is written in file "pippo__define.pro"):

IDL> instanceOfTheClass=  obj_new('pippo', argumentsToCreatePippoIfNeeded)

If obj is an instance of a class having function func() the following is needed to execute the function:

IDL> ret= obj->func()

If obj is an instance of a class having a procedure "pro" the following is needed to execute the procedure:

IDL> obj->pro, arguments

If obj s an instance of a class having function func() returning the instance of another class "subobj" having a function pippo() the followinf is needed to execute "pippo":
IDL>subobj= obj->func()
IDL>ret= subobj->pippo()

which is identical to:
IDL>ret= (obj->func())->pippo()

A real example, supposing "ee" is an object of aoelab class.
IDL> powerOfSlopeNumber120From12To50Hz= (ee->slopes())->power(120, from_freq=12, to_freq=50)

IDL version from 8.0

ElabLib can run on all IDL versions after 7.2 (as far as I know!). From 8.0 the OO syntax has been slightly simplified (even if the old one is still compatible) and "->" can be replaced with "." For instance creating an object becomes:
IDL> instanceOfTheClass=  pippo(argumentsToCreatePippoIfNeeded))

While the last example becomes:
IDL> powerOfSlopeNumber120From12To50Hz= (ee.slopes()).power(120, from_freq=12, to_freq=50)

How to start elab on adsecdx or adsecsx

ElabLib on adsecdx and adsecsx is (usually) well configured and ready to use. Please don't use it (too much) during operations because it can slow down the system
% ssh AOeng@adsecdx  (usual passwd)
% aoidl
IDL> ao_init

How to start elab on a dedicated machine

  • Follow installation instruction
  • Starts "idl" and run "ao_init" to setup the elablib

How to restore a snapshot's data

Each snapshot of a system is identified by a date in the form YYYYMMDD_mmhhss ("tracking number", a.k.a. "tracknum")

To load the data the following is needed:
IDL> ee= getaoelab(YYYYMMDD_mmhhss)

This creates a variable named "ee" which is an instance of the class "aoelab". The aoelab class is the root of a hierarchy of other objects representing the full FLAO system.

Help

Because of a big number of methods available in an aoelab object (and in its sub-object tree) there is a (fairly) comprehensive on-line help that can be used to retrieve the name of the various functions during an interactive session.

Each object has a pro named help that accept a string as argument. Without argument, "obj->help" will print the full list of functions and procedures of the object obj, together with a small description. With the argument the above mentioned list will be filtered matching the passed argument.

In the 2nd example below, the functions of the ee object containing the string "filter" will be listed.

IDL> ee->help
IDL> ee->help, 'filter'
IDL> wfs = ee->wfs_status()
IDL> wfs->help
IDL> (ee->wfs_status())->help

Most useful commands

IDL> ee->modalplot

IRTC image object

IDL> (set->irtc())->help
IDL> image = (set->irtc())->image()
IDL> help, image
IDL> write_fits, 'filename', image, header
IDL> image_show, image[*,*,4], , /AS, /SH, /LOG
IDL> loadct, 3
IDL> image_show, image[150:225,120:180,4], /AS, /SH
IDL> (set->irtc())->show_psf
IDL> (set->irtc())->show_profile
IDL> cent = (set->irtc())->centroid()
IDL> plot, cent[*,0], cent[*,1]
IDL> print, ((set)->olmodes())->r0(/PLOT)
IDL> print, ((set)->olmodes())->seeing()

-- DougMiller - 24 Nov 2010
Topic revision: r4 - 22 May 2014, LorenzoBusoni
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