Hello everyone,

I'm working with data that was performed using Agilent-014850 Whole Human Genome Microarray 4x44K G4112F arrays and the One Color Quick Amp Labeling Kit (Agilent Technologies, Santa Clara, USA).

I'm trying to set up a code in R:

    #Load limma
    library(limma)
    
    #Set-up
    targetinfo <- readTargets("Targets.txt",row.names="FileName",sep="")
    
    #Read files
    project <- read.maimages(targetinfo,source="agilent", green.only=TRUE)
    
    #Background correction
    project.bgc <- backgroundCorrect(project, method="normexp", offset=16)
    
    #Normalize the data with the 'quantile' method for 1-color
    project.NormData <-normalizeBetweenArrays(project.bgc,method="quantile")

    #Create the study design and comparison model
    design <- paste(targetinfo$Target, sep="")
    design <- factor(design)
    comparisonmodel <- model.matrix(~0+design)
    colnames(comparisonmodel) <- levels(design)
    #Checking the experimental design
    design
    comparisonmodel

    project.fit <- lmFit(project.NormData, comparisonmodel)

>     #When I used > project.fit <- lmFit(project.NormData$M, comparisonmodel)
>     Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x),  : 
>     'data' must be of a vector type, was 'NULL'


>     #So, I used without a $M 
>     project.fit <- lmFit(project.NormData,comparisonmodel)

    #Applying the empirical Bayes method
    project.fit.eBayes <- eBayes(project.fit)
    names(project.fit.eBayes)

    #Make individual contrasts and fit the new model
    CaseControl <- makeContrasts(CaseControl="D0A-Control", levels=comparisonmodel)
    CaseControl.fitmodel <- contrasts.fit(project.fit.eBayes, CaseControl)
    CaseControl.fitmodel.eBayes <- eBayes(CaseControl.fitmodel)

    #Filtering Results
     nrow(topTable(CaseControl.fitmodel.eBayes, coef="CaseControl", number=99999, lfc=2))
     probeset.list <- topTable(CaseControl.fitmodel.eBayes, "CaseControl", number=99999, adjust.method="BH", sort.by="P", lfc=2)

    #To save results
    write.table(probeset.list, "results.txt", sep="\t", quote=FALSE)
  

Well, now it seems correct, and you guys what do you think?

Best regards,

Leite





You have to pass a comparison model to `lmFit()`. Also, for Agilent processing, the expression values are eventually stored in the 'M' or 'E' variables of your object, and not accessed via the `exprs()` function. The choice of M or E depends on whether it is 2- or 1-channel / colour array.


    comparisonmodel <- model.matrix(~0+design)
    colnames(comparisonmodel) <- levels(design)
    comparisonmodel
    
    fit <- lmFit(project.NormData$M, comparisonmodel)

