[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002439] Re: integrate



竹広です. 

integrate で重みを使い出すと, 次元変数だけでなくその重み変数も
一緒に保持して欲しいんですが, そうすると GPhys オブジェクトの
定義にかかわるのでおおごとですよね. そこでとりあえず 
gp コマンドシリーズで重み変数も一緒に読み書きするための
メソッドを作ってみました. 

gtool4 規約では重み座標の名前は dimname + _'weight' で
正しいでしょうか?

問題ないようでしたらとりあえず gpcommon.rb へいれて
一連の gp コマンドに採り入れようと思いますがいかがでしょう. 

======================================================================
def open_gturl_with_dimweights(gturl)
  file, var, slice, thinning = GPhys::IO.parse_gturl(gturl)
  gp = GPhys::IO.open(file,var)
  gp = gp.cut(slice) if slice
  gp = gp[thinning] if thinning
    
  gp_weights = Hash.new
  gp.axnames.each{|dim| 
    weight_name = dim + '_weight'
    if ( GPhys::IO.var_names(file).include?(weight_name) ) then
      gp_weights[dim] = GPhys::IO.open(file, weight_name)
      if slice then
        gp_weights[dim] = gp_weights[dim].cut(slice[dim]) if slice.key?(dim)
      end
      if thinning then
        gp_weights[dim] = gp_weights[dim][thinning[dim]] if thinning.key?(dim)
      end
    end
  }
  [gp, gp_weights]
end

def write_with_dimweights(file, gp, gp_weights)
  GPhys::IO.write(file, gp)
  gp.axnames.each{|dim| 
    GPhys::IO.write(file, gp_weights[dim]) if gp_weights.key?(dim)
  }
end
======================================================================