gct output in DESeq2
2
0
Entering edit mode
4 months ago

Hi everyone,

I'm trying to analyze my counts data with DESeq2 and based on the tutorial of GSEA, DESeq2 has an output format that can be used directly in the GSEA (here). However, I'm reading their workflow and I don't find how to make this gct output format. Any help is appreciated.

GSEA gct DESeq2 • 609 views
2
Entering edit mode
4 months ago

Hi!

In this case you have to prepare the gct file "by hand" for analyze your data with GSEA. Once you have created your DESeq object (dds) you are going to retrieve the normalized counts based on the DESeq method:

norm_counts <- counts(dds, normalized = T)


Then, you must arrange this normalized counts matrix according to the minimum requirements for a GCT file. I suggest you to codificate the norm_counts as a data.frame and add an extra column called description (this column could contain the id's of your genes):

norm_counts <- as.data.frame(norm_counts)
norm_counts$description <- norm_counts$your_id_column


Move the "description" column to be the second in the df and save it using the write.table command:

write.table(norm_counts, "path_to_save_file.gct", sep = "\t", quote = F, row.names = F)


Finally, using a plain text editor put all the additional information (following the directions of the link) to have a gct file for GSEA. For a detailed tutorial about gct and cls files watch this video but please follow the directions of the link

Hope it could help!

Best regards!

Rodo

0
Entering edit mode

thank you so much, Rodo for the very helpful and detailed explanation!

0
Entering edit mode
7 weeks ago
jv ▴ 10

I would like to offer an alternative answer. Neither the cls nor the gct file need to be created by hand nor is manual editing in a plain text editor required. Both files can be generated from code in R. For example, the gct file can be written as follows (which assumes the first two columns of norm_counts are the gene name and description):

fid <- "norm_counts.gct"
writeLines(c("#1.2", paste(nrow(norm_counts), ncol(norm_counts) - 2, collapse="\t")), fid, sep="\n")
write.table(norm_counts, file=fid, quote=FALSE, row.names=FALSE, col.names=TRUE, sep="\t", append = TRUE)