Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Kenta Murata
    @mrkn
    ちなみに、昨日のやつは型アノテーションの構文と複素数の型名が間違ってました。
    さっきRubyRangeを手書きしたときは間違えなかったのに・・・
    Sutou Kouhei
    @kou
    Rubyすごい!
    Kenta Murata
    @mrkn
    (b .. e).step(s) {|i| ... }for i in RubyRange(b, s, e); ... end に書き換えようとしているんだけど、ややこしい
    kojix2
    @kojix2
    数学の範囲とRubyのRangeって相性が良くないんじゃないの?みたいな話を前に数学科出身の人に聞いたことがある気がする。自分は数学のことはわからないので「フーンそうかな?」とだけ思った。
    Kenta Murata
    @mrkn
    arrow-rs じゃない Rust 版 arrow があるんですねぇ https://github.com/jorgecarleitao/arrow2
    Sutou Kouhei
    @kou
    これ、arrow-rsをめっちゃrewriteしたやつなんですよ。
    この数年でこれが本家になると思います。
    書いた人はArrowのPMC memberです。
    Kenta Murata
    @mrkn
    transmute-free にしたいって書いてますね
    なるほどー
    kojix2
    @kojix2
    transmute-free ってどういうことですか?
    Kenta Murata
    @mrkn
    transmute は確か C++ の reinterpret_cast みたいなやつです。データのビット列を再解釈して別物として扱う
    C言語で同じことをやるとしたら union { double d; unsigned char b[8]; } っていう共用体を作って double 型の値を unsigned char の配列として扱うとか、Ruby でなら pack して別の型で unpack するとか、そういうのに対応するものだと思います
    Sutou Kouhei
    @kou
    今月分のオンライン開発イベントは明後日開催とします!
    みんな、都合のよい時間帯に開発してね!
    https://speee.connpass.com/event/245686/
    kojix2
    @kojix2
    今日は今年どうしていくかぼんやり考えるのをやる。
    2 replies
    Sutou Kouhei
    @kou

    今日はオンライン開発イベントです!
    みんな都合のよい時間帯に開発しよう!
    私はこんなことをしたいな。

    • Apache Arrowの新しいバージョンがリリースされそうなのでGLib/Ruby関連のリクエストされている機能をできるだけ実装する

    もしかしたら:

    Kenta Murata
    @mrkn
    いまは BigDecimal#** のバグ修正をしてます。
    Eriko Sugiyama
    @ericgpks
    red-data-tools/red-colors#24
    これのレビューします!
    Sutou Kouhei
    @kou
    さすがです!
    Eriko Sugiyama
    @ericgpks

    質問させてください!
    lib/colors/color_data.rb

    require_relative "color_data/matplotlib"
    require_relative "./color_data/tableau"
    require_relative "./color_data/xkcd"
    require_relative "./color_data/css4"

    としていますが、4つとも全部同じ階層にあるファイルなのに参照の仕方が違うのはなんででしょう??

    Sutou Kouhei
    @kou
    同じように参照するべきです!
    Eriko Sugiyama
    @ericgpks
    ですよね!
    コメントしておきます!!
    ありがとうございます
    Hirokazu SUZUKI
    @heronshoes
    初めまして。
    プログラマーではない私ですが、Rubyはずっと使ってますので少しでもお手伝いできたらと思ってます。
    Hirokazu SUZUKI
    @heronshoes

    質問なんですが、ちょっと変な挙動かなと思ったので

    table = Arrow::Table.new(x: [1,2])
    [table] == nil  # => false
    [table] == [nil] # => ArgumentError
    [nil] == [table] #=> false

    これに気づくのに2日かかってしまいました。

    Sutou Kouhei
    @kou
    さすがです!
    これはgobject-introspection gemのレイヤーでなんとかする系のやつなので https://github.com/ruby-gnome/ruby-gnome/ にissueを作ってもらえますか!?
    これからもユーザー目線でのフィードバックに期待しています!
    Hirokazu SUZUKI
    @heronshoes
    了解です。コメントありがとうございます。
    Hirokazu SUZUKI
    @heronshoes
    Happy golden weekなのかわからないですがこんにちは。
    red-datasetsでラベルが空のときdatasets.to_table.column_namesなどでこけるやつがあります。元のデータで左がインデックスになっている場合です。例えば::SeabornDataの[attention exercise]がそうです。
    ::RDatasetsでは[airquality attenu presidents]がそうですが、列ごと削除してあります。
    インデックスならば同じように列ごと削除でいいと思うんですが、個別にdataset側で考えるのか、エンジン側(Table)で面倒見た方がいいのか、気になってのご相談です。
    Sutou Kouhei
    @kou
    SearboarnDataのやつはSearboarnDataの中でどうこうしたほうがいいですね!to_tableに行く前のSearboarnData#prepare_recordの中で失敗してしまっているので!
    カラム名がnilのやつは:indexにしちゃえばいいのかしら。
    Rdatasetsの方は該当するデータセットを見つけられていないんですが、Datasets::Rdatasets.new(...)に何を指定すればいいか教えてもらえませんか!?
    それはそうとRdatasetsの最後のsはいらないですね。。。
    各オブジェクトは1つのデータセットしか扱わないので。

    SearboarnDataのやつは:indexにするならこんな感じになります。

    diff --git a/lib/datasets/seaborn-data.rb b/lib/datasets/seaborn-data.rb
    index d0de5a6..ac56824 100644
    --- a/lib/datasets/seaborn-data.rb
    +++ b/lib/datasets/seaborn-data.rb
    @@ -27,7 +27,13 @@ module Datasets
         private
         def prepare_record(csv_row)
           record = csv_row.to_h
    -      record.transform_keys!(&:to_sym)
    +      record.transform_keys! do |key|
    +        if key.nil?
    +          :index
    +        else
    +          key.to_sym
    +        end
    +      end
    
           # Perform the same preprocessing as seaborn's load_dataset function
           preprocessor = :"preprocess_#{@name}_record"

    (コミットするにはさらにテストを書く必要がある。)

    Hirokazu SUZUKI
    @heronshoes

    Rdatasetsは、下記のデータセットで列を削除しているようです。

    ds = Datasets::Rdatasets.new('datasets', 'airquality')
    # 同じく'attenu', 'presidents'
    ds.to_table.column_names
    #=> [:Ozone, :"Solar.R", :Wind, :Temp, :Month, :Day]
    Arrow::Table.load(URI(ds.metadata.url)).columns.map(&:name)
    #=> ["", "Ozone", "Solar.R", "Wind", "Temp", "Month", "Day"]

    SeabornDataは頂いたやり方で一旦進めてみます。ご指摘もありがとうございます!
    red-datasets-arrowの件もありがとうございました!

    Sutou Kouhei
    @kou
    @mrkn apache/arrow-site#207 いつものように8.0.0のリリースアナウンスを埋めてもらえませんか!?
    2 replies
    Hirokazu SUZUKI
    @heronshoes
    こんにちは。突然ですが今 https://github.com/heronshoes/red_amber というライブラリを作っています。
    Arrow::Table を使って、データフレームの処理をシンプルに行うためのライブラリです。入出力と演算はRed Arrow任せで、APIのスタイルはankaneさんのRoverにヒントを得ていますので、巨人二人の肩に乗るスタイルのライブラリです(恐縮です)。
    入出力と列同士の演算が動いている程度ですし、素人が作っているものなのでひどいところもあると思うのですが、今後Red Arrowに気づいたことをフィードバックしていけると思っています。何よりもRubyでOSSの開発しようとする人間が一人増えたことを@kouさんに喜んでいただけたら一番嬉しいです。
    Sutou Kouhei
    @kou
    嬉しいです!!!!!!!!
    kojix2
    @kojix2
    これは期待。もし途中で開発が頓挫しても、誰か成果を参照して次へつながると思うから頑張ってください。
    Hirokazu SUZUKI
    @heronshoes:matrix.org
    [m]
    @kou @kojix2 ありがとうございます!
    kojix2
    @kojix2
    rover互換ですか!
    kojix2
    @kojix2
    なかなかおもしろそう。(ankaneさんツール互換なら、早い時期から海外のRubyコミュニティに気がついてもらえそう)
    Hirokazu SUZUKI
    @heronshoes
    @kojix2 ありがとうございます。
    互換になるかどうかはわからないのですが、同じような書き方で同じ目的を目指していることは間違いないです。
    -enの方見返してましたらちょっと前にArrow::DataFrameのこと聞いていた人がいましたけど、Roverの方でも見かけた名前だったのでこの方面に興味がある方は一定数いると思うのです。
    Hirokazu SUZUKI
    @heronshoes

    質問です。
    Red Arrowのquantileでオプションが使用できないように見えます。

    Arrow::QuantileOptions
    #=> uninitialized constant Arrow::QuantileOptions (NameError)

    既定値(オプション無し)は期待通りの値(median)を返します。

    a = Arrow::Array.new([0.0, nil, 4.0])
    func = Arrow::Function.find("quantile")
    func.execute([a]).value.to_a
    [2.0]

    (C++用の)ドキュメントを参照して使い方を参考にして、

    puts func
    #=>
    quantile(array, {q=[0.5], interpolation=LINEAR, skip_nulls=true, min_count=0}): Compute an array of quantiles of a numeric array or chunked array
    
    puts func.doc.description
    #=>
    By default, 0.5 quantile (median) is returned.
    If quantile lies between two data points, an interpolated value is
    returned based on selected interpolation method.
    Nulls and NaNs are ignored.
    An array of nulls is returned if there is no valid data point.

    オプションを指定してみるのですが反映されないようです。

    func.execute([a], q: [0.25, 0.5, 0.75]).value.to_a
    #=>
    [2.0]  # [1.0, 2.0, 3.0]を期待
    Sutou Kouhei
    @kou
    Apache Arrow GLibで実装していないだけなので https://issues.apache.org/jira/projects/ARROW/issues にissueを作っておいてもらえますか!?
    実装しておきます。
    Hirokazu SUZUKI
    @heronshoes
    @kou ありがとうございます。ここでベクタしてもらえるとありがたいです。
    他にもいくつかあるので、見つけたらissueしていくようにします。
    Sutou Kouhei
    @kou

    すみません!なにかのtypoな気はするのですが、「ベクタする」ってどういう意味ですか!?

    他にもいくつかあるので、見つけたらissueしていくようにします。

    さすがです!

    Hirokazu SUZUKI
    @heronshoes
    あ、すみません。誘導するという意味です。管制官の用語らしいのですがかっこいいので使っていました。Vector由来です。
    kojix2
    @kojix2
    英語の辞書を引いたらその意味で載っていた。
    Sutou Kouhei
    @kou
    なるほど!勉強になります!
    ベクタします!
    Kenta Murata
    @mrkn
    確かに WISDOM の英和辞典には「針路指示する」と載ってるけど、OALD には動詞の意味が載ってないんだよなぁ
    COBUOLD Advanced American にも載ってなかった
    okadak
    @okadakk

    @kou

    長らく活動できておらずすいません!続きの、https://issues.apache.org/jira/browse/ARROW-16206 こちらやろうと思っています。
    スレッドで質問させてください!

    5 replies