[ncl-talk] Interpolation for taylor diagram

Dennis Shea shea at ucar.edu
Mon Mar 6 08:56:34 MST 2017


There are many things that just don't add up for me. The code you
originally posted 100 time (?months?) steps. The model data shows 1800
months while the NCEP Reanalysis had 748  months. You said you wanted
"seasonal (DJF) Taylor diagrams" ....  so 1800/12=150 years (150 DJF) and
the NCEP has 742/12=62.3 years (62 DJS). I am no sure where you get 100
time steps.

The code you posted indicate

ncl 0> f = addfile("T2M2.nc","r")
ncl 1> T2 = f->TREFHT
ncl 2> printVarSummary(T2)

Variable: T2
Dimensions and sizes:    [time | 1800] x [lat | 96] x [lon | 144]
==> #years= 1800/12=150 years ==> 150 DJF
Coordinates:
            time: [  31..54750]
            lat: [ -90..  90]                   <================ CAM:
CESM   ... South-to-North
            lon: [   0..357.5]


ncl 5> g = addfile("air.mon.mean.nc","r")
ncl 6> print(g)
ncl 7> air = short2flt(g->air)
ncl 8> printVarSummary(air)

Variable: air
Dimensions and sizes:    [time | 748] x [level | 17] x [lat | 73] x [lon |
144]    ==> #years = 748/12=62.3  ==> 62 DJF
Coordinates:
            time: [17067072..17612736]
            level: [1000..10]
            lat: [90..-90]                   <============== NCEP:
North-to-South
            lon: [ 0..357.5]

========================
Further, the linint2 documentation states "... *nyi* subsection of *yi*
must be monotonically increasing,". The 'yi' are the latitudes. Again, the
code you posted did not show that you made the NCEP Reanalysis increasing.

I have no idea why you you are interpolating to a 5 degree grid. Why not
interpolate to the 2.5 grid


 f = addfile("T2M2.nc","r")
 T2 = f->TREFHT
  printVarSummary(T2)              ; 1800 time steps

 g = addfile("air.mon.mean.nc","r")
 air = short2flt(g->air(:,0,:,:)       ; 1000 mb only
 printVarSummary(air)               ; **look** at 'lat'   90 to -90
North-to_south

 air = air(:,::-1,:)                          ; make latitudes
monotonically increasing (NCL syntax)
 printVarSummary(air)               ; **look** at 'lat'   -90 to 90
South-to-North
                                                  ; you have 748 time steps

----

Note: These must have the same # of time steps *if* you have a time
timension.

  t2 = linint2_Wrap(T2&lon, T2&lat, T2, True,  air&lon, air&lat, 0)
  printVarSummary(t2)               ; 1880 time steps


Goos Luck

On Wed, Mar 1, 2017 at 11:57 PM, Sri Nandini <snandini at marum.de> wrote:

>
> The files are on the ftp server except air.mon.mean.nc
>
> I get these errors when uploading:
> local: air.mon.mean.nc remote: air.mon.mean.nc
> 227 Entering Passive Mode (128,117,23,220,192,5).
> 553 Could not create file.
> the file air.mon.mean.nc can be found here:
> https://www.esrl.noaa.gov/psd/data/gridded/data.ncep.
> reanalysis.derived.pressure.html
>
> Thank you.
>
>
> On Mar 1, 2017 4:10:20 PM, Dennis Shea wrote:
>
> re:
> fo = linint2(airw&lon,airw&lat,airw(time|:,lat|:,lon|:), True, LON, LAT,
> 0)
> Which gives an error:
> warning:linint2: xi, yi, xo, and yo must be monotonically increasing
> ====
>
> In your 1st post you had
>
>   lon = (0., 2.8125, .... , 357,0125)   <== ?typo?  357.0125  ??
>   lat = (-87.8638, ... ,87.8638)
>
>   LON = (0., 2.5, ... , 357.5)    ; length 144
>   LAT = (-90.,87.5,...90.)        ; length 73
>
>
> If the print(airw&lon) and  print(airw&lat) are increasing then I am not
> sure what the problem is.
>
> Really bi-linear interpolation is pretty simple.
>
> ===
> Why are you use 'escorc' rather that 'pattern_cor' ?
>
> ===
> You can send a *minimal, clean script* and the necessary files to
>
> ftp ftp.cgd.ucar.edu
> anonymous
> your_email
> cd incoming
> put ...
> put ...
> quit
>
>
> On Wed, Mar 1, 2017 at 12:09 AM, Sri Nandini <snandini at marum.de> wrote:
>
> Hello
>
> Thank you.
>
> Im still at the interpolation stage of the script, what i wish to do is
> change the model temperature grid (lat,lon) same to my observational
> temperature.
> To do that i followed:
> fo = linint2(airw&lon,airw&lat,airw(time|:,lat|:,lon|:), True, LON, LAT,
> 0)
> Which gives an error:
> warning:linint2: xi, yi, xo, and yo must be monotonically increasing
>
> My airw= [100 360 720]  ;observed temp
> My t2mw= [100 96 144]  ' cesm modelled temp
>
> My fo= [100 360 720] but the error comes when i apply the corr for taylor
> diag:
> error: fatal:escorc: The last dimension of x must be equal to the last
> dimension of y
>
> My code for corr is: re=escorc(airw,fo) where both datasets now have same
> grid.
>
> Would anyone have a sample code to share if they were successful in
> running a taylor diagram after interpolating the datasets please? and
> applied centered corr and rsmd?
> Deeply appreciated
>
>
> On Feb 28, 2017 7:36:15 PM, Adam Phillips wrote:
>
> Hi Sri,
> The error message is telling you what the issue is:
> fatal:linint2: The rightmost dimensions of fi must be nyi x nxi, where nyi
> and nxi are the lengths of yi and xi respectively
>
> fi is your input array, and the error message is saying that the rightmost
> dimensions of fi must be equal to the sizes of the lon and lat arrays that
> you pass in.
>
> Thus, if you pass in your t2mw array to linint2 like this:
> fo = linint2(t2mw&lon,t2mw&lat,t2mw, True, LON, LAT, 0)
> should work as lon and lat are the 2 rightmost dimensions of t2mw.
> However, if you pass in your airw array:
> fo = linint2(airw&lon,airw&lat,airw, True, LON, LAT, 0)
> You will get the referenced error message as time is the rightmost
> dimension in airw. The solution is to reorder the dimensions in airw:
> fo = linint2(airw&lon,airw&lat,airw(time|:,lat|:,lon|:), True, LON, LAT,
> 0)
>
> Hope that helps. If you have any further questions please respond to the
> ncl-talk email list and not to me personally.
> Adam
>
>
> On Tue, Feb 28, 2017 at 8:43 AM, Sri Nandini <snandini at marum.de> wrote:
>
> Thank you
>
> So i have cleaned out the commented statements, and the errors i am
> getting are these:
>
> fatal:linint2: The rightmost dimensions of fi must be nyi x nxi, where nyi
> and nxi are the lengths of yi and xi respectively
>
>    printVarSummary(t2mw)
> Dimensions and sizes:    [time | 100] x [lat | 192] x [lon | 288]
>    printVarSummary(airw)
> Dimensions and sizes:    [lat | 62] x [lon | 162] x [time | 100]
> It stops at the interpolation stage before even coming to the correlation
> section.
> Basically i am unsure of my interpolation method between observations and
> model output data.
>
> On Feb 24, 2017 4:28:11 PM, Dennis Shea wrote:
>
> I started to look at your code. However, it has lots of commented
> statements and, to me,  it is not clear what is happening. Really, you
> should send only clean scripts. We like to help but we  don't have the time
> to decipher codes.
>
> The commented
>
>   ;cor1 = dim_avg_n_Wrap(pattern_cor( t2mw, airw, clat, 0), 0)
>
> contains
>    http://www.ncl.ucar.edu/Document/Functions/
> Contributed/pattern_cor.shtml
>
> What is wrong with the following:
>
>    printVarSummary(t2mw)
>    printVarSummary(airw)
>
>    pcor = pattern_cor( t2mw, airw, clat, 0)
>    print(pcor)
>
>
>
> On Thu, Feb 23, 2017 at 9:03 AM, Sri Nandini <snandini at marum.de> wrote:
>
> Dear NCL community,
> Greetings!
>
> I am trying to plot seasonal (DJF) Taylor diagrams and have errors in
> interpolation my datasets on same grid.
> (a) read 2 data sets with different resolutions and regrid  (modelled and
> obs temperature for a test)
> (b) calculate a pattern correlation
>
> My script is attached below ::
>
> ;=============================
> =====================================
> ;Taylor diagram calculations
> ;================================ interpolation onto common grid (of
> observational data)
> ;ncl pattern_cor between different size arrays
>  t2mw = f->t2mw(0,0,:,{0:360}); remove cyclic point
>   lon = f->lon({0:360})
> ;************************************************
> ; interpolate to new grid
> ;***********************************************
>   newlat = fspan(-60.,60,24)
>   newlon = fspan(0.,355.,72)
>
>  newt2mw = linint2_Wrap(lon,t2mw&lat,t2mw,True,newlon,newlat,0)
>
>   newt2mw!0   ="lat"
>   newt2mw!1   = "lon"
>   newt2mw&lat = newlat
>   newt2mw&lon = newlon
> ;=============================
> =========================================centered Pattern correlation
> (coslat weighting has been done previously above)
> re=escorc(airw,newt2mw)
>  ;cor1 = dim_avg_n_Wrap(pattern_cor( t2mw, airw, clat, 0), 0);rc =
> pattern_cor(x, y,gw, 0)      ; gaussian weighting, centered
>  mmd= (/cor1/)
>  printVarSummary(mmd)
> ;================================Standard deviation
> ;================================
>
> ;pre0_Std = dim_avg_n_Wrap( dim_stddev_n_Wrap( t2mw, (/1,2/)), 0)
>  ;std1 = dim_rmsd_Wrap(airw,t2mw, 0);computes rootmean square difference
> ;std1 = dim_rmsd_n(t2mw, airw, 0);
>     std1 = dim_rmsd( t2mw(lat|:,lon|:,time|:), airw(lat|:,lon|:,time|:)
> )    ; ==> rmsdTime(nlat,nlon)
>
>     ;rmsdTime = dim_rmsd_n( x, y, 0 )
> ; ==> no reordering needed
> ================================================================
> I had a look at other interpolation functions for correlations between
> different grids such a s:
>
> Assume *fi* is a 4D array dimensioned *ntim* x *nlvl* x *nlat* x *mlon* (
> *ntim*=50, *nlvl*=30, *nlat*=64, *mlon*=128), and that the rightmost
> dimension is to be treated as cyclic (the user should not add a cyclic
> point for the rightmost dimension).
>
> All times and levels will be interpolated and returned in a new array *fo*
> dimensioned *ntim* x *nlvl* x *73* x *144*:
>
>   lon = (0., 2.8125, .... , 357,0125)
>   lat = (-87.8638, ... ,87.8638)
>
>   LON = (0., 2.5, ... , 357.5)    ; length 144
>   LAT = (-90.,87.5,...90.)        ; length 73
>
>   fo = *linint2_Wrap* (lon,lat,fi, True, LON,LAT, 0)
>
> Error:
>
> Deeply appreciated
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
>
> --
> Adam Phillips
> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>
> <http://www.cgd.ucar.edu/staff/asphilli>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
>
>
> _______________________________________________
> 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/20170306/78512911/attachment.html 


More information about the ncl-talk mailing list