File: getAttractorSequence.R

package info (click to toggle)
r-cran-boolnet 2.1.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,016 kB
  • sloc: ansic: 12,452; sh: 16; makefile: 2
file content (33 lines) | stat: -rw-r--r-- 1,434 bytes parent folder | download | duplicates (6)
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
26
27
28
29
30
31
32
33

getAttractorSequence <- function(attractorInfo, attractorNo)
{
  stopifnot(inherits(attractorInfo,"AttractorInfo") || inherits(attractorInfo,"SymbolicSimulation"))
  
  if (inherits(attractorInfo,"SymbolicSimulation"))
  {
     if (is.null(attractorInfo$attractors))
      stop(paste("This SymbolicSimulation structure does not contain attractor information.",
           "Please re-run simulateSymbolicModel() with returnAttractors=TRUE!"))
     if (missing(attractorNo) || attractorNo <= 0 || attractorNo > length(attractorInfo$attractors))
      stop("Please provide a valid attractor number!")
      
     return(attractorInfo$attractors[[attractorNo]])                
  }
  else
  {
    if (missing(attractorNo) || attractorNo <= 0 || attractorNo > length(attractorInfo$attractors))
      stop("Please provide a valid attractor number!")
      
    if (!is.null(attractorInfo$attractors[[attractorNo]]$initialStates))
      stop("A sequence can be obtained for synchronous attractors only!")
    
    numGenes <- length(attractorInfo$stateInfo$genes)
    
    # decode binary representation of states involved in the attractors
    binMatrix <- t(matrix(apply(attractorInfo$attractors[[attractorNo]]$involvedStates,2,function(state)
                          dec2bin(state,numGenes)),nrow=numGenes))
                          
    colnames(binMatrix) <- attractorInfo$stateInfo$genes
    return(as.data.frame(binMatrix))
  }
}