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.1.tar.gz (30.5 kB view details)

Uploaded Source

Built Distribution

gmtmodernize-1.1-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for gmtmodernize-1.1.tar.gz
Algorithm Hash digest
SHA256 ff8c1ce72ca3eac978c74aa8c25079d87a90d4f5d28655854f9744ad88aeacc5
MD5 cd32a5ad67546edc71bf5427b4028dad
BLAKE2b-256 5cada7c665cc20369b85b6a935712ca3aa8d142d86a0a3c9a8eb7727a498d1fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gmtmodernize-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 39466f7881473b010dfeec757aa2fcf3cd5d4e716d7f99118f0f23e95d09db94
MD5 e5d31659b378903c15ef457bb3f0aacc
BLAKE2b-256 29abca060f61d187a17fe3e9acc36cc0ed9ad73234ffae9022eca72cf2aacb6f

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