Nothing
SOFIA<-function(data,chromoConfiguration=NULL,dataColorFlag=FALSE,dataColor=NULL,plotType=NULL,plotColor=NULL,markerSize=NULL,plotLocation=NULL,plotBackground=NULL,plotImportance=NULL,plotOrientation=NULL,density=NULL,linksFlag=FALSE,linkColor='red',linkGeometry=c(.2,.2),linkRadius=c(.7,.7),blocksFlag=FALSE,blocksData=NULL,tilesFlag=FALSE,tilesData=NULL,tilesLocation=NULL,blocksColor=rbind(c('blue','red'),c('green','purple')),blocksLocation=c(.5,.01),gaps=NULL,ideogramThickness=20,generalPlotConfFlag=FALSE,generalPlotConf=NULL,chrPrefixFont='upper',chrPrefix='LG',tickSeparation=50,tickSuffix='cM',circosLocation=NULL,returnConf=FALSE,circosDisplay=FALSE,figureDisplay=TRUE,deleteData=TRUE,runCircos=TRUE,confName='circos.conf'){
namename<-confName
if (is.null(circosLocation)){
cat('\ncircosLocation was not defined, please provide the directory where /bin/circos is contained. This argument is requiered.\n')
}else{
kr<-list.files()
kr2<-match(c('circos.png','circos.svg'),kr)
for (kt in 1:2){
if (is.na(kr2[kt])==FALSE){
cmd <- paste0('rm ', getwd(),'/',kr[kr2[kt]])
system(cmd)
}
}
if(runCircos){
cat(paste0('\nIf no errors are produced, you can find circos.png and circos.svg (ediatable version) in ',getwd(),'\n'))
}else{
cat('\nSince runCircos=FALSE, Circos was not invoked. Your configuration and data files can be find in /circos/bin/ and circos/data/. If you want SOFIA to run Circos, set this parameter TRUE (or just remove it)')
}
nPheno<-ncol(data)-4
if (nPheno==0 & linksFlag==FALSE){
cat('\nYou did not provide data to plot. If you only want to plot links between two or more maps, please set linksFlag=TRUE and populate the corresponing parameters\n')
}
randomColors<-c('red','blue','green','purple','orange','yellow','dred','dblue','dgreen','dpurple','dorange','dyellow','lred','lblue','lgreen','lpurple','lorange','lyellow','vdred','vdblue','vdgreen','vdpurple','vdorange','vdyellow','vlred','vlblue','vlgreen','vlpurple','vlorange','vlyellow')
if (is.null(plotType) & nPheno>0){
plotType<-numeric()
for (i in 1:nPheno){
if (is.numeric(data[,4+i])){
plotType<-c(plotType,'scatter')
}else{
plotType<-c(plotType,'text')
}
}
}
if (is.null(plotColor) & nPheno>0){
plotColor<-numeric()
for (i in 1:nPheno){
plotColor<-c(plotColor,randomColors[sample(1:15,1)])
}
}
if (is.null(plotLocation) & nPheno>0){
stPosition<-.99
sizeF<-(.8/nPheno)
plotLocation<-data.frame(r0=rep(NA,nPheno),r1=rep(NA,nPheno))
for (i in 1:nPheno){
plotLocation$r0[i]<-stPosition-sizeF
plotLocation$r1[i]<-stPosition
stPosition<-stPosition-sizeF
}
}
if (blocksFlag & is.null(blocksData)==TRUE){
stop('\n You set blocksFlag=TRUE but no data was provided in argument blocksData\n')
}
if (tilesFlag & is.null(tilesData)==TRUE){
stop('\n You set tileFlag=TRUE but no data was provided in argument tilesData\n')
}
if (is.null(plotImportance)){
plotImportance<-rep(1,nPheno)
}
if (is.null(plotBackground)){
plotBackground<-data.frame(backgroundShow=rep(FALSE,nPheno),axisShow=rep(FALSE,nPheno))
}
if (is.null(plotOrientation)){
plotOrientation<-rep('out',nPheno)
}
if (is.null(markerSize)){
markerSize<-rep(10,nPheno)
}
# universal variables
options(scipen=999)
multiplicador<-1000
chrMapper<-as.character(paste0(data$map,'x',data$chr))
numberMaps<-length(unique(data$map))
numberChromosomes<-length(unique(chrMapper))
numberChromosomesMap<-numeric()
for (i in 1:numberMaps){
f<-which(data$map==i)
numberChromosomesMap<-c(numberChromosomesMap,length(unique(data$chr[f])))
}
# making a chromoMap
superMap<-unique(chrMapper)
superMap<-rbind(superMap,1:numberChromosomes)
chrMapperReal<-chrMapper
for (i in 1:numberChromosomes){
f<-which(chrMapper==superMap[1,i])
chrMapperReal[f]<-rep(i,length(f))
}
if (tilesFlag){
chrMapper_t<-as.character(paste0(tilesData$map,'x',tilesData$chr))
chrMapperReal_t<-chrMapper_t
for (i in 1:numberChromosomes){
f<-which(chrMapper_t==superMap[1,i])
if (length(f)>0){
chrMapperReal_t[f]<-rep(i,length(f))
}
}
}
if (substring(circosLocation,nchar(circosLocation))!='/'){
circosLocation<-paste0(circosLocation,'/')
}
w1<-list.files(paste0(circosLocation,"bin/"),pattern='circos')
if (length(w1[w1=='circos'])){
cat(paste0('\ncircos was found in ',paste0(circosLocation,'bin/'),'\n\n','starting SOFIA...\n\n\n'))
}else{
cat(paste0('\nERROR: /bin/circos was not found in the provided directory (',paste0(circosLocation,"bin/"),')\nPlease try again...\n\n\nbye!!!\n\n\n'))
}
## making ticks for ideograms
tiks<-c('show_ticks=yes','show_tick_labels=yes','show_grid=no','<ticks>','radius=dims(ideogram,radius_outer)','label_offset=5p','label_size=8p','multiplier=1e-3','color=black','<tick>',paste0('spacing=',tickSeparation,'u'),'size=8','thickness=2p','show_label=yes','label_size=20',paste0('suffix=',tickSuffix),paste0('grid_start=.9r'),'grid_end=1r+45p','grid_color=vdgrey','grid_thickness=1p','grid=yes','</tick>','</ticks>')
write(tiks, file = paste0(circosLocation,'/bin/tiks.conf'))
# making ideograms
chromoSizes<-numeric()
for (i in 1:numberChromosomes){
f<-which(chrMapper==unique(chrMapper)[i])
chromoSizes<-c(chromoSizes,max(data$pos[f]))
}
# making defaults for chromoConfiguration
if (is.null(chromoConfiguration)){
chromoConfiguration<-data.frame()
}
if (is.null(chromoConfiguration$color)){
ideoColors<-numeric()
for (i in 1:numberMaps){
ideoColors<-c(ideoColors,rep(randomColors[i],numberChromosomesMap[i]))
}
}else{
ideoColors<-chromoConfiguration$color
}
if (is.null(chromoConfiguration$order)){
xOrder<-1:numberChromosomes
}else{
zz<-paste0(chromoConfiguration$map,'x',chromoConfiguration$order)
zz2<-match(zz,superMap[1,])
xOrder<-superMap[2,zz2]
}
if (is.null(chromoConfiguration$rev)){
xRev<-rep(FALSE,numberChromosomes)
}else{
xRev<-chromoConfiguration$rev
}
if (is.null(chromoConfiguration$radius)){
xRad<-rep(1,numberChromosomes)
}else{
xRad<-chromoConfiguration$radius
}
# making ideogram file
ideo1<-numeric()
for (i in 1:numberChromosomes){
ideo1<-c(ideo1,paste(paste('chr - c',i,sep=''),superMap[1,i],0,round(chromoSizes[i]*multiplicador)+20,ideoColors[i],sep=' '))
}
write(ideo1, file = paste0(circosLocation,"data/ideo1.txt"))
# starting confFile
confFile<-c('<<include etc/colors_fonts_patterns.conf>>','<<include bin/tiks.conf>>','karyotype = data/ideo1.txt',paste0('chromosomes_units=',multiplicador),'chromosomes_display_default=yes',
'<<include ideogramLalo.conf>>','<image>','radius* = 1500p','<<include etc/image.conf>>','</image>',paste0('chromosomes_radius=',paste0(paste0('c',1:numberChromosomes,':',xRad,'r'),collapse=",")),paste0('chromosomes_order=',paste0(paste0('c',xOrder),collapse=",")),if(length(which(xRev==TRUE))>0){paste0('chromosomes_reverse=',paste0('c',which(xRev==TRUE),collapse=","))},'<<include etc/housekeeping.conf>>')
# making ideogram conf file
spacesIdeo<-numeric()
if (is.null(gaps)==FALSE){
mybreaks<-cbind(paste0(gaps$mapA,'x',gaps$chrA),paste0(gaps$mapB,'x',gaps$chrB))
for (i in 1:nrow(gaps)){
myb<-c(which(mybreaks[i,1]==superMap[1,]),which(mybreaks[i,2]==superMap[1,]))
spacesIdeo<-c(spacesIdeo,paste0('<pairwise c',myb[1],' c',myb[2],'>'),paste0('spacing=',gaps$length[i],'u'),'</pairwise>')
}
}
ideoFile<-c('<ideogram>','show=yes','<spacing>','default=8u',if(length(spacesIdeo)==0){''}else{spacesIdeo},'</spacing>','label_color=black','radius=.88r',paste0('thickness=',ideogramThickness,'p'),'fill = yes','show_label=yes','label_radius=1.08r','label_size=20','label_parallel=yes',paste0('label_case=',chrPrefixFont),'show_bands=yes','fill_bands=yes','</ideogram>')
write(ideoFile, file = paste0(circosLocation,"bin/ideogramLalo.conf"))
if (linksFlag){
if (numberMaps==1){stop('\nYou can not make links with only one map\n')}
combos<-combn(1:numberMaps,2)
link1<-numeric()
cont<-1
for (g in 1:ncol(combos)){
matrixX<-numeric()
arco1<-which(data$map==combos[1,g])
arco2<-which(data$map==combos[2,g])
x1<-match(data$locus[arco1],data$locus[arco2])
for (i in 1:length(x1)){
if (is.na(x1[i])==F){
link1[cont]<-paste(paste0('c',chrMapperReal[arco1[i]]),round(multiplicador*data$pos[arco1[i]]),round(multiplicador*data$pos[arco1[i]]+20),paste0('c',chrMapperReal[arco2[x1[i]]]),round(multiplicador*data$pos[arco2[x1[i]]]),round(multiplicador*data$pos[arco2[x1[i]]]+20),if(linkColor=='chr'){paste0('color=',ideoColors[as.numeric(chrMapperReal[arco1[i]])])}else{paste0('color=',linkColor)})
cont<-cont+1
}
}
}
write(link1, file = paste0(circosLocation,"data/x_link1.txt"))
# adding this to configuration file
confFile<-c(confFile,'<links>',paste0('radius1=',linkRadius[1],'r'),paste0('radius2=',linkRadius[2],'r'),paste0('bezier_radius=',linkGeometry[1],'r'),paste0('crest=',linkGeometry[2]),'<link segdup>','show=yes','file=data/x_link1.txt','record_limit=30000','</link>','</links>')
}else{
cat('\nlinksFlag is FALSE. If you have at least two maps with at least one locus in common you can add links to your plot. Please set linksFlag=TRUE and populate the corresponding parameters\n')
}
dedotes<-FALSE
if (blocksFlag){
contx2<-1
badIdea<-rep(c(1,2),1000)
colorLD<-blocksColor
block1<-numeric()
blockData<-list()
for (j in 1:ncol(blocksData)){ #number of invidivduals as columns in data3. Rows must be the markers (=# markers in map)
contX<-1
ldBlock<-numeric()
for (i in 1:numberMaps){
vat1<-which(data$map==unique(data$map)[i])
for (k in 1:length(unique(data$chr[vat1]))){
f<-which(data$chr[vat1]==unique(data$chr[vat1])[k])
f0<-c(as.numeric(blocksData[vat1[f],j]),3)
if (f0[1]==0){
cont<-1
}else{
cont<-2
}
cont2<-1
block1<-numeric()
for (m in 2:length(f0)){
if (f0[m]==f0[m-1]){
cont2<-cont2
}else{
block1<-rbind(block1,c(cont2,m,badIdea[cont]))
cont<-cont+1
#cont0<-cont0+1
cont2<-m
}
}
block1[nrow(block1),2]<-block1[nrow(block1),2]-1
for (n in 1:nrow(block1)){
ldBlock[contX]<-paste(paste0('c',unique(chrMapperReal[vat1[f]])),round(multiplicador*data$pos[vat1[f[block1[n,1]]]]),round(multiplicador*data$pos[vat1[f[block1[n,2]]]]),data$pos[vat1[f[block1[n,1]]]],paste0('color=',colorLD[i,block1[n,3]]))
contX<-contX+1
}
}
}
blockData[[contx2]]<-ldBlock
contx2<-contx2+1
}
trStart<-0
for (i in 1:ncol(blocksData)){
fileX<-paste0(paste0(circosLocation,"data/tr_auto_"),trStart,".txt")
write(blockData[[i]], file = fileX)
trStart<-trStart+1
}
## making plotConf
plotConf<-c('<plot>','<<include file.conf>>','<<include location.conf>>','type=heatmap','</plot>')
write(plotConf, file = paste0(circosLocation,"bin/plot.conf"))
## making r0r1.conf
r1r0Conf<-c('r0=eval(sprintf("%fr",conf(track_start)-counter(plot)*conf(track_step)))','r1=eval(sprintf("%fr",conf(track_start)+conf(track_width)-counter(plot)*conf(track_step)))','orientation = eval( counter(plot) % 2 ? "in" : "out" )')
write(r1r0Conf, file = paste0(circosLocation,"bin/location.conf"))
## making file.conf
fileConf<-'file = data/tr_auto_counter(plot).txt'
write(fileConf, file = paste0(circosLocation,"bin/file.conf"))
## updating confFile
if (generalPlotConfFlag){
confFile<-c(confFile,paste0('track_width=',blocksLocation[2]),paste0('track_start=',blocksLocation[1]),paste0('track_step=',blocksLocation[2]+0.0005),'<plots>',generalPlotConf,rep('<<include plot.conf>>',ncol(blocksData)))
}else{
confFile<-c(confFile,paste0('track_width=',blocksLocation[2]),paste0('track_start=',blocksLocation[1]),paste0('track_step=',blocksLocation[2]+0.0005),'<plots>',rep('<<include plot.conf>>',ncol(blocksData)))
}
dedotes<-TRUE
}
if(dedotes==FALSE){
if (generalPlotConfFlag){
confFile<-c(confFile,'<plots>',generalPlotConf)
}else{
confFile<-c(confFile,'<plots>')
}
}
if (nPheno>0){
for (ii in 1:length(plotType)){
if (plotType[ii]=='scatter'){
f<-which(is.na(data[,4+ii])==FALSE)
track2<-paste(paste0('c',chrMapperReal[f]),round(multiplicador*data$pos[f]),round(multiplicador*data$pos[f]+1),data[f,4+ii],if(dataColorFlag){paste0('color=',dataColor[f,ii])}else{if(plotColor[ii]=='chr'){paste0('color=',ideoColors[as.numeric(chrMapperReal[f])])}else{''}})
write(track2, file = paste0(paste0(circosLocation,'data/tr_2_'),ii,'.txt'))
backAx<-c('<backgrounds>','show=data','<background>',if(plotBackground$backgroundShow[ii]){paste0('color=',plotBackground$backgroundColor[ii])}else{''},'</background>','</backgrounds>','<axes>','<axis>',if(plotBackground$axisShow[ii]){c('color=vdgrey',paste0('spacing=',plotBackground$axisSep[ii]))}else{''},'</axis>','</axes>')
confFile<-c(confFile,'<plot>','type=scatter',paste0('file=data/tr_2_',ii,'.txt'),paste0('z=',plotImportance[ii]),paste0('r0=',plotLocation$r0[ii],'r'),paste0('r1=',plotLocation$r1[ii],'r'),paste0('orientation=',plotOrientation[ii]),paste0('glyph=','circle'),paste0('glyph_size=',markerSize[ii]),paste0('color=',plotColor[ii]),paste0('color_log_scale=','1'),backAx,'</plot>')
}
if (plotType[ii]=='heatmap'){
f<-which(is.na(data[,4+ii])==FALSE)
track3<-paste(paste0('c',chrMapperReal[f]),round(multiplicador*data$pos[f]),round(multiplicador*data$pos[f]+markerSize[ii]),data[f,4+ii],if(dataColorFlag){paste0('color=',dataColor[f,ii])}else{if(plotColor[ii]=='chr'){paste0('colorX=',ideoColors[as.numeric(chrMapperReal[f])])}else{''}})
write(track3, file = paste0(paste0(circosLocation,'data/tr_3_'),ii,'.txt'))
confFile<-c(confFile,'<plot>','type=heatmap',paste0('file=data/tr_3_',ii,'.txt'),paste0('z=',plotImportance[ii]),paste0('r0=',plotLocation$r0[ii],'r'),paste0('r1=',plotLocation$r1[ii],'r'),paste0('color=',plotColor[ii]),paste0('color_log_scale=','1'),'</plot>')
}
if (plotType[ii]=='heatmap_interval'){
myCC<-c('white_a5',plotColor[ii])
contx2<-1
badIdea<-rep(c(1,2),1000)
block1<-numeric()
blockData<-list()
j<-ii+4
contX<-1
ldBlock<-numeric()
for (i in 1:numberMaps){
vat1<-which(data$map==unique(data$map)[i])
for (k in 1:length(unique(data$chr[vat1]))){
f<-which(data$chr[vat1]==unique(data$chr[vat1])[k])
f0<-c(as.numeric(data[vat1[f],j]),3)
if (f0[1]==0){
cont<-1
}else{
cont<-2
}
cont2<-1
block1<-numeric()
for (m in 2:length(f0)){
if (f0[m]==f0[m-1]){
cont2<-cont2
}else{
block1<-rbind(block1,c(cont2,m,badIdea[cont]))
cont<-cont+1
cont2<-m
}
}
block1[nrow(block1),2]<-block1[nrow(block1),2]-1
for (n in 1:nrow(block1)){
ldBlock[contX]<-paste(paste0('c',unique(chrMapperReal[vat1[f]])),round(multiplicador*data$pos[vat1[f[block1[n,1]]]]),round(multiplicador*data$pos[vat1[f[block1[n,2]]]]),data$pos[vat1[f[block1[n,1]]]],paste0('color=',myCC[block1[n,3]]))
contX<-contX+1
}
}
}
blockData[[contx2]]<-ldBlock
contx2<-contx2+1
write(blockData[[1]], file = paste0(circosLocation,'data/tr_40_',ii,'.txt'))
confFile<-c(confFile,'<plot>','type=heatmap',paste0('file=data/tr_40_',ii,'.txt'),paste0('z=',plotImportance[ii]),paste0('r0=',plotLocation$r0[ii],'r'),paste0('r1=',plotLocation$r1[ii],'r'),paste0('color_log_scale=','1'),'</plot>')
}
if (plotType[ii]=='line'){
f<-which(is.na(data[,4+ii])==FALSE)
track4<-paste(paste0('c',chrMapperReal[f]),round(multiplicador*data$pos[f]),round(multiplicador*data$pos[f]+1),data[f,4+ii],if(dataColorFlag){paste0('fill_color=',dataColor[f,ii])}else{if(plotColor[ii]=='chr'){paste0('fill_color=',ideoColors[as.numeric(chrMapperReal[f])])}else{''}})
write(track4, file = paste0(paste0(circosLocation,'data/tr_4_'),ii,'.txt'))
backAx<-c('<backgrounds>','show=data','<background>',if(plotBackground$backgroundShow[ii]){paste0('color=',plotBackground$backgroundColor[ii])}else{''},'</background>','</backgrounds>','<axes>','<axis>',if(plotBackground$axisShow[ii]){c('color=vdgrey',paste0('spacing=',plotBackground$axisSep[ii]))}else{''},'</axis>','</axes>')
confFile<-c(confFile,'<plot>','type=line',paste0('file=data/tr_4_',ii,'.txt'),paste0('z=',plotImportance[ii]),paste0('r0=',plotLocation$r0[ii],'r'),paste0('r1=',plotLocation$r1[ii],'r'),paste0('orientation=',plotOrientation[ii]),paste0('thickness=',markerSize[ii]),paste0('fill_color=',plotColor[ii]),paste0('color_log_scale=','1'),backAx,'</plot>')
}
if (plotType[ii]=='text'){
f<-which(is.na(data[,4+ii])==FALSE)
track5<-paste(paste0('c',chrMapperReal[f]),round(multiplicador*data$pos[f]),round(multiplicador*data$pos[f]+1),data[f,4+ii])
write(track5, file = paste0(paste0(circosLocation,'data/tr_5_'),ii,'.txt'))
confFile<-c(confFile,'<plot>','type=text',paste0('file=data/tr_5_',ii,'.txt'),paste0('z=',plotImportance[ii]),paste0('r0=',plotLocation$r0[ii],'r'),paste0('r1=',plotLocation$r1[ii],'r'),paste0('color=',plotColor[ii]),'show_links=yes','link_dims=0p,5p,5p,5p,0p','link_thickness=1p','link_color=black',paste0('label_size=',markerSize[[ii]],'p'),'label_font=default','padding=0p','rpadding=0p','label_snuggle=yes','max_snuggle_distance=5r','snuggle_tolerance=0.25r','snuggle_sampling=2','</plot>')
}
if (plotType[ii]=='glyphs'){
f<-which(is.na(data[,4+ii])==FALSE)
track6<-paste(paste0('c',chrMapperReal[f]),round(multiplicador*data$pos[f]),round(multiplicador*data$pos[f]+1),rep('O',length(f)),paste0('color=',data[f,4+ii]))
backAx<-c('<backgrounds>','show=data','<background>',if(plotBackground$backgroundShow[ii]){paste0('color=',plotBackground$backgroundColor[ii])}else{''},'</background>','</backgrounds>')
write(track6, file = paste0(paste0(circosLocation,'data/tr_6_'),ii,'.txt'))
confFile<-c(confFile,'<plot>','type=text',paste0('file=data/tr_6_',ii,'.txt'),paste0('z=',plotImportance[ii]),'label_font=glyph','padding=-0.1r','rpadding=0p',paste0('label_size=',markerSize[ii],'p'),paste0('r0=',plotLocation$r0[ii],'r'),paste0('r1=',plotLocation$r1[ii],'r'),backAx,'</plot>')
}
}
}
# more plots
if (tilesFlag){
track6<-paste(paste0('c',chrMapperReal_t),round(multiplicador*tilesData$pos1),round(multiplicador*tilesData$pos2),paste0('color=',tilesData$color))
write(track6, file = paste0(paste0(circosLocation,'data/tr_6_'),ii,'.txt'))
confFile<-c(confFile,'<plot>','type=tile',paste0('file=data/tr_6_',ii,'.txt'),'z=10000',paste0('r0=',tilesLocation[1],'r'),paste0('r1=',tilesLocation[2],'r'),'orientation = out','layers= 25','margin=0.02u','thickness=15','padding=8','stroke_thickness=1','</plot>')
}
if (is.null(density)==FALSE){
if (density$show){
track7<-numeric()
for (ch in 1:numberChromosomes){
f<-which(unique(chrMapperReal)[ch]==chrMapperReal)
if (length(f)>0){
h<-hist(data$pos[f],breaks=density$bins,plot=F)
h1<-h$breaks[-length(h$breaks)]
h2<-h$breaks[-1]
h2[length(h2)]<-chromoSizes[ch]
track7<-c(track7,paste(paste0('c',unique(chrMapperReal)[ch]),round(multiplicador*h1),round(multiplicador*h2),h$counts))
}
}
write(track7, file = paste0(paste0(circosLocation,'data/tr_7_'),ii,'.txt'))
backAx<-c('<backgrounds>','<background>',if(density$backgroundShow){paste0('color=',density$backgroundColor)}else{''},'</background>','</backgrounds>','<axes>','<axis>',if(density$axisShow){c('color=vdgrey',paste0('spacing=',density$axisSep))}else{''},'</axis>','</axes>')
confFile<-c(confFile,'<plot>','type=histogram',paste0('file=data/tr_7_',ii,'.txt'),paste0('z=',density$importance),paste0('r0=',density$r0,'r'),paste0('r1=',density$r1,'r'),paste0('orientation=',density$orientation),paste0('thickness=',density$thickness),paste0('fill_color=',density$color),backAx,'</plot>')
}
}
confFile<-c(confFile,'</plots>')
write(confFile, file = paste0(circosLocation,paste0("bin/",namename)))
if(runCircos){
if (circosDisplay==FALSE){
arg1 <- paste0(circosLocation,"bin/circos -silent -conf ",namename)
cmd <- paste("perl", arg1)
system(cmd)
}else{
arg1 <- paste0(circosLocation,"bin/circos -conf ",namename)
cmd <- paste("perl", arg1)
system(cmd)
}
if (returnConf){return(confFile)}
if (deleteData){
cmd <- paste0('rm ', circosLocation,'/data/*.txt')
system(cmd)
}
if (figureDisplay){
if (is.na(kr2[1])==FALSE){
tra <- png::readPNG(paste0(getwd(),'/circos.png'))
grid::grid.raster(tra)
}
}
}
}
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.