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