【问题标题】:RCircos - how to draw a single circular chromosomeRCircos - 如何绘制单个圆形染色体
【发布时间】:2015-03-31 13:37:08
【问题描述】:

我想可视化叶绿体染色体及其基因注释和表达直方图。理想情况下,我的最终结果应该类似于:

http://standardsingenomics.org/index.php/sigen/article/viewFile/378/982/8344

我正在尝试使用 RCircos 包来实现它,但我遇到了一些困难。我已经设法运行教程命令并获得了人类染色体的漂亮图片。但是,我在画一个只有一条染色体的圆圈时遇到了问题。按照教程示例,我的整个染色体看起来像一条小线,而不是整个圆形分子 - 就好像它是从其余部分切下的一小块比萨饼。我已经尝试更改一些设置,主要是“base.per.unit”,但我能得到的最好的结果是缺少一侧的十边形......显然不是我想要的。我的输入示例如下:

细胞带文件:

    Chromosome  ChromStart  ChromEnd    Band    Stain
1   chr1    0   79910   p36.33  gneg
2   chr1    79911   101303  p36.32  gpos25
3   chr1    101304  113909  p36.31  gneg
4   chr1    113910  135301  p36.23  gpos25

基因名称和坐标的第一行:

    Chromosome  chromStart  chromEnd    Gene
1   chr1    14  1075    psbA
2   chr1    1642    3177    matK
3   chr1    4473    4700    rps16
4   chr1    6370    6441    trnQ-TTG

直方图数据的第一行:

    Chromosome  chromStart  chromEnd    Data                
1   chr1    1   25  3,007320953             
2   chr1    26  50  3,221414238             
3   chr1    51  75  3,36267093              
4   chr1    76  100 3,404491618

有没有什么方法可以使用带有这些数据的 RCircos 包绘制圆形分子?

编辑

通过将所有坐标乘以 1000 并在其他输入文件中以类似的方式更改它们,我设法得到了一个几乎完美的圆。但是,我仍然无法映射直方图数据。轨道边界似乎太低了,无论我的值多么小,它们都完全填满了轨道。不幸的是,我发现自己无法确定任何会改变这一点的设置。

使用的命令:

Hist = ("Histogram.txt");
data.col <- 4;
side <- "in";
track.num <- 1;
RCircos.Histogram.Plot(Hist, data.col, track.num, side);
There were 50 or more warnings (use warnings() to see the first 50)
In Ops.factor(RCircos.Par$track.height, hist.height) :
  ‘*’ not meaningful for factors

【问题讨论】:

  • 这可能是 ggbio 可以用来做的事情,但我对 RCircos 或 ggbio 都不是很熟悉。看起来您正在绘制的大多数数据都在细胞带文件的一小部分中。我没看错吧,你所有的直方图值都在 psbA 基因的前 100bp 中?
  • 这些只是我的基因名称和直方图数据的标题,我可能应该提到这一点。我总共有 134 个基因,直方图数据以 25bp 的间隔上升到 135k,覆盖整个 cytoband 文件。

标签: r bioinformatics


【解决方案1】:

我编造了一套更完整的数据。我认为ggbio 非常简单。

 gr <- GRanges(seqnames = rep('chr1', 6), 
          IRanges(start = c(1, 500, 1000, 2500, 10000, 20000), 
                  end = c(499, 999, 2499, 9999, 19999, 30000) ), 
          strand = rep('*', 6),
          name = sample(c('A', 'B'), size = 6, replace =T ) )

 data <- GRanges(seqnames = rep('chr1', 100), 
            IRanges(start = sample(runif(100, min = 0, max = max(end(gr) ) ) ), 
                    width = 50), 
            d= runif(100, min = 0, max = 30) )

ggbio 的工作原理很像 ggplot,因此您可以构建非常复杂的绘图。小插图可以找到here

像您所描述的那样构建一个圆形图是可行的。

a <- ggbio() + circle(gr,  geom = 'rect', aes(fill = name), space.skip = 0.01) 
a + circle(data , geom  = 'bar', aes(y = d) )

space.skip 对于控制染色体末端和下一条染色体开头之间的间距特别重要。 输出看起来相当不错,并且可以像使用 ggplot 一样添加不同的 geomthemes

我会在使用 circos 样式图时加一点谨慎,有时线性视图更容易解释。

【讨论】:

  • 非常感谢 jraab,这看起来确实很有用。如果我在 RCircos 上失败了,我想我会尝试这种方法。但是有一个问题:您如何将基因名称和直方图数据(我的 OP 中的第三张表)添加到您的示例中?
  • ggbio 文档非常广泛,您可以使用各种geoms。要将矩形放置在基因所在的位置,您可以使用geom='rect',对于名称本身,您可以使用geom = 'text', aes(labels=gene_names)
猜你喜欢
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多