Skip to content
Snippets Groups Projects
Commit 070b5035 authored by Dominik Brilhaus's avatar Dominik Brilhaus
Browse files

allow factor list

parent ffdece03
No related branches found
No related tags found
1 merge request!4fix docker
Pipeline #5016 failed
...@@ -5,5 +5,5 @@ inMetadataFile: ...@@ -5,5 +5,5 @@ inMetadataFile:
class: File class: File
path: ../../runs/merged_isa_metadata/out/merged_isa.tsv path: ../../runs/merged_isa_metadata/out/merged_isa.tsv
inMetadataSample: "Source.Name" inMetadataSample: "Source.Name"
inMetadataFactor: inMetadataFactorList:
- "Factor..Photosynthesis.mode." - "Factor..Photosynthesis.mode."
\ No newline at end of file
# DESeq2
## Libraries
library("DESeq2")
library("tximport")
library("rhdf5")
library("ggplot2")
## In-and-out
# inKallistoResults <- "../../runs/kallisto/kallisto_results"
# inMetadataFile <- "../../runs/merged_isa_metadata/out/merged_isa.tsv"
# inMetadataSample <- "Source.Name"
# inMetadataFactorList <- list("Factor..Photosynthesis.mode.", "Factor..Biosource.amount.")
### Read arguments from CLI
args <- commandArgs(trailingOnly = T)
inKallistoResults <- args[1]
inMetadataFile <- args[2]
inMetadataSample <- args[3]
inMetadataFactorList <- args[4]
## Import kallisto count data
files <- dir(inKallistoResults, recursive = T, full.names = T ,"abundance.h5")
names(files) <- dir(inKallistoResults)
txi <- tximport(files, type = "kallisto", txOut = TRUE)
head(txi$counts)
## Read sample metadata
samples_metadata <- read.table(file = inMetadataFile, sep = "\t")
samples <- samples_metadata[order(samples_metadata[[inMetadataSample]]), c(inMetadataSample, unlist(inMetadataFactorList))]
rownames(samples) <- samples[,inMetadataSample]
factors <- sapply(inMetadataFactorList, function(x) x[[1]])
design_formula <- as.formula(paste("~", paste(rev(factors), collapse = " + ")))
## DESeq
dds <- DESeqDataSetFromTximport(txi, colData = samples, design = design_formula)
dds <- DESeq(dds)
## Outputs
### Extract results
res <- results(dds)
write.csv(res, file = "results_stats.csv", quote = TRUE)
### Generate and save default plots
png("results_ma-plot.png")
plotMA(res, ylim=c(-2,2))
dev.off()
vsd <- vst(dds, blind=FALSE)
pcaData <- plotPCA(vsd, intgroup=factors, returnData=TRUE)
percentVar <- round(100 * attr(pcaData, "percentVar"))
p2 <- ggplot(pcaData, aes(PC1, PC2, color=factors[[1]])) +
geom_point(size=3) +
xlab(paste0("PC1: ",percentVar[1],"% variance")) +
ylab(paste0("PC2: ",percentVar[2],"% variance")) +
coord_fixed()
png("results_pca-plot.png")
print(p2)
dev.off()
...@@ -12,7 +12,7 @@ library("ggplot2") ...@@ -12,7 +12,7 @@ library("ggplot2")
# inKallistoResults <- "../../runs/kallisto/kallisto_results" # inKallistoResults <- "../../runs/kallisto/kallisto_results"
# inMetadataFile <- "../../runs/merged_isa_metadata/out/merged_isa.tsv" # inMetadataFile <- "../../runs/merged_isa_metadata/out/merged_isa.tsv"
# inMetadataSample <- "Source.Name" # inMetadataSample <- "Source.Name"
# inMetadataFactor <- "Factor..Photosynthesis.mode." # inMetadataFactorList <- list("Factor..Photosynthesis.mode.", "Factor..Biosource.amount.")
### Read arguments from CLI ### Read arguments from CLI
...@@ -21,7 +21,7 @@ args <- commandArgs(trailingOnly = T) ...@@ -21,7 +21,7 @@ args <- commandArgs(trailingOnly = T)
inKallistoResults <- args[1] inKallistoResults <- args[1]
inMetadataFile <- args[2] inMetadataFile <- args[2]
inMetadataSample <- args[3] inMetadataSample <- args[3]
inMetadataFactor <- args[4] inMetadataFactorList <- args[4]
## Import kallisto count data ## Import kallisto count data
...@@ -35,15 +35,16 @@ head(txi$counts) ...@@ -35,15 +35,16 @@ head(txi$counts)
## Read sample metadata ## Read sample metadata
samples_metadata <- read.table(file = inMetadataFile, sep = "\t") samples_metadata <- read.table(file = inMetadataFile, sep = "\t")
samples <- samples_metadata[order(samples_metadata[[inMetadataSample]]), c(inMetadataSample, unlist(inMetadataFactorList))]
rownames(samples) <- samples[,inMetadataSample]
samples <- samples_metadata[order(samples_metadata[[inMetadataSample]]), c(inMetadataSample, inMetadataFactor)] factors <- sapply(inMetadataFactorList, function(x) x[[1]])
colnames(samples)[1:2] <- c("sampleID", "condition") design_formula <- as.formula(paste("~", paste(rev(factors), collapse = " + ")))
rownames(samples) <- samples$sampleID
## DESeq ## DESeq
dds <- DESeqDataSetFromTximport(txi, colData = samples, design = ~ condition) dds <- DESeqDataSetFromTximport(txi, colData = samples, design = design_formula)
dds <- DESeq(dds) dds <- DESeq(dds)
...@@ -52,7 +53,7 @@ dds <- DESeq(dds) ...@@ -52,7 +53,7 @@ dds <- DESeq(dds)
### Extract results ### Extract results
res <- results(dds) res <- results(dds)
write.csv(res, file = "results_stats.csv", append = FALSE, quote = TRUE) write.csv(res, file = "results_stats.csv", quote = TRUE)
### Generate and save default plots ### Generate and save default plots
...@@ -61,10 +62,10 @@ png("results_ma-plot.png") ...@@ -61,10 +62,10 @@ png("results_ma-plot.png")
dev.off() dev.off()
vsd <- vst(dds, blind=FALSE) vsd <- vst(dds, blind=FALSE)
pcaData <- plotPCA(vsd, intgroup=c("condition"), returnData=TRUE) pcaData <- plotPCA(vsd, intgroup=factors, returnData=TRUE)
percentVar <- round(100 * attr(pcaData, "percentVar")) percentVar <- round(100 * attr(pcaData, "percentVar"))
p2 <- ggplot(pcaData, aes(PC1, PC2, color=condition)) + p2 <- ggplot(pcaData, aes(PC1, PC2, color=factors[[1]])) +
geom_point(size=3) + geom_point(size=3) +
xlab(paste0("PC1: ",percentVar[1],"% variance")) + xlab(paste0("PC1: ",percentVar[1],"% variance")) +
ylab(paste0("PC2: ",percentVar[2],"% variance")) + ylab(paste0("PC2: ",percentVar[2],"% variance")) +
...@@ -73,8 +74,3 @@ p2 <- ggplot(pcaData, aes(PC1, PC2, color=condition)) + ...@@ -73,8 +74,3 @@ p2 <- ggplot(pcaData, aes(PC1, PC2, color=condition)) +
png("results_pca-plot.png") png("results_pca-plot.png")
print(p2) print(p2)
dev.off() dev.off()
...@@ -27,7 +27,7 @@ inputs: ...@@ -27,7 +27,7 @@ inputs:
type: string type: string
inputBinding: inputBinding:
position: 3 position: 3
inMetadataFactor: inMetadataFactorList:
type: string[] type: string[]
inputBinding: inputBinding:
position: 4 position: 4
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment