# moduleIdentificationGPFixSSTwolayer: Module Identification for two-layer network In AMOUNTAIN: Active modules for multilayer weighted gene co-expression networks: a continuous optimization approach

## Description

Algorithm for Module Identification on two-layer network

## Usage

 ```1 2``` ```moduleIdentificationGPFixSSTwolayer(W1, z1, x0, W2, z2, y0, A, lambda1 = 1, lambda2 = 1, lambda3 = 1, maxiter = 1000, a1 = 0.5, a2 = 0.5) ```

## Arguments

 `W1` edge score matrix of the network 1, n_1 x n_1 matrix `z1` node score vector of the network 1, n_1-length vector `x0` initial solution of network 1, n_1-length vector `W2` edge score matrix of the network 2, n_2 x n_2 matrix `z2` node score vector of the network 2, n_2-length vector `y0` initial solution of network 2, n_2-length vector `A` inter-layer links weight, n_1 x n_2 matrix `lambda1` parameter in objective, coefficient of node score of network 1 `lambda2` parameter in objective, coefficient of node score of network 2 `lambda3` parameter in objective, coefficient of inter-layer links part `maxiter` maximal interation of whole procedure `a1` parameter in elastic net the same as in `EuclideanProjectionENNORM` `a2` parameter in elastic net the same as in `EuclideanProjectionENNORM`

## Value

a list containing solution for network 1 and network 2 and objective

## Author(s)

Dong Li, [email protected]

## References

AMOUNTAIN

`EuclideanProjectionENNORM`
 ``` 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``` ```n1=100 k1=20 theta1 = 0.5 n2=80 k2=10 theta2 = 0.5 ppresult <- twolayernetworkSimulation(n1,k1,theta1,n2,k2,theta2) A <- ppresult[[3]] pp <- ppresult[[1]] moduleid <- pp[[3]] netid <- 1:n1 restp<- netid[-moduleid] pp2 <- ppresult[[2]] moduleid2 <- pp2[[3]] ## use default parameters here modres=moduleIdentificationGPFixSSTwolayer(pp[[1]],pp[[2]],rep(1/n1,n1), pp2[[1]],pp2[[2]],rep(1/n2,n2),A) predictedid<-which(modres[[1]]!=0) recall = length(intersect(predictedid,moduleid))/length(moduleid) precise = length(intersect(predictedid,moduleid))/length(predictedid) F1 = 2*precise*recall/(precise+recall) predictedid2<-which(modres[[2]]!=0) recall2 = length(intersect(predictedid2,moduleid2))/length(moduleid2) precise2 = length(intersect(predictedid2,moduleid2))/length(predictedid2) F2 = 2*precise2*recall2/(precise2+recall2) ```