isa2 (version 0.3.4)

ppa.unique: Filter co-modules that are very similar to each other

Description

From a potentially non-unique set of PPA co-modules, create a unique set by removing all co-modules that are similar to others.

Usage

"ppa.unique" (normed.data, pparesult, ...)

Arguments

normed.data
The normalized input data, a list of four matrices, usually the output of the ppa.normalize function.
pparesult
The result of a PPA run, a set of co-modules.
...
Additional arguments, see details below.

Value

A named list, the filtered pparesult. See the return value of ppa.iterate for the details.

Details

This function can be called as
    ppa.unique(normed.data, pparesult, method = c("cor"),
               ignore.div = TRUE, cor.limit = 0.9,
	       neg.cor = TRUE, drop.zero = TRUE)
  
where the arguments are:
normed.data
The normalized input data, a list of four matrices, usually the output of ppa.normalize.

pparesult
The results of a PPA run, a set of co-modules.

method
Character scalar giving the method to be used to determine if two co-modules are similar. Right now only ‘cor’ is implemented, this keeps both co-modules if their Pearson correlation is less than cor.limit, for their row1, row2 and column scores. See also the neg.cor argument.

ignore.div
Logical scalar, if TRUE, then the divergent co-modules will be removed.

cor.limit
Numeric scalar, giving the correlation limit for the ‘cor’ method.

neg.cor
Logical scalar, if TRUE, then the ‘cor’ method considers the absolute value of the correlation.

drop.zero
Logical scalar, whether to drop co-modules that have all zero scores.

References

Kutalik Z, Bergmann S, Beckmann, J: A modular approach for integrative analysis of large-scale gene-expression and drug-response data Nat Biotechnol 2008 May; 26(5) 531-9.

See Also

See ppa for an easy way of running the PPA

Examples

Run this code
## Create an PPA module set
set.seed(1)
insili <- ppa.in.silico(noise=0.01)

## Random seeds
seeds <- generate.seeds(length=nrow(insili[[1]]), count=20)

## Normalize input matrix
nm <- ppa.normalize(insili[1:2])

## Do PPA
ppares <- ppa.iterate(nm, row1.seeds=seeds,
                      thr.row1=2, thr.row2=2, thr.col=1)

## Check correlation among modules
cc <- cor(ppares$rows1)
if (interactive()) { hist(cc[lower.tri(cc)],10) }

## Some of them are quite high, how many?
undiag <- function(x) { diag(x) <- 0; x }
sum(undiag(cc) > 0.99, na.rm=TRUE)

## Eliminate duplicated modules
ppares.unique <- ppa.unique(nm, ppares)

## How many modules left?
ncol(ppares.unique$rows1)

## Double check
cc2 <- cor(ppares.unique$rows1)
if (interactive()) { hist(cc2[lower.tri(cc2)],10) }

## High correlation?
sum(undiag(cc2) > 0.99, na.rm=TRUE)

Run the code above in your browser using DataCamp Workspace