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

[dennou-ruby:003683] Re: gpview に DCL のコマンドラインオプション



竹広です.


納多さん, 内藤さん, パッチを送ってくださりどうもありがとうございました. 

gpview, gpvect にDCL のコマンドラインオプションを解釈する機能を取り込み
ました. 納多さんの標準偏差も取り込みましたが, モニター機能はちょっと
複雑そうなので申しわけありませんがパスしました.

あわせてトーンルーチンのオプションをより一般的にし, DCL.uetone, 
DCL.uetonf, DCL.uetonb, DCL.uetonc を切替えられるようにしました. 
詳しくは --help をご覧ください. 

                    Takepiro(竹広真一)@数理解析研究所. 京都大学
                      	E-mail:takepiro@xxxxxxxxxxxxxx
			       takepiro@xxxxxxxxxxxxxxxxxxxx


> [1  <text/plain; ISO-2022-JP (7bit)>]
> 竹広様、皆様:
> 
> gpview のオプションが飽和状態のところ失礼します。
> DCL のコマンドラインオプションを解釈するようにしてみたので、
> パッチをお送りします。 [gpview_dclopts.patch]
> たとえばこのように使えます。
> 
>    % gpview hogehoge.nc@anything -sg:iws=2
> 
> 1文字目が「-」、4文字目が「:」、その後に「=」を含む引数は
> DCL 用のオプションと解され、パラメータ設定されます。
> (従来の gpview オプションやその引数を誤って解釈しないよう、
>  このような定義にしました。副作用ありませんように。。。)
> これで、個々のパラメータごとに gpview オプションを増やさずに、
> DCL の多くのパラメータを指定することができます。
> 
> ただ、DCL でコマンドラインオプションになっていないけれど
> 指定したいものもあるんですよね。。。
> コンターのラベルの書式を指定するオプション udfmt も実装しました。
> 飽和状態のところ申し訳ないけれど追加パッチをお送りします。
> [gpview_udfmt.patch]
> 
>    % gpview hogehoge.nc@anything --udfmt B
> 
> のように指定すれば単に DCL.udsfmt('B') されます。
> 
> 要るものだけ取り込んでいただければ幸いです。
> 
> ------------------------------------------------------------
> 京都大学 大学院理学研究科 地球惑星科学専攻 地球物理学教室
> 内藤 陽子 <naito@xxxxxxxxxxxxxxxxxx>
> 
> [2 gpview_dclopts.patch <text/plain; Shift_JIS (base64)>]
> *** gpview.org	2014-02-19 17:37:27.058039734 +0900
> --- gpview	2014-02-19 17:52:38.000995761 +0900
> ***************
> *** 584,593 ****
> --- 584,644 ----
>     return min, max
>   end
>   
> + def check_dclopts
> + 
> +   indices = []
> +   ARGV.each_index{|i|
> +     if /^-(.)(.):(.*)=(.*)/ =~ ARGV[i]
> +       indices << i
> +     end
> +   }
> + 
> +   dclopts = []
> +   indices.reverse_each{|i|
> +     dclopts << ARGV[i]
> +     ARGV.slice!(i)
> +   }
> + 
> +   dclopts.each{|opt|
> +     pkg = opt[1..2]
> +     name = opt[4..-1].split('=')[0]
> +     value = opt[4..-1].split('=')[1]
> +     dcl_set_params(pkg,name,value)
> +   }
> +   
> + end
> + 
> + def dcl_set_params(pkg,name,value)
> + 
> +   set = 'stx'
> +   case name
> +   when /^c/i
> +     eval( "DCL.#{pkg}c#{set}(name,value.to_s)" )
> +   when /^l/i
> +     if /(.*)(T|t)(.*)/ =~ value
> +       eval( "DCL.#{pkg}l#{set}(name,true)" )
> +     else
> +     if /(.*)(F|f)(.*)/ =~ value
> +       eval( "DCL.#{pkg}l#{set}(name,false)" )
> +     else
> +       raise "value of logical parameter must include 't' or 'f'"
> +     end
> +     end
> +   when /^[i-n]/i
> +     eval( "DCL.#{pkg}i#{set}(name,value.to_i)" )
> +   else
> +     eval( "DCL.#{pkg}r#{set}(name,value.to_f)" )
> +   end
> +   
> + end
> + 
>   
>   #####################################################
>   ###++++++           Main Routine            ++++++###
>   
> + ## options for DCL
> + check_dclopts
> + 
>   ## parse options
>   parser = GetoptLong.new
>   parser.set_options(
> [3 gpview_udfmt.patch <text/plain; Shift_JIS (base64)>]
> *** gpview	2014-02-19 17:52:38.000995761 +0900
> --- gpview_udfmt	2014-02-19 17:52:40.173031023 +0900
> ***************
> *** 692,697 ****
> --- 692,698 ----
>                      ['--tonf',                     GetoptLong::NO_ARGUMENT],
>                      ['--nocolorbar',               GetoptLong::NO_ARGUMENT],
>                      ['--nozero',                   GetoptLong::NO_ARGUMENT],
> +                    ['--udfmt',                    GetoptLong::REQUIRED_ARGUMENT],
>                      ['--help',                     GetoptLong::NO_ARGUMENT]
>   #                   ['--version',                  GetoptLong::NO_ARGUMENT]  # to be defined
>                      )
> ***************
> *** 735,740 ****
> --- 736,745 ----
>   ## tune the size of axis parameters.
>   DCL.uzfact(0.7)
>   
> + ## set the format of contour labels.
> + udfmt = ($OPT_udfmt||DCL.udqfmt())
> + DCL.udsfmt(udfmt)
> + 
>   ## draw figure
>   loopdim   = ( $OPT_animate || $OPT_anim ) 
>   loopdim = loopdim.to_i if loopdim.to_i.to_s == loopdim