minmax {PhosR} | R Documentation |
Perform a minmax standardisation to scale data into 0 to 1 range
minmax(mat)
mat |
a matrix with rows correspond to phosphosites and columns correspond to condition |
Minmax standardised matrix
data('phospho_L6_ratio') data('SPSs') grps = gsub('_.+', '', colnames(phospho.L6.ratio)) # Cleaning phosphosite label phospho.site.names = rownames(phospho.L6.ratio) L6.sites = gsub(' ', '', sapply(strsplit(rownames(phospho.L6.ratio), '~'), function(x){paste(toupper(x[2]), x[3], '', sep=';')})) phospho.L6.ratio = t(sapply(split(data.frame(phospho.L6.ratio), L6.sites), colMeans)) phospho.site.names = split(phospho.site.names, L6.sites) # Construct a design matrix by condition design = model.matrix(~ grps - 1) # phosphoproteomics data normalisation using RUV ctl = which(rownames(phospho.L6.ratio) %in% SPSs) phospho.L6.ratio.RUV = RUVphospho(phospho.L6.ratio, M = design, k = 3, ctl = ctl) phosphoL6 = phospho.L6.ratio.RUV rownames(phosphoL6) = phospho.site.names # filter for up-regulated phosphosites phosphoL6.mean <- meanAbundance(phosphoL6, grps = gsub('_.+', '', colnames(phosphoL6))) aov <- matANOVA(mat=phosphoL6, grps=gsub('_.+', '', colnames(phosphoL6))) phosphoL6.reg <- phosphoL6[(aov < 0.05) & (rowSums(phosphoL6.mean > 0.5) > 0),,drop = FALSE] L6.phos.std <- standardise(phosphoL6.reg) rownames(L6.phos.std) <- sapply(strsplit(rownames(L6.phos.std), '~'), function(x){gsub(' ', '', paste(toupper(x[2]), x[3], '', sep=';'))}) L6.phos.seq <- sapply(strsplit(rownames(phosphoL6.reg), '~'), function(x)x[4]) numMotif = 5 numSub = 1 ks.profile.list <- kinaseSubstrateProfile(PhosphoSite.mouse, L6.phos.std) motif.mouse.list = PhosR::motif.mouse.list motif.mouse.list.filtered <- motif.mouse.list[which(motif.mouse.list$NumInputSeq >= numMotif)] ks.profile.list.filtered <- ks.profile.list[which(ks.profile.list$NumSub >= numSub)] # scoring all phosphosites against all motifs motifScoreMatrix <- matrix(NA, nrow=nrow(L6.phos.std), ncol=length(motif.mouse.list.filtered)) rownames(motifScoreMatrix) <- rownames(L6.phos.std) colnames(motifScoreMatrix) <- names(motif.mouse.list.filtered) # extracting flanking sequences seqWin = mapply(function(x) { mid <- (nchar(x)+1)/2 substr(x, start=(mid-7), stop=(mid+7)) }, L6.phos.seq) print('Scoring phosphosites against kinase motifs:') for(i in seq_len(length(motif.mouse.list.filtered))) { motifScoreMatrix[,i] <- frequencyScoring(seqWin, motif.mouse.list.filtered[[i]]) cat(paste(i, '.', sep='')) } motifScoreMatrix <- minmax(motifScoreMatrix)