Ошибки добавления трека геномных признаков в circlize

Я пытаюсь создать цирковой сюжет с простой геномной нотацией из файлов BED. Однако, когда я использую circos.genomeRect, это приводит к ошибке или к дорожке, которая отображает не прямоугольники, а полукруги, как показано ниже.

Рассмотрим следующий воспроизводимый пример:

library("circlize")
library("tidyverse")

circos.par(start.degree = 90,
           cell.padding = c(0, 0, 0, 0),
           #points.overflow.warning=FALSE,
           track.height = 0.10   
)

# Initialize genome (bed file with genome sizes)
genome <- tibble(chr=c("chr1","chr2"), start = c(1,1), end = c(6000000, 3000000))
circos.genomicInitialize(genome, plotType = c("axis"), major.by = 1000000)

# Add track with annotation
feature <- tibble(chr = c("chr1", "chr1"), start = c(2500, 4500000), end = c(4150000, 6350000))
circos.genomicTrack(feature, ylim=c(0,1),
                    panel.fun = function(region, value, ...) {
                      circos.genomicRect(region, value, ytop.column = 1, ybottom = 0, col="blue")
                    })
circos.clear()

Это возвращает ошибку:

Ошибка в if (sum(l) && circos.par(points.overflow.warning)) { : отсутствует значение там, где требуется TRUE/FALSE

Дополнительно: Предупреждающее сообщение: In is.na(x) | is.na(y): ошибка в if (sum(l) && circos.par(points.overflow.warning)) { : отсутствует значение там, где требуется TRUE/FALSE

В этот момент, если points.overflow.warning=FALSE установлено в circos.par выше, ошибка исчезает, но должна возникнуть какая-то другая ошибка, которая не отображает прямоугольники:

введите здесь описание изображения

Я что-то упускаю? что не так с этим простым примером? Спасибо

ИЗМЕНИТЬ

Я только что заметил, что кадр данных объекта, который я рисую, имеет одну неправильную координату, поскольку он простирается длиннее, чем фактический размер хромосомы. Однако, если это исправлено, например: feature <- tibble(chr = c("chr1", "chr1"), start = c(2500, 4500000), end = c(4150000, 5350000)), появится новая ошибка!!

Предупреждающее сообщение: In is.na(x) | is.na(y): более длинная длина объекта не кратна более короткой длине объекта


person elcortegano    schedule 11.08.2020    source источник


Ответы (1)


Кажется, он работает с data.frames вместо tibbles:

library("circlize")

circos.par(start.degree = 90,
           cell.padding = c(0, 0, 0, 0),
           #points.overflow.warning=FALSE,
           track.height = 0.10   
)

# Initialize genome (bed file with genome sizes)
genome <- data.frame(chr=c("chr1","chr2"), start = c(1,1), end = c(6000000, 3000000))
circos.genomicInitialize(genome, plotType = c("axis"), major.by = 1000000)

# Add track with annotation
feature <- data.frame(chr = c("chr1", "chr1"), start = c(2500, 4500000), end = c(4150000, 5350000))


circos.genomicTrack(feature, ylim=c(0,1),
                    panel.fun = function(region, value, ...) {
                      circos.genomicRect(region, value, col="blue")
                    })

circos.clear()

Создана 11 августа 2020 г. в пакете reprex (v0.3.0)

person user12728748    schedule 11.08.2020