Difference between revisions of "GDL"
Line 192: | Line 192: | ||
There are modifications to the exofast procedures and additions to GDL needed to run within the GDL framework. A list of known ones as of 2012-07-30 is provided below. For help with finding solutions, a [http://aramis.obspm.fr/~coulais/IDL_et_GDL/Matrice_IDLvsGDL_intrinsic.html list of routines supported in GDL] is available. | There are modifications to the exofast procedures and additions to GDL needed to run within the GDL framework. A list of known ones as of 2012-07-30 is provided below. For help with finding solutions, a [http://aramis.obspm.fr/~coulais/IDL_et_GDL/Matrice_IDLvsGDL_intrinsic.html list of routines supported in GDL] is available. | ||
== | == EXOFAST under GDL: problems and solutions == | ||
Revision as of 22:02, 30 July 2012
The Gnu Data Language (GDL) is a useful open-source alternative to IDL on Linux. Although for new astronomical scripting applications we prefer Python, the proprietary IDL system is widely used and there are many astronomical routines written for it that are freely available. This page is a guide to the installation of GDL on an OpenSuse Linux platform in order to use the community resources available.
Download the recent source code
We assume that the base OpenSuse system has been installed with the packages that are often used to support scientific computing. There are some unusual dependencies to build a complete GDL. Additional procedures may be added after the fact since they are compiled as needed by GDL itself.
We would like to recommend installing the version in the CVS repository since it is likely to have many known issues corrected. However, the version 0.9.2 released on 2012-02-20 will compile and is largely compatible with IDL and EXOFAST. These notes are based on this version and a CVS verion of 2012-07-29 which updates that release.
Go to the Sourceforge website:
Click on the "Code" link in the top menubar to access CVS and the "Download" button to provide the last stable release. At the bottom of the new CVS "gdl" listing there will be an option to download the GNU tar archive of the entire CVS tree. Once you have it on your system, make a copy in a permanent location, and as superuser (su), also to the /usr/local/src tree on your Linux system:
cp gnudatalanguage-gdl_20120729.tar.gz /usr/local/src
You are ready to compile the code. Compilation is handled similarly for either CVS or stable release versions.
Install and compile the source code
The source tree will be in /usr/local/src/ where you made a copy of the downloaded tarfile:
cd /usr/local/src
tar xvzf gnudatalanguage-gdl_20120729.tar.gz
This will create a "gdl" directory in /usr/local/src containing the files you will compile.
cd gdl
./configure --without-hdf --with-hdf5
If the configuration does not successfully complete and create "Makefile" in the top level directory, look at the list of errors generated during configuration for clues about missing packages. There will distinctive names that you will have to find in the distribution's repositories. For OpenSuse, you would use yast or yast2 as indicated to install a suspect missing package (usually a develoment version), then repeat the configure command and the search for rpm's again until there are no errors.
Once those issues are resolved, try building the software with
make
We find that during the build you may see an error such as this one:
libtool: Version mismatch error.
which is corrected by running this command
aclocal; libtoolize --force; autoconf; automake -a
in the toplevel of gdl directory, and then repeating the configure and make commands.
The GDL team notes in their CVS version that they will be using cmake instead of autoconf in the future. The software can be compiled with cmake once you install the package for your distribution. The process would be something like this:
cd gdl
mkdir build
cd build
../cmake
modified to allow for variations in your installation requirements. Instructions are in the gdl INSTALL.cmake file.
After a successful make operation, install the binaries and library with
make install
Prepare a location for the procedures that you will add:
cd /usr/local/
mkdir gdl
cd gdl
cp -p -r /usr/local/src/gdl/src/pro ./
Add new procedures
For astronomical use, there are additional procedures to install system-wide. Download and save in your long term archive the code from these sites:
- Craig Markwardt's CMSVLIB provides SAVE and RESTORE in GDL
- NASA's astronomy library and the ftp site provides many astronomical utility procedures and handlers for FITS files
- Mark Buie's IDL libary and download site provides procedures for astrometry, photometry, and spectroscopy
- Matthew Craig's tex to IDL provides procedures to use LaTeX markup coding in graphics
Copy the .pro files from these sources into one or more separate directories under /usr/local/gdl. For example, we would use something like this:
cd /usr/local/gdl
mkdir astro
mkdir tmp
cd tmp
cp /home/john/gdl/archive/astron.tar.gz ./
tar xvzf astron.tar.gz
cd pro
cp *.pro /usr/local/gdl/astro/
cd /usr/local/gdl
rm -r tmp
and repeat this for each of the libraries you want to add, copying only the *.pro files into gdl. They can all go into gdl/astro, or if you anticipate updating them individually, into a separate directory for each one.
When you are done, assign the ownership of the gdl directory to root, or to a trusted user:
cd /usr/local
chown -R root.root gdl
to assure accessibility of all files and limit access for writing.
Set environment variables
In the bash shell edit the .profile directory for each user who would access gdl, or add to /etc/profile.local for everyone, to make these changes (written assuming separated directories for each added library):
export GDL_PATH=/usr/local/gdl/pro
GDL_PATH=$GDL_PATH:/usr/local/gdl/cmsvlib
GDL_PATH=$GDL_PATH:/usr/local/gdl/astro
GDL_PATH=$GDL_PATH:/usr/local/gdl/buie
GDL_PATH=$GDL_PATH:/usr/local/gdl/textoidl
GDL_PATH=$GDL_PATH:/usr/local/gdl/extra
export EXOFAST_PATH=/home/john/gdl/exofast
GDL_PATH=$GDL_PATH:$EXOFAST_PATH
export GDL_STARTUP=/home/john/gdl/gdlstartup
We include here access to Jason Eastman's EXOFAST, assuming it may be installed in an indivdual user directory. In that case, these changes would be in that user's "hidden" .profile file.
Run EXOFAST under gdl
To run gdl you simply issue on the command line "gdl" and you will be in a command line environment for the Gnu Data Language. To exit and return to the shell, "exit". GDL commands are identical to IDL, and most are supported in the recent code.
To run a process
gdl -e 'myprocess'
is all that's needed. The myprocess.pro file must be in the current working directory or the path. Note that ".pro" is not on the command line.
To run and test EXOFAST, install it in your user home directory under your own "gdl" with the appropriate addition to your .profile as noted above. Then
cd /home/user/gdl/exofast
Test it with this command:
gdl -e "exofast, rvpath='hat3.rv',tranpath='hat3.flux',pname='HAT-P-3b',band='Sloani',/circular,/noslope,/specpriors,minp=2.85,maxp=2.95"
There are modifications to the exofast procedures and additions to GDL needed to run within the GDL framework. A list of known ones as of 2012-07-30 is provided below. For help with finding solutions, a list of routines supported in GDL is available.
EXOFAST under GDL: problems and solutions
The stable version 0.9.2 of GDL, EXOFAST will run the fitting with the libraries given above, addition of a few missing procedures, and changes edited into specific exofast procedure files which we will note here. It will fail because of missing intrinsics in the plotting. The workarounds are to edit the original exofast procedures to avoid these calls, or to try the CVS version.
At this time the CVS version fails to properly read the exofast data files. This appears to have been caused by a very recent change to the line parsing routines which we presume will be corrected once the errors can be documented and reported. In the meantime it is possible to run EXOFAST using the stable release once additional procedures are included and a few changes are made to the exofast code.
While the fitting runs and appears to work, the plotting fails because of the missing procedures and incomplete intrinsics. This is a soluble problem since the plotting can be rewritten to use the minimum set of features currently available in gdl, or to export the plotting to external programs.
Missing procedures
- chisqr_cvf.pro -- is not in the libraries noted above
It is available on a web search. It appears to be an ITT Visual Information Solutions contributed routine, though it derives from code published elsewhere. It could be recoded into a gdl procedure if needed. We add it to /usr/local/gdl/extra/.
- chisqr_pdf.pro -- is not in the librarires noted above
It is available on a web search. While it appears to be an ITT Visual Information Solutions procedure, it simply calls IGAMMA which is a GDL routine. We add it to /usr/local/gdl/extra/.
- bisect_pdf.pro -- is not in the librarires noted above
It is available on a web search. It appears to be an ITT Visual Information Solutions procedure. We add it to /usr/local/gdl/extra/.
- oploterr.pro -- is not included in gdl.
It is an ITT Visual Information Solutions procedure that is available for download from the NASA IDL support search site. We add it to /usr/local/gdl/extra.
The code lines
oploterr, time, rv.rv - (rv.bjd - t0)*slope-gamma, rv.err, 8
oploterr, time, rv.rv-modelrv, rv.err, 8
could be replaced by oplot with different parameters, or a perhaps a simple ploterr procedure could be defined. There is a note in the GDL urgent needs file that oploterr should be easily derived from ploterr. When these lines are not commented out and the oploterr is allowed to run, there is a warning from EXOFAST
Warning: multi-page PostScript not supported yet (FIXME!)
generated immediately following the OPLOTERR call. The (FIXME!) comes from GDL.
- poly_fit.pro -- is not included ingdl.
It is an ITT Visual Information Solutions procedure that is available for download from the NASA IDL support search site. We add it to /usr/local/gdl/extra.
Missing intrinsics
- USERSYM -- called by the astro library routine plotsym is not present in 0.9.2
This routine is internally coded and should be in the distribution. In this version it is annotated in plotting.ccp with the note "//for now usersym is a circle". It was introduced into the CVS source code in response to a bug report. However, the CVS version now generates errors in reading the data files used with EXOFAST, making it unusable in its current form.
USERSYM is called by plotsym.pro, an astro library routine. It is used to create distinctive point plotting in routines exofast_chi2.pro and exofast_plotdist.pro. A workaround could be to comment out the call to plotsym and edit the symbol choice to a standard symbol for the following plot so that usersym (a user-defined symbol) is not requested.
- HISTOGRAM -- keyword parameter NAN not allowed in 0.9.2 .
There is a note in a development discussion group that it has been added to the CVS version but not fully tested.
The problem shows up in exofast_plotdist.pro with calls to histogram using the /nan keyword. We tried editing it out from the code lines:
hist = histogram(pars[angular[i],*],nbins=100,locations=x,/nan)
hist = histogram(pars[i,sorted],nbins=100,locations=x,min=xmin,max=xmax,/nan)
- CONTOUR --keyword parameter PATH_INFO, PATH_XY and PATH_DATA_COORDS are not allowed in 0.9.2
The function is called in exofast_errell.pro and fails for the first time at this line:
contour, hist2d, xtitle=xtitle,ytitle=ytitle, levels=levels, path_info=info,path_xy=xy,/path_data_coords,/overplot,/path_double
with the error messages
CONTOUR: Keyword parameter PATH_INFO not allowed in call to: CONTOUR
CONTOUR: Keyword parameter PATH_XY not allowed in call to: CONTOUR
CONTOUR: Keyword parameter PATH_DATA_COORDS not allowed in call to: CONTOUR
CONTOUR: Keyword parameter PATH_DOUBLE not allowed in call to: CONTOUR
We try without contour plotting.