[ncl-talk] "bug" in get_ref_line_options v6.4.0

Mary Haley haley at ucar.edu
Wed Jan 17 08:35:45 MST 2018


Hi Alan,

You're right, that's a problem!  I tried to recreate the bug myself, but
wasn't doing it the way you are. Your example helps.

The fix is pretty straightforward, so I'll get on this right away. The
ticket is NCL-2714.

Thanks for the heads up.

--Mary


On Tue, Jan 16, 2018 at 1:52 PM, Alan Brammer <abrammer at albany.edu> wrote:

> oh my bad, I followed that line incorrectly and got distracted by the line
> above.    So it's not an int to float error, it's a float to double
> problem.
>
>
> nref                   = 0
> ref_line               = fmsg
> ...
> ref_line = get_res_value_keep(rfres,"trYMinF",min(y))
>
>
> grep -A 19  "ref_line               = fmsg" $NCARG_ROOT/lib/ncarg/
> nclscripts/csm/gsn_csm.ncl
>
>   ref_line               = fmsg
>   ref_line_on            = False
>   ref_line_color         = cmsg
>   ref_line_pattern       = imsg
>   ref_line_thickness     = fmsg
>   ref_grtr_curve_fill_on = False
>   ref_less_curve_fill_on = False
>   ref_fill_color_g       = cmsg   ; greater than
>   ref_fill_color_l       = cmsg   ; less than
>
> ;
> ; If neither gsnYRefLine or gsnXRefLine are set, but gsnXYBarChart has
> ; been set, then assume the user wants a Y reference line, and return
> ; a default value for Y ref line.
> ;
>   bar_chart        = get_res_value_keep(rfres,"gsnXYBarChart",False)
>   bar_outline_only = get_res_value_keep(rfres,"gsnXYBarChartOutlineOnly",
> False)
>   if(.not.isatt(rfres,"gsnYRefLine").and..not.isatt(rfres,"gsnXRefLine"))
> then
>     if(reftype.eq."y".and.bar_chart.and..not.bar_outline_only) then
>       ref_line = get_res_value_keep(rfres,"trYMinF",min(y))
>
>
>
>
> Code to reproduce the error:
>
> x= fspan(0,10,11)
> y = todouble(fspan(0,10,11))
>
> wks = gsn_open_wks("x11","")
> res = True
> res at gsnXYBarChart = True
> plot = gsn_csm_xy(wks, x, y, res)
>
>
>
>
> On Tue, Jan 16, 2018 at 3:27 PM, Mary Haley <haley at ucar.edu> wrote:
>
>> Hi Alan,
>>
>> I couldn't find the particular line you are referring to. I also grepped
>> for "ref_line" and then "0" and don't see a reference to setting ref_line
>> to 0.  I do, however, believe this might have been a bug in an older
>> version of NCL.
>>
>> Are you sure this is NCL V6.4.0 where you saw the issue? Here's how I did
>> the grep:
>>
>>  % grep ref_line $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl | grep
>> "0"
>>
>>
>> and here are the results that came up:
>>
>>       ygrtr(i,0:ngrtr(i)-5:5)  = ref_lines(i)
>>
>>       yless(i,0:nless(i)-5:5) = ref_lines(i)
>>
>>       yequal(i,0:nequal(i)-1:5) = ref_lines(i)
>>
>> ;;    return(conform_dims((/nref,4/),ref_line_color(0,:),1))
>>
>>     ref_line_pattern := rfres@$pattern_res1$(0)
>>
>>     ref_line_pattern = 0
>>
>>     ref_line_pattern := 0
>>
>>     ref_line_thickness = rfres@$thickness_res1$(0)
>>
>>     ref_line_thickness = 1.0
>>
>>     ref_line_thickness := 1.0
>>
>>       ref_line_pattern   := 0
>>
>>       ref_line           := get_res_value_keep(rfres,"gsn" +
>> str_upper(reftype)+"RefLine",0)
>>
>>   ref_line    := get_res_value_keep(rfres,"gsn" +
>> str_upper(reftype)+"RefLine",0)
>>
>>       yref_line = yref_line_list[0]
>>
>>       xref_line = xref_line_list[0]
>>
>> Can you type this on your end and see if you get something different?
>>
>>
>> Thanks,
>>
>> --Mary
>>
>>
>>
>> On Tue, Jan 16, 2018 at 8:34 AM, Alan Brammer via ncl-talk <
>> ncl-talk at ucar.edu> wrote:
>>
>>> NCL devs:
>>>
>>> Came across a bug in 6.4.0 when plotting a bar chart through
>>> gsn_csm_xy() that stems to a call to get_ref_line_options()
>>>
>>> at line 4588 in gsn_csm.ncl a variable is initialised as
>>>       ref_line = 0 ; setting ref_line to be an integer
>>>
>>> but then a couple lines down on line 4607  there is:
>>>     ref_line = get_res_value_keep(rfres,"trYMinF",min(y))
>>> but unless y or trYMinF are integers this will fail with an Assignment
>>> Type mismatch.
>>>
>>>
>>> Easy fix is to replace = with := on line 4607 in gsn_csm.ncl  (line 23
>>> of get_ref_line_options)
>>>
>>> Function doesn't appear to exist in versions before 6.4.0 so seems like
>>> a new problem.
>>>
>>>
>>> Thanks,
>>>
>>> Alan
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180117/2e8e6ede/attachment.html>


More information about the ncl-talk mailing list