2014-09-02 2 views
1

Im пытается сделать круговой график, похожий на графики экспрессии генов. я нашел пакет circlize в R может сделать это, и Im пытается следовать этому http://cran.r-project.org/web/packages/circlize/vignettes/genomic_plot.pdfоцифровать в R, чтобы сделать круговой график

я управляю, чтобы добраться до: 6. Создать черчения регионов

Но когда я печатаю

circos.genomicPoints(Region, value, numeric.column = c(1,2)) 

I получить эту ошибку:

Error in get.cell.meta.data("sector.index") : 
Length of `sector.index` should only be 1. 

И когда я типа

circos.genomicLines(Region, value, numeric.column = c(1, 2)) 

Я получаю эту ошибку:

Error in region[[1]] + region[[2]] : 
    non-numeric argument to binary operator 

Регион представляет собой кадр данных 205 наблюдений и 7 переменных: хромосомные, начальное положение, конечное положение, а затем некоторые значения значения представляет собой кадр данных 205 наблюдений и 2 переменные: как числовые значения

Im совершенно новой для такого рода сюжета, так что любая помощь ценится

Благодаря

+0

Необходимо предоставить более подробную информацию. Правильно ли все было до этого? Вы построили функции точно так же, как написано в Разделе 6? –

+0

Да, все до этого момента работало и правильно построено. – user2335015

+0

Поскольку упомянутая виньетка не снабжает 'data' или' region', (не говоря уже о том, что появилось несколько предупреждений и ошибок при выполнении кода), может быть ошибки в виньетке и/или способ, которым вы создали свой собственный «регион». –

ответ

2

region в низкоуровневых функциях, таких как circos.genomicPoints или circos.genomicLines, должен быть фреймом данных, который содержит только два столбца (начальные позиции и конечные позиции). Поскольку такие функции, как circos.genomicPoints, работают только для одной хромосомы за раз, нет необходимости вставлять информацию о хромосоме в region.

Рекомендуемый способ вызова circos.genomicPoints это положить в panel.fun при вызове circos.genomicTrackPlotRegion:

bed # your data frame which is bed-file format 
circos.initializeWithIdeogram() 
circos.genomicTrackPlotRegion(bed, panel.fun = function(region, value, ...) { 
    circos.genomicPoints(region, value, ...) 
}) 

В приведенном выше примере кода panel.fun является самостоятельной определенная функция, которая будет выполняться в каждой хромосоме. region и value в panel.fun являются соответствующими кадрами данных в «текущей хромосоме», которые извлекаются из bed.

Если вы хотите, чтобы точно настроить график по телефону circos.genomicPoints вне circos.genomicTrackPlotRegion, вам нужно построить ваши region и value переменные, а также не забудьте установить sector.index или track.index указать, какие хромосомы и какой трек вы хотите поставить графика:

for(chr in chromosomes) { 
    region = bed[bed[[1]] == "chr", 2:3] 
    value = bed[bed[[1]] == "chr", some_column_index] 
    circos.genomicPoints(region, value, sector.index = chr, ...) 
} 
+0

Btw, некоторый пример кода в виньетике «genomic_plot.pdf» предназначен для демонстрации, пока он не может быть выполнен. Это связано с тем, что для рисования геномного сюжета всегда требуется больше фрагментов кода, если поместить весь код в виньетку, он будет выглядеть ужасно. Использование функций геномического цирка очень похоже на использование общих цирковых функций, они имеют одинаковую идею.Лучше пользователям сначала читать главную виньетку (circlize.pdf). Кроме того, пользователи могут перейти к [http://jokergoo.github.io/circlize/](http://jokergoo.github.io/circlize/) для исполняемых примеров. –