NOAA-PMEL / PyFerret

The PyFerret program and Python module from NOAA/PMEL
https://ferret.pmel.noaa.gov/Ferret/
The Unlicense
60 stars 22 forks source link

Ferret ($labnum_datitl) not defined in PyFerret #53

Closed karlmsmith closed 6 years ago

karlmsmith commented 6 years ago

Try to use the SOCAT preview plot scripts with PyFerret gives the following error on many of the scripts. However, these work fine with Ferret. I am guessing ($labnum_datitl) is autodefined in Ferret but not PyFerret.

  let labttl = ($labnum_datitl)
 !-> DEFINE VARIABLE labttl =
 **ERROR: command syntax: LABTTL = ???
karlmsmith commented 6 years ago

@AnsleyManke - FYI

karlmsmith commented 6 years ago

In Ferret:

yes? use coads_climatology
yes? shade /l=5 sst
yes? say ($labnum_datitl)
 !-> MESSAGE/CONTINUE 3
3

but in PyFerret:

yes? use coads_climatology
yes? shade /l=5 sst
yes? say ($labnum_datitl)
 !-> MESSAGE/CONTINUE

Change between Hershey and non-Hershey fonts make no difference.

AnsleyManke commented 6 years ago

Either way, this needs to be fixed in those Ferret scripts. There should be a test for the existence of that symbol before it's used. I have checked in changes to preview_05.jnl, preview_15.jnl and preview_16.jnl in the preview_plots/ directory in SVN.

For the definition of labnum_datitl, it turns out that what Ferret's doing is wrong, and PyFerret is right. COADS_CLIMATOLOGY doesn't have a dataset title, but a blank label is being set up.

Dataset titles come from a global "title" attribute, or can be set with a /TITLE= qualifier on the USE command.

Running Ferret,

yes? cancel mode logo

yes? use coads_climatology
yes? shade/l=5 sst
yes? show sym lab*
LABX = "LONGITUDE"
LABY = "LATITUDE"
LABTIT = "SEA SURFACE TEMPERATURE (Deg C)"
LAB1 = "TIME : 16-MAY 23:56"
LABNUM_T = "1"
LAB2 = "DATA SET: coads_climatology"
LABNUM_DSET = "2"
LAB3 = ""
LABNUM_DATITL = "3"

yes? use/title="Levitus fine dataset" levitus_climatology
yes? shade/k=1 temp
yes? sh sym lab*
LABX = "LONGITUDE"
LABY = "LATITUDE"
LABTIT = "TEMPERATURE (DEG C)"
LAB1 = "DEPTH (m) : 0"
LABNUM_Z = "1"
LAB2 = "DATA SET: levitus_climatology"
LABNUM_DSET = "2"
LAB3 = "LEVITUS FINE DATASET"
LABNUM_DATITL = "3"

But running PyFerret, on the coads_climatology sst plot, that blank LAB3 = "" is not defined, so there is no LABNUM_DATITL pointing to it.

In Pyferret, if there is a dataset title, the symbol is set up ok

> pyferret
        NOAA/PMEL TMAP
        PyFerret v7.4 (optimized)
        Linux 3.10.0-693.21.1.el7.x86_64 - 04/27/18
         3-May-18 10:26     

yes? cancel mode logo

yes? use coads_climatology
yes? shade /l=5 sst
yes? show sym lab*
LABX = "LONGITUDE"
LABY = "LATITUDE"
LABTIT = "SEA SURFACE TEMPERATURE (Deg C)"
LAB1 = "TIME : 16-MAY 23:56"
LABNUM_T = "1"
LAB2 = "DATA SET: coads_climatology"
LABNUM_DSET = "2"

yes? use/title="Levitus  fine dataset" levitus_climatology
yes? shade/k=1 temp
yes? sh sym lab*
LABX = "LONGITUDE"
LABY = "LATITUDE"
LABTIT = "TEMPERATURE (DEG C)"
LAB1 = "DEPTH (m) : 0"
LABNUM_Z = "1"
LAB2 = "DATA SET: levitus_climatology"
LABNUM_DSET = "2"
LAB3 = "LEVITUS  FINE DATASET"
LABNUM_DATITL = "3"
AnsleyManke commented 6 years ago

Closing this - I'll make a new Ferret ticket.