################################################################################################
#' Pairwise scatter plots and correlations of TSS signal
#'
#' @description Calculates the pairwise correlation coefficients between samples and
#' creates a matix showing pairwise scatter plots and correlation coefficients.
#'
#' @usage plotCorrelation(object, samples = "all")
#' @param object A TSSr object.
#' @param samples Specify samples to be plotted. Can be either "all" to plot all samples in the object
#' or a subset of samples in the object. Default is "all".
#' @return pairwise correlations visualized in a graph
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #plotCorrelation(exampleTSSr, samples = "all")
#'
setGeneric("plotCorrelation",function(object, samples = "all")standardGeneric("plotCorrelation"))
#' @rdname plotCorrelation
#' @export
setMethod("plotCorrelation",signature(object = "TSSr"), function(object, samples){
message("Plotting TSS correlations...")
tss.raw <- object@TSSrawMatrix
if(samples == "all"){
tss <- tss.raw
}else{
cols <- c("chr","pos","strand", samples)
tss <- tss.raw[,.SD, .SDcols = cols]
}
pdf(file = paste("TSS_correlation_plot_of_", paste(samples, collapse = "_"), "_samples.pdf", sep = "")
,width = 8, height = 8, onefile = TRUE, bg = "transparent", family = "Helvetica", fonts = NULL)
.plotCorrelation(tss)
dev.off()
})
################################################################################################
#' Plotting principle component analysis (PCA)
#'
#' @description Calculates principle component analysis (PCA) of all samples and creates a biplot
#' which includes the position of each sample in terms of PC1 and PC2.
#'
#' @usage plotTssPCA(object, TSS.threshold =10)
#'
#' @param object A TSSr object.
#' @param TSS.threshold Only TSSs with raw signal >= TSS.threshold will be included in PCA analysis
#' @return PCA plotted in a graph
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #plotTssPCA(exampleTSSr)
setGeneric("plotTssPCA",function(object, TSS.threshold =10)standardGeneric("plotTssPCA"))
#' @rdname plotTssPCA
#' @export
setMethod("plotTssPCA",signature(object = "TSSr"), function(object, TSS.threshold){
message("Plotting TSS PCA...")
tss <- object@TSSrawMatrix
tss <- tss[,4:ncol(tss)]
tss <- tss[apply(tss >= TSS.threshold, 1, any),]
y <- t(tss)
sampleLabels <- object@sampleLabels
sampleLabelsMerged <- object@sampleLabelsMerged
mergeIndex <- object@mergeIndex
s <- sampleLabelsMerged[mergeIndex]
pdf(file = "PCA_plot.pdf"
,width = 8, height = 8, onefile = TRUE, bg = "transparent", family = "Helvetica", fonts = NULL)
print(autoplot(prcomp(y), data = data.frame(sample = s)
,colour = "sample", size = 3) + theme_minimal()+theme(text = element_text(size=12)))
dev.off()
})
################################################################################################
#' Plot core promoter interquantile width
#'
#' @description Plots histograms of the interquantile width of processed clusters.
#' @usage plotInterQuantile(object, samples ="all", tagsThreshold = 1)
#'
#' @param object A TSSr object.
#' @param samples Specify samples to be plotted. Default is "all".
#' @param tagsThreshold Excludes clusters with tags < tagsThreshold.
#' @return core promoter interquantile width visualized in a graph
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #plotInterQuantile(exampleTSSr, samples = "all")
setGeneric("plotInterQuantile",function(object, samples = "all", tagsThreshold = 1)standardGeneric("plotInterQuantile"))
#' @rdname plotInterQuantile
#' @export
setMethod("plotInterQuantile",signature(object = "TSSr"), function(object, samples, tagsThreshold){
message("Plotting interquantile graphs...")
TCs <- object@clusterShape
sampleLabels <- object@sampleLabelsMerged
##define variable as a NULL value
interquantile_width = NULL
if(samples == "all"){
tc <- TCs
pdf(file = paste("Interquantile_plot_of_ALL_samples.pdf", sep = "")
,width = 8, height = 8, onefile = TRUE, bg = "transparent", family = "Helvetica", fonts = NULL)
for(i in seq_len(length(sampleLabels))){
temp <- tc[[sampleLabels[i]]]
temp <- temp[temp$tags >= tagsThreshold & temp$interquantile_width <= 200,]
hist(temp$interquantile_width, breaks = 40, col = rainbow(length(sampleLabels))[i]
, xlab = "TC interquantile width q0.1-q0.9", ylab = "Frequency", main = sampleLabels[i])
}
}else{
tc <- TCs[[samples]]
pdf(file = paste("Interquantile_plot_of_", paste(samples, collapse = "_"), "_samples.pdf", sep = "")
,width = 8, height = 8, onefile = TRUE, bg = "transparent", family = "Helvetica", fonts = NULL)
for(i in seq_len(length(samples))){
temp <- tc[[samples[i]]]
temp <- temp[temp$tags >= tagsThreshold & temp$interquantile_width <= 200,]
hist(temp$interquantile_width, breaks = 40, col = rainbow(length(samples))[i]
, xlab = "TC interquantile width q0.1-q0.9", ylab = "Frequency", main = samples[i])
}
}
dev.off()
})
################################################################################################
#' Plot core promoter shape
#'
#' @description Plots histograms of core promoter shape scores.
#'
#' @usage plotShape(object, samples = "all")
#'
#' @param object A TSSr object.
#' @param samples Specify samples to be plotted. Default is "all".
#' @return core promoter shape score visualized in a graph
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #plotShape(exampleTSSr)
setGeneric("plotShape",function(object, samples = "all")standardGeneric("plotShape"))
#' @rdname plotShape
#' @export
setMethod("plotShape",signature(object = "TSSr"), function(object ,samples){
message("Plotting Shape graphs...")
TCs <- object@clusterShape
sampleLabels <- object@sampleLabelsMerged
if(samples == "all"){
tc <- TCs
pdf(file = paste("Shape_plot_of_ALL_samples.pdf", sep = "")
,width = 8, height = 8, onefile = TRUE, bg = "transparent", family = "Helvetica", fonts = NULL)
for(i in seq_len(length(sampleLabels))){
temp <- tc[[sampleLabels[i]]]
hist(temp$shape.score, breaks = 40, col = rainbow(length(sampleLabels))[i]
, xlab = "shape score", ylab = "Frequency", main = sampleLabels[i])
}
}else{
tc <- TCs[[samples]]
pdf(file = paste("Shape_plot_of_", paste(samples, collapse = "_"), "_samples.pdf", sep = "")
,width = 8, height = 8, onefile = TRUE, bg = "transparent", family = "Helvetica", fonts = NULL)
for(i in seq_len(length(samples))){
temp <- tc[[samples[i]]]
hist(temp$shape.score, breaks = 40, col = rainbow(length(samples))[i]
, xlab = "shape score", ylab = "Frequency", main = samples[i])
}
}
dev.off()
})
################################################################################################
#' Plot gene differential expressions
#'
#' @description Vocano plots of gene differential expression (with DESeq2 method) results.
#'
#' @usage plotDE(object, withGeneName = "TRUE",xlim, ylim)
#'
#' @param object A TSSr object.
#' @param withGeneName Specify whether to display names for genes which are differentially expressed. Default is "TRUE".
#' @param xlim Only enes of which log2FoldChange value within the xlim range are plotted. Default xlim = c(-2.5, 2.5).
#' @param ylim Only genes of which -log10(pvalue) within the ylim range are plotted. Default ylim = c(0, 10).
#' @return gene differential expression visualized in a graph
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #plotDE(exampleTSSr, withGeneName = "TRUE")
#' #plotDE(exampleTSSr, withGeneName = "FALSE")
setGeneric("plotDE",function(object
,withGeneName = "TRUE"
,xlim=c(-2.5, 2.5)
,ylim=c(0,10))standardGeneric("plotDE"))
#' @rdname plotDE
#' @export
setMethod("plotDE",signature(object = "TSSr"), function(object, withGeneName, xlim, ylim){
message("Plotting DE graphs...")
pdf(file = paste("Volcano_plot.pdf", sep = ""),width = 8, height = 8,bg = "transparent"
, family = "Helvetica", fonts = NULL)
D.names <- names(object@DEtables)
##define variable as a NULL value
padj = log2FoldChange = NULL
for(i in seq_len(length(D.names))){
res <- object@DEtables[[D.names[i]]]$DEtable
plot(res$log2FoldChange,-log10(res$pvalue), pch = 20, xlim = xlim, ylim = ylim
,main = D.names[i], xlab = "log2FoldChange", ylab = "-log10(pvalue)")
# Add colored points: red if padj<0.05, orange of log2FC>1, green if both)
with(subset(res, padj<.05 ), points(log2FoldChange, -log10(pvalue), pch=20, col="red"))
with(subset(res, abs(log2FoldChange)>1), points(log2FoldChange, -log10(pvalue), pch=20, col="orange"))
with(subset(res, padj<.05 & abs(log2FoldChange)>1), points(log2FoldChange, -log10(pvalue), pch=20, col="green"))
if(withGeneName == "TRUE"){
with(subset(res, padj<.05 & abs(log2FoldChange)>1), textxy(log2FoldChange, -log10(pvalue), labs=gene, cex=.8))
}
}
##
dev.off()
})
################################################################################################
#' Plot TSSs and clusters
#'
#' @description Plots Gviz-track of TSSs, clusters, and genes.
#' @usage plotTSS(object,samples,tssData = "processed",clusters = "assigned",
#' clusterThreshold = 0.02,genelist,Bidirection = TRUE,
#' up.dis =500,down.dis = 500,yFixed = TRUE)
#'
#' @param object A TSSr object.
#' @param samples Specify samples to be included for plotting.
#' @param tssData Specify which TSS data to be included for plotting: "raw" or "processed".
#' @param clusters Specify which cluster data to be included for plotting: "all" or "assigned".
#' @param clusterThreshold Ignore downstream clusters if signal < filterClusterThreshold*the strongest
#' clusters within the same gene promoter region. Default value = 0.02.
#' @param genelist List of gene names used for plotting.
#' @param Bidirection Specify whether to display bidirectional TSS signals within defined region. Default is TRUE.
#' @param up.dis Distance upstream of genes to specify plotting range. Default value = 500.
#' @param down.dis Distance downstream of genes to specify plotting range. Default value = 500.
#' @param yFixed Logical, specify whether to fix y axis limits. Default is TRUE.
#' @return TSS and cluster examples visualized in a graph
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #plotTSS(exampleTSSr, samples=c("control","treat"), genelist=c("YBL017C","YBL067C")
#' #,up.dis =500, down.dis = 500)
setGeneric("plotTSS",function(object,samples
,tssData = "processed"
,clusters = "assigned"
,clusterThreshold = 0.02
,genelist
,Bidirection= TRUE
,up.dis =500
,down.dis = 500
,yFixed = TRUE)standardGeneric("plotTSS"))
#' @rdname plotTSS
#' @export
setMethod("plotTSS",signature(object = "TSSr"), function(object, samples, tssData, clusters, clusterThreshold
, genelist, Bidirection, up.dis, down.dis,yFixed){
message("Plotting TSS graphs...")
##define variable as a NULL value
gene_id = NULL
##initialize data
if(clusters == "all"){
cs <- object@consensusClusters
}else if(clusters == "assigned"){
cs <- object@assignedClusters
}else{
stop("No cluster data for the given clusters option! ")
}
if(tssData == "processed"){
tss <- object@TSSprocessedMatrix
}else if(tssData == "raw"){
tss <- object@TSSrawMatrix
}
refGFF <- object@refSource
organismName <- object@organismName
sampleLabelsMerged <- object@sampleLabelsMerged
##prepare tss table
if(FALSE %in% unique(samples %in% sampleLabelsMerged)){
stop("No data for one or more given samples! ")
}else{
cols <- c("chr","pos","strand", samples)
tss <- tss[,.SD, .SDcols = cols]
cs <- cs[samples]
}
tss.p <- tss[tss$strand == "+",]
tss.m <- tss[tss$strand == "-",]
tss.m[,(samples) := lapply(.SD, "*",-1), .SDcols = samples]
tss <- rbind(tss.p,tss.m)
##prepare annotation file
ref <- object@refTable
ref <- ref[gene_id %in% genelist,]
pdf(file = paste("TSS_graphs.pdf", sep = "")
,width = 10, height = 8, onefile = TRUE, bg = "transparent", family = "Helvetica", fonts = NULL)
for (i in seq_len(nrow(ref))){
df <- ref[i,]
.plotTSS(tss, cs,df, samples, Bidirection, up.dis, down.dis,yFixed)
}
dev.off()
})
################################################################################################
#' Export TSS tables
#'
#' @description Exports TSS tables to text file.
#' @usage exportTSStable(object, data = "raw", merged = "TRUE")
#'
#' @param object A TSSr object.
#' @param data Specify which data will be exported: "raw" or "processed". Default is "raw".
#' @param merged Specify whether to export merged TSS table. Used only if data = "raw".
#' @return TSS tables
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportTSStable(exampleTSSr)
#' #exportTSStable(exampleTSSr, data="raw")
setGeneric("exportTSStable",function(object, data = "raw", merged = "TRUE")standardGeneric("exportTSStable"))
#' @rdname exportTSStable
#' @export
setMethod("exportTSStable",signature(object = "TSSr"), function(object, data, merged){
message("Exporting TSS table...")
if(data == "raw"){
if(merged == "TRUE"){
tss <- object@TSSprocessedMatrix
write.table(tss, file = paste("ALL.samples.TSS",data,"txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}else{
tss <- object@TSSrawMatrix
write.table(tss, file = paste("ALL.samples.TSS",data,"txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else if(data == "processed"){
tss <- object@TSSprocessedMatrix
write.table(tss, file = paste("ALL.samples.TSS",data,"txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}else{
stop("No data for the given TSS data type!")
}
})
################################################################################################
#' Export cluster tables
#'
#' @description Export cluster tables to text files.
#' @usage exportClustersTable(object, data = "assigned")
#'
#' @param object A TSSr object.
#' @param data Specify which cluster data will be exported: "tagClusters", "consensusClusters",
#' "assigned", "unassigned". Default is "assigned".
#' @return cluster tables
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportClustersTable(exampleTSSr, data = "tagClusters")
#' #exportClustersTable(exampleTSSr, data = "consensusClusters")
#' #exportClustersTable(exampleTSSr, data = "assigned")
#' #exportClustersTable(exampleTSSr, data = "unassigned")
setGeneric("exportClustersTable",function(object, data = "assigned")standardGeneric("exportClustersTable"))
#' @rdname exportClustersTable
#' @export
setMethod("exportClustersTable",signature(object = "TSSr"), function(object, data){
if(data == "tagClusters"){
message("Exporting tagClusters table...")
tc <- object@tagClusters
samples <- object@sampleLabelsMerged
for(i in seq_len(length(samples))){
temp <- tc[[samples[i]]]
write.table(temp, file = paste(samples[i],"tagClusters","txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else if(data == "consensusClusters"){
message("Exporting consensusClusters table...")
tc <- object@consensusClusters
samples <- object@sampleLabelsMerged
for(i in seq_len(length(samples))){
temp <- tc[[samples[i]]]
write.table(temp, file = paste(samples[i],"consensusClusters","txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else if(data == "assigned"){
message("Exporting assignedClusters table...")
tc <- object@assignedClusters
samples <- object@sampleLabelsMerged
for(i in seq_len(length(samples))){
temp <- tc[[samples[i]]]
write.table(temp, file = paste(samples[i],"assignedClusters","txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else if(data == "unassigned"){
message("Exporting unassignedClusters table...")
tc <- object@unassignedClusters
samples <- object@sampleLabelsMerged
for(i in seq_len(length(samples))){
temp <- tc[[samples[i]]]
write.table(temp, file = paste(samples[i],"unassignedClusters","txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else{
stop("No data for the given tag cluster data type!")
}
})
################################################################################################
#' Export core promoter shape score tables
#'
#' @description Exports core promoter shape score tables to text files. Shape score is calculated with
#' shapeCluster(object) method.
#' @usage exportShapeTable(object)
#' @return core promoter shape score tables
#'
#' @param object A TSSr object.
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportShapeTable(exampleTSSr)
setGeneric("exportShapeTable",function(object)standardGeneric("exportShapeTable"))
#' @rdname exportShapeTable
#' @export
setMethod("exportShapeTable",signature(object = "TSSr"), function(object
){
message("Exporting promoter shape table...")
s <- object@clusterShape
if(!is.null(s)){
samples <- object@sampleLabelsMerged
for(i in seq_len(length(samples))){
temp <- s[[samples[i]]]
write.table(temp, file = paste(samples[i],"promoter.shape","txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else{
stop("No data for the promoter shape!")
}
})
################################################################################
#' Export enhancer tables
#'
#' @description Exports enhancer tables to text files.
#' @usage exportEnhancerTable(object)
#' @return enhancer candidate tables
#'
#' @param object A TSSr object.
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportEnhancerTable(exampleTSSr)
setGeneric("exportEnhancerTable",function(object)standardGeneric("exportEnhancerTable"))
#' @rdname exportEnhancerTable
#' @export
setMethod("exportEnhancerTable",signature(object = "TSSr"), function(object
){
message("Exporting enhancer table...")
s <- object@enhancers
if(!is.null(s)){
samples <- object@sampleLabelsMerged
for(i in seq_len(length(samples))){
temp <- s[[samples[i]]]
write.table(temp, file = paste(samples[i],"enhancers","txt", sep = "."),
sep = "\t", quote = FALSE, row.names = FALSE)
}
}else{
stop("No data for the enhancer candidates!")
}
})
################################################################################################
#' Export gene differential expression results table
#'
#' @description Exports gene differential expression results table to text files.
#' @usage exportDETable(object, data = "sig")
#'
#' @param object A TSSr object.
#' @param data Specify which data will be exported: "all" or "sig".
#' @return gene differential expression tables
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportDETable(exampleTSSr, data="sig")
setGeneric("exportDETable",function(object, data = "sig")standardGeneric("exportDETable"))
#' @rdname exportDETable
#' @export
setMethod("exportDETable",signature(object = "TSSr"), function(object, data){
message("Exporting differential expression table...")
D.names <- names(object@DEtables)
if(data == "all"){
for(i in seq_len(length(D.names))){
temp <- object@DEtables[[D.names[i]]]$DEtable
write.table(temp, file = paste(D.names[i],"DE.table.aLL.txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else if(data == "sig"){
for(i in seq_len(length(D.names))){
temp <- object@DEtables[[D.names[i]]]$DEsig
write.table(temp, file = paste(D.names[i],"DE.table.sig.txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
}else{
stop("No data for the differential expression!")
}
})
################################################################################################
#' Export core promoter shift table
#'
#' @description Export core promoter shift tables to text files.
#' @usage exportShiftTable(object)
#'
#' @param object A TSSr object.
#' @return core promoter shift tables
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportShiftTable(exampleTSSr)
setGeneric("exportShiftTable",function(object)standardGeneric("exportShiftTable"))
#' @rdname exportShiftTable
#' @export
setMethod("exportShiftTable",signature(object = "TSSr"), function(object
){
message("Exporting promoter shift table...")
D.names <- names(object@PromoterShift)
for(i in seq_len(length(D.names))){
temp <- object@PromoterShift[[D.names[i]]]
write.table(temp, file = paste(D.names[i],"promoter.shift.table.txt", sep = "."), sep = "\t", quote = FALSE, row.names = FALSE)
}
})
################################################################################################
#' Creating Bedgraph/BigWig tracks of TSSs
#' @description Creates bedGraph/BigWig files of TSSs that can be visualized in the UCSC Genome Browser
#' and Integrative Genomics Viewer (IGV).
#'
#' @usage exportTSStoBedgraph(object, data = "processed", format = "bedGraph",oneFile = FALSE)
#'
#' @param object A TSSr object.
#' @param data Specify which data will be exported: "raw" or "processed". Default is "processed".
#' @param format The format of output files: "bedGraph" or "BigWig". Default is "bedGraph".
#' @param oneFile Logical, specify whether to export individual TSS tracks into the one bedGraph
#' file (TRUE) of in separate bedGraph files (FALSE).
#' @return Bedgraph/BigWig tracks of TSSs
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportTSStoBedgraph(exampleTSSr, data = "processed", format = "bedGraph")
setGeneric("exportTSStoBedgraph",function(object,data = "processed"
,format = "bedGraph"
,oneFile = FALSE)standardGeneric("exportTSStoBedgraph"))
#' @rdname exportTSStoBedgraph
#' @export
setMethod("exportTSStoBedgraph",signature(object = "TSSr"), function(object, data, format, oneFile){
Genome <- .getGenome(object@genomeName)
sampleLabelsMerged <- object@sampleLabelsMerged
##define variable as a NULL value
score = strand = samples = NULL
if(data == "processed"){
tss.dt <- object@TSSprocessedMatrix
samples <- object@sampleLabelsMerged
}else{
tss.dt <- object@TSSrawMatrix
samples <- object@sampleLabels
}
for (i in seq_len(length(samples))){
temp <- tss.dt[,.SD, .SDcols = c("chr","pos","strand",samples[i])]
setnames(temp, colnames(temp)[[4]], "score")
temp <- temp[score >0,]
if(oneFile == TRUE){
message("Exporting TSS to bedgraph...")
temp[, score := ifelse(strand == "+", score, score*(-1))]
temp <- makeGRangesFromDataFrame(temp, start.field = "pos", end.field = "pos", keep.extra.columns = TRUE)
export(temp,paste(samples[i], "TSS", data, "bedGraph", sep = "."), format = "bedGraph")
}else{
temp.p <- temp[strand == "+",]
temp.m <- temp[strand == "-",]
temp.m[, score := score*(-1)]
temp.p <- makeGRangesFromDataFrame(temp.p, start.field = "pos", end.field = "pos", keep.extra.columns = TRUE)
temp.m <- makeGRangesFromDataFrame(temp.m, start.field = "pos", end.field = "pos", keep.extra.columns = TRUE)
if(format == "bedGraph"){
message("Exporting TSS to bedgraph...")
export(temp.p,paste(samples[i], "TSS", data, "plus.bedGraph", sep = "."), format = "bedGraph")
export(temp.m,paste(samples[i], "TSS", data, "minus.bedGraph", sep = "."), format = "bedGraph")
}else if(format == "BigWig"){
message("Exporting TSS to BigWig...")
seqlengths(temp.p) <- seqlengths(Genome)[seqnames(Genome) %in% as.character(temp.p@seqnames)]
seqlengths(temp.m) <- seqlengths(Genome)[seqnames(Genome) %in% as.character(temp.m@seqnames)]
export(temp.p,paste(samples[i], "TSS", data, "plus.BigWig", sep = "."), format = "BigWig")
export(temp.m,paste(samples[i], "TSS", data, "minus.BigWig", sep = "."), format = "BigWig")
}
}
}
})
################################################################################################
#' Creating bed files of clusters
#'
#' @description Creates bed files of clusters.
#' @usage exportClustersToBed(object, data = "consensusClusters", assigned = TRUE)
#'
#' @param object A TSSr object.
#' @param data Specify which data will be exported: "tagClusters" or "consensusClusters". Default is "consensusClusters".
#' @param assigned Specify which consensus clusters will be exported. Used only if data = "consensusClusters. Default is TRUE.
#' @return bed files of clusters
#'
#'
#' @export
#'
#' @examples
#' data(exampleTSSr)
#' #exportTSStoBedgraph(exampleTSSr, data = "tagClusters")
#' #exportTSStoBedgraph(exampleTSSr, data = "consensusClusters")
setGeneric("exportClustersToBed",function(object,data = "consensusClusters", assigned = TRUE)
standardGeneric("exportClustersToBed"))
#' @rdname exportClustersToBed
#' @export
setMethod("exportClustersToBed",signature(object = "TSSr"), function(object, data, assigned){
message("Exporting clusters to bed...")
sampleLabelsMerged <- object@sampleLabelsMerged
if(data == "tagClusters"){
cs <- object@tagClusters
}else if(data == "consensusClusters"){
if(assigned == TRUE){
cs <- object@assignedClusters
}else{
cs <- object@consensusClusters
}
}
for (i in seq_len(length(sampleLabelsMerged))){
temp <- cs[[sampleLabelsMerged[i]]]
temp <- .getBed(temp)
df <- file(paste(sampleLabelsMerged[i],data,"bed", sep = "."), open = "wt")
writeLines(paste('track name="',sampleLabelsMerged[i]
,"(",data
,'(TC) q0.1-q0.9)" description="'
,sampleLabelsMerged[i],"(",data
,'(TC) q0.1-q0.9)" '
,'visibility="pack" color=0,255,255', sep = ""), df)
write.table(temp, df, sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE)
close(df)
}
})
################################################################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.