Progress Report 2017-9-05¶
Since our last report we have worked on several parallel tracks:
- We have maintained the GMT 5.4 branch which is the current stable release branch, releasing 5.4.1 and 5.4.2 (the latest official release).
- We have incremented the major version number for GMT so that the next major GMT release will be GMT 6.0.0.
- We have made great progress on the GMT/Python package.
- We have published the GMT/MATLAB toolbox in Geochem., Geophys., Geosyst. http://onlinelibrary.wiley.com/doi/10.1002/2016GC006723/full
Maintenance of 5.4¶
We continue to respond to bug reports which are addressed directly in the 5.4 branch, then merged to trunk. No new features are added to 5.4.x, hence it is deemed our stable release. The fink and macports distributions are distributing the latest 5.4.2 release while most Linux distros are hopelessly stuck far back (e.g., 5.2.1). We are unable to speed that process up since it is up to the distributors and their policies. We have explained that 5.4.2 has less bugs and is more stable than 5.2.1 but to no avail. We must recommend that Linux users install from source. We will try to reach out again to the Linux maintainers we know to see what can be done. We released a small update to our coastline data base GSHHG in June (2.3.7). This release updates the Northern Mariana Islands with CUPS data from NOAA, adds two missing islands to northern Norway, and adds in the missing Kosovo-Serbia boundary. Leo and Paul also took part in the annual GMTSAR workshop at Scripps where we helped strengthen GMTSAR and improve processing and plotting scripts by using the latest GMT syntax for things like placing color scales. We anticipate releasing additional 5.4.x releases well into 2018 as GMT 6 goes through its development.
GMT 6¶The bulk of our time is spend developing GMT 6:
- As indicated during the last report, we are implementing modern mode (please see that report for more details). In essence, this removes the responsibility of handling PostScript overlays (-O, -K, and redirection), dealing with repeated regions and projections (-R, -J), conversion of PostScript to other formats (PNG, PDF, etc), and introducing a new command to simplify subplots. We are simultaneously addressing two contradictory demands by GMT users: Make it simpler, and don't change anything! We are doing this by hiding the major changes under the modern mode, and keeping the classic mode as it has always been. This will allow GMT users accustomed to classic mode (and their many scripts) to run as expected, while new users (and those who see the potential for major simplification by switching) will embrace modern mode. We will present GMT Modern mode at the Fall AGU Meeting.
- We are also revamping all online examples so that they can be run via copy-and-paste by using files stored on the GMT cache server. Note that not all improvements to GMT 6 are under modern mode: There are plenty simplifications for classic GMT users, including URL, remote global grid service, improvement to -R (can now take country codes), full spherical math in grdmath for global grids, automatic shaded relief operations, and smaller (differential) gmt.conf files.
- Finally, Joaquim has experimented with opening up the world of proj4 projections via our GDAL bridge and it looks like this is a viable way to extend GMT to use proj4 with minimal fuss. Eventually, GMT will only document the proj4 way of specifying projections but we will allow for backwards compatibility under the hood.
Leo is making great progress on the Python API. Many of the changes in GMT 6 are being implemented in order to make the Python interface simple and "pythonic". The code is being developed on Github (https://github.com/GenericMappingTools/gmt-python) and uses a BSD 3-clause Open Source License, which is a common choice in the Python ecosystem.
This summer, Leo and Paul attended the SciPy 2017 Conference in Austin, TX (see the talk proposal , our initial design ideas , and the reviews for our abstract). Leo presented the first instance of GMT/Python running in a Jupyter notebook. A recording of the talk is available on YouTube (https://www.youtube.com/watch?v=93M4How7R24). Leo summarized in a blog post the feedback received during the conference and the changes that were made to GMT/Python in turn (http://www.leouieda.com/blog/gmt-after-scipy2017.html).
Leo has built GMT trunk packages for the conda package manager, which is commonly used in Python (with a lot of help from Filipe Fernandes and Mike Hearne ). The packages are built and distributed through conda-forge community repository. This helps to setup continuous integration for GMT/Python, which requires GMT trunk, and will ease the process of installing the Python package in the future. Currently, there are packages for Linux and OSX and Filipe is working on a Windows build (https://github.com/conda-forge/gmt-feedstock/pull/15).
Leo will give a presentation on GMT/Python at the Fall AGU Meeting (https://github.com/leouieda/agu2017). Currently, Leo is working on data communication between the GMT API and numpy arrays (https://github.com/GenericMappingTools/gmt-python/pull/44).