Support for RleListMatrix (?)

オープン
#62 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
r
領域
data

調査の方向性

まず関連する issue #27 と DelayedArray/VariantAnnotation の例を確認してください。RleListMatrix がリストの行列に有用な圧縮を提供できるかを調査し、その後、必要なサポートおよび検証の基準を定めてください。完了とするには、合意された実装範囲と、その表現が有益であることを示す証拠が必要です。

索引モデルが issue の本文から書いたものです。

説明

Related to #27, though I note that the following now works

library(DelayedArray)
DelayedArray(
  matrix(
    IntegerList(
      c(list(c(1L, 1L)), list(c(1L,1L)), list(c(1L,1L)), list(c(2L,2L)))
    ), 
    nrow = 2, ncol = 2)
)
#> <2 x 2> matrix of class DelayedMatrix and type "list":
#>      [,1] [,2]
#> [1,] 1, 1 1, 1
#> [2,] 1, 1 2, 2

Created on 2020-02-28 by the reprex package (v0.3.0)

Is there a motivation to support RleListMatrix? For the same use case as above, I'm using VariantAnnotation to build a CompressedVcf object and it has matrices of lists. The list elements are in many cases NA so it may be efficient to be able to store these as an Rle-derived object. I can't go as far as to verify that such a structure would benefit from Rle - would the elements be sufficiently contiguous?

My workaround at the moment is to collapse the list elements into single delimited strings, in which case DelayedArray or RleMatrix work out of the box. In this case the string concatenation results in the matrix object decreasing in size by a factor of ~8 (potentially due to global string pooling). Converting to RleMatrix reduces it again by an additional factor of ~16. Total compression from matrix of lists to character RleMatrix is 128x. If RleListMatrix was able provide a comparable benefit without converting to string then that could be very useful.

I'll link another issue to this one specific to VariantAnnotation, but I thought I'd check if this was a) possible; b) useful; and c) of interest.

Ping @lawremi who first proposed investigating support for this structure.

主要言語
R
スター
29
フォーク
12
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Bioconductor/DelayedArray のほかの issue

Bioconductor/DelayedArray の issue をすべて見る

似ている issue

R の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。