[ruby-list:50508] Re: plotutils required で落ちてしまいます。
From:
Tadashi Saito <tad.a.digger@...>
Date:
2017-03-31 00:47:01 UTC
List:
ruby-list #50508
斎藤と申します。 調べてみました。結論からすると、スクリプト実行時ではなく、 gsl gemをビルド・インストールする「前に」plotutil (具体的にはgraphコマンド)をインストールする必要がありそうです。 エラーメッセージが出たのはこの辺りだと思うのですが、 https://github.com/SciRuby/rb-gsl/blob/master/ext/gsl_native/graph.c#L1225 これを出さないためには HAVE_GNU_GRAPH がdefineされてる必要が あります。それでどういう条件でdefineされてるか、extconfを見ると https://github.com/SciRuby/rb-gsl/blob/master/ext/gsl_native/extconf.rb#L146 とあり、どうもビルド時にgraph(1)がないとコンパイルされるコードが 変わってしまうのだな、というのが分かります。 しかし(エラーメッセージと相まって)他にもハマる人が出そう なので、 ・エラーメッセージに "when built" とかを足す(楽なコース) ・graphコマンドのチェックをビルド時でなく実行時に移動させる (本質的なコース) というようなPull Requestを送ると、みんな幸せになれて良いのでは ないか、と感じました。 2017年3月30日(木) 14:10 konami <konami@kyoto-wu.ac.jp>: > 小波です。 > > Bootstrap という 多数回のサンプリングを繰り返す統計計算があり, > それを Ruby/GSL でやってみようと思ってこの間から格闘しています。 > > その中で,ヒストグラム作成の処理のために Histogram クラスを利用しようと > 次のソースを走らせてみましたが,その下のようなエラーを吐いてしまいます。 > ------------------------------------------------------ > #! /usr/bin/env ruby > require "gsl" > include GSL > N = 10000 > MAX = 8 > rng = Rng.alloc > > data = Ran.gaussian(rng, 1.5, N) + 2 > h = Histogram.alloc(100, [-MAX, MAX]) > h.increment(data) > > sigma, mean, height, = h.fit_gaussian > x = Vector.linspace(-MAX, MAX, 100) > y = height*Ran::gaussian_pdf(x-mean, sigma) > GSL::graph(h, [x, y], "-T X -C -g 3") > #出典: > #http://blackwinter.github.io/rb-gsl/rdoc/hist_rdoc.html > --------------------------------------------------- > > ./gsltest.rb:15:in `graph': GNU plotutils required (NoMethodError) > from ./gsltest.rb:15:in `<main>' > > ちなみ, plotutils, lipplot-dev はインストールされています。 > 何かヒントをいただけると幸いです。 > > 小波秀雄 > > -- 斎藤 匡