[ncl-talk] removing ensemble mean from original data

Sri Nandini bax8609 at uni-hamburg.de
Mon Jun 15 05:16:05 MDT 2020


Hello dear ncl-users,

I would like to know how to remove the ensemble mean from the 
corresponding time of each ensemble member, the method i used is not 
correct as it performs time average and i want to do ensemble average. 
The idea is to calculate ensemble mean each year (this also removes the 
seasonal cycle).

my original data is x=  time | 240] x [ens | 100] x [lat | 45] x [lon | 90]

;First method

  dimx = dimsizes(x)
    ntim = dimx(0)          ; 240
    nens = dimx(1)          ; 100
    nlat = dimx(2)          ; 45
    mlon = dimx(3)          ; 90


   x at _FillValue = -9.96921e+36
   ens_mean1=dim_avg_n_Wrap(x,1)
   printVarSummary(ens_mean1)        ;[time | 240]  x [lat | 45] x [lon 
| 90]

    x1 = x
    do n=0,nens-1
    hist_anom1(:,n,:,:) = hist_anom(:,n,:,:) - ens_mean1
    end do

;=second 
method=================================================================
; Compute  monthly anomalies from the mean climatology to remove 
seasonal cycle or to use
; rmMonAnnCycTLL (x) Removes the annual cycle from monthly data and 
subtracts the long term means from each month.
;==================================================================

    xClm  = clmMonTLLL(x)                                ; climatologies 
for each ensemble member
    printVarSummary(xClm)                                ; [month | 12] 
x [ens | 100] x [lat | 45] x [lon | 90]
    printMinMax(xClm,0)                                  ;   : 
min=-226.887   max=161.211cm
    print("============")

    xAnom = calcMonAnomTLLL(x,xClm)                     ; anomalies from 
each ensemble member climatology
    printVarSummary(xAnom)                              ; [time | 240] x 
[ens | 100] x [lat | 45] x [lon | 90]
    printMinMax(xAnom,0)                                ; 
min=-0.737722   max=0.83556
    print("============")

;3rd method
;==================================================================
    xClmMonEns = new((/nmos,nlat,mlon/), typeof(x), x at _FillValue)
do nmo=0,nmos-1
       work := reshape(x(nmo::nmos,:,:,:) ,(/nyrs*nens,nlat,mlon/))
       xStat = dim_stat4_n(work,0 )       ; (4,nlat,mlon)
       xClmMonEns(nmo,:,:) = xStat(0,:,:)
    end do
                      ; meta data
    xClmMonEns at long_name = "Monthly Climatology"
    xClmMonEns at LONG_NAME = "Monthly Climatology over all Ensemble Members"
    xClmMonEns at units     = x at units
    copy_VarCoords(x(0,0,:,:), xClmMonEns(0,:,:))
    xClmMonEns!0 = "month"
    printVarSummary(xClmMonEns)
    print("-----")
    printMinMax(xClmMonEns,0)

;==================================================================
;  Remove the ensemble monthly climatology from each ensemble member 
;==================================================================
printVarSummary(x)
printMinMax(x,0) print("===")

     xAnom = x
    do nt=0,ntim-1
       nmo = nt%12
      do ne=0,nens-1
         xAnom(nt,ne,:,:) = (/ x(nt,ne,:,:) - xClmMonEns(nmo,:,:) /) ; 
anomaly array
      end do
    end do
    xAnom at long_name = "Anomalies from Climatology"

    printVarSummary(xAnom)
    printMinMax(xAnom,0)
    print("===")

On 6/12/2020 2:06 PM, Rashed Mahmood wrote:
> Please add ncl-talk in subsequent messages...
>
> In that case, my suggestion in previous message should work.
>
> Rashe
> On Fri, Jun 12, 2020 at 1:55 PM Sri nandini <bax8609 at uni-hamburg.de 
> <mailto:bax8609 at uni-hamburg.de>> wrote:
>
>     Thank you.
>
>     I wish to remove the ensemble mean from each corresponding time of
>     each ensemble.
>
>     Sri
>
>     On 12.06.20 13:48, Rashed Mahmood wrote:
>>     If you just want to remove ensemble mean then you could do the
>>     following:
>>
>>     x_new      = x
>>     ens_mean = dim_avg_n_Wrap(x,1)
>>     do n=0,nens-1
>>        x_new(:,n,:,:) = x(:,n,:,:) - ens_mean
>>     end do
>>
>>     However, please make sure that this is what you want!, it is up
>>     to you to decide and know what you are trying to accomplish here.
>>     Your variable names suggest that there could be some confusion...
>>
>>     Cheers,
>>     Rashed
>>
>>
>>
>>
>>
>>     On Fri, Jun 12, 2020 at 12:50 PM Sri nandini via ncl-talk
>>     <ncl-talk at mailman.ucar.edu <mailto:ncl-talk at mailman.ucar.edu>> wrote:
>>
>>         Hello dear ncl-users,
>>
>>         I want to know the best way to remove the ensemble mean from the
>>         corresponding time of each ensemble member. Can someone tell
>>         me if the
>>         following code is correct? i do not get any error but i
>>         wanted to be
>>         sure of the method.
>>
>>         Thanx in advance
>>
>>         Sri
>>
>>         ;==================================================================
>>         ;  Remove the ensemble mean from each ensemble member
>>         ;==================================================================
>>             dimx = dimsizes(x)
>>             ntim = dimx(0)          ; 240
>>             nens = dimx(1)          ; 100
>>             nlat = dimx(2)          ; 45
>>             mlon = dimx(3)          ; 90
>>
>>             nmos = 12
>>             nyrs = ntim/nmos         ; 21
>>
>>             printVarSummary(x)       ;[time | 240] x [ens | 100] x
>>         [lat | 45] x [lon | 90]
>>             ens_mean=dim_avg_n_Wrap(x,1)
>>             printVarSummary(ens_mean);[time | 240]  x [lat | 45] x
>>         [lon | 90]
>>
>>              detrended_x = x
>>              do nt=0,ntim-1
>>                nmo = nt%12
>>               do ne=0,nens-1
>>                  detrended_x(nt,ne,:,:) = (/ x(nt,ne,:,:) -
>>         ens_mean(nmo,:,:) /) ; detrended array
>>               end do
>>             end do
>>             detrended_x at long_name = “Ensemble mean removed”
>>
>>             printVarSummary(detrended_x)
>>            [time | 240] x [ens | 100] x [lat | 45] x [lon | 90]
>>
>>         _______________________________________________
>>         ncl-talk mailing list
>>         ncl-talk at mailman.ucar.edu <mailto: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/20200615/9a17d882/attachment.html>


More information about the ncl-talk mailing list