R/PredictDivergence.R

Defines functions PredictDivergence

Documented in PredictDivergence

PredictDivergence <-function(iicc){

	require("MEET")
	require("seqinr")

    
    write.fasta <- get("write.fasta",pos="package:seqinr")
    read.fasta <- get("read.fasta",pos="package:seqinr")
    
    training.set<-Factortrans<-matriu<-iicc$Transcriptionfactor

	
	iicc$D <- iicc$correction_1rOrdre <- iicc$probparella<-NULL
	iicc$correction_1rOrdre_m1<-iicc$Mperfil<-iicc$q<- NULL
	iicc$HXmax<-iicc$HX<-iicc$q<-NULL
	iicc$Divergence<-iicc$interA<-iicc$interB<-iicc$classentropy<-NULL
	
	
    Prob<-iicc$background
    iicc$missing.fun=TRUE
    q<-iicc$q<-iicc$model$parameterModel$Order
		
	if (q==1) {iicc$classentropy<-"Shannon"
		}else{
		iicc$classentropy<-"Renyi"  
	}
	
    
    k<-length(iicc$DNA[[1]])
    
    out<-lapply(seq(1,length(iicc$DNA),1), function(r){vector(mode="numeric",length=(k-ncol(Factortrans)+1))})
	out_diff<-lapply(seq(1,length(iicc$DNA),1), function(r){})
	
	iicc$D<-iicc$model$parameterModel$D
	iicc$HXmax<-iicc$model$parameterModel$HXmax
	iicc$correctioc_1rOrdre<-iicc$model$parameterModel$correction_1rOrdre
	iicc$Entropy<-iicc$model$parameterModel$HX
	iicc$Mperfil<-iicc$model$parameterModel$Mperfil
	iicc$interA<-iicc$model$parameterModel$interA
	iicc$interB<-iicc$model$parameterModel$interB
	iicc$Divergence<-iicc$model$model
   
	Results<-seq.rand<-NULL
   	
	
	for(i in c(1:length(iicc$DNA))){
		
		index<-results<-resultat<-threshold<-a<-Pvalor<-Index<-NULL
		validation.set_x <- iicc$DNA[[i]]
	    iicc$longDNA<-length(iicc$DNA[[i]])
		out[[i]] <- 	sapply( X=c(1:(iicc$longDNA-ncol(training.set)+1)),
						FUN = function(X, training.set, seq.rand, iicc) {seq.rand <-validation.set_x[X:(X+ncol(training.set)-1)]
						MIread(training.set=training.set, val.set= seq.rand, iicc) 
						}, training.set=training.set, seq.rand= seq.rand, iicc=iicc)
	      
		 a<-rev(sort(as.vector(t(out[[i]]))))
     	 out_diff[[i]]<-as.vector(t(out[[i]]))
    	  jj<-1
      	 threshold<-pvalue(a[jj],out_diff[[i]])
      
     	 while (threshold<iicc$threshold){     
      		 index<-as.numeric(which(out_diff[[i]]==a[jj]))
      		 if (length(index)==1){
      		 Pvalor<-cbind(Pvalor,threshold)	
      		 Index<-cbind(Index,index)
      		 jj<-jj+1
      		 }else{
      		 	for (ii in c(1:length(index))){
      		 	Pvalor<-cbind(Pvalor,threshold)
      		 	Index<-cbind(Index,index[ii])
      		 		}
      		 	jj<-jj+length(index)
      		 	}
      		 threshold<-pvalue(a[jj],out_diff[[i]])      		}
      		 
     
       results<-matrix(,length(Index),3,dimnames=list(c(1:length		(Index)),c("Position","Value","Direction")))
	 
    	  results[,1]<-as.numeric(Index[1,])
    	  results[,2]<-as.numeric(round(as.numeric(Pvalor[1,]),7))

      
      if (iicc$direction!="b"){
	  results[,3]<-iicc$direction
	  }else{
	  if (i==1) {results[,3]<-"f"
	  }else{
	  results[,3]<-"r"
	  }
	}
	
      Sequence<-vector(mode="character", length=length(Index))
      for(ii in c(1:length(Index))){
      	if (results[ii,3]=="f"){j<-1
		 	}else{
		 		j<-2}
		 	

	  sequencia<-t(as.matrix(iicc$DNA[[j]][c(Index[ii]:(Index[ii]+ncol(iicc$Transcriptionfactor)))]))
	  Sequence[ii]<-paste(sequencia, sep="", collapse="")
	  }
      resultat <- cbind(results, Sequence)
      Results<-rbind(Results,resultat)
      }
Results

}

Try the MEET package in your browser

Any scripts or data that you put into this service are public.

MEET documentation built on May 2, 2019, 5:52 p.m.