[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003666] Re: GPhys#cyclic_ext の拡張
- To: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>
- Subject: [dennou-ruby:003666] Re: GPhys#cyclic_ext の拡張
- From: Tsuyoshi Koshiro <koshiro@xxxxxxxxxxxxxx>
- Date: Mon, 16 Dec 2013 22:43:14 +0900
- Cc: dennou-ruby@xxxxxxxxxxx
堀之内さま:
神代です.
ご検討いただきまして, ありがとうございました.
はい, cut が対応するのがいちばんいいですね.
ご指摘いただいた方針で, 考えてなおしてみます.
--
神代 剛 (こうしろ つよし)
気象研究所気候研究部第四研究室 支援研究員
At Sun, 15 Dec 2013 22:18:04 +0900,
Takeshi Horinouchi wrote:
>
> 神代さま
>
> > サブセットを取る場合, たとえば0-360度でデータが格納されているとき
> > に, 0度をまたいだ領域を取りたいことがよくあって, 困ります.
> > これを簡単にできるように, ...
>
> 提案ありがとうございます。需要はよくわかります。
> (現状でも数行でできますが,一発でできるように
> したいですね。できれば cut が自動的に対応してれるのが
> いいのではないでしょうか。)
>
> 今回の実装案は,[0, 360) のデータを例えば 270〜450度として切り出
> すお膳立て( [0, 720) への拡張だけ) をサポートするということですよね。
> でも,そもそも 270〜450度としてでなく -90〜90度として切り出したく
> ないですか。(それはサポートしてないですね。)
>
> 望ましい方向性についてちょっと考えてみました。
>
> 筋がよいのは Axis クラスで対応することだろうと
> 思います。cut の cyclic 対応版をつくり,
> self.cyclic_extendible? で (ここで self は Axis オブジェクト),
> cut 指定が1点(Numeric)または範囲 (Range) なら
> そっちを使うようにする(cutメソッドに直接サイクリック対応を
> 書き足すとコードがごちゃごちゃしそうなので適宜下請けを作って分離す
> るのが良い気がします。実装は Axis#modulo を使ってよろしくやる)。
>
> # 参考例: lib/numru/gphys/derivative.rb l.124 ( __deriv メソッド)
>
> おそらくこれだけで GPhys#cut は cyclic な場合に対応するよう
> になると思いますが,どうでしょう。
>
> ちなみに cyclic_extendible? を使う場合の制限事項は,もとの格子が,
> あと1点伸ばせばちょうど一周という場合しか true にならないという
> ことです。この制限があると実装は簡単になりますが,例えばすでに2
> 周分に伸びてるデータは扱えない。これに対応するのも難しくはないで
> しょうが,まあいいですかね。
>
> なお,今見ると Axis#cyclic? , Axis#cyclic_extendible?
> の実装は変えたほうがいいと思いますが,あくまでその中身の
> 話なので,使うのは問題ないはずです。
>
> GPhys#cyclic_ext は描画のための方便としてわりと初期に作ったもので,
> あとから Axis に cyclic? 等のメソッドを作った際に書き直すべ
> きでした(です)。ちゃんとそうしてれば GPhys#cyclic_ext を
> 拡張しようとは思わなかったでしょうね。すみません。
>
> > 堀之内さま, みなさま:
> >
> > 神代です.
> >
> > 以前他の方からも要望があったような気がしますが, GPhysで経度方向に
> > サブセットを取る場合, たとえば0-360度でデータが格納されているとき
> > に, 0度をまたいだ領域を取りたいことがよくあって, 困ります.
> > これを簡単にできるように, cyclic_ext メソッドを拡張したらどうかな
> > と思いました.
> >
> > cyclic_ext の最後にいくつ伸ばすかの引数を新しく加えます. デフォル
> > トを1にしておけば, 既存プログラムの変更は不要です.
> > 実用的には, 単純に2倍の範囲にする cyclic_ext2 を用意しておいて,
> > それをさらに cut で経度範囲指定, という感じで使えば, あまり悩まず
> > にさくっとできるかなと思います.
> >
> > そのように実装してみたパッチを添付します. いかがでしょうか...?
> >
> > --
> > 神代 剛 (こうしろ つよし)
> > 気象研究所気候研究部第四研究室 支援研究員
> >
>
> 堀之内 武
> 北海道大学 地球環境科学研究院 地球圏科学部門
> 〒060-0810 札幌市北区北10条西5丁目
>
>