[ncl-talk] Problem on averaging variable

Giorgio Graffino g.graffino at tim.it
Wed Jun 10 03:45:35 MDT 2020


Dear Dennis and Dave,thanks for pointing me to the relevant function. It works! 
I wasn't aware of the difference between NaN ans "_FillValue". I naively thought they referred to the very same thing. This is all good to know.
Cheers,Giorgio



  ----Messaggio originale----
 
 Da: shea at ucar.edu
 
 Data: 10-giu-2020 3.38
 
 A: "Dave Allured - NOAA Affiliate"<dave.allured at noaa.gov>
 
 Cc: "Giorgio Graffino"<g.graffino at tim.it>, "Ncl-talk"<ncl-talk at ucar.edu>
 
 Ogg: Re: [ncl-talk] Problem on averaging variable
 

 

 
  
   As previously noted, NCL recognizes "
   _FillValue" 
   

  
  
   

  
  
   It is the user responsibility change NaNs to _FillValue
  
  
   

  
  
   See: 
   replace_ieeenan
  
  
   It is easy to use:
  
  
   

  
  
     x = f->.....
   

  
  
    if (any(isnan_ieee(x))) then
    if(.not.isatt(x,"_FillValue")) then
      x at _FillValue = default_fillvalue(typeof(x))
    end if
    replace_ieeenan (x, x at _FillValue, 0)
  end if
  
 
 

 
  
   On Tue, Jun 9, 2020 at 4:09 PM Dave Allured - NOAA Affiliate via ncl-talk <
   ncl-talk at mailman.ucar.edu> wrote:
   

  
  
   
    
     
      It looks like your input data contains NaN's.  Otherwise you would probably never see this.
      

      
> average_op_ncl :      dim_avg_n over dimension(s): lon
      
> (0)     min=nan   max=nan
      

      
In NCL, NaN's ara NaN's, not missing values.  Support for NaN's is not clean.  If it was, we would not be having this conversation.  ;-)
     
     
      

     
     
      There is more than one way to fix this.  Best practice IMO is to convert all NaN's to missing values after reading input data, and before any other calculations (except maybe for subsetting).  Please review NCL docs for detecting, counting, and replacing NaN's.  In particular, see the isnan_ieee function.
     
     
      

     
     
      Depending on how much you care, you might also want to take a quick look at the spatial and temporal distributions of NaN's in that model's file set.  NaN's are an anomaly.  They may or may not indicate a significant quality problem in that data, something you might want to know about before further efforts.
     
     
      

     
     

     
      
       On Tue, Jun 9, 2020 at 3:41 PM Giorgio Graffino via ncl-talk <
       ncl-talk at mailman.ucar.edu> wrote:
       

      
      
       Dear NCL users,
       
        I have a weird issue on computing a simple avarage of a variable.
       
       
        

       
       
        I'm analysing a large subset of CMIP models to obtain density plots. However, there is a particular model I can't analyse: when I compute the average, all values in the variable becomes missing values. Here is the relevant snippet
       
       
        

       
       
        
          printVarSummary(rho_9s_mask)
        
        
          printMinMax(rho_9s_mask,False) 
        
        
         

        
        
         ;; Create cross sections
        
        
          rho_9s_mask_ave = dim_avg_n_Wrap(rho_9s_mask,2)
        
        
          copy_VarCoords_1(rho_9s_mask,rho_9s_mask_ave)
        
        
          
        
        
          printVarSummary(rho_9s_mask_ave)
        
        
          printMinMax(rho_9s_mask_ave,False) 
        
       
       
        

       
       
        and here is what I obtain
       
       
        

       
       
        Variable: rho_9s_mask 
Type: float 
Total Size: 14493600 bytes 
            3623400 values 
Number of Dimensions: 3 
Dimensions and sizes:   [time | 165] x [lev | 61] x [lon | 360] 
Coordinates:  
            time: [181.25..60081.25] 
            lev: [   1..6525] 
            lon: [ 0..358.9818] 
Number Of Attributes: 1 
  _FillValue :  1e+20 
(0)     min=1020.5   max=1027.72 

Variable: rho_9s_mask_ave 
Type: float 
Total Size: 40260 bytes 
            10065 values 
Number of Dimensions: 2 
Dimensions and sizes:   [time | 165] x [lev | 61] 
Coordinates:  
            time: [181.25..60081.25] 
            lev: [   1..6525] 
Number Of Attributes: 2 
  _FillValue :  1e+20 
  average_op_ncl :      dim_avg_n over dimension(s): lon 
(0)     min=nan   max=nan


       
       
        This works for all models but one. I tried to use a different function for the average, but nothing changes. I also tried to compute the average on other dimensions: the problem occurs again when averaging on the lev coordinate, but it doesn't when averaging on the time coordinate. It seems that there is a problem in the coordinate, but everything looks alright in the variable before the averaging. 
       
       
        

       
       
        Do you have any guess of what's wrong or any suggestion to help me?
       
       
        

       
       
        Thanks a lot, 
       
       
        Giorgio
       
      
     
    
    _______________________________________________
   
 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/20200610/7e07ed42/attachment.html>


More information about the ncl-talk mailing list