#! /usr/bin/env ruby
=begin

= title:

  mkmean-nc.rb  -- netCDF $B%G!<%?$NG$0U$N<!85$K$D$$$FJ?6Q$r$H$C$?%G!<%?$r@8@.$9$k%9%/%j%W%H(B.

= usage:

  mkmean-nc-5dim.rb file [file...] ($BNc(B: $ mkmean-nc-5dim.rb ./*.nc)

= description:
* $B0z?t$K$H$C$?(B nc $B%U%!%$%k$=$l$>$l$KBP$7$F(B, 4, 5 $B<!85L\$=$l$>$l$KBP$7$FJ?6Q$r$H$C$?(B nc $B%U%!%$%k$r?7$?$K@8@.$9$k(B.
  * $BF,$K(B daily $B$H$$$&@\F,6g$,$D$$$F$$$k%U%!%$%k$N$_BP>](B
  * $B@8@.$5$l$k%U%!%$%kL>$O(B daily $B$r=|$$$?$b$N$K$J$k(B.
* $B1tD>%G!<%?$+$i7nJ?6Q%G!<%?$r@8@.$9$k$N$K;HMQ(B.
 

= history:

  2003-12-22 created by daktu32@ep.sci.hokudai.ac.jp

=end
require "getopts"
require "numru/ggraph"
require "libgphys-n"
include NumRu

# $B%*%W%7%g%s2r@O(B ----------------------------------------------------
unless getopts("hHo", "help", "output:", "mean:")
  print "#{$0}:illegal options. please exec this program with -h/--help. \n"
  exit 1
end



file = Array.new
ARGV.each do |i| 
  if i =~ /.nc$/ then
    p i
    file << i
  end
end



if ARGV[ARGV.size-1] =~ /.nc$/ then
  var = NetCDF.open(file.last, "r").var_names[-1]
else
  var = ARGV[ARGV.size-1]
end

if file.size == 1 then
  file = file[0].to_s
end



# $B@_DjItJ,(B
## $BDI2C%a%=%C%IDj5A%U%!%$%k(B
require "libgphys-n.rb"
## $BB0@-@_Dj%U%!%$%k(B
require "NCEP-ncattr.conf.rb"


filename = File.basename($0)

p file
p a = Time.now

file.each {|f|

  p gphys = GPhys::IO.open(f, var)
  p mean = gphys.mean(gphys.axnames.index($OPT_mean))
  
  p newfile = File.basename(f).sub("daily_", "")
  p newfile = ($OPT_output) if ($OPT_output)

  ym = f.scan(/(\d+)-(\d+)/)
  year = ym[0]
  month = ym[1]
  
  global_attr = global_attr(f)
  mean.save(newfile, global_attr)

  ## $B%X%C%@$r(B Monthly-Mean $BMQ$K=q$-49$((B ----------------------
  nc = NetCDF.open(newfile, mode="a+")
  nc.redef # into define mode

  # $BJQ?tB0@-$r=q$-49$((B
  var = nc.var(var)
  var.each_att do |att|
    att_val = att.get
    if att_val.is_a?(String)
      att.put(att_val.sub(/^4x\ *[D|d]aily/, "Monthly Mean"))
    end
  end
  # $BBg0hB0@-$r=q$-49$((B
  nc.each_att do |att|
    att_val = att.get
    if att_val.is_a?(String)
      att.put(att_val.sub(/^4x\ *[D|d]aily/, "Monthly Mean"))
    end
  end
  # title $BB0@-$K%G!<%?$NG/7n$r2C$($k(B.
  title =   nc.att('title').get
  nc.put_att("title", title+"(#{ym})")
  nc.close

  p "make #{newfile}"

}

p Time.now - a
