forked from hannenhalli-lab/AltSplDevCancer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelperFunctions.R
More file actions
75 lines (67 loc) · 2.93 KB
/
Copy pathhelperFunctions.R
File metadata and controls
75 lines (67 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
library(preprocessCore)
exonGeneNames <- function(exonList, GenesDf) {
exonGenes <- exonList %>% as.character() %>% gsub("\\..+", "", .)
indexes <- match(exonGenes, GenesDf[ ,'GeneID'])
exonGenes <- GenesDf[indexes, c('GeneName')] %>% as.character()
geneType <- GenesDf[indexes, c('GeneType')] %>% as.character()
return(cbind(Exon = exonList, GeneName = exonGenes, geneType = geneType))
}
makeExonBed <- function(InputFile, GenesDf) {
#Genes <- gsub("\\..+", "", InputFile$Exon)
Genes <- exonGeneNames(exonList = InputFile$Exon, GenesDf = GenesDf) %>% data.frame()
strand <- InputFile$Exon %>% gsub(".+:", "", .)
Exons <- InputFile$Exon %>%
gsub(".+SE:|[:-]\\d+:[+-]", "", .) %>%
gsub("\\d+-", "", .) %>%
strsplit(., ":") %>% unlist() %>% matrix(., ncol = 3, byrow = T) %>%
data.frame() %>% mutate(exon = InputFile$Exon, geneName = Genes$exonGenes, strand = strand)
names(Exons)[1:3] <- c("chr", "start", "end")
Exons$chr <- as.character(Exons$chr)
Exons$start <- Exons$start %>% as.character %>% as.numeric()
Exons$end <- Exons$end %>% as.character %>% as.numeric()
#Exons <- Exons[order(Exons$chr, Exons$start), ]
Exons$start <- Exons$start - 1
return(Exons)
}
processEpxressionFile <- function(dataFrame, Transcripts, replicates, normalize = T) {
if (normalize) {
print("performing quantile normalization")
} else {
print("processing without quantile normalization")
}
rownames(dataFrame) <- gsub("\\.\\d+", "", rownames(dataFrame))
matches <- match(rownames(dataFrame), Transcripts$tx_id)
Genes <- Transcripts[matches, 'gene_name']
dataFrame <- cbind("GeneName" = Genes, dataFrame)
GeneLevelTPM <- aggregate(.~GeneName, data = dataFrame, sum, na.rm = T, na.action = na.pass)
if (normalize) {
GeneLevelTPM <- GeneLevelTPM[ ,-1] %>% as.matrix() %>% normalize.quantiles() %>%
set_rownames(GeneLevelTPM$GeneName) %>%
set_colnames(colnames(GeneLevelTPM)[-1]) %>% data.frame(check.names = F)
}else {
GeneLevelTPM <- GeneLevelTPM[ ,-1] %>% set_rownames(GeneLevelTPM$GeneName)
}
if (replicates) {
GeneLevelTPM <- GeneLevelTPM %>% t() %>% data.frame() %>%
mutate(Stage = gsub("_Rep\\d+", "", colnames(GeneLevelTPM))) %>%
aggregate(.~Stage, data = ., mean, na.rm = T, na.action = na.pass) %>%
set_rownames(.$Stage) %>% .[,-1] %>% t() %>% data.frame() %>%
set_rownames(rownames(GeneLevelTPM))
}
#GeneLevelTPM <- GeneLevelTPM[ ,mixedsort(names(GeneLevelTPM))]
return(GeneLevelTPM)
}
processPSIfile <- function(psiFile) {
data.frame(t(psiFile)) %>%
mutate(Stage = gsub("_Rep\\d+", "", names(psiFile))) %>%
aggregate(.~Stage, data = ., mean, na.rm = T, na.action = na.pass) %>%
set_rownames(.$Stage) %>%
.[,-1] %>% t() %>% data.frame() %>%
set_rownames(rownames(psiFile))
}
naFilter <- function(dataFrame, cutoff) {
#nsize <- floor(ncol(dataFrame) * cutoff)
nsize <- ceiling(ncol(dataFrame) * cutoff)
indexes <- apply(dataFrame, 1, function(x) sum(is.na(x))) < nsize
dataFrame[indexes, ]
}