#' Writes the FPWM in transfact format
#'
#' This function saves the FPWM in transfact format.
#' @param FPWM FPWM object.
#' @param format the "transfac" option will output a standard transfact matrix per binding partner. The "FPWMtransfac" prints a single matrix with all the binding partners in FPWM format.
#' @param fileName name of the file where the FPWM is going to be written.
#' @return A PDF file with the cofactorReport.
#' @keywords cofactorReport
#' @export
#' @examples
#' write.FPWM(FPWM = fpwm, format = "transfac", fileName = "FPWM.transfact" )
#' write.FPWM(FPWM = fpwm, format = "FPWMtransfac", fileName = "FPWM.FPWMtransfac" )
write.FPWM <- function( FPWM = NULL,
format = "transfac",
fileName = NULL
)
{
if( is.null(FPWM) ){
stop("Please provide an FPWM object: write.TRANSFAC( FPWM = yourFPWM, ...) ") ; }
if( format!="transfac" & format!="FPWMtransfac" ){
stop("formats supported : transfac or FPWMtransfac ") ; }
# Get format from forked
diff_rowSums <- length(unique(rowSums(FPWM@forked[,2:5])))
first_rowsum <- rowSums(FPWM@forked[,2:5])[1]
matrix_format <- "CC Matrix"
if(diff_rowSums != 1 ){ matrix_format <- "CC Count matrix" }else{
if(first_rowsum > 1){ matrix_format <- "CC Scale Count matrix" }
if(first_rowsum == 1){ matrix_format <- "CC Probability matrix" }
}
if( format == "FPWMtransfac"){
ynames <- paste(unlist(FPWM@id),collapse="_&_")
if( is.null(fileName) ){
fileName <- paste0(FPWM@xid,"_+_",ynames,".FPWMtransfac")
}
fileConn <- file(fileName)
transfac_vector <- c()
transfac_vector <- c( transfac_vector, paste0("AC ",FPWM@xid,"_+_",ynames) )
transfac_vector <- c( transfac_vector, "XX" )
transfac_vector <- c( transfac_vector, paste0("parentLogo : ",FPWM@xid) )
transfac_vector <- c( transfac_vector, paste0("leafLogos : ", paste(unlist(FPWM@id),collapse=",")) )
transfac_vector <- c( transfac_vector, paste0("overlappingScore : ", paste(unlist(FPWM@score),collapse=",") ) )
transfac_vector <- c( transfac_vector, paste0("numberOfBasePairs : ", paste(unlist(FPWM@nSites),collapse=",") ) )
transfac_vector <- c( transfac_vector, paste0("numberOfOverlappingPeaks : ", paste(unlist(FPWM@nPeaks),collapse=",") ) )
transfac_vector <- c( transfac_vector, paste0("forkPosition : ",FPWM@forkPosition) )
transfac_vector <- c( transfac_vector, "XX", paste("PO","A","C","G","T",sep="\t") )
for ( jx in 1:dim(FPWM@forked)[1] ){
transfac_vector <- c( transfac_vector, paste(FPWM@forked[jx,],collapse="\t") )
}
transfac_vector <- c( transfac_vector, "XX", "CC FPWMtransfac format from FPWM",matrix_format, "XX" , "//" )
writeLines(transfac_vector, fileConn)
close(fileConn)
message(paste("FPWM saved as FPWMtransfac file:",fileName))
}
if( format == "transfac"){
if( is.null(fileName) ){
ynames <- paste(unlist(FPWM@id),collapse="_&_")
fileName <- paste0(FPWM@xid,"_+_",ynames,".transfac")
}
fileConn <- file(fileName)
FPWMPO <- FPWM@forked$PO
from <- min(FPWMPO[duplicated(FPWMPO)])
to <- max(FPWMPO)
ix_table <- cbind(which(FPWMPO %in% from) , which(FPWMPO %in% to))
transfac_vector <- c()
for( ix in 1:length(FPWM@id) ){
transfac_vector <- c( transfac_vector, paste0("AC ",FPWM@xid," + ",FPWM@id[ix]), "XX" )
transfac_vector <- c( transfac_vector, paste0("ID ",FPWM@xid," + ",FPWM@id[ix]), "XX" )
transfac_vector <- c( transfac_vector, paste0("DE ",FPWM@xid," + ",FPWM@id[ix], " ; from MethMotif") )
transfac_vector <- c( transfac_vector, paste("PO","A","C","G","T",sep="\t") )
for ( jx in 1:as.numeric(FPWM@forkPosition) ){
transfac_vector <- c( transfac_vector, paste(FPWM@forked[jx,],collapse="\t") )
}
ppForked <- FPWM@forked[ ix_table[ix,1]:ix_table[ix,2] , ]
for ( jx in 1:dim(ppForked)[1] ){
transfac_vector <- c( transfac_vector, paste(ppForked[jx,],collapse="\t") )
}
transfac_vector <- c( transfac_vector, c("XX","CC program: FPWM") )
transfac_vector <- c( transfac_vector, paste0("CC numberOfBasePairs: ",FPWM@nSites[ix]) )
transfac_vector <- c( transfac_vector, paste0("CC numberOfOverlappingPeaks: ",FPWM@nPeaks[ix]) )
transfac_vector <- c( transfac_vector, matrix_format )
transfac_vector <- c( transfac_vector, c("XX","//") )
}
writeLines(transfac_vector, fileConn)
close(fileConn)
message(paste("FPWM saved as transfac file:",fileName))
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.