R/writeTpmap.R
48e84317
 writeTpmap <- function(filename, bpmaplist, verbose = 0){
     writeSequence <- function(seq){
         if(length(setdiff(c("seqInfo", "pmx", "pmy", "probeseq", "startpos", "strand"),
                           names(seq))) != 0 ||
            length(setdiff(c("groupname", "version", "name"),
                           names(seq$seqInfo))) != 0) {
             cat(" ... skipping a sequence due to missing slots\n")
             return(NULL)
         }
         seqInfo <- seq$seqInfo
c58e55f7
         if(length(setdiff(c("groupname", "version", "name"), names(seqInfo))) != 0) {
             stop("Need a seqInfo component with 'groupname', 'version', 'name' sub-components")
         }
48e84317
         writeLines(paste("#seq_group_name", seqInfo$groupname), con = out, sep = "\n")
         writeLines(paste("#version", seqInfo$version), con = out, sep = "\n")
         if(!is.null(seqInfo$parameters)) {
             for(tag in names(seqInfo$parameters))
                 writeLines(paste("#", tag, " ", seqInfo$parameters[tag], sep = ""),
                            con = out, sep = "\n")
         }
         hits <- t(do.call(cbind, c(seq[c("probeseq", "strand")],
                                    list(groupname = rep(seqInfo$name, length(seq$pmx))),
                                    seq[c("startpos", "pmx", "pmy", "mmx", "mmy", "matchscore")])))
         write(hits, file = out, ncolumns = nrow(hits), append = TRUE)
         return(NULL)
fae82e20
     } # writeSequence()
 
     if (file.exists(filename)) {
       stop("Could not write TPMAP file. File already exists: ", filename)
48e84317
     }
fae82e20
 
     out <- file(filename, open = "w")
     on.exit(close(out))
 
17cb3b6e
     for(i in seq_along(bpmaplist)) {
48e84317
         if(verbose)
             cat(paste("Writing sequence", names(bpmaplist)[i], "\n"))
         writeSequence(bpmaplist[[i]])
     }
fae82e20
 
48e84317
     invisible(NULL)
 }