setwd("C:/sepp/work/fabia/experiments")


library(fabia)
library(biclust)
library(truecluster)
library(BicARE)


readPlaidResults <- function(filename,n,l,ab="ab",ss="ss",iter="default") {

    require(biclust)

    r1 <- readLines(filename)
    a1 <- strsplit(r1," ")

    la <- length(a1)
    p <- as.numeric(a1[[la-4]][1])

      if ((p==0)||(la==0)) {
        L <- matrix(0,n,1)
        Z <- matrix(0,1,l)
        p <- 0
    } else {


        L <- matrix(0,n,p)
        Z <- matrix(0,p,l)

        j <- 0
        r <- 0

        for (i in 1:la) {

            if (!is.na(a1[[i]][1]))
            {


                if (a1[[i]][1]=="row")
                {
                    j <- j+1
                    r <- 1
                }

                if (a1[[i]][1]=="col")
                {
                    r <- 2
                }

                if (a1[[i]][1]==as.character(j))
                {
                    if(r==1) {
                        L[as.numeric(a1[[i]][2]),j] <- 1
                    }
                    if(r==2) {
                        Z[j,as.numeric(a1[[i]][2])] <- 1
                    }
                }
            }
        }
    }

    pp<- list()
    pp[[1]]="plaid" # method
    pp[[2]]=ab    # a=alpha(probe) effects; b= beta(conditions) effects
    pp[[3]]=ss    # seek=ss prefer large, possibly diffuse layers
                    # seek=ms prefer intense, possibly small layers
    pp[[4]]=iter # how many seeking iterations

    bicB <- BiclustResult(pp,L,Z,p)

    return(bicB)
}


readBicatResults <- function(filename,n,l,method="isa",pre="standardization",tc="2.0",tg="2.0") {

    require(biclust)

    r1 <- readLines(filename)
    a1 <- strsplit(r1," ")

    la <- length(a1)
    p <- la/3

     if ((p==0)||(la==0)) {
        L <- matrix(0,n,1)
        Z <- matrix(0,1,l)
        p <- 0
    } else {

        L <- matrix(0,n,p)
        Z <- matrix(0,p,l)

        for (i in 1:p) {

            nn <- as.numeric(a1[[3*i-2]][1])
            nl <- as.numeric(a1[[3*i-2]][2])
            for (k in 1:nn) {
                L[as.numeric(a1[[3*i-1]][k]),i] <- 1
            }
            for (k in 1:nl) {
                Z[i,as.numeric(a1[[3*i]][k])] <- 1
            }
        }
    }

    pp<- list()
    pp[[1]]=method # method
    pp[[2]]=pre    # preprocessing: standardization
    pp[[3]]=tg     # gene score threshold
    pp[[4]]=tc     # condition score threshold

    bicB <- BiclustResult(pp,L,Z,p)

    return(bicB)
}


readSambaResults <- function(filename,n,l,pre="standardization",opt="valsp_3ap",over="0.5") {

    require(biclust)

    r1 <- readLines(filename)
    a1 <- strsplit(r1,"\t")

    la <- length(a1)

    s <- 1
    while ((a1[[s]][1]!="[Bicd]")&&(s<=la)) { s <- s+1 }

    p <- as.numeric(a1[[s-1]][1])+1

     if ((p==0)||(la==0)) {
        L <- matrix(0,n,1)
        Z <- matrix(0,1,l)
        p <- 0
    } else {
        L <- matrix(0,n,p)
        Z <- matrix(0,p,l)

        s <- s+1
        for (i in s:la) {

            if (a1[[i]][2]=="1") {
                L[as.numeric(a1[[i]][3]),(as.numeric(a1[[i]][1])+1)] <- 1
            }

            if (a1[[i]][2]=="0") {
                Z[(as.numeric(a1[[i]][1])+1),as.numeric(a1[[i]][3])] <- 1
            }
        }
    }

    pp<- list()
    pp[[1]]="samba" # method
    pp[[2]]=pre     # preprocessing: standardization
    pp[[3]]=opt     # options: valsp_3ap
    pp[[4]]=over    # overlap genes 0.1 or 0.5

    bicB <- BiclustResult(pp,L,Z,p)

    return(bicB)
}


indices<- function (bicA, bicB)
{
    require(truecluster)

    pA <- bicA@Number
    pB <- bicB@Number
    if ((pA>0)&&(pB>0)) {
        n <- length(bicA@RowxNumber[,1])
        l <- length(bicA@NumberxCol[1,])
        u <- n*l

        jamat <- matrix(0,pA,pB)
        kumat <- matrix(0,pA,pB)
        ocmat <- matrix(0,pA,pB)
        somat <- matrix(0,pA,pB)
        for (i in 1:pA) {
            bcA <- tcrossprod(bicA@RowxNumber[,i],bicA@NumberxCol[i,])
            apos <- bcA > 0
            sa <- sum(apos)
            if (sa > 0.5*u) {
                 bcA[apos] <- 0
                 sa <- 0
            }
            for (j in 1:pB) {
                bcB <- tcrossprod(bicB@RowxNumber[,j],bicB@NumberxCol[j,])
                bpos <- bcB > 0
                sb <- sum(bpos)
                if (sb > 0.5*u) {
                    bcB[bpos] <- 0
                    sb <- 0
                }
                bcAB <- bcA + bcB
                abpos <- bcAB > 0
                sab <- sum(abpos)

                if (sab>0) {
                    jamat[i,j] <- (sa + sb)/sab - 1
                    somat[i,j] <- 2.0-2.0*sab/(sa+sb)
                } else {
                    jamat[i,j] <- 0
                    somat[i,j] <- 0
                }
                if ((sa>0)&&(sb>0))
                {
                    kumat[i,j] <- 1.0+0.5*( (sa-sab)/sb + (sb -sab)/sa )
                    ocmat[i,j] <- (sa+sb-sab)/sqrt(sb*sa)
                }else {
                    kumat[i,j] <- 0
                    ocmat[i,j] <- 0
                }
            }
        }

        fac <- sqrt(pB*pA)

        mm <- min(pA,pB)
        ma <- max(pA,pB)

        sja <- sum(jamat)/fac
        sku <- sum(kumat)/fac
        soc <- sum(ocmat)/fac
        sso <- sum(somat)/fac

        indja <- munkres(-jamat,tieorder = FALSE)
        indku <- munkres(-kumat,tieorder = FALSE)
        indoc <- munkres(-ocmat,tieorder = FALSE)
        indso <- munkres(-somat,tieorder = FALSE)

        rjat <-  sum(diag(jamat[indja$row, indja$col]))
        rkut <-  sum(diag(kumat[indku$row, indku$col]))
        roct <-  sum(diag(ocmat[indoc$row, indoc$col]))
        rsot <-  sum(diag(somat[indso$row, indso$col]))

        rja <-  rjat/mm
        rku <-  rkut/mm
        roc <-  roct/mm
        rso <-  rsot/mm

        rja1 <-  rjat/ma
        rku1 <-  rkut/ma
        roc1 <-  roct/ma
        rso1 <-  rsot/ma
    } else {
        rja <- 0
        rku <- 0
        roc <- 0
        rso <- 0

        rja1 <- 0
        rku1 <- 0
        roc1 <- 0
        rso1 <- 0

        sja <- 0
        sku <- 0
        soc <- 0
        sso <- 0

    }



    return(as.vector(c(rja,rku,roc,rso,rja1,rku1,roc1,rso1,sja,sku,soc,sso)))
}



convertFabia <- function(rFab,n=1000,l=100,minc=5,minr=30,method="fabia",cyc=200,alpha=0.3,spl=1.0,spz=1.0,p=13,sL=0.0,sZ=0.0,La=NULL,Za=NULL,lapla=NULL,Psi=NULL)
{

    require(biclust)


    p <- length(rFab$bic[,1])

    pp <- 0
    for (i in 1:p) {
        if (rFab$bic[i,1]$binp[1]>=minr)
        {
            if (rFab$bic[i,1]$binp[2]>=minc) {
                pp <- pp + 1
            }
        }
    }

      if ((p==0)||(pp==0)) {
        L <- matrix(0,n,1)
        Z <- matrix(0,1,l)
        pp <- 0
    } else {


        L <- matrix(0,n,pp)
        Z <- matrix(0,pp,l)

        j <- 0

        for (i in 1:p) {

            if (rFab$bic[i,1]$binp[1]>=minr)
            {
                if (rFab$bic[i,1]$binp[2]>=minc) {
                    j <- j + 1
                    for (k in 1:rFab$bic[i,1]$binp[2]) {
                        Z[j,rFab$num[i,2]$numnp[k]] <- 1
                    }
                    for (k in 1:rFab$bic[i,1]$binp[1]) {
                        L[rFab$num[i,1]$numng[k],j] <- 1
                    }
                }
            }
        }
    }

    lp<- list()
    lp[[1]]=method
    lp[[2]]=cyc
    lp[[3]]=alpha
    lp[[4]]=spl
    lp[[5]]=spz
    lp[[6]]=p
    lp[[7]]=sL
    lp[[8]]=sZ
    lp[[9]]=La
    lp[[10]]=Za
    lp[[11]]=lapla
    lp[[12]]=Psi



    bicB <- BiclustResult(lp,L,Z,pp)

    return(bicB)
}


convertDat <- function(dat,n=1000,l=100)
{

    require(biclust)


    p <- length(dat$LC)

    L <- matrix(0,n,p)
    Z <- matrix(0,p,l)


    for (i in 1:p) {

        for (k in 1:length(dat$LC[[i]])) {
            L[dat$LC[[i]][k],i] <- 1
        }
        for (k in 1:length(dat$ZC[[i]])) {
            Z[i,dat$ZC[[i]][k]] <- 1
        }
    }


    lp<- list()
    lp[[1]]="make_fabi_data"
    lp[[2]]=n
    lp[[3]]=l

    bicB <- BiclustResult(lp,L,Z,p)

    return(bicB)
}



indrorig_s<-list()
indrfabia_s<-list()
indrfabias_s<-list()
indrfabiap_s<-list()
indrmfsc_s<-list()
indrplaid_ss_s<-list()
indrplaid_ms_s<-list()
indrplaid_ms_5_s<-list()
indrisa_s<-list()
indrisa_1_s<-list()
indropsm_s<-list()
indrsamba_s<-list()
indrxmotif_s<-list()
indrbimax_s<-list()
indrcc_s<-list()
indrplaid_t_ab_s<-list()
indrplaid_t_a_s<-list()
indrspec_s<-list()
indrfloc_s<-list()

    sindrorig_s<- as.vector(rep(0,12))
    sindrfabia_s<- as.vector(rep(0,12))
    sindrfabias_s<- as.vector(rep(0,12))
    sindrfabiap_s<- as.vector(rep(0,12))
    sindrmfsc_s<-  as.vector(rep(0,12))
    sindrplaid_ss_s<- as.vector(rep(0,12))
    sindrplaid_ms_s<-  as.vector(rep(0,12))
    sindrplaid_ms_5_s<- as.vector(rep(0,12))
    sindrisa_s<-  as.vector(rep(0,12))
    sindrisa_1_s<- as.vector(rep(0,12))
    sindropsm_s<-  as.vector(rep(0,12))
    sindrsamba_s<- as.vector(rep(0,12))
    sindrxmotif_s<- as.vector(rep(0,12))
    sindrbimax_s<-  as.vector(rep(0,12))
    sindrcc_s<-  as.vector(rep(0,12))
    sindrplaid_t_ab_s<- as.vector(rep(0,12))
    sindrplaid_t_a_s<-  as.vector(rep(0,12))
    sindrspec_s<-  as.vector(rep(0,12))
    sindrfloc_s<-  as.vector(rep(0,12))
#=====================================================================
#=====================================================================

m <- 100

n=1000
l=100
alpha_fabia = 0.4
alpha_fabias = 0.6
spl=1.0
spz=1.0
cyc=200
p=13

#=====================================================================
#=====================================================================

for (i in 1:m) {


    load(file=paste("exp_",as.character(i),".RData",sep = ""))


    rorig <- convertDat(dat,n=1000,l=100)

    save(rorig,file=paste("exp_",as.character(i),"_Biclust_orig.RData",sep = ""))

    X <- dat[[1]]
    X <- X- rowMeans(X)
    XX <- (1/ncol(X))*tcrossprod(X)
    dXX <- 1/sqrt(diag(XX)+0.001*as.vector(rep(1,nrow(X))))
    X <- dXX*X


    resFab <- fabia(X,cyc,alpha_fabia,spl,spz,p)

    rFab <- extract_bic(resFab$L,resFab$Z,lapla=resFab$lapla,Psi=resFab$Psi)

    rfabia <- convertFabia(rFab,n=n,l=l,minc=5,minr=30,method="fabia",cyc=cyc,alpha=alpha_fabia,spl=spl,spz=spz,p=p,sL=0.0,sZ=0.0,L=resFab$L,Z=resFab$Z,lapla=resFab$lapla,Psi=resFab$Psi)

    save(rfabia,file=paste("exp_",as.character(i),"_Biclust_fabia.RData",sep = ""))

    resFab <- fabias(X,cyc,alpha_fabias,spz,p)

    rFab <- extract_bic(resFab$L,resFab$Z,lapla=resFab$lapla,Psi=resFab$Psi)

    rfabias <- convertFabia(rFab,n=n,l=l,minc=5,minr=30,method="fabias",cyc=cyc,alpha=alpha_fabias,spl=0,spz=spz,p=p,sL=0.0,sZ=0.0,L=resFab$L,Z=resFab$Z,lapla=resFab$lapla,Psi=resFab$Psi)

    save(rfabias,file=paste("exp_",as.character(i),"_Biclust_fabias.RData",sep = ""))

    resFab <- fabiap(X,cyc,alpha_fabia,spl,spz,13,alpha_fabias,alpha_fabias)

    rFab <- extract_bic(resFab$L,resFab$Z,lapla=resFab$lapla,Psi=resFab$Psi)

    rfabiap <- convertFabia(rFab,n=n,l=l,minc=5,minr=30,method="fabiap",cyc=cyc,alpha=alpha_fabia,spl=spl,spz=spz,p=p,sL=alpha_fabias,sZ=alpha_fabias,L=resFab$L,Z=resFab$Z,lapla=resFab$lapla,Psi=resFab$Psi)

    save(rfabiap,file=paste("exp_",as.character(i),"_Biclust_fabiap.RData",sep = ""))

    resFab <- mfsc(X,p,alpha_fabias,alpha_fabias)

    rFab <- extract_bic(resFab$L,resFab$Z)

    rmfsc <- convertFabia(rFab,n=1000,l=100,minc=5,minr=30,method="mfsc",cyc=0,alpha=0,spl=0,spz=0,p=p,sL=alpha_fabias,sZ=alpha_fabias,L=resFab$L,Z=resFab$Z,lapla=NULL,Psi=NULL)

    save(rmfsc,file=paste("exp_",as.character(i),"_Biclust_mfsc.RData",sep = ""))

    rplaid_ss<- readPlaidResults(paste("exp_",as.character(i),"_plaid_ss.res",sep = ""),1000,100,ab="ab",ss="ss",iter="default")

    save(rplaid_ss,file=paste("exp_",as.character(i),"_Biclust_plaid_ss.RData",sep = ""))

    rplaid_ms<- readPlaidResults(paste("exp_",as.character(i),"_plaid_ms.res",sep = ""),1000,100,ab="ab",ss="ms",iter="default")

    save(rplaid_ms,file=paste("exp_",as.character(i),"_Biclust_plaid_ms.RData",sep = ""))

    rplaid_ms_5 <- readPlaidResults(paste("exp_",as.character(i),"_plaid_ms_5.res",sep = ""),1000,100,ab="ab",ss="ms",iter="5")

    save(rplaid_ms_5,file=paste("exp_",as.character(i),"_Biclust_plaid_ms_5.RData",sep = ""))

    risa <- readBicatResults(paste("exp_",as.character(i),"_isa.res",sep = ""),1000,100,method="isa",pre="standardization",tc="2.0",tg="2.0")

    save(risa,file=paste("exp_",as.character(i),"_Biclust_isa.RData",sep = ""))

    risa_1 <- readBicatResults(paste("exp_",as.character(i),"_isa_1.res",sep = ""),1000,100,method="isa",pre="standardization",tc="1.0",tg="1.0")

    save(risa_1,file=paste("exp_",as.character(i),"_Biclust_isa_1.RData",sep = ""))

    ropsm <- readBicatResults(paste("exp_",as.character(i),"_opsm.res",sep = ""),1000,100,method="opsm",pre="standardization",tc="",tg="")

    save(ropsm,file=paste("exp_",as.character(i),"_Biclust_opsm.RData",sep = ""))

    rsamba <- readSambaResults(paste("exp_",as.character(i),"_samba.res",sep = ""),1000,100,pre="standardization",opt="valsp_3ap",over="0.5")

    save(rsamba,file=paste("exp_",as.character(i),"_Biclust_samba.RData",sep = ""))

    XD<-discretize(X)
    rxmotif <- biclust(XD, method=BCXmotifs(), ns=100, nd=100, sd=5, alpha=0.05, number=13)

    save(rxmotif,file=paste("exp_",as.character(i),"_Biclust_xmotif.RData",sep = ""))



    XB <- binarize(X)
    rbimax <- biclust(XB, method=BCBimax(), minr=30, minc=5, number=13)
    save(rbimax,file=paste("exp_",as.character(i),"_Biclust_bimax.RData",sep = ""))


    rcc <- biclust(X, method=BCCC(), delta=0.03,  alpha=1.2, number=13)
    save(rcc,file=paste("exp_",as.character(i),"_Biclust_cc.RData",sep = ""))


    rplaid_t_ab <- biclust(X, method=BCPlaid(), cluster="b", fit.model = y ~ m + a + b, background = TRUE, row.release = 0.7, col.release = 0.7,shuffle = 3, back.fit = 0, max.layers = 13, iter.startup = 5, iter.layer = 10, verbose = TRUE)
    save(rplaid_t_ab,file=paste("exp_",as.character(i),"_Biclust_plaid_t_ab.RData",sep = ""))

    rplaid_t_a <- biclust(X, method=BCPlaid(), cluster="b", fit.model = y ~ m + a, background = TRUE, row.release = 0.7, col.release = 0.7,shuffle = 3, back.fit = 0, max.layers = 13,iter.startup = 5, iter.layer = 10, verbose = TRUE)
    save(rplaid_t_a,file=paste("exp_",as.character(i),"_Biclust_plaid_t_a.RData",sep = ""))



    rspec <- biclust(exp(X), method=BCSpectral(), normalization="log", numberOfEigenvalues=6, minr=30, minc=5, withinVar=1)
    save(rspec,file=paste("exp_",as.character(i),"_Biclust_spec.RData",sep = ""))



    resfloc <- FLOC(X, k = 13, pGene = 0.1, pSample=0.1, N = 30, M = 5, t = 500)


    rfloc <- BiclustResult(as.list(resfloc$param),t(resfloc$bicRow),resfloc$bicCol,as.numeric(resfloc$param[1,2]))
    save(rfloc,file=paste("exp_",as.character(i),"_Biclust_floc.RData",sep = ""))


    indrfabia<-indices(rorig,rfabia)
    indrfabias<-indices(rorig,rfabias)
    indrfabiap<-indices(rorig,rfabiap)
    indrmfsc<-indices(rorig,rmfsc)
    indrplaid_ss<-indices(rorig,rplaid_ss)
    indrplaid_ms<-indices(rorig,rplaid_ms)
    indrplaid_ms_5<-indices(rorig,rplaid_ms_5)
    indrisa<-indices(rorig,risa)
    indrisa_1<-indices(rorig,risa_1)
    indropsm<-indices(rorig,ropsm)
    indrsamba<-indices(rorig,rsamba)
    indrxmotif<-indices(rorig,rxmotif)
    indrbimax<-indices(rorig,rbimax)
    indrcc<-indices(rorig,rcc)
    indrplaid_t_ab<-indices(rorig,rplaid_t_ab)
    indrplaid_t_a<-indices(rorig,rplaid_t_a)
    indrspec<-indices(rorig,rspec)
    indrfloc<-indices(rorig,rfloc)

    save(indrfabia,indrfabias,indrfabiap,indrmfsc,indrplaid_ss,indrplaid_ms,indrplaid_ms_5,indrisa,indrisa_1,indropsm,indrsamba,indrxmotif,indrbimax,indrcc,indrplaid_t_ab,indrplaid_t_a,indrspec,indrfloc,file=paste("exp_",as.character(i),"_ind_res.RData",sep = ""))

     write.table(t(as.vector(indrfabia)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =FALSE)
     write.table(t(as.vector(indrfabias)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrfabiap)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrmfsc)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrplaid_ss)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrplaid_ms)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrplaid_ms_5)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrisa)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrisa_1)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indropsm)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrsamba)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrxmotif)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrbimax)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrcc)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrplaid_t_ab)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrplaid_t_a)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrspec)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(indrfloc)), file = paste("exp_",as.character(i),"_in_res.txt",sep = ""), quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)

    indrfabia_s[[i]]<-indrfabia
    indrfabias_s[[i]]<-indrfabias
    indrfabiap_s[[i]]<-indrfabiap
    indrmfsc_s[[i]]<-indrmfsc
    indrplaid_ss_s[[i]]<-indrplaid_ss
    indrplaid_ms_s[[i]]<-indrplaid_ms
    indrplaid_ms_5_s[[i]]<-indrplaid_ms_5
    indrisa_s[[i]]<-indrisa
    indrisa_1_s[[i]]<-indrisa_1
    indropsm_s[[i]]<-indropsm
    indrsamba_s[[i]]<-indrsamba
    indrxmotif_s[[i]]<-indrxmotif
    indrbimax_s[[i]]<-indrbimax
    indrcc_s[[i]]<-indrcc
    indrplaid_t_ab_s[[i]]<-indrplaid_t_ab
    indrplaid_t_a_s[[i]]<-indrplaid_t_a
    indrspec_s[[i]]<-indrspec
    indrfloc_s[[i]]<-indrfloc

    sindrfabia_s<-sindrfabia_s  + indrfabia
    sindrfabias_s<- sindrfabias_s + indrfabias
    sindrfabiap_s<-sindrfabiap_s  + indrfabiap
    sindrmfsc_s<- sindrmfsc_s + indrmfsc
    sindrplaid_ss_s<- sindrplaid_ss_s + indrplaid_ss
    sindrplaid_ms_s<- sindrplaid_ms_s + indrplaid_ms
    sindrplaid_ms_5_s<-sindrplaid_ms_5_s  + indrplaid_ms_5
    sindrisa_s<- sindrisa_s + indrisa
    sindrisa_1_s<-sindrisa_1_s  + indrisa_1
    sindropsm_s<- sindropsm_s + indropsm
    sindrsamba_s<-sindrsamba_s  + indrsamba
    sindrxmotif_s<-sindrxmotif_s  + indrxmotif
    sindrbimax_s<- sindrbimax_s + indrbimax
    sindrcc_s<- sindrcc_s + indrcc
    sindrplaid_t_ab_s<-sindrplaid_t_ab_s  + indrplaid_t_ab
    sindrplaid_t_a_s<- sindrplaid_t_a_s + indrplaid_t_a
    sindrspec_s<- sindrspec_s + indrspec
    sindrfloc_s<- sindrfloc_s + indrfloc

    rm(dat)
    rm(X)
    rm(XD)
    rm(XB)
    rm(XX)



}

    sindrfabia_s<-sindrfabia_s/m
    sindrfabias_s<- sindrfabias_s/m
    sindrfabiap_s<-sindrfabiap_s/m
    sindrmfsc_s<- sindrmfsc_s/m
    sindrplaid_ss_s<- sindrplaid_ss_s/m
    sindrplaid_ms_s<- sindrplaid_ms_s/m
    sindrplaid_ms_5_s<-sindrplaid_ms_5_s/m
    sindrisa_s<- sindrisa_s/m
    sindrisa_1_s<-sindrisa_1_s/m
    sindropsm_s<- sindropsm_s/m
    sindrsamba_s<-sindrsamba_s/m
    sindrxmotif_s<-sindrxmotif_s/m
    sindrbimax_s<- sindrbimax_s/m
    sindrcc_s<- sindrcc_s/m
    sindrplaid_t_ab_s<-sindrplaid_t_ab_s/m
    sindrplaid_t_a_s<- sindrplaid_t_a_s/m
    sindrspec_s<- sindrspec_s/m
    sindrfloc_s<- sindrfloc_s/m

    sindrfabia_v<- as.vector(rep(0,12))
    sindrfabias_v<- as.vector(rep(0,12))
    sindrfabiap_v<- as.vector(rep(0,12))
    sindrmfsc_v<-  as.vector(rep(0,12))
    sindrplaid_ss_v<- as.vector(rep(0,12))
    sindrplaid_ms_v<-  as.vector(rep(0,12))
    sindrplaid_ms_5_v<- as.vector(rep(0,12))
    sindrisa_v<-  as.vector(rep(0,12))
    sindrisa_1_v<- as.vector(rep(0,12))
    sindropsm_v<-  as.vector(rep(0,12))
    sindrsamba_v<- as.vector(rep(0,12))
    sindrxmotif_v<- as.vector(rep(0,12))
    sindrbimax_v<-  as.vector(rep(0,12))
    sindrcc_v<-  as.vector(rep(0,12))
    sindrplaid_t_ab_v<- as.vector(rep(0,12))
    sindrplaid_t_a_v<-  as.vector(rep(0,12))
    sindrspec_v<-  as.vector(rep(0,12))
    sindrfloc_v<-  as.vector(rep(0,12))

    for (i in 1:m) {


    sindrfabia_v<-(indrfabia_s[[i]]-sindrfabia_s)^2
    sindrfabias_v<-(indrfabias_s[[i]]-sindrfabias_s)^2
    sindrfabiap_v<-(indrfabiap_s[[i]]-sindrfabiap_s)^2
    sindrmfsc_v<-(indrmfsc_s[[i]]-sindrmfsc_s)^2
    sindrplaid_ss_v<-(indrplaid_ss_s[[i]]-sindrplaid_ss_s)^2
    sindrplaid_ms_v<-(indrplaid_ms_s[[i]]-sindrplaid_ms_s)^2
    sindrplaid_ms_5_v<-(indrplaid_ms_5_s[[i]]-sindrplaid_ms_5_s)^2
    sindrisa_v<-(indrisa_s[[i]]-sindrisa_s)^2
    sindrisa_1_v<-(indrisa_1_s[[i]]-sindrisa_1_s)^2
    sindropsm_v<-(indropsm_s[[i]]-sindropsm_s)^2
    sindrsamba_v<-(indrsamba_s[[i]]-sindrsamba_s)^2
    sindrxmotif_v<-(indrxmotif_s[[i]]-sindrxmotif_s)^2
    sindrbimax_v<-(indrbimax_s[[i]]-sindrbimax_s)^2
    sindrcc_v<-(indrcc_s[[i]]-sindrcc_s)^2
    sindrplaid_t_ab_v<-(indrplaid_t_ab_s[[i]]-sindrplaid_t_ab_s)^2
    sindrplaid_t_a_v<-(indrplaid_t_a_s[[i]]-sindrplaid_t_a_s)^2
    sindrspec_v<-(indrspec_s[[i]]-sindrspec_s)^2
    sindrfloc_v<-(indrfloc_s[[i]]-sindrfloc_s)^2


}

    sindrfabia_v<-sindrfabia_v/(m-1)
    sindrfabias_v<- sindrfabias_v/(m-1)
    sindrfabiap_v<-sindrfabiap_v/(m-1)
    sindrmfsc_v<- sindrmfsc_v/(m-1)
    sindrplaid_ss_v<- sindrplaid_ss_v/(m-1)
    sindrplaid_ms_v<- sindrplaid_ms_v/(m-1)
    sindrplaid_ms_5_v<-sindrplaid_ms_5_v/(m-1)
    sindrisa_v<- sindrisa_v/(m-1)
    sindrisa_1_v<-sindrisa_1_v/(m-1)
    sindropsm_v<- sindropsm_v/(m-1)
    sindrsamba_v<-sindrsamba_v/(m-1)
    sindrxmotif_v<-sindrxmotif_v/(m-1)
    sindrbimax_v<- sindrbimax_v/(m-1)
    sindrcc_v<- sindrcc_v/(m-1)
    sindrplaid_t_ab_v<-sindrplaid_t_ab_v/(m-1)
    sindrplaid_t_a_v<- sindrplaid_t_a_v/(m-1)
    sindrspec_v<- sindrspec_v/(m-1)
    sindrfloc_v<- sindrfloc_v/(m-1)


     write.table(t(as.vector(sindrfabia_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =FALSE)
     write.table(t(as.vector(sindrfabias_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrfabiap_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrmfsc_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_ss_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_ms_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_ms_5_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrisa_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrisa_1_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindropsm_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrsamba_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrxmotif_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrbimax_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrcc_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_t_ab_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_t_a_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrspec_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrfloc_s)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)



     write.table(t(as.vector(sindrfabia_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrfabias_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrfabiap_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrmfsc_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_ss_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_ms_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_ms_5_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrisa_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrisa_1_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindropsm_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrsamba_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrxmotif_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrbimax_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrcc_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_t_ab_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrplaid_t_a_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrspec_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)
     write.table(t(as.vector(sindrfloc_v)), file ="final_result.txt", quote = FALSE, sep = "\t",row.names = FALSE,col.names = FALSE,append =TRUE)