SEQanswers

SEQanswers (http://seqanswers.com/forums/index.php)
-   Bioinformatics (http://seqanswers.com/forums/forumdisplay.php?f=18)
-   -   DESeq2 error in data.frame (multiple treatments and multiple replicates) (http://seqanswers.com/forums/showthread.php?t=44986)

KYR 07-15-2014 11:55 PM

DESeq2 error in data.frame (multiple treatments and multiple replicates)
 
I have a text file, containing read counts per gene for each treatments and control, with the following column

[Gene Symbol] [C1] [C2] [C3] [A1] [A2] [A3] [B1] [B2] [B3]
  • C is Control
  • A is Treatment 1
  • B is Treatment 2
-> Each of C, A an B have 3 replicates

When I do data.frame it generates an error

Code:

library( "DESeq2" )
library("Biobase")
mydata = read.table("matrix.txt", header=TRUE)
col1 <- mydata[,1]

## Error message
ExpDesign = data.frame(row.names=col1, condition=c("C", "C", "C", "A", "A", "A", "B", "B", "B")
Error in data.frame(row.names = col1, condition = c("C", "C", "C", "A",  :
  row names supplied are of the wrong length

## The following is what I would next if I didn't have any error message
Code:

countdata <- assay( mydata )
head( countdata )
coldata <- colData( mydata )
rownames( coldata ) <- coldata$run
colnames( countdata ) <- coldata$run
head( coldata[ , c("C", "C", "C", "A", "A", "A", "B", "B", "B") ] )

Eventually the goal is to have a heatmap with each replicates in the control, treatment A and B.

I think the problem comes from the fact that I should subset my data, though I have no clue how to do to that. Any suggestions on where is the error message coming from and how to subset data? (If I should ever subset that..:confused:)

Michael Love 07-16-2014 07:35 AM

This is your countData, which has as many rows as genes:

Code:

mydata = read.table("matrix.txt", header=TRUE)
col1 <- mydata[,1]

It looks like this will be the colData (sample information table).

Code:

ExpDesign = data.frame(row.names=col1, condition=c("C", "C", "C", "A", "A", "A", "B", "B", "B")
...which has as many rows as samples.

So the error comes when you try to name the rows of your colData using the gene names in col1.

You will also get an error later when you try to run
Code:

assay( mydata )
because mydata is a data.frame. assay() is a function for getting a matrix from SummarizedExperiment objects. You can just use
Code:

as.matrix( mydata )
in order to supply a matrix to DESeqDataSet.

rookie_genomics 03-19-2019 09:51 AM

Hi,

I followed your advice and tried to import as a matrix. But when I try to set up col.data I still get an error

This is my code

Quote:

deseq2_analysis2 <- read_excel("deseq2_analysis2.xlsx")
> View(deseq2_analysis2)
> analysis3 <- as.matrix(deseq2_analysis2)
> (condition <- factor(c(rep("group1", 4), rep("group2", 4), rep("group3", 4), rep("group4", 4))))
[1] group1 group1 group1 group1 group2 group2 group2 group2 group3 group3 group3 group3 group4
[14] group4 group4 group4
Levels: group1 group2 group3 group4
> (coldata <- data.frame(row.names=colnames(analysis3), condition))
Error in data.frame(row.names = colnames(analysis3), condition) :
row names supplied are of the wrong length
This is my result for head command

Quote:

head(deseq2_analysis2)
# A tibble: 6 x 17
gene Sample1_group1 Sample2_group1 Sample3_group1 Sample4_group1 Sample1_group2 Sample2_group2
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 YAL0~ 0 0 0 0 2 0
2 YAL0~ 0 0 0 0 0 0
3 YAL0~ 243 242 109 130 271 233
4 YAL0~ 16 7 52 30 23 10
5 YAL0~ 23 21 21 33 11 28
6 YAL0~ 38 42 76 88 47 40
# ... with 10 more variables: Sample3_group2 <dbl>, Sample4_group2 <dbl>, Sample1_group3 <dbl>,
# Sample2_group3 <dbl>, Sample3_group3 <dbl>, Sample4_group3 <dbl>, Sample1_group4 <dbl>,
# Sample2_group4 <dbl>, Sample3_group4 <dbl>, Sample4_group4 <dbl>
What am I doing wrong here?

rookie_genomics 03-19-2019 10:05 AM

Quote:

Originally Posted by Michael Love (Post 145114)
This is your countData, which has as many rows as genes:

Code:

mydata = read.table("matrix.txt", header=TRUE)
col1 <- mydata[,1]

It looks like this will be the colData (sample information table).

Code:

ExpDesign = data.frame(row.names=col1, condition=c("C", "C", "C", "A", "A", "A", "B", "B", "B")
...which has as many rows as samples.

So the error comes when you try to name the rows of your colData using the gene names in col1.

You will also get an error later when you try to run
Code:

assay( mydata )
because mydata is a data.frame. assay() is a function for getting a matrix from SummarizedExperiment objects. You can just use
Code:

as.matrix( mydata )
in order to supply a matrix to DESeqDataSet.

Hi,

I followed your advice and tried to import as a matrix. But when I try to set up col.data I still get an error

This is my code

Quote:

deseq2_analysis2 <- read_excel("deseq2_analysis2.xlsx")
> View(deseq2_analysis2)
> analysis3 <- as.matrix(deseq2_analysis2)
> (condition <- factor(c(rep("group1", 4), rep("group2", 4), rep("group3", 4), rep("group4", 4))))
[1] group1 group1 group1 group1 group2 group2 group2 group2 group3 group3 group3 group3 group4
[14] group4 group4 group4
Levels: group1 group2 group3 group4
> (coldata <- data.frame(row.names=colnames(analysis3), condition))
Error in data.frame(row.names = colnames(analysis3), condition) :
row names supplied are of the wrong length
This is my result for head command

Quote:

head(deseq2_analysis2)
# A tibble: 6 x 17
gene Sample1_group1 Sample2_group1 Sample3_group1 Sample4_group1 Sample1_group2 Sample2_group2
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 YAL0~ 0 0 0 0 2 0
2 YAL0~ 0 0 0 0 0 0
3 YAL0~ 243 242 109 130 271 233
4 YAL0~ 16 7 52 30 23 10
5 YAL0~ 23 21 21 33 11 28
6 YAL0~ 38 42 76 88 47 40
# ... with 10 more variables: Sample3_group2 <dbl>, Sample4_group2 <dbl>, Sample1_group3 <dbl>,
# Sample2_group3 <dbl>, Sample3_group3 <dbl>, Sample4_group3 <dbl>, Sample1_group4 <dbl>,
# Sample2_group4 <dbl>, Sample3_group4 <dbl>, Sample4_group4 <dbl>
What am I doing wrong here?


All times are GMT -8. The time now is 06:44 PM.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.