問題タブ [genomicranges]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 大きなGRangesのビンを効率的に集約する
SummarizedExperiment があります (ただし、GRanges と見なすことができます)。私が望むのは、間隔の数を減らし、同一の隣接するすべての行に対して1行のみを保持することですmcol(gr)
。重要なのは、新しい拡張間隔も追跡することです。
どうもありがとう!
結果の GRanges は次のようになります。
編集:状態ペアが隣接していない間隔にも存在するように、Granges を編集しました (この 2 番目の 1,1 ペアは、最初のペアとは別に報告する必要があります) 申し訳ありませんが、私の最初の解決策も間違っていました!
どうもありがとう!
r - カスタム関数を data.table に行単位で適用すると、誤った量の値が返される
私はdata.tablesが初めてで、次のようなDNAゲノム座標を含むテーブルがあります。
約 200 万行のテーブルの各行に適用するカスタム関数を作成しました。GenomicFeatures の mapToTranscripts を使用して、2 つの関連する値を文字列と新しい座標の形式で取得します。次のように、2 つの新しい列でそれらをテーブルに追加したいと考えています。
機能は次のとおりです。
次に、私は:
そして、このエラーが発生します。これは、関数が行ごとに 1 つの新しい要素ではなく、元のテーブルよりも短い長さの 2 つのリストを返していることを示しています。
.I演算子を使用すると、関数が行単位で適用され、行ごとに 1 つの値が返されると想定しました。また、 ifステートメントを使用して、関数が空の値を返さないようにしました。
次に、関数のこのモック バージョンを試しました。
そしてそれを次のように呼び出しました:
元の長さではなく、1行のデータテーブルを作成します。したがって、私の関数、またはおそらく私がそれを呼び出している方法は、結果のベクトルの要素を何らかの形で折りたたんでいると結論付けました。私は何を間違っていますか?
更新 (解決策あり): @StatLearner が指摘したように、この回答では、で説明されているように?data.table
、(のように).I
での使用のみを目的としていることが説明されています。したがって、は と同等であり、適切な構文は、行番号でグループ化し、関数を行ごとに適用するためのものです。j
DT[i,j,by=]
by=.I
by=NULL
by=1:nrow(dt)
残念ながら、私の特定のケースでは、これはまったく非効率的であり、100 行で 20 秒の実行時間を計算しました。私の 3,600 万行のデータセットの場合、完了するまでに 3 か月かかります。
私の場合、このようにテーブル全体で関数をあきらめて使用する必要mapToTranscripts
がありました。これには数秒かかり、明らかに意図された使用方法でした。
mapFromTranscripts
次に、 fromGenomicFeatures
パッケージを使用してゲノムにマップし直して、data.tables
結合を使用して元のテーブルから情報を取得できるようにしました。
r - GRanges の as.data.table メソッドは、デフォルトで参照によって元のオブジェクトを変更する必要がありますか?
data.table パッケージの as.data.table() 関数を使用して GRanges オブジェクトから data.table を作成すると、デフォルトのメソッドが呼び出されます ( https://github.com/Rdatatable/data.table/blob /master/R/as.data.table.R#L8-L10 )。
これにより、新しい data.table が GRanges 内の元のデータを参照によって変更し、予期しない動作が発生するという問題が発生します。
これを示す最小限の例があります:
今のところ私の解決策は、data.table の変更を続ける前にコピーを作成することです。
しかし、誰もがこの動作に気付いているわけではないので、ここに投稿したいと思います。この動作を防ぐ簡単な方法があるかもしれません。
r - 空白の GRanges を動的に作成する方法は?
空の GRanges (パッケージ GenomicRanges から) オブジェクト dynamicall を作成したいと考えています。
opt1 と opt2 という 2 つの代替オプションがある場合、次のように静的に記述できます。
問題は、「GRanges オブジェクトを動的に作成するにはどうすればよいか」です。より具体的には、「次の機能○○は可能ですか?」:
ありがとう!