Single channel data analysis with LIMMA
1
0
Entering edit mode
@marcel-dinger-3537
Last seen 9.6 years ago
Hi, I've been trying to use LIMMA to analyze a set of single channel data created with Agilent 105k arrays. I'm still learning R, so apologies if there is actually a very simple programmatic solution to my problem - but despite a lot of searching and reading I haven't been able to figure it out. By reading through various posts on this list (and of course the limma user guide) I have managed to get most of the way there, but am struggling with getting my single channel dataset into lmFit. This is what I'm doing: library(limma) targets <- readTargets("neurogenesis.txt") RG <- read.maimages(targets, path="neurogenesis", source="agilent") RG <- backgroundCorrect(RG,method="minimum") RG$R <- NULL RG$Rb <- NULL RG$G <- normalizeBetweenArrays(RG$G, method="quantile") RG$G <- log2(RG$G) f <- factor(targets$Condition, levels = unique(targets$Condition)) design <- model.matrix(~0 + f) colnames(design) <- levels(f) fit <- lmFit(RG$G,design) contrast.matrix <- makeContrasts("Condition1-Condition2",levels=design) fit2 <- contrasts.fit(fit,contrast.matrix) fit2 <- eBayes(fit2) topTable(fit2, adjust="BH", coef="Condition1-Condition2") This works, but the problem is that because I cannot put RG (as an RGList object) into lmFit, I lose the Probe Names in topTable. I think I could theoretically match them up again with my original list, but this seems very clumsy. One solution appears to be to shift my RG data into an ExpressionSet object, but I'm not sure how to do this in R. I see that LIMMA has recently added single channel support through the EListRaw and EList objects, but I didn't have any luck with these either as there (currently) doesn't appear to be a way to go from an EListRaw to an EList object? I get the impression that in the future, I will simply be able to go: E <- read.maimages(targets, path="neurogenesis", source="agilent", channels=1) ENorm <- normalizeBetweenArrays(E, method="quantile") ... fit <- lmFit(ENorm,design) etc But unfortunately normalizeBetweenArrays does not yet take EListRaw as input. So my question is - is there a way I can maintain my probe annotations at the lmFit step? or more specifically - how do I shift the data from an RGList object into an ExpressionSet object? or... how can I shift from an EListRaw object to an EList object? Thanks in advance for any help or advice. Regards, Marcel. -- Marcel Dinger <http: jsm-="" research.imb.uq.edu.au="" groupwiki="" index.php?title="Marcel_Dinger">, Ph.D., Senior Research Officer, Division for Genomics and Computational Biology, Institute for Molecular Bioscience, University of Queensland, Brisbane, Australia. <mailto:m.dinger@uq.edu.au> [[alternative HTML version deleted]]
GO probe limma GO probe limma • 3.6k views
ADD COMMENT
0
Entering edit mode
@sean-davis-490
Last seen 3 months ago
United States
On Thu, Jun 25, 2009 at 1:56 AM, Marcel Dinger <m.dinger@uq.edu.au> wrote: > Hi, > > I've been trying to use LIMMA to analyze a set of single channel data > created with Agilent 105k arrays. I'm still learning R, so apologies if > there is actually a very simple programmatic solution to my problem - > but despite a lot of searching and reading I haven't been able to figure > it out. > > By reading through various posts on this list (and of course the limma > user guide) I have managed to get most of the way there, but am > struggling with getting my single channel dataset into lmFit. > > This is what I'm doing: > library(limma) > targets <- readTargets("neurogenesis.txt") > RG <- read.maimages(targets, path="neurogenesis", source="agilent") > RG <- backgroundCorrect(RG,method="minimum") > RG$R <- NULL > RG$Rb <- NULL > RG$G <- normalizeBetweenArrays(RG$G, method="quantile") > RG$G <- log2(RG$G) > f <- factor(targets$Condition, levels = unique(targets$Condition)) > design <- model.matrix(~0 + f) > colnames(design) <- levels(f) > fit <- lmFit(RG$G,design) > contrast.matrix <- makeContrasts("Condition1-Condition2",levels=design) > fit2 <- contrasts.fit(fit,contrast.matrix) > fit2 <- eBayes(fit2) > topTable(fit2, adjust="BH", coef="Condition1-Condition2") > > This works, but the problem is that because I cannot put RG (as an > RGList object) into lmFit, I lose the Probe Names in topTable. I think I > could theoretically match them up again with my original list, but this > seems very clumsy. > Hi, Marcel. It is always a good idea to read the help pages for any new functions you are using, particularly those that appear to be causing problems. The topTable() function includes an argument for specifying a gene list. Sean > > One solution appears to be to shift my RG data into an ExpressionSet > object, but I'm not sure how to do this in R. > > I see that LIMMA has recently added single channel support through the > EListRaw and EList objects, but I didn't have any luck with these either > as there (currently) doesn't appear to be a way to go from an EListRaw > to an EList object? I get the impression that in the future, I will > simply be able to go: > > E <- read.maimages(targets, path="neurogenesis", source="agilent", > channels=1) > ENorm <- normalizeBetweenArrays(E, method="quantile") > ... > fit <- lmFit(ENorm,design) > etc > > But unfortunately normalizeBetweenArrays does not yet take EListRaw as > input. > > So my question is - is there a way I can maintain my probe annotations > at the lmFit step? > or more specifically - how do I shift the data from an RGList object > into an ExpressionSet object? > or... how can I shift from an EListRaw object to an EList object? > > Thanks in advance for any help or advice. > > Regards, > Marcel. > > -- > Marcel Dinger > <http: jsm-="" research.imb.uq.edu.au="" groupwiki="" index.php?title="Marcel_Dinger"> >, > Ph.D., > Senior Research Officer, > Division for Genomics and Computational Biology, > Institute for Molecular Bioscience, > University of Queensland, > Brisbane, Australia. > > <mailto:m.dinger@uq.edu.au> > > > > [[alternative HTML version deleted]] > > _______________________________________________ > Bioconductor mailing list > Bioconductor@stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: > http://news.gmane.org/gmane.science.biology.informatics.conductor > [[alternative HTML version deleted]]
ADD COMMENT
0
Entering edit mode
Hi Sean, Thanks for your advice - that worked. I ended up needing to convert my RGList object into an MAList object anyway so that I could apply the avereps function (I couldn't get it to work with the RGList - it seemed to lose its format). Although I expect the new EList and EListRaw objects will soon make this "hack" redundant, for anyone interested in using avereps on single channel data at the moment, you simply do: E <- new("MAList", list(targets=RG$targets, genes=RG$genes, source=RG$source, M=RG$Gb, A=RG$G)) E.avg <- avereps(E,ID=E$genes$ProbeName) avereps is particularly important for doing any analysis with custom agilent arrays designed with Earray since it will (optionally) fill all remaining spots with replicates. Since I've received a few emails after making my post on single channel analysis for more information, I've put my steps up on our wiki here: http://jsm-research.imb.uq.edu.au/groupwiki/index.php?title=Single_cha nnel_analysis_of_Agilent_microarray_data_with_Limma Any comments for improvement are of course appreciated. Best regards, Marcel. Sean Davis wrote: > > > On Thu, Jun 25, 2009 at 1:56 AM, Marcel Dinger <m.dinger@uq.edu.au> <mailto:m.dinger@uq.edu.au>> wrote: > > Hi, > > I've been trying to use LIMMA to analyze a set of single channel data > created with Agilent 105k arrays. I'm still learning R, so > apologies if > there is actually a very simple programmatic solution to my problem - > but despite a lot of searching and reading I haven't been able to > figure > it out. > > By reading through various posts on this list (and of course the limma > user guide) I have managed to get most of the way there, but am > struggling with getting my single channel dataset into lmFit. > > This is what I'm doing: > library(limma) > targets <- readTargets("neurogenesis.txt") > RG <- read.maimages(targets, path="neurogenesis", source="agilent") > RG <- backgroundCorrect(RG,method="minimum") > RG$R <- NULL > RG$Rb <- NULL > RG$G <- normalizeBetweenArrays(RG$G, method="quantile") > RG$G <- log2(RG$G) > f <- factor(targets$Condition, levels = unique(targets$Condition)) > design <- model.matrix(~0 + f) > colnames(design) <- levels(f) > fit <- lmFit(RG$G,design) > contrast.matrix <- > makeContrasts("Condition1-Condition2",levels=design) > fit2 <- contrasts.fit(fit,contrast.matrix) > fit2 <- eBayes(fit2) > topTable(fit2, adjust="BH", coef="Condition1-Condition2") > > This works, but the problem is that because I cannot put RG (as an > RGList object) into lmFit, I lose the Probe Names in topTable. I > think I > could theoretically match them up again with my original list, but > this > seems very clumsy. > > > Hi, Marcel. > > It is always a good idea to read the help pages for any new functions > you are using, particularly those that appear to be causing problems. > The topTable() function includes an argument for specifying a gene list. > > Sean > > > > One solution appears to be to shift my RG data into an ExpressionSet > object, but I'm not sure how to do this in R. > > I see that LIMMA has recently added single channel support through the > EListRaw and EList objects, but I didn't have any luck with these > either > as there (currently) doesn't appear to be a way to go from an EListRaw > to an EList object? I get the impression that in the future, I will > simply be able to go: > > E <- read.maimages(targets, path="neurogenesis", source="agilent", > channels=1) > ENorm <- normalizeBetweenArrays(E, method="quantile") > ... > fit <- lmFit(ENorm,design) > etc > > But unfortunately normalizeBetweenArrays does not yet take EListRaw as > input. > > So my question is - is there a way I can maintain my probe annotations > at the lmFit step? > or more specifically - how do I shift the data from an RGList object > into an ExpressionSet object? > or... how can I shift from an EListRaw object to an EList object? > > Thanks in advance for any help or advice. > > Regards, > Marcel. > > -- > Marcel Dinger > <http: jsm-="" research.imb.uq.edu.au="" groupwiki="" index.php?title="Marcel_Dinger">, > Ph.D., > Senior Research Officer, > Division for Genomics and Computational Biology, > Institute for Molecular Bioscience, > University of Queensland, > Brisbane, Australia. > > <mailto:m.dinger@uq.edu.au <mailto:m.dinger@uq.edu.au="">> > > > > [[alternative HTML version deleted]] > > _______________________________________________ > Bioconductor mailing list > Bioconductor@stat.math.ethz.ch <mailto:bioconductor@stat.math.ethz.ch> > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: > http://news.gmane.org/gmane.science.biology.informatics.conductor > > [[alternative HTML version deleted]]
ADD REPLY

Login before adding your answer.

Traffic: 578 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6