[ncl-talk] stat_despersion

ali mughal mughalali655 at gmail.com
Mon Jul 5 02:06:08 MDT 2021


Dear All

I was able to develop the following map with stat depression.

Firstly, I would be grateful if you can inform me if this plot is making
sense. Secondly, I would like to request how I can move the text a bit away
from the right margin for improved visibility.

I will be grateful for your responses.




On Thu, Jul 1, 2021 at 6:57 PM ali mughal <mughalali655 at gmail.com> wrote:

> I hope the above code is correct.
> In case it is correct, I would need to express the color bar with the
> percentage distribution as follows. I hope someone can help me with it as
> well.
> [image: image.png]
>
> On Thu, Jul 1, 2021 at 6:47 PM ali mughal <mughalali655 at gmail.com> wrote:
>
>> Dear All
>>
>> When doing a few modifications I am able to obtain the attached images
>> for the 10th and 95th percentile. Please let me know if the following code
>> is correct. I am not copying the plotting part since it will prolong the
>> email.
>>
>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>> a=addfile("BEM_April","r")
>> ta_mean_BEM=a->TA_MEAN
>> ta=ta_mean_BEM(24:719,0,:,:)
>> ta=ta-273.16
>>
>> nlat1=ta(0,:,0)
>> mlon1=ta(0,0,:)
>> opt=False
>>
>>     nlStrt=0
>>      nlLast=129
>>      mlStrt=0
>>      mlLast=210
>>      nlat=dimsizes(nlat1)
>>      mlon=dimsizes(mlon1)
>>     grid_stats = new ((/nlat,mlon,30/), typeof(ta),getFillValue(ta))
>>
>>     do nl=0,nlLast-1
>>       do ml=0,mlLast-1
>>          grid_stats(nl-nlStrt,ml-mlStrt,:) = stat_dispersion(ta(:,nl,ml),
>> opt)
>>       end do
>>    end do
>>
>>
>> copy_VarCoords(x(:,nlStrt:nlLast,mlStrt:mlLast), grid_stats)
>> grid_stats at long_name = "stat_dispersion at individual grid points"
>> printVarSummary(grid_stats)
>>
>> tenthP=grid_stats(:,:,3)
>> ;print(tenthP)
>> printVarSummary(tenthP)
>> nintythP=grid_stats(:,:,13)
>> printVarSummary(nintythP)
>>
>>
>>
>> On Thu, Jul 1, 2021 at 3:36 PM Buzan, Jonathan <jbuzan at purdue.edu> wrote:
>>
>>> Ali,
>>>
>>> stat_dispersion produces 30 values, the space for it to be dumped into
>>> needs to have 30 spaces.
>>> But you should separate 1 grid cell (like, ta1gridcell= ta(0,0,0)),
>>> print the values, and operate on that 1 grid cell.
>>>
>>> Cheers,
>>> -Jonathan
>>>
>>>
>>>
>>>
>>> On Jul 1, 2021, at 9:33 AM, ali mughal <mughalali655 at gmail.com> wrote:
>>>
>>> Thanks for the reply
>>>
>>> shouldn't this
>>> grid_stats(68,160,:) = stat_dispersion( ta(:,68,160), opt)
>>>
>>> be changed to
>>>
>>> grid_stats(68,160,3) = stat_dispersion( ta(:,68,160), opt)
>>>
>>> to obtain the 10th Percentile ?
>>>
>>> when I do it I get the following error
>>>
>>> fatal:VarVarWrite: Number of dimensions on left hand side does not match
>>> right hand side
>>> fatal:["Execute.c":8576]:Execute: Error occurred at or near line 41
>>>
>>>
>>>
>>> On Thu, Jul 1, 2021 at 3:27 PM Muhammad Omer Mughal <
>>> m.mughal1 at graduate.curtin.edu.au> wrote:
>>>
>>>> Ali
>>>> This was a suggestion.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>> *From:* Muhammad Omer Mughal <m.mughal1 at graduate.curtin.edu.au>
>>>> *Sent:* Thursday, 1 July 2021 3:22 PM
>>>> *To:* ali mughal <mughalali655 at gmail.com>; Buzan, Jonathan <
>>>> jbuzan at purdue.edu>
>>>> *Cc:* Ncl-talk <ncl-talk at ucar.edu>
>>>> *Subject:* Re: [ncl-talk] stat_despersion
>>>>
>>>> I used the following script . I also copied the result at the end of
>>>> the script. Can it be due to the reason that the value is too small
>>>>
>>>>
>>>> a=addfile("BEM_April","r")
>>>> ta_mean_BEM=a->TA_MEAN
>>>> ta=ta_mean_BEM(24:719,0,:,:)
>>>> ta=ta-273.16
>>>>
>>>> opt=False
>>>>       nlat=dimsizes(nlat1)
>>>>      mlon=dimsizes(mlon1)
>>>>     grid_stats = new ((/nlat,mlon,30/), typeof(ta), getFillValue(ta))
>>>>     grid_stats(68,160,:) = stat_dispersion( ta(:,68,160), opt)
>>>>     printMinMax (grid_stats, False)
>>>>
>>>> (0)     Robust Dispersion Statistics: min=-0.552326   max=696
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>> *From:* ncl-talk <ncl-talk-bounces at mailman.ucar.edu> on behalf of
>>>> Buzan, Jonathan via ncl-talk <ncl-talk at mailman.ucar.edu>
>>>> *Sent:* Thursday, 1 July 2021 2:24 PM
>>>> *To:* ali mughal <mughalali655 at gmail.com>
>>>> *Cc:* Ncl-talk <ncl-talk at ucar.edu>
>>>> *Subject:* Re: [ncl-talk] stat_despersion
>>>>
>>>> Hello,
>>>>
>>>> You should try 1 grid cell first and print the values and print the
>>>> stat_dispersion, and double check that you are feeding the array the
>>>> correct data.
>>>>
>>>> -Jonathan
>>>>
>>>>
>>>>
>>>> On Jul 1, 2021, at 5:52 AM, ali mughal via ncl-talk <
>>>> ncl-talk at mailman.ucar.edu> wrote:
>>>>
>>>> Sorry a correction to the above email is that all values in grid_stats,
>>>> tenthP and nintythP are 0.
>>>>
>>>> On Thu, Jul 1, 2021 at 11:49 AM ali mughal <mughalali655 at gmail.com>
>>>> wrote:
>>>>
>>>> Dear All
>>>>
>>>> Here is how I have modified the code according to your suggestions.
>>>> However, I am getting all values in the output of grid_stats.and when I try
>>>> plotting the tenth percentile I also have a zero value.  I will be
>>>> extremely grateful for your support.
>>>>
>>>>
>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>>>> a=addfile("wrfout","r")
>>>> ta_mean_BEM=a->TA_MEAN
>>>> ta=ta_mean_BEM(24:719,0,:,:)
>>>> ta=ta-273.16
>>>> nlat1=ta(0,:,0)
>>>> mlon1=ta(0,0,:)
>>>>
>>>>
>>>>  nlStrt=0
>>>>  nlLast=129
>>>>  mlStrt=0
>>>>  mlLast=210
>>>>  nlat=dimsizes(nlat1)
>>>>  mlon=dimsizes(mlon1)
>>>>
>>>>  grid_stats = new ((/nlat,mlon,30/), typeof(ta), getFillValue(ta))
>>>>     do nl=nlStrt,nlStrt-1
>>>>       do ml=mlStrt,mlStrt-1
>>>>
>>>>          grid_stats(nl-nlStrt,ml-mlStrt,:) = stat_dispersion(
>>>> ta(:,nl,ml), opt)
>>>>
>>>>       end do
>>>>    end do
>>>>
>>>> tenthP=grid_stats(:,:,3)
>>>>
>>>> nintythP=grid_stats(:,:,13)
>>>>
>>>>
>>>> type = "png"
>>>> wks = gsn_open_wks(type,"abc")
>>>> res =True
>>>> opts = res
>>>> opts at cnFillOn = True
>>>> opts at cnConstFEnableFill           = True
>>>> opts at cnConstFLabelBackgroundColor = "transparent"
>>>>
>>>>
>>>> pltres = True
>>>> pltres at NoTitles = True
>>>> pltres at gsnMaximize = True
>>>> pltres at FramePlot = False
>>>> pltres at PanelPlot = True
>>>> mpres = True
>>>> mpres at mpOutlineBoundarySets    ="NoBoundaries"
>>>> contour_lh = wrf_contour(a,wks,tenthP,opts)
>>>> delete(opts)
>>>>
>>>> plot = wrf_map_overlays(a,wks,(/contour_lh/),pltres,mpres)
>>>> draw(plot)
>>>> frame(wks)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Jun 30, 2021 at 10:24 PM Dave Allured - NOAA Affiliate <
>>>> dave.allured at noaa.gov> wrote:
>>>>
>>>> Also, stat_dispersion returns an array of 30 values each time, not a
>>>> single value.  See function documentation.  So you need to add an extra
>>>> dimension in the loop calculation, like this:
>>>>
>>>>     grid_stats = new ((/ nlat, mlon, 30 /), typeof(rf),
>>>> getFillValue(rf))
>>>>
>>>>     do ...
>>>>        do ...
>>>>          grid_stats(nl-nlStrt,ml-mlStrt,:) = stat_dispersion(
>>>> rf(:,nl,ml), opt)
>>>>       end do
>>>>     end do
>>>>
>>>> When the loop is complete, the 10th percentile values will be in
>>>> grid_stats(:,:,3), which is a 2-D grid that you can plot.  The 90th
>>>> percentile values will be in grid_stats(:,:,13).  Again, refer to the
>>>> function documentation for the correct index values to access the desired
>>>> statistics.
>>>>
>>>>
>>>> On Wed, Jun 30, 2021 at 5:13 AM Buzan, Jonathan <jbuzan at purdue.edu>
>>>> wrote:
>>>>
>>>> NCL counts from 0 to n-1, not from 1 to n. So your loop vars need to
>>>> account for that.
>>>>
>>>> Cheers,
>>>> -Jonathan
>>>>
>>>> On Jun 30, 2021, at 1:10 PM, ali mughal via ncl-talk <
>>>> ncl-talk at mailman.ucar.edu> wrote:
>>>>
>>>> Dear community
>>>> Thank you very much for your helpful comments.
>>>> As an initial test, I was trying to obtain statistics at all grid
>>>> points before plotting them. I used the following code
>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>>>> a=addfile("wrfout","r")
>>>> ta_mean_BEM=a->TA_MEAN
>>>> ta=ta_mean_BEM(24:719,0,:,:)
>>>> rf=ta-273.16
>>>> nlat1=rf(0,:,0)
>>>> printVarSummary(nlat)
>>>> mlon1=rf(0,0,:)
>>>> printVarSummary(mlon)
>>>> printVarSummary(rf)
>>>> opt=False
>>>>
>>>>      nlStrt=0
>>>>      nlLast=129
>>>>      mlStrt=0
>>>>      mlLast=210
>>>>      nlat=dimsizes(nlat1)
>>>>      mlon=dimsizes(mlon1)
>>>>
>>>>     grid_stats = new ((/nlat(0),mlon(0)/), typeof(rf), getFillValue(rf))
>>>>     printVarSummary(grid_stats)
>>>>     do nl=0,nlLast
>>>>       do ml=0,mlLast
>>>>
>>>>          grid_stats(nl-nlStrt,ml-mlStrt) = stat_dispersion(
>>>> rf(:,nl,ml), opt)
>>>>
>>>>       end do
>>>>    end do
>>>>
>>>>    copy_VarCoords(rf(:,nlStrt:nlLast,mlStrt:mlLast), grid_stats)
>>>>    grid_stats at long_name = "stat_dispersion at individual grid points"
>>>>    printVarSummary(grid_stats)
>>>>
>>>> But I obtain the following output from my print statements and the
>>>> errors
>>>>
>>>> Variable: rf
>>>> Type: float
>>>> Total Size: 75418560 bytes
>>>>             18854640 values
>>>> Number of Dimensions: 3
>>>> Dimensions and sizes:   [696] x [129] x [210]
>>>> Coordinates:
>>>>
>>>> Variable: grid_stats
>>>> Type: float
>>>> Total Size: 108360 bytes
>>>>             27090 values
>>>> Number of Dimensions: 2
>>>> Dimensions and sizes:   [129] x [210]
>>>> Coordinates:
>>>> fatal:VarVarWrite: Number of dimensions on left hand side does not
>>>> match right hand side
>>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 46 in
>>>> file var_Test.ncl
>>>>
>>>> fatal:Subscript out of range, error in subscript #1
>>>> fatal:An error occurred reading rf
>>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 51 in
>>>> file var_Test.ncl
>>>>
>>>> Variable: grid_stats
>>>> Type: float
>>>> Total Size: 108360 bytes
>>>>             27090 values
>>>> Number of Dimensions: 2
>>>> Dimensions and sizes:   [129] x [210]
>>>> Coordinates:
>>>> Number Of Attributes: 1
>>>>   long_name :   stat_dispersion at individual grid points
>>>>
>>>>
>>>> On Wed, Jun 30, 2021 at 12:01 AM Dave Allured - NOAA Affiliate <
>>>> dave.allured at noaa.gov> wrote:
>>>>
>>>> Ali, you do not need to make new code to find the 10th and 90th
>>>> percentile values.  Just use stat_dispersion directly, and take only the
>>>> output values that you need.  The function is designed to be used in this
>>>> way.  There is no significant performance impact from ignoring all the
>>>> other result values.
>>>>
>>>> You can easily make a spatial map of 10th or 90th percentile values.
>>>> Just call stat_dispersion inside a double loop over X and Y dimensions.
>>>>
>>>>
>>>> On Tue, Jun 29, 2021 at 9:23 AM Buzan, Jonathan via ncl-talk <
>>>> ncl-talk at mailman.ucar.edu> wrote:
>>>>
>>>> Hello,
>>>>
>>>> I’ve used that function a bunch. If you only want 10th and 90th
>>>> percentile, you’ll want to use:
>>>>
>>>> qsort
>>>> Which will sort your data within a single grid cell from lowest to
>>>> highest.
>>>>
>>>> And then grab the specific lines of code for 10th and 90th percentiles
>>>> from the stat_dispersion function in:
>>>> $NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl
>>>>
>>>> If you look at the function, you’ll see that it uses qsort, then goes
>>>> step by step through calculating all the different applications.
>>>>
>>>> Cheers,
>>>> -Jonathan
>>>>
>>>> On Jun 29, 2021, at 5:14 PM, ali mughal via ncl-talk <
>>>> ncl-talk at mailman.ucar.edu> wrote:
>>>>
>>>> Dear NCL community
>>>>
>>>> In the following ncl function
>>>>
>>>>
>>>> http://www.ncl.ucar.edu/Document/Functions/Contributed/stat_dispersion.shtml
>>>>
>>>> Is it possible to use 10th and 90th percentile values only ?
>>>>
>>>> Also can these values be used to develop a spatial map?
>>>>
>>>> For example if I want to find the 10th and  90th percentile of air
>>>> temperature within the urban grid cells only.
>>>>
>>>> Can anyone share an example script or point me to any web resource will
>>>> be appreciated.
>>>>
>>>> Thanks in advance
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> ncl-talk at mailman.ucar.edu
>>>> List instructions, subscriber options, unsubscribe:
>>>> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210705/ef54a894/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 19322 bytes
Desc: not available
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210705/ef54a894/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Picture1.png
Type: image/png
Size: 350422 bytes
Desc: not available
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210705/ef54a894/attachment-0003.png>


More information about the ncl-talk mailing list