15

私が取り組んでいる生物の 14 の線形染色体を示すプロットを、各染色体に沿って指定された位置にある色付きのバーで拡大縮小して作成したいと思います。理想的には、これは私が経験した唯一のプログラミング言語であるため、R を使用したいと考えています。

GenomeGraphs などを使用してこれを行うさまざまな方法を調査しましたが、これはすべて、必要なものよりも複雑であることがわかりました/私が持っているものよりも多くのデータを表示し (細胞原性バンドの表示など)、多くの場合、ヒト染色体に固有です。

基本的に必要なのは、次のサイズの 14 個の灰色のバーだけです。

chromosome           size
         1         640851
         2         947102
         3        1067971
         4        1200490
         5        1343557
         6        1418242
         7        1445207
         8        1472805
         9        1541735
        10        1687656
        11        2038340
        12        2271494
        13        2925236
        14        3291936

そして、染色体の長さに沿って散在する約 150 の位置を表す色付きのマークを付けます。たとえば、これらの遺伝子座のマーク:

Chromosome        Position
         3          817702
        12         1556936
        13         1131566

理想的には、遺伝子座に応じていくつかの異なる色を指定できるようにしたいと考えています。

Chromosome        Position        Type
         3          817702           A
        12         1556936           A
        13         1131566           A
         5         1041685           B
        11          488717           B
        14         1776463           B

たとえば、「A」は青でマークされ、「B」は緑でマークされていました。

私が作成したいものと非常によく似たプロットがこの画像に貼り付けられています (Bopp et al. PlOS Genetics 2013;9(2):e1003293 から):

染色体プロットの例

誰でもこれを行う方法を推奨できますか? 必ずしもバイオインフォマティクス パッケージである必要はありません。別の方法で R を使用して、特定の比例サイズの 14 本のバーを生成し、バーに沿って指定された位置にマーキングを付けることができます。たとえば、ggplot2 から単純な棒グラフを変更することを考えていましたが、特定の場所で棒に沿ってマーキングを配置する方法がわかりません。

4

3 に答える 3

9

通話を保存してbarplotから、通話segmentsして適切な場所にマークを付けてください。例えば:

bp <- barplot(dat$size, border=NA, col="grey80")

with(marks,
  segments(
    bp[Chromosome,]-0.5,
    Position,
    bp[Chromosome,]+0.5,
    Position,
    col=Type,
    lwd=2, 
    lend=1
   )
)

ここに画像の説明を入力

使用したデータ:

dat <- structure(list(chromosome = 1:14, size = c(640851L, 947102L, 
1067971L, 1200490L, 1343557L, 1418242L, 1445207L, 1472805L, 1541735L, 
1687656L, 2038340L, 2271494L, 2925236L, 3291936L)), .Names = c("chromosome", 
"size"), class = "data.frame", row.names = c(NA, -14L))

marks <- structure(list(Chromosome = c(3L, 12L, 13L, 5L, 11L, 14L), Position = c(817702L, 
1556936L, 1131566L, 1041685L, 488717L, 1776463L), Type = structure(c(1L, 
1L, 1L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor")), .Names = c("Chromosome", 
"Position", "Type"), class = "data.frame", row.names = c(NA, 
-6L))
于 2015-11-16T02:47:18.257 に答える