GNU Data Language 1.0
GNU Data Language 1.0: a free/libre and open-source drop-in replacement for IDL/PV-WAVE - Published in JOSS (2022)
Science Score: 95.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in JOSS metadata -
○Academic publication links
-
✓Committers with academic emails
6 of 51 committers (11.8%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
antlr
astronomy
data-analysis
dicom
eigen3
fits-files
geophysics
grib
gsl-library
hdf
hdf5
mapping
netcdf
plotting
plplot
programming-language
pv-wave
python
scientific-computing
scientific-visualization
Last synced: 4 months ago
·
JSON representation
Repository
GDL - GNU Data Language
Basic Info
Statistics
- Stars: 296
- Watchers: 17
- Forks: 65
- Open Issues: 274
- Releases: 80
Topics
antlr
astronomy
data-analysis
dicom
eigen3
fits-files
geophysics
grib
gsl-library
hdf
hdf5
mapping
netcdf
plotting
plplot
programming-language
pv-wave
python
scientific-computing
scientific-visualization
Created over 7 years ago
· Last pushed 4 months ago
Metadata Files
Readme
Changelog
License
Citation
Authors
README
GDL - GNU Data Language
=======================
A free IDL (Interactive Data Language) compatible incremental compiler
(capable of running programs written in IDL/GDL).
IDL is a registered trademark of Harris Geospatial (see: http://harrisgeospatial.com/).
This README may well be outdated. See README.md on Github: http://github.com/gnudatalanguage/gdl and the associate Wiki.
HOMEPAGE:
=========
http://github.com/gnudatalanguage/gdl
FEATURES:
=========
Full syntax compatibility with IDL up to version 7.1...
... and trying to be up-to-date with 8.x, see below.
All IDL language elements up to IDL version 7.1 are supported, including:
Pointer, objects, structs,
arrays, system variables,
common blocks, assoc variables,
all operators, all datatypes,
_EXTRA, _STRICT_EXTRA and _REF_EXTRA keywords...
GDL provides all of the GUI support (widgets) of IDL (see below) but none of the Compound Widgets.
Supported IDL 8.0 language elements:
FOREACH loop
negative array indices
garbage collection pointers and objects
call methods on an object using "." (e. g. object.aMemberProcedure,arg1)
empty arrays and !NULL system variable
automatic promotion of FOR loop variable types
LIST and HASH types
Not yet supported:
simplified property access on objects (e. g. object.aProperty = value & print,object.aProperty)
In general GDL should run correctly an IDL procedure, even one from the /lib folder of an IDL distribution.
(Note that most of theses procedures---some can be found on the web---have not yet been rewritten for GDL, help is welcome.).
The file input output system is fully implemented including full support of F77_UNFORMATTED.
netCDF files are fully supported.
HDF4 files are supported.
Basic support for HDF5 files.
DICOM files are supported via the GDLffDICOM object (http://idl.barnett.id.au/idl-projects)
(files in the src/pro/dicom subdirectory).
Overall nearly 500 library routines are implemented.
For a list enter HELP,/LIB at the command prompt and look for
library routines written in GDL in the src/pro subdirectory.
Graphical output is almost completely implemented (no object-graphics).
The PLOT, OPLOT, PLOTS, XYOUTS, SURFACE, CONTOUR and TV commands (along with WINDOW,
WDELETE, SET_PLOT, WSET, TVLCT, LOADCT) are working (most keywords,
!P system variable tags and multi-plots are supported) for X windows,
z-buffer and postscript output.
GDL has an interface to python.
Python can be embedded into GDL and GDL can be compiled as a
python module. See the file PYTHON.txt for details.
For the thread pool OpenMP is utilized if the compiler supports it.
REQUIREMENTS:
=============
In short:
Mandatory libraries:
gsl http://www.gnu.org/software/gsl
zlib http://www.zlib.net/
Optional libraries (ON by default) :
X11 (on unix)
pnglib
readline http://ftp.gnu.org/pub/gnu/readline/readline-4.3.tar.gz
Eigen3 http://eigen.tuxfamily.org
GraphicsMagick http://www.graphicsmagick.org (preferably to ImageMagick http://www.imagemagick.org)
netCDF *) ftp://ftp.unidata.ucar.edu/pub/netcdf
HDF4 *)
HDF5 https://www.hdfgroup.org/downloads/hdf5/
FFTW http://www.fftw.org/download.html
python http://www.python.org
PROJ (consult the MAP_INSTALL file)
UDUNITS2 http://www.unidata.ucar.edu/software/udunits/
ECCODES https://github.com/ecmwf/eccodes
shapelib http://shapelib.maptools.org/ (consult the MAP_INSTALL file)
wxWidgets http://www.wxwidgets.org/
glpk https://www.gnu.org/software/glpk/ : only to have the linear programming function SIMPLEX() available.
libTiff
Optional libraries (OFF by default) :
MPI
Only with python:
numpy http://numpy.org/
*) please see below for potential problems using netCDF and HDF4
COMPILING:
----------
If you install the libraries as precompiled
packages rather than compiling them from sources, please note that
depending on your distribution, you may need development packages
as well. Examples are (for Fedora):
GraphicsMagick-devel
GraphicsMagick-c++-devel
Look at the *INSTALL* files.
LINE EDITING:
-------------
Better than IDL, GDL has modern line editing and line history features.
The GNU readline library 4.3 is needed (actually GDL should compile
without, but its very inconvenient to use that way, furthermore
proper event handling for graphic windows requires readline).
You can get it at:
http://ftp.gnu.org/pub/gnu/readline/readline-4.3.tar.gz
GRAPHICS AND DEPENDENCIES:
--------------------------
For the graphics support of GDL, we use a trimmed version of the plplot library.
MATH FUNCTIONS & MORE:
-----------------------
GDL uses the GNU Scientific Library (GSL).
Please see file HACKING if you want to write functions extending GDL (i. e.
add a library subroutine) which use GSL for proper handling of GSL
obects in GDL.
You find it at:
http://www.gnu.org/software/gsl
MAKE GDL FASTER:
----------------
GDL uses Eigen for fast matrix multiplication. (optional)
The Eigen library version 3.1 or later is highly recommended for a performance
boost, expecially on multi-cores. To be found at: http://eigen.tuxfamily.org,
but is probably installed on your computer and will be found by the installer.
Of course, acceleration is only visible when optimisation (-O3) is turned on.
The simpliest way to compile with it is to copy all the header files
under sub-directory src/Eigen. Another solution is to provide full path
to the include files (i.e. using:
cmake . -DCMAKE_INSTALL_PREFIX=/home/toto/Eigen3.1.4/ )
The FFTW library is (optionally) used for the FFT function.
It is available at: http://www.fftw.org/download.html
Using FFTW results in an about double as fast FFT function.
Take care that you have to compile the "normal" and the "single"
version of the library (resp. libfftw3.a and libfftw3f.a).
First one is the default. You have to activate the single flag
(./configure --enable-single) when recompiling FFTw3.
If FFTw is not used, the default (GSL) fft routine is used instead.
WIDGETS:
--------
GDL supports GUI (widget) programming (initial effort by Joel Gales rewritten by Gilles Duvert)
using the wxWidgets library. It is required by default.
If you don't want to use it, use -DWXWIDGETS=off (CMake)
wxWidgets can be obtained from:
http://www.wxwidgets.org/downloads
The wxWidget version must be 2.8.1 or higher.
The WIDGET_*... functions are all implemented (use HELP,/LIB for an overview). Only a few
rarely seen options have not been written yet (please report in case of need). They have
not been tested outside the linux "mageia" distribution yet, so errors and crashes are possible.
Most procedures using widgets available (e.g., in the astrolib library) use so-called
"compound widgets" (CW_xxxxx functions that are written in IDL, like CW_FIELD). Those have not
been rewritten in GDL (and some have not been thoroughly tested). Those are not present
in the GDL distribution (copyright issues), must be obtained separately (google is your friend) and put
in the GDL path before use.
DATA FORMATS:
=============
HDF4 Files:
----------
The HDF4 format is (not completely yet) supported (thanks to Joel Gales).
If you want to use it, you need the HDF library (here HDF
always means version 4).
Note that if you plan to use netCDF also, it might be necessary to
install HDF4 before netCDF due to same named but different header
files which are overwritten by the HDF4 version otherwise.
HDF4 is required by default. If you don't want to use it, use
-DHDF=off (CMake)
Note that HDF in turn needs other libraries. Check out the
homepage for more information:
https://support.hdfgroup.org/products/hdf4/
The HDF library can be downloaded from:
https://support.hdfgroup.org/ftp/HDF/releases/
HDF5:
-----
Basic support for HDF5 is now provided (thanks to Peter Messmer).
If you want to use it, you need the HDF5 library.
It is required by default. If you don't want to use it, use
-DHDF5=off (CMake)
Note that HDF5 in turn needs other libraries. Check out the
homepage for more information:
http://portal.hdfgroup.org/display/HDF5/HDF5
The HDF5 library can be downloaded from:
https://support.hdfgroup.org/ftp/HDF5/releases/
NETCDF:
-------
The netCDF format is fully supported (thanks to Christopher Lee). If
you want to use netCDF, you need the netCDF library (even if HDF4 is
used, the netCDF library is needed, as the HDF library does not
contain all needed netCDF functions. Note that it might be necessary
to install netCDF after HDF4 due to same named, but different header
files. If the header files of HDF4 and netCDF are in different directories
make sure, that the directory containing netCDF's version gets searched first,
i.e. put an explicit path for netCDF even if it is in the default include path,
i.e.: -DNETCDFDIR=/usr (CMake))
netCDF is used by default. If you don't want to use it, use
-DNETCDF=off (CMake)
as a command line option to 'cmake'.
netCDF is available from:
ftp://ftp.unidata.ucar.edu/pub/netcdf
From the HDF4 INSTALL file:
To use the HDF/MFHDF libraries (libdf.a, libmfhdf.a) with the original
netCDF library (libnetcdf.a), the HDF4 distribution must be configured
with the --disable-netcdf configuration flag. This will rename the HDF
version of the C interface (ncxxx) of the HDF4 netCDF APIs to sd_ncxxx
and will disable the HDF4 NC Fortran interfaces to avoid name clashes
with the original netCDF C and Fortran APIs from libnetcdf.a.
IMAGE FORMATS:
--------------
In order to read and write images in several formats
(e.g. JPEG, PNG), GDL uses GraphicsMagick or (but more reluctantly) ImageMagick.
It is required by default. See http://www.graphicsmagick.org
MAP PROJECTIONS and GEOPHYSICS:
----------------
GDL contains now a complete support to MAP projection,
using the PROJ library (www.proj.org). Please see MAP_INSTALL file.
Note that GDL gives access to all proj.org projections instead of the 20 or so of IDL.
GDL uses libshp (shapelib) to implement MAP_CONTINENTS - see MAP_INSTALL.
A valid GDL install should provide map files in /resources/maps.
PYTHON INTERFACE:
-----------------
GDL has an interface to python (see http://www.python.org).
GDL can be used as a python module and python can be used from
within GDL. See INSTALL for details on how to build each version.
As so far there are only two example GDL extensions written in python its
use is optional for now but required by default. If you don't want to use
it, use
--DPYTHON=no
as a command line option to 'cmake'.
If you want to use it you need python and the python package Numpy.
(http://numpy.scipy.org/).
The GDL cmake script will determine the installed python version
automatically. For this the python executable must be installed.
Note: For embedding python as it is done by GDL, the python dynamic
library is needed which is *not* build by default. You need to run
'configure' for python with the '--enable-shared' option. Please see
the python README file for details.
For nice graphical output the python package matplotlib
(http://matplotlib.sourceforge.net) is used in one of the examples.
See the file PYTHON.txt for more details.
OTHER SUPPORT LIBRARIES:
------------------------
GDL supports unit converion in IMSL_CONSTANT using the UDUNITS-2
library (http://www.unidata.ucar.edu/software/udunits/)
If you want to use it, use --with-udunits=DIR
GDL supports the GRIB file format - see README_GRIB (optional)
GDL is developed using ANTLR 2.7,
but unless you want to change the grammar (*.g files) you don't need
ANTLR (for building GDL). All relevant ANTLR files are included in the package.
For editing however, there are several antlr-grammar (*.g) files among the
sources. ANTLR generates from this grammar-files c++ source files.
ANTLR generated files should not be changed directly as the changes
would be undone if someone regenerates those files. Instead the relevant
grammar file (mentioned in the header of the generated file) must be edited
and run through ANTLR. All source files generated by ANTLR start with a capital
character. All regular source files start with a small character.
For more information on ANTRL see: http://www.antlr.org
INSTALLATION:
=============
Please see the *INSTALL* file(s) for details.
Since we do have the script for prepare then compile and test GDL,
it is really easy to compile then install it from source files.
You can also refer to the wiki https://github.com/gnudatalanguage/gdl/wiki
For french readers, please have a look to
http://aramis.obspm.fr/~coulais/IDL_et_GDL/memo_GDL.html
which explain how to install GDL and most libraries
from scratch and without being root.
CONTRIBUTIONS:
==============
GDL is actively developed, but due to the vast amount of subroutines
to implement, GDL is still in beta state.
Even though it is commonly used by clever people for several tasks, there are many
things to be done.
Bug reports, feedback in general and interested people who would
like to join this project are welcome.
Extensions to GDL can be made in C++, GDL or python.
Urgent things to do are:
THE DOCUMENTATION!
Testing and test routines written in GDL,
HACKING:
========
please see file HACKING for details.
There you find also information about LINKIMAGE.
CONTACT:
========
Comments are welcome. Let us know what you use GDL for. Or if you don't,
why not. Which functionality are you missing/would appreciate most for
coming versions.
For bug reports, suggestions, comments and volunteering, please
use the issue-tracking tool at: https://github.com/gnudatalanguage/gdl
LICENSE:
========
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
(It should be included in this package in the file COPYING )
Owner
- Name: GNU Data Language
- Login: gnudatalanguage
- Kind: organization
- Website: https://gnudatalanguage.github.io/
- Repositories: 3
- Profile: https://github.com/gnudatalanguage
GDL
JOSS Publication
GNU Data Language 1.0: a free/libre and open-source drop-in replacement for IDL/PV-WAVE
Published
December 20, 2022
Volume 7, Issue 80, Page 4633
Authors
Jeongbin Park
School of Biomedical Convergence Engineering, Pusan National University, Republic of Korea
School of Biomedical Convergence Engineering, Pusan National University, Republic of Korea
Alain Coulais
LERMA, Observatoire de Paris, CNRS, Paris, France, AIM, CEA, CNRS, Université Paris-Saclay, Université Paris Diderot, Sorbonne Paris Cité, Gif-sur-Yvette, France
LERMA, Observatoire de Paris, CNRS, Paris, France, AIM, CEA, CNRS, Université Paris-Saclay, Université Paris Diderot, Sorbonne Paris Cité, Gif-sur-Yvette, France
Gregory V. Jung
Independent Researcher, USA
Independent Researcher, USA
Sylwester Arabas
Jagiellonian University, Kraków, Poland, University of Illinois at Urbana–Champaign, USA
Jagiellonian University, Kraków, Poland, University of Illinois at Urbana–Champaign, USA
Brian Barker
Ursinus College, PA, USA
Ursinus College, PA, USA
Takeshi Enomoto
Kyoto University, Japan
Kyoto University, Japan
Sylvain Flinois
Kumullus, Paris, France
Kumullus, Paris, France
Oliver Gressel
Leibniz-Institut für Astrophysik Potsdam (AIP), Potsdam, Germany
Leibniz-Institut für Astrophysik Potsdam (AIP), Potsdam, Germany
Tomas Hillberg
Department of Astronomy, Stockholm University, Sweden
Department of Astronomy, Stockholm University, Sweden
Thibault Huillet
Independent Researcher, France
Independent Researcher, France
Jan Kohnert
Independent Researcher, Germany
Independent Researcher, Germany
Orion Poplawski
NorthWest Research Associates, Boulder, CO, USA
NorthWest Research Associates, Boulder, CO, USA
Eloi Rozier de Linage
LERMA, Observatoire de Paris, CNRS, Paris, France
LERMA, Observatoire de Paris, CNRS, Paris, France
Remi A. Solås
Independent Researcher, Norway
Independent Researcher, Norway
James Tappin
RAL Space, STFC Rutherford Appleton Laboratory, UK
RAL Space, STFC Rutherford Appleton Laboratory, UK
Thierry Thomas
EDF, Lyon, France
EDF, Lyon, France
Jingwei Wang
MINES ParisTech, Paris, France
MINES ParisTech, Paris, France
Christian Wimmer
Independent Researcher, Germany
Independent Researcher, Germany
Tags
GNU Data Language Interactive Data Language GDL PV-WAVEGitHub Events
Total
- Create event: 41
- Release event: 38
- Issues event: 160
- Watch event: 24
- Delete event: 33
- Issue comment event: 410
- Push event: 66
- Pull request review event: 4
- Pull request review comment event: 3
- Gollum event: 10
- Pull request event: 132
- Fork event: 1
Last Year
- Create event: 41
- Release event: 38
- Issues event: 161
- Watch event: 24
- Delete event: 33
- Issue comment event: 411
- Push event: 66
- Pull request review event: 4
- Pull request review comment event: 3
- Gollum event: 10
- Pull request event: 132
- Fork event: 1
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| GillesDuvert | g****t@f****r | 2,262 |
| Alain Coulais | a****s@o****r | 1,260 |
| Mark Schellens | m****s@g****m | 1,131 |
| Sylwester Arabas | s****o@i****l | 795 |
| Jeongbin Park | p****7@g****m | 425 |
| Joel Gales | j****a@u****t | 230 |
| Greg Jung | g****g@g****m | 138 |
| Oliver Gressel | g****l@n****k | 111 |
| Alain | 3****l | 55 |
| Remi A. Solås | r****s@e****o | 51 |
| eloirozier | e****e@g****m | 51 |
| gildas | g****s@l****t | 46 |
| sflinois | s****s@s****r | 31 |
| Pierre Chanial | p****l@u****t | 24 |
| Orion Poplawski | o****n@n****m | 23 |
| jingwei.wang | j****g@m****r | 22 |
| Tomas Hillberg | h****g@a****e | 11 |
| Christopher Lee | c****e@u****t | 10 |
| Jan Kohnert | j****n@j****e | 10 |
| SIAMAR | 4****R | 10 |
| Médéric Boquien | m****n@u****t | 9 |
| Ole Streicher | o****e@d****g | 8 |
| schraelbert | s****t@o****m | 5 |
| Jae-Kang Lee | d****6@g****m | 4 |
| Brian Barker | 8****r | 4 |
| Joanna Woo | c****m@u****t | 4 |
| HUILLET Thibault | t****t@c****r | 4 |
| SALAH Boudjemaa | b****h@c****r | 3 |
| Gabor Cseh | c****r@w****u | 2 |
| Coulais Alain | c****s@c****r | 2 |
| and 21 more... | ||
Committer Domains (Top 20 + Academic)
users.sourceforge.net: 8
caler.obspm.fr: 4
debian.org: 3
free.fr: 1
obspm.fr: 1
igf.fuw.edu.pl: 1
nbi.ku.dk: 1
edinsights.no: 1
student.42.fr: 1
nwra.com: 1
mines-paristech.fr: 1
astro.su.se: 1
jan-kohnert.de: 1
wigner.mta.hu: 1
lp-stg-coulais.obspm.fr: 1
aiei.ch: 1
ieee.org: 1
univ-amu.fr: 1
knmi.nl: 1
lbto.org: 1
stfc.ac.uk: 1
ecs.umass.edu: 1
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 353
- Total pull requests: 334
- Average time to close issues: about 1 year
- Average time to close pull requests: 6 days
- Total issue authors: 66
- Total pull request authors: 15
- Average comments per issue: 3.75
- Average comments per pull request: 1.18
- Merged pull requests: 285
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 92
- Pull requests: 127
- Average time to close issues: 19 days
- Average time to close pull requests: 4 days
- Issue authors: 26
- Pull request authors: 8
- Average comments per issue: 3.09
- Average comments per pull request: 0.71
- Merged pull requests: 108
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- GillesDuvert (70)
- alaingdl (68)
- brandy125 (45)
- slayoo (39)
- jtappin (19)
- opoplawski (8)
- jaymurthy (7)
- ChunkyPanda03 (5)
- AstroArtie (4)
- maynardGK (4)
- rsiddans (4)
- fawltylanguage (4)
- klimpel (3)
- phubanks (3)
- evertrol (3)
Pull Request Authors
- GillesDuvert (261)
- alaingdl (25)
- slayoo (21)
- jkohnert (5)
- frankmri (4)
- ogressel (3)
- Saynkas (2)
- BoudjemaaS (2)
- rsiddans (2)
- ChunkyPanda03 (2)
- EliasAAradsson (2)
- opoplawski (2)
- eloirozier (1)
- jtappin (1)
- pjb7687 (1)
Top Labels
Issue Labels
bug (26)
antlr (17)
priority! (11)
segfault (11)
ON HOLD : Please Answer question (11)
weird (9)
help wanted (8)
wontfix (8)
SPEED! (7)
enhancement (7)
good first issue (7)
todo-test (6)
Badly Written / Designed code (5)
regression (5)
CMake (4)
plplot (4)
cleanup (4)
WIP (4)
idl/gdl-only (4)
solved (3)
MacOSX (3)
needs more information! (3)
c++-only (3)
errmsg (2)
installation (2)
hdf5 (2)
STALE and soon removed (2)
numeric inaccuracy (2)
objects (2)
todo-awaits-other-pr (2)
Pull Request Labels
behaviour not tested - update testsuite (1)
todo-test (1)
WIP (1)
Packages
- Total packages: 2
- Total downloads: unknown
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 0
(may contain duplicates) - Total versions: 26
proxy.golang.org: github.com/gnudatalanguage/gdl
- Documentation: https://pkg.go.dev/github.com/gnudatalanguage/gdl#section-documentation
- License: gpl-2.0
-
Latest release: v1.1.1
published 11 months ago
Rankings
Forks count: 3.2%
Stargazers count: 3.4%
Average: 6.7%
Dependent packages count: 9.6%
Dependent repos count: 10.8%
Last synced:
4 months ago
spack.io: gdl
A free and open-source IDL/PV-WAVE compiler. GNU Data Language (GDL) is a free/libre/open source incremental compiler compatible with IDL and to some extent with PV-WAVE.
- Homepage: https://github.com/gnudatalanguage/gdl
- License: []
-
Latest release: 0.9.9
published over 3 years ago
Rankings
Dependent repos count: 0.0%
Stargazers count: 13.4%
Forks count: 13.8%
Average: 21.1%
Dependent packages count: 57.3%
Last synced:
4 months ago
Dependencies
.github/workflows/antlr.yml
actions
- actions/checkout v2 composite
.github/workflows/codecov.yml
actions
- actions/checkout v2 composite
.github/workflows/main.yml
actions
- actions/cache v3.2.1 composite
- actions/checkout v3.2.0 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3.1.1 composite
- dev-drprasad/delete-tag-and-release v0.2.0 composite
- msys2/setup-msys2 v2 composite
- ncipollo/release-action v1 composite