Можно ли переопределить диапазон оси x в пакете R ggbio при использовании транскриптов autoplot и ensdb? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь использовать ggbio для построения транскриптов гена. Я хочу построить очень конкретный диапазон, чтобы он соответствовал моим графикам ggplot2. Проблема в том, что мой примерный график имеет диапазон 133 567 500-133 570 000 независимо от GRange и от того, указываю ли я xlim или нет.

В этом примере следует наносить только небольшой кусочек интрона (тонкая линия со стрелкой), но вместо этого наносить на график полные 2 экзона и интрон между ними. Я считаю, что autoplot хочет построить всю стенограмму или стенограммы, присутствующие в диапазоне, и расширяет диапазон, чтобы приспособиться к этому.

  library(EnsDb.Hsapiens.v86)
  library(ggbio)
  ensdb <- EnsDb.Hsapiens.v86
  mut<-GRanges("10", IRanges(133568909, 133569095))
  gene <- autoplot(ensdb, which=mut, names.expr="gene_name",xlim=c(133568909,133569095))
  gene.gg <- gene@ggplot
  png("test_gene_plot_5.png")
    gene.gg
  dev.off()

Есть ли способ перегрузить это? Я посмотрел на страницу руководства по автоплоту и не смог найти вариант, который бы это исправил. Другие говорят, что используют xlim, но это, похоже, ничего не меняет

Мне нравится ggbio, потому что он может создавать объект ggplot2 для построения вместе с другими объектами ggplot2. Я не видел такого примера с другими подходами, такими как Gvis. Но я бы придерживался других подходов, если бы их можно было комбинировать с моими существующими сюжетами.

Спасибо!

Эми

1 Ответ

0 голосов
/ 04 ноября 2019

Это зависит от того, хотите ли вы вырезать или сжать данные. Обычно autoplot выводит объект ggplot в некоторый момент, которым можно манипулировать как таковым.

Для сжатых данных:

library(GenomicRanges) # just to be sure start and end work
gene@ggplot + 
  scale_x_continuous(limits = c(start(mut), end(mut)), oob = scales::squish)

enter image description here

Для вырезанных данных:

gene@ggplot + 
  coord_cartesian(xlim = c(start(mut), end(mut)))

enter image description here

Но, если честно, я не уверен, что это самый информативный способ сообщить, что выпостроение внутреннего пространства интрона.

В качестве альтернативы я написал геом модели гена в какой-то момент, который не работает с помощью методов автоплоттинга (что иногда может быть болезненным, если вы хотите все настроить). Недостатком является то, что вам придется выполнять поиск генов вручную и устанавливать эстетику. Плюс в том, что он работает, как и большинство других геомов, и поэтому его легко комбинировать с некоторыми другими данными.

library(ggnomics) # from: https://github.com/teunbrand/ggnomics

# Finding a gene's exons manually
my_gene <- transcriptsByOverlaps(EnsDb.Hsapiens.v86, mut)
my_gene <- exonsByOverlaps(EnsDb.Hsapiens.v86, my_gene)
my_gene <- as.data.frame(my_gene)

some_other_data <- data.frame(
  x = seq(start(mut), end(mut), by = 10),
  y = cumsum(rnorm(19))
)

ggplot(some_other_data) +
  geom_line(aes(x, y)) +
  geom_genemodel(data = my_gene,
                 aes(xmin = start, xmax = end, 
                     y = max(some_other_data$y) + 1,
                     group = 1, strand = strand)) +
  coord_cartesian(xlim = c(start(mut), end(mut)))

enter image description here

Надеюсь, что помог!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...