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

[dennou-ruby:003946] Re: __shape_matching のバグ



松葉さま:

お待たせしました。
パッチまで作ってくれてありがとうございました。
確認のうえ,ちょっと違う形で取り込みました。--- 違いは,
名前による判断は次元長だけでは区別がつかないところに限る
ということです。コメント文がそのように書いてなかったので,
あわせて書きなおしました。

差分を添付します。git レポジトリには反映してますが,
そろそろ新バージョンをリリースしないと...。
(NumRu::NArray 対応が残ってて...)

> ありがとうございます。確かに辿りつけないとだめですね。
> あとで確認します。堀之内
> 
> > 電脳 Ruby のみなさま: 京大気象学研究室 M2 の松葉です.
> > 
> > gphys.rb の中の __shape_matching というメソッドにバグを見つけましたので,
> > パッチを作成してみました.添付いたします.GPhys のバージョンは 1.5.0-1 です.
> > 
> > どういうバグかと一応説明しておきますと,たとえば,[lon, lat, z, time] = [32, 32, 32, 7]
> > であるような GPhys オブジェクトに対して,[lat] の一次元データを足すようなことを考えると,
> > match する軸を探すときに index または rindex で一致する軸を探そうとするので,目的の真ん中の
> > 32 にたどり着けないというものです.
> > 
> > 滅多に遭遇することではないかと思いますが,取り込んでいただけると助かります.
> > 
> > サンプルスクリプトも付けておきます (意味のある計算ではありませんが,動作確認のため).
> > 
> > ---------- ここから ----------
> > require 'numru/gphys'
> > include NumRu
> > 
> > nx = NArray.float(10).indgen!  # 0,1,2,..
> > ny = NArray.float(10).indgen!  # 0,1,2,..
> > nz = NArray.float(10).indgen!  # 0,1,2,..
> > nt = NArray.float(10).indgen!  # 0,1,2,..
> > nm = NArray.float(10).indgen!  # 0,1,2,..
> > 
> > vx = VArray.new( nx, {"long_name"=>"x coord","units"=>"m"}, "x")
> > vy = VArray.new( ny, {"long_name"=>"y coord","units"=>"m"}, "y")
> > vz = VArray.new( nz, {"long_name"=>"z coord","units"=>"m"}, "z")
> > vt = VArray.new( nt, {"long_name"=>"time","units"=>"s"}, "t")
> > vm = VArray.new( nm, {"long_name"=>"member","units"=>""}, "m")
> > 
> > xax = Axis.new.set_pos(vx)
> > yax = Axis.new.set_pos(vy)
> > zax = Axis.new.set_pos(vz)
> > tax = Axis.new.set_pos(vt)
> > max = Axis.new.set_pos(vm)
> > 
> > grid = Grid.new(xax, yax, zax, tax, max)
> > ndata = NArray.float(vx.length, vy.length, vz.length, vt.length,
> > vm.length).indgen!
> > vdata = VArray.new(ndata, {'long_name'=>"dummy data"}, "z")
> > gdata = GPhys.new(grid, vdata)
> > 
> > cut_gdata = gdata[0, false, 0, 0]
> > p gdata + cut_gdata # パッチを当てないとここでエラーが出ます
> > ---------- ここまで ----------
> > 
> > 
> > -- 
> > 松葉 史剛 (Fumitaka MATSUBA)
> > 京都大学大学院 理学研究科 地球惑星科学専攻
> > 地球物理学教室 気象学研究室 M2
> > E-mail: matsuba@xxxxxxxxxxxxxxxxxx
> 
> 堀之内 武
> 北海道大学 地球環境科学研究院 地球圏科学部門
> 〒060-0810 札幌市北区北10条西5丁目
> 

堀之内 武
北海道大学 地球環境科学研究院 地球圏科学部門
〒060-0810 札幌市北区北10条西5丁目

Attachment: diff.txt
Description: Binary data