в R как я могу раскрасить метки из моего филогенетического дерева? (используя BioNj от обезьяны) - PullRequest
1 голос
/ 25 октября 2019

Итак, у меня есть набор данных, который выглядит следующим образом:

Pos sample_1 sample_2 celltypeX_sample3 celltypeY_sample4 celltypeX_sample5
0     0        0              3                  0             1
2     2        1              3                  0             0
5     0        0              0                  0             1
6     1        0              0                  1             0
12    0        1              0                  1             1

из этого набора данных, я могу вычислить матрицу корреляции и тепловую карту в R с помощью:

data = read.table(file = "fileNameX", row.names = 1, header = T, sep = "\t")
correlationData = cor(data)
heatmap(correlationData, cexRow = 0.25, cexCol = 0.25, symm = T)

после этого Iхочу создать филогенетическое дерево, используя функцию bionj библиотеки обезьян

arbol <- bionj(correlationData)

plot(arbol1, cex = 0.25, edge.width = 0.5)

Вот где я застрял, поэтому я прочитал, что можно изменить цвет меток, добавив строку, котораяуказывает, в какой группе цветов он должен быть. Поэтому я добавил этот столбец, в котором создается новый набор данных:

Pos sample_1 sample_2 celltypeX_sample3 celltypeY_sample4 celltypeX_sample5
0     0        0              3                  0             1
2     2        1              3                  0             0
...
7026  0        1              0                  1             1
clr   0        0              1                  2             1

Можно ли каким-либо образом раскрасить метки таким образом? Таким образом, все без типа ячейки в имени (так называемого sample_x) должны иметь одинаковый цвет, а все типы ячеек должны иметь одинаковый цвет (так называемый celltypeX_sampleY)

Надеюсь, мой вопрос ясен и даже возможносделать это ...

ссылка на набор данных

1 Ответ

2 голосов
/ 25 октября 2019

Вы можете указать это в функции plot.phylo. bionj возвращает класс "phylo", и когда вы вызываете plot (arbol1, cex = 0.25, edge.width = 0.5), вы фактически используете plot.phylo. Вы можете напечатать? Plot.phylo, чтобы увидеть варианты.

У меня нет ваших данных, но ниже я использую пример набора данных для добавления метки цвета. Надеюсь, это то, что вы хотели

library(ape)
data(woodmouse)
trw <- bionj(dist.dna(woodmouse))
# we label samples that have No120 as blue
# others orange
COLS = ifelse(grepl("No120",trw$tip.label),"blue","orange")
plot(trw,tip.color=COLS)

enter image description here

Чтобы добавить цвета к различным меткам, вы можете попробовать это:

# from https://www.r-bloggers.com/the-paul-tol-21-color-salute/
tol18rainbow=c("#771155", "#AA4488", "#CC99BB", "#114477", "#4477AA", "#77AADD", "#117777", "#44AAAA", "#77CCCC", "#777711", "#AAAA44", "#DDDD77", "#774411", "#AA7744", "#DDAA77", "#771122", "#AA4455", "#DD7788")
# I assume here, the word before the "_" tells us how to colour the label
TYPE = gsub("_[^ ]*","",arbol$tip.label)
# check the TYPE numbers are correct
col_assignment = tol18rainbow[1:length(unique(TYPE))]
names( col_assignment) = unique(TYPE)
COLS = col_assignment[TYPE]
# then pass COLS into your plot
...