Skip to main content

Tool to convert GMT scripts to the new modern execution mode

Project description

Latest version on PyPI Travis CI build status Test coverage status Compatible Python versions.

Disclaimer

This is work in progress. So far, it can convert some of the test and example scripts from the GMT repository.

About modern mode

GMT is introducing a “modern” execution mode that reduces the amount of arguments needed for many programs and handles the PostScript layer-caking in the background.

For example, the following classic mode script:

ps=map.ps
gmt grdgradient -Nt0.2 -A45 data.nc -Gintens.nc
gmt makecpt -Cgeo -T-8000/2000 > t.cpt
gmt grdimage -Ct.cpt -Iintens.nc data.nc -JM6i -P -K > $ps
gmt pscoast -Rdata.nc -J -O -Dh -Baf -W0.75p -K >> $ps
echo "Japan Trench" | gmt pstext -F+f32p+cTC -Dj0/0.2i -Gwhite -R -J -O -K >> $ps
gmt psxy -W2p lines.txt -R -J -O -K >> $ps
gmt psscale -R -J -O -DjBL+w3i/0.1i+h+o0.3i/0.4i -Ct.cpt -W0.001 -F+gwhite+p0.5p -Bxaf -By+l"km" >> $ps

is equivalent to the following in modern mode:

ps=map

gmt begin $ps ps

gmt grdgradient -Nt0.2 -A45 data.nc -Gintens.nc
gmt makecpt -Cgeo -T-8000/2000 > t.cpt
gmt grdimage -Ct.cpt -Iintens.nc data.nc -JM6i -P
gmt pscoast -Rdata.nc -Dh -Baf -W0.75p
echo "Japan Trench" | gmt pstext -F+f32p+cTC -Dj0/0.2i -Gwhite
gmt psxy -W2p lines.txt
gmt psscale -DjBL+w3i/0.1i+h+o0.3i/0.4i -Ct.cpt -W0.001 -F+gwhite+p0.5p -Bxaf -By+l"km"
rm -f intens.nc t.cpt

gmt end

See the scripts and data in the example folder.

Read more about modern mode at the Modernization wiki page.

Installing

Install the latest release using the pip package manager:

pip install gmtmodernize

To install the development version from the Github master branch:

git clone https://github.com/GenericMappingTools/gmtmodernize.git
cd gmtmodernize
pip install .

Using

Command line

The package provides a command-line interface through the gmtmodernize program:

$ gmtmodernize --help
Convert GMT shell scripts from classic to modern mode.

Prints the converted modern mode script to standard output (stdout).

Usage:
    gmtmodernize SCRIPT
    gmtmodernize --recursive FOLDER_CLASSIC FOLDER_MODERN
    gmtmodernize --help
    gmtmodernize --version

Arguments:
    SCRIPT          Classic mode script to convert.
    FOLDER_CLASSIC  Folder with classic mode scripts (can have multiple
                    sub-folders).
    FOLDER_MODERN   Name of output folder with converted modern mode scripts.
                    Mirrors the folder structure of FOLDER_CLASSIC and copies
                    all non-script files.

Options:
    -r --recursive  Recursively transverse a folder structure with GMT scripts
                    and other files instead of converting a single file.
                    Creates a new folder with the same structure and non-script
                    files copied over, plus the converted GMT scripts.
    -h --help       Show this help message and exit.
    --version       Show the version and exit.

Examples:

    Convert a single GMT script to modern mode:

        $ gmtmodernize classic_script.sh > modern_script.sh

    Convert a folder with GMT scripts, data files, etc, (optionally inside
    multiple sub-folders):

        $ gmtmodernize -r gmt_classic_scripts/ gmt_modern_scripts/

    This will create a folder 'gmt_modern_scripts' with the same sub-folders
    and non-script files in 'gmt_classic_scripts' but with the scripts
    converted to modern mode.

Library

Alternatively, you can run the conversion using the gmtmodernize Python library. It exposes a modernize function that takes a classic script (as a single string) and outputs a modern script (also as a single string).

Example:

from gmtmodernize import modernize

with open('classic_script.sh') as f:
    classic = f.read()
with open('modern_script.sh', 'w') as f:
    f.write(modernize(classic))

License

gmtmodernize is free software: you can redistribute it and/or modify it under the terms of the BSD 3-clause License. A copy of this license is provided in LICENSE.txt.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gmtmodernize-1.0.tar.gz (29.5 kB view details)

Uploaded Source

Built Distribution

gmtmodernize-1.0-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file gmtmodernize-1.0.tar.gz.

File metadata

  • Download URL: gmtmodernize-1.0.tar.gz
  • Upload date:
  • Size: 29.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for gmtmodernize-1.0.tar.gz
Algorithm Hash digest
SHA256 0c471060b3bfd6c527d5ebdd1418a9aeddec1b158838ddeab6d6225e5f19eabf
MD5 158d40d4451634ebc2ca50428aa593ef
BLAKE2b-256 a6a035c37e18ed6a9ffab1d9ea610df5d2d3f83390d5a0baf435d38354692726

See more details on using hashes here.

File details

Details for the file gmtmodernize-1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gmtmodernize-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e6d1bdb26e96a3c1e3af4902b02ec4ddf3c411eeaa5a4aeecd9177c1f1859d7
MD5 1b6acfc3c386147857ad67fa2070ae62
BLAKE2b-256 f4500c622d7b3006d4b860a4f4080b23252d72f4e7184f910d7e9c1e796bc6cb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page