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

[dennou-ruby:003735] Re: GPhys.join での associate coordinate



西澤さま:

基本的によさそうな変更ですが,現状でどういう場合が問題か
よくわからなくて不具合が再現できてません。
もう少し説明するか,下記の対応でお願いできると
ありがたいです(下記がベスト)。

先ほどのメールに書き忘れましたが,最近はなるべく unit test 
を書くようにしてます。先ほどの新規コミットに 
test/test_assoccoords.rb というのがありますので,
そこに下記の変更をしなければ失敗して,変更適用後には
うまく行くテストを加えてもらうのが最も良いです。
(テストと変更を両方コミットしてもらう。)

> 堀之内様
> 
> ばらばらとすいません。
> 
> #cut や #[] を2回以上読んだ場合に、associate coordinate がちゃんと動いていなかったので修正しました。
> 
> diff --git a/lib/numru/gphys/assoccoords.rb b/lib/numru/gphys/assoccoords.rb
> index 7cfd707..cf85ecd 100644
> --- a/lib/numru/gphys/assoccoords.rb
> +++ b/lib/numru/gphys/assoccoords.rb
> 
> @@ -230,7 +230,12 @@ module NumRu
>          end
>        end
> 
> -      ret = self.class.new( new_assoc_crds, @axnames )
> +      axnames = Array.new
> +      args.each_with_index do |a, i|
> +        axnames.push @axnames[i] unless Numeric === a
> +      end
> +
> +      ret = self.class.new( new_assoc_crds, axnames )
>        ret
>      end
> 
> 
> 
> また、#mean などを読んだ場合にも正しく動作していなかったので修正しました。
> 
> --- a/lib/numru/gphys/grid.rb
> +++ b/lib/numru/gphys/grid.rb
> @@ -410,7 +410,18 @@ module NumRu
>         newgrid = self.class.new( *newaxes )
>         newgrid.set_lost_axes( @lost_axes.dup )
>          if @assoc_coords
> -          newgrid.assoc_coords=@assoc_coords.subset_having_axnames(newgrid.axnames)
> +          if deleted_by
> +            assoc_coords = Array.new
> +            assoccoordnames.each do |aname|
> +              g = assoc_coord_gphys(aname)
> +              args = at.find_all{|i| g.axnames.include?(@axnames[i])}
> +              g = g.mean(*args) unless args.empty?
> +              assoc_coords.push g if GPhys === g
> +            end
> +            newgrid.set_assoc_coords assoc_coords
> +          else
> +            newgrid.assoc_coords =
> @assoc_coords.subset_having_axnames(newgrid..axnames)
> +          end
>          end
> 
>         if !deleted_by
> 
> 
> よろしくお願いいたします。
> 
> 
> 西澤誠也
> 
> 2014年6月9日 11:30 Seiya Nishizawa <seiya@xxxxxxxxxxxxxx>:
> > 堀之内様
> >
> > GPhys.join した場合に、 associate coordinate は未対応ですが、
> > 実装してみました。
> > GPhys.join を使っているので効率的ではない気がしますが、
> > とりあえず動作しているようです。
> >
> > 問題無さそうであれば取り込んでいただけますでしょうか。
> > よろしくお願いいたします。
> >
> > # gphys のコミットポリシーをよく把握していませんが、
> > # このようにメールでパッチをお送りするのがよいでしょうか?
> > # それとも feature branch を切って、コミット(&メールで報告)するのがよろしいでしょうか?
> >
> >
> > 西澤誠也
> >
> >
> >
> > --- a/lib/numru/gphys/gphys.rb
> > +++ b/lib/numru/gphys/gphys.rb
> > @@ -1145,6 +1145,12 @@ module NumRu
> >          grid = Grid.new(*axes)
> >          # ** Develpment Note (2013-03-02, horinout)**  joining assoc_coords
> >          # is yet to be supported; not difficult but cumbersome
> > +        if gp0.assoc_coords
> > +          assoc_coord = gp0.assoccoordnames.collect do |aname|
> > +            GPhys.join( gpnary.collect{|gp| gp.assoc_coord_gphys(aname)} )
> > +          end
> > +          grid.set_assoc_coords(assoc_coord)
> > +        end
> >
> >          #< data >
> >          data = VArrayComposite.new( gpnary.collect{|gp| gp.data} )
> >
> > --
> > Seiya Nishizawa
> > RIKEN Advanced Institute for Computational Science
> > Tel: +81-78-940-5754, Fax: +81-78-304-4972
> > 7-1-26, Minatojima-minami-machi, Chuo-ku, Kobe, Hyogo 650-0047, Japan
> 
> 
> 
> -- 
> Seiya Nishizawa
> RIKEN Advanced Institute for Computational Science
> Tel: +81-78-940-5754, Fax: +81-78-304-4972
> 7-1-26, Minatojima-minami-machi, Chuo-ku, Kobe, Hyogo 650-0047, Japan
> 

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