Unconfigured Ad

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • JonB
    Member
    • Jan 2010
    • 85

    #1

    DESeq2: struggle to add multiple variables to DESeqDataSet

    Hi,

    I want to add the two variables condition and treatment to my DESeqDataSet, and I thought I had succeeded:

    > ddsHTSeq
    class: DESeqDataSet
    dim: 21680 11
    exptData(0):
    assays(1): counts
    rownames(21680): scign000001 scign000002 ... scign021679 scign021680
    rowData metadata column names(0):
    colnames(11): R1D0B1 R1D2B1 ... R3DxB1 R3DzB1
    colData names(2): condition treatment

    I added four levels to condition and two levels to treatment and I am able to pull out DESeq results from the different levels of condition, but I can't pull out the results from treatment:

    > resTreatment = results(ddsHTSeq, contrast=c("treatment", "cut", "uncut"))

    Any ideas what I am doing wrong?
  • Michael Love
    Senior Member
    • Jul 2013
    • 333

    #2
    hi Jon,

    Can you include the code you used to create ddsHTSeq?

    Comment

    • JonB
      Member
      • Jan 2010
      • 85

      #3
      Here's the code I used:

      Code:
      library("DESeq2")
      
      #Set the directory where the HTSeq count files are located
      directory = "/Users/jonbra/Desktop/Gene_count_files/"
      
      #Catch the files with the pattern "GFF"
      sampleFiles = grep("GFF", list.files(directory), value=TRUE)
      sampleFiles
      
      #Setup sample conditions in the same order of the files in sampleFiles
      sampleCondition = c("D0", "D2", "Dx", "Dz", "D0", "D2", "Dx", "Dz", "D0", "Dx", "Dz")
      sampleName = c("R1D0B1", "R1D2B1", "R1DxB1", "R1DzB1", "R2D0B1", "R2D2B1", "R2DxB1", "R2DzB1", "R3D0B1", "R3DxB1", "R3DzB1")
      sampleTreatment = c("uncut", "cut", "cut", "cut", "uncut", "cut", "cut", "cut", "uncut", "cut", "cut")
      sampleTable = data.frame(sampleName=sampleName, fileName=sampleFiles, condition=sampleCondition, treatment=sampleTreatment)
      sampleTable
      
      #Creates the DESeqDataSet which stores the count data for DESeq2
      ddsHTSeq = DESeqDataSetFromHTSeqCount(sampleTable=sampleTable, directory=directory, design= ~ condition)
      ddsHTSeq
      
      colData(ddsHTSeq)$condition=factor(colData(ddsHTSeq)$condition, levels=c("D0", "D2", "Dx", "Dz"))
      colData(ddsHTSeq)$treatment=factor(colData(ddsHTSeq)$treatment, levels=c("uncut", "cut"))
      I tried to use this design formula instead:

      Code:
      ddsHTSeq = DESeqDataSetFromHTSeqCount(sampleTable=sampleTable, directory=directory, design= ~ treatment + condition)
      But got this error message:

      Error in DESeqDataSet(se, design = design, ignoreRank) :
      the model matrix is not full rank, i.e. one or more variables in the design formula are linear combinations of the others

      Comment

      • Michael Love
        Senior Member
        • Jul 2013
        • 333

        #4
        The problem you will have with modeling ~ treatment + condition is that D0 is indistinguishable from uncut, i.e. all samples which are D0 are also uncut and vice versa. That makes the model impossible to fit as specified.

        If you leave out the treatment variable, you can make comparisons of each level against the other. And you can also make the comparison of D2,Dx,Dz vs D0 (so the treatment contrast you are interested) using the list argument to the contrast argument:

        Code:
        results(dds, 
          contrast=list(c("conditionD2","conditionDx","conditionDz"),"conditionD0"), 
          listValues=c(1/3,-1))

        Comment

        • JonB
          Member
          • Jan 2010
          • 85

          #5
          Ah, I see. That makes sense. Thanks!

          Comment

          Latest Articles

          Collapse

          • SEQadmin2
            Beyond CRISPR/Cas9: Understand, Choose, and Use the Right Genome Editing Tool
            by SEQadmin2



            CRISPR/Cas9 sparked the gene editing revolution for both research and therapeutics.1 But this system still showed severe issues that limited its applications. The most prominent were the heavy reliance on PAM sequences, delivery limitations, double-stranded breaks that prompt unintended edits and cell death, and editing inefficiency (both in targeting and in knock-in reliability).

            Despite this, “CRISPR helped turn genome editing from a specialized technique into
            ...
            07-31-2026, 11:01 AM
          • SEQadmin2
            Proteomic Platforms: How to Choose the Right Analytical Strategy to Improve Detection and Clinical Applications
            by SEQadmin2


            Proteomics platforms are evolving rapidly, with advances in mass spectrometry and affinity-based approaches expanding what researchers can detect and at what scale. As the field moves toward deeper proteome coverage and clinical applications, scientists face an increasingly complex landscape of tools. This article will explore how researchers are navigating these choices to find the right platform for their work.

            The systematic characterization of the human proteome has
            ...
            07-20-2026, 11:48 AM

          ad_right_rmr

          Collapse

          News

          Collapse

          Topics Statistics Last Post
          Started by SEQadmin2, 08-06-2026, 07:41 AM
          0 responses
          23 views
          0 reactions
          Last Post SEQadmin2  
          Started by SEQadmin2, 08-03-2026, 10:13 AM
          0 responses
          38 views
          0 reactions
          Last Post SEQadmin2  
          Started by SEQadmin2, 07-31-2026, 02:55 AM
          0 responses
          43 views
          0 reactions
          Last Post SEQadmin2  
          Started by SEQadmin2, 07-24-2026, 12:17 PM
          0 responses
          26 views
          0 reactions
          Last Post SEQadmin2  
          Working...