When generating a Circos plot, the formatting of the data to be represented is a crucial step. Here are some pointers on how to avoid the dreadful *** CIRCOS ERROR ***.
All data files must be in text format. For instance, using R, I would generate a myData.txt file that I would then call within a specific plot block (<plot>…</plot>). Data files are used for 2-dimensional graphical representations (histogram, scatter plot, heatmap, tiles), labels (which are technically also a type of graphical representation) and links. To know how to format your file, you must first determine how you want this data to be illustrated.
|Type of data representation||Graphs||Labels||Links|
|Columns needed||chr start end val||chr start end label||chr1 start1 end1 chr2 start2 end2|
|Example of data||chr1 1000 1199 1.00
chr1 1200 1399 15.00
chr1 1400 1599 -2.00
|chr1 11873 14409 DDX11L1
chr1 14361 29370 WASH7P
chr1 17368 17436 MIR6859-1
|chr1 486 769 chr15 10026 10033
chr1 3426 3938 chr15 10021 10026
chr1 5763 6268 chr15 10021 10026
Other parameters can be added after the last column (after the val/label/end2 columns for graphs, labels and links files respectively), color for instance, but for now we will work with the basic formatting. To be noted, with or without additional parameters, the processes are still very similar.
Now that we know how we want to represent our data, we can start to format it. Import your raw data in R as a new data frame.
> data_df <- read.table("myRawData.txt", header = TRUE, sep = "\t", as.is = TRUE)
Then, work with your data as you usually would. For example, you could compute means, standard deviations or you could also do a statistic test and only select the values that are significant. This step is completely up to you!
It is important that you keep track of the chromosome and position of a given value. A good way to do so would be to put all the data in a table with a column for the chromosome and two more for the start and end positions. All the other columns are to your discretion.
When you are ready to save your data to a new file, create a new table with all the columns required by your desired representation (graphs, labels or links), as illustrated in the table above. If you were already working with a table, just make sure that the columns are in the right order. To effectively export your data, you could use this simple code line:
> write.table(myDataTable, file = "myData.txt", row.names = FALSE, col.names = FALSE, sep = "\t", quote = FALSE)
myDataTable is the name of the table you want to export while myData.txt is the name of the resulting text file. The circos format does not allow for row labels, hence the row.names = FALSE. Column labels are accepted to some extent, but you must have the exact formulation. To avoid any possible errors, I suggested that you also export you table without its column’s names. The separation argument ensure that every entry of every line are spaced by a tab, which is preferred by Circos. Finally, setting quote to false will remove the quotes (“”) of any string i.e. chromosomes and labels. This last argument is very important for Circos not to crash.
For security, double check your file before using it in a configuration file.
A lot of ***CIRCOS ERROR*** can be avoided when you know how to properly format your data files!