Intro

Pobieramy z gdac dane o mutacjach CNV. Jest wiele (różna liczba dla różnych nowotworów) plików z cnv w nazwie, my pobieramy pliki z nazwą zawierającą Merge_snp__genome_wide_snp_6__broad_mit_edu__Level_3__segmented_scna_minus_germline_cnv_hg19__seg.Level_3.

W tych plikach informacja o CNV nie jest liczona dla genów tylko dla segmentów. Czasem te segmenty mają długość setek MB, czasem kilkuset B. Wybieram tylko segmenty, które dla guzów (01A) zawierają lokalizacje MDM2, czyli Chr 12: 69.2 – 69.24 Mb.

Poniższy rysunek pokazuje rozkład #CNV dla różnych nowotworów, czarna linia oznacza x2, czerwona x3 kopie. Nowotwory posortowane po trzecim kwartylu.

library(knitr)
# restore
load("MDM2_cnv_all_cancers.rda")

allCNVs <- do.call(rbind, lapply(names(res), function(n) {
  if (nrow(res[[n]]) == 0) return(NULL)
      data.frame(n, cnv=res[[n]][,2])
}))

library(ggplot2)
allCNVs$n <- reorder(allCNVs$n, allCNVs$cnv, quantile, 0.8)
ggplot(allCNVs, aes(x=n, y=2*2^cnv)) + geom_boxplot() + coord_flip() + scale_y_log10(limits=c(1,50)) +
  ylab("#CNV for segment with MDM2") + xlab("") + geom_hline(yintercept=2) + geom_hline(yintercept=3, color="red3")

Obrazki obrazkami, zobaczmy ilu pacjentów w każdym nowotworze ma CNV <> 3. W pierwszych dwóch kolumnach mamy liczby pacjentów, w trzeciej kolumnie jest procent pacjentów z duplikacją MDM2.

tabi <- t(sapply(res, function(i) {
  c(sum(i[,2] < 0.58), sum(i[,2] >= 0.58))
}))
tabi <- cbind(tabi, round(100*prop.table(tabi,1)[,2],1))
colnames(tabi) <- c("MDM2 <= 3", "MDM2 > 3", "% MDM2 > 3")

kable(tabi)
MDM2 <= 3 MDM2 > 3 % MDM2 > 3
ACC 72 18 20.0
BLCA 369 38 9.3
BRCA 1028 45 4.2
CESC 285 7 2.4
CHOL 35 1 2.8
COAD 448 1 0.2
COADREAD 609 2 0.3
DLBC 48 1 2.0
ESCA 166 9 5.1
GBM 477 48 9.1
GBMLGG 975 52 5.1
HNSC 497 21 4.1
KICH 68 0 0.0
KIPAN 871 8 0.9
KIRC 522 2 0.4
KIRP 281 6 2.1
LAML 0 0 NaN
LGG 498 4 0.8
LIHC 364 6 1.6
LUAD 474 33 6.5
LUSC 476 20 4.0
MESO 82 2 2.4
OV 514 38 6.9
PAAD 179 5 2.7
PCPG 157 2 1.3
PRAD 478 1 0.2
READ 161 1 0.6
SARC 199 59 22.9
SKCM 101 4 3.8
STAD 416 25 5.7
TGCT 142 7 4.7
THCA 495 1 0.2
THYM 122 1 0.8
UCEC 531 4 0.7
UCS 52 4 7.1
UVM 77 0 0.0

Najczęściej takie duplikacje występują u SARC i ACC. Przyjrzyjmy się SARC (sarcoma czyli mięsak).

Zobaczmy histogram.

Bardzo ciekawy. Są dwie ,,górki’’ czyli jest jakaś grupa pacjentów z bardzo licznymi duplikacjami segmentu, na którym występuje MDM2.

ggplot(res[["SARC"]], aes(x=2*2^Segment_Mean)) + geom_histogram() + scale_x_log10() + xlab("CNV") + ggtitle("SARC")  + geom_vline(xintercept=2) + geom_vline(xintercept=3, color="red3")
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.

ggplot(res[["ACC"]], aes(x=2*2^Segment_Mean)) + geom_histogram() + scale_x_log10() + xlab("CNV") + ggtitle("ACC")  + geom_vline(xintercept=2) + geom_vline(xintercept=3, color="red3")
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.

ggplot(res[["GBM"]], aes(x=2*2^Segment_Mean)) + geom_histogram() + scale_x_log10() + xlab("CNV") + ggtitle("GBM")  + geom_vline(xintercept=2) + geom_vline(xintercept=3, color="red3")
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.

Przyjrzyjmy się teraz jak te duplikacje mają się do mutacji w TP53.

Zła wiadomosć jest taka, że dla SARC nie ma danych MAF.

Rozmawiałem z Maćkiem Wiznerowiczem i ma on skontkatować mnie z osobą z TCGA która odpowiada za mięsaka. Ale jeżeli tych danych nie ma teraz to raczej ich już też nie będzie.

Pozostaje przyjrzeć się pozostałym nowotworom.

Niestety tam też nie jest różowo, nawet dla nowotworów, gdzie było dużo CNV > 3 (np. GBM), okazuje się, że oznaczenia MAF dla wariantów mutacji w TP53 są tylko dla około 50% pacjentów. Dlaego w poniższej tabelce dla GBM tylko dla 25 pacjentów jest CNV >3, ale w powyższej takich pacjentów było 48. Niestety dla 23 nie myło odpowiadających im plików MAF.

load("maf_cnv_all.rda")
df2 <- as.data.frame(as.table(as.matrix(df)))

ggplot(na.omit(df2), aes(y=Freq, x=Var1, fill=Var2)) + geom_bar(stat='identity', position="fill") + coord_flip() + xlab("") + ylab("Percent") + theme(legend.position="top")

df[is.na(df)] = 0
kable(df)
CNV < 3 TP53 missense CNV < 3 TP53 ok CNV >=3 TP53 missense CNV >=3 TP53 ok
ACC 5 66 1 16
BLCA 50 62 0 11
BRCA 168 754 6 33
CESC 8 174 0 3
COAD 50 103 1 0
COADREAD 82 139 1 0
GBM 63 167 1 24
GBMLGG 187 312 1 27
HNSC 120 146 7 5
KICH 14 54 0 0
KIPAN 22 615 0 3
KIRC 5 406 0 1
KIRP 3 155 0 2
LAML 0 0 0 0
LGG 124 145 0 3
LIHC 40 152 1 1
LUAD 64 139 5 16
LUSC 92 79 4 3
OV 157 122 8 8
PAAD 42 76 3 1
PCPG 1 160 0 2
PRAD 32 374 0 1
READ 32 36 0 0
SKCM 2 60 0 3
STAD 59 150 2 9
TGCT 1 147 0 7
THCA 0 398 0 1
UCEC 53 189 0 0
UCS 38 14 3 1
UVM 0 77 0 0