[BioC] Ringo and dye swaps

Joern Toedling Joern.Toedling at curie.fr
Thu Jul 29 13:53:15 CEST 2010


Hello,

using the targets file to indicate dye-swaps is a nice idea, but unfortunately
Ringo currently cannot understand this.

The values that Ringo works with in later steps are always the ratios 
ChIP/input
and they are assumed to correspond to the separate channels. So when
calling "preprocess" one can indicate which channel (Cy3/Cy5) is ChIP and
which is Input but no such dye-swaps at the moment.

If you are using a within-array normalization, such as the Nimblegen scaling
or Loess" you will need to replace the respective columns in the object
resulting from preprocess. For example, when they are on log-scale as in this
case, the inverse will give you the log(ChIP/input):
exprs(X)[,2] <- -exprs(X)[,2]

For between-array normalization types, you need to replace the respective
columns before to ensure that one channel is only ChIP, the other only Input.
In your case:
temp <- RG$G[,2]  # G corresponds to Cy3
RG$G[,2] <- RG$R[,2] 
RG$R[,2] <- temp

This should do the trick. I apologize for this slightly dirty hack, but I did
not have dye-swap samples in mind when I wrote "preprocess". Maybe it would be
good to have an extra argument in the function for such cases.

Regards,
Joern

On Thu, 29 Jul 2010 12:42:12 +0200, jbethune wrote
> Dear all,
> 
> I'm using Ringo to analyse agilent tiling arrays. I have two arrays
> measuring the same sample but the second one is dye-swapped.
> 
> The obivious solution is to create a target-file like this:
> 
> SlideNumber FileName     Species Tissue  Cy3     Cy5     Antibody
> dosR1       array1.txt   m_bovis unspec  input   dosR    dosR
> dosR2       array2.txt   m_bovis unspec  dosR    input   dosR
> 
> where the Cy3 and Cy5 values are exchanged for the second array.
> 
> But this exchange of Cy3 and Cy5 values does not have any effect on the
> result (the values are the same and the plot of the dye-swapped array
> seems to be upside-down in both cases).
> 
> I would very much appreciate if someone could tell me if this 
> approach with the target file is right so that I can search for the error
> elsewhere.
> 
> If you are interested in further details, this is the relevant code:
> 
> dataDir <- "data/";
> 
> used_genome <- "m. bovis";
> load( file = file.path( dataDir, "m_bovis_gff.RData" ) );
> 
> replicateAnalysis <- function( arrayfiles, targetfile ) {
> 	library( "Ringo" );
> 	RG <- read.maimages( arrayfiles, source="agilent" );
> 	RG$targets <- readTargets( targetfile );
> 	pA <- extractProbeAnno( RG, "agilent", genome=used_genome,
> microarray=paste( "Agilent Array with species", used_genome ) );
> 	X <- preprocess( RG[ RG$genes$ControlType == 0, ],
>  method="nimblegen", idColumn="ProbeName" ); 	sampleNames( X ) <- X$SlideNumber;
> 	smoothX <- computeRunningMedians( X, modColumn="Antibody",
> winHalfSize=500, min.probes=3, probeAnno=pA );
> 	sampleNames( smoothX ) <- paste( sampleNames( X ), "smooth",
>  sep="." ); 	plot( seq( nrow( exprs( smoothX ) ) ), exprs( smoothX 
> )[,1], col="red", type="l", xlab="", ylab="" ); 	if( length( 
> arrayfiles ) == 2 ) { 		lines( seq( nrow( exprs( smoothX ) ) ),
>  exprs( smoothX )[,2], col="blue", type="l" ); 	} 	return( smoothX 
> ); }
> 
> hm <- c( file.path( dataDir, "array1.txt" ), file.path( dataDir,
> "array2.txt" ) );
> target_hm <- file.path( dataDir, "targets_11_1_replicates" );
> 
> hm_result <- replicateAnalysis( hm, target_hm );
> title( "HM Design replicates", xlab="position", ylab="fold change" );
> legend( "topright", c( "dosR1", "dosR2" ), fill=c("red", "blue"),
> col=c("red", "blue" ) );
> 
>
---
Joern Toedling
Institut Curie -- U900
26 rue d'Ulm, 75005 Paris, FRANCE
Tel. +33 (0)156246927



More information about the Bioconductor mailing list