Hi.
First, please post the complete script/code as you use it (it's free)
to avoid any risk of ambiguity. This will be even more important as
we soon release the CRMA v2 method, which will look very similar but
uses slightly different arguments.
I will try to guide what you need to do, but it makes sense if I first
explain the background a bit.
THEORY:
Theoretically, the allelic-crosstalk calibration and the averaging
probe-level summarization are both real single-array methods, that is,
you can process each array independent of the others and the outcome
of each array remain the same regardless of what other arrays you have
in the data set.
The fragment-length normalization as described in the CRMA paper uses
a reference which is calculated from the pool of all arrays. This is
the version that is implemented in aroma.affymetrix v0.9.5 and
described online. However, the normalization can equally well be done
towards a constant (as mentioned in the CRMA paper; and described in
detail in the submitted CRMA v2 paper), which then also makes this
step a truly single-array normalization method. This approach will be
available in the next release (very soon) [which you then will be able
to specify as FragmentLengthNormalization(ces, target="zero")].
To conclude, in CRMA [v1] all steps but the last are single array by
nature, and in CRMA v2 the complete pipeline will be single array by
nature.
PRACTICE:
Traditionally, most Affymetrix analysis has been based on multi-array
methods. The framework for probe-level summarization in
aroma.affymetrix is based on this as well, which currently complicated
single-array processing. I am working on how to modify
aroma.affymetrix such that this can be done easily. Until then, you
can do then following:
Step 1) For each batch of arrays (say old and new arrays), crosstalk
calibration and probe summarize (but don't do fragment-length
normalization) them as separate data set:
library("aroma.affymetrix");
log <- Arguments$getVerbose(-10, timestamp=TRUE);
cdf <- AffymetrixCdfFile$byChipType("GenomeWideSNP_6", tags="Full");
cesList <- list();
for (dataSet in c("DataSet1", "DataSet2")) {
csR <- AffymetrixCelSet$byName(dataSet, cdf=cdf);
acc <- AllelicCrosstalkCalibration(csR);
csC <- process(acc, verbose=log);
plm <- AvgCnPlm(csC, mergeStrands=TRUE, combineAlleles=TRUE);
units <- fit(plm, verbose=log);
ces <- getChipEffectSet(plm);
cesList[[dataSet]] <- ces;
}
print(cesList);
Note, if a data sets is already processed it will be quick. Any
number of data sets can be merged this way.
2) The above will give you a list 'cesList' of ChipEffectSet:s (here
CnChipEffectSet:s). We can now combine these into one big data set as
follows:
ces <- clone(cesList[[1]]);
cesList <- cesList[-1];
for (kk in seq(along=cesList)) {
append(ces, cesList[[kk]]);
}
rm(cesList);
setTags(ces, c("*,combined"));
print(ces);
You should see that the combined data set will contain all arrays -
sum up the counts you get from print(cesList).
Whenever you use append(ces, other) on a data set, then fullname of
the combined data set will be that of 'ces', i.e. getFullName(ces).
To avoid mixing it up with the original set cesList[[1]], we add the
tag 'combined' (you can choose whatever you want). For example, you
will get something like:
print(getFullName(cesList[[1]]))
[1] DataSet1,ACC,ra,-XY,AVG,+300,A+B
print(getFullName(cesList[[2]]))
[1] DataSet2,ACC,ra,-XY,AVG,+300,A+B
print(getFullName(ces))
[1] DataSet1,ACC,ra,-XY,AVG,+300,A+B,combined
Step 3) Now you have a ChipEffectSet 'ces' of all chip-effect sets
combined which you can pass to the fragment-length normalization, e.g.
fln <- FragmentLengthNormalization(ces);
cesN <- process(fln, verbose=log);
As mentioned above, in next release, you will be able to put the
fragment-length normalization within the above for loop (CRMA v2),
saving you even more time/hassle. Further in the future
aroma.affymetrix will be clever enough so you won't have to worry
about any of the above (except understanding the difference between
single- and multi-array models/methods).
Hope this helps.
Henrik
REFERENCES:
[CRMA paper] H. Bengtsson; R. Irizarry; B. Carvalho; T. Speed,
Estimation and assessment of raw copy numbers at the single locus
level, Bioinformatics, 2008. [pmid: 18204055] [doi:
10.1093/bioinformatics/btn016]
<continuedFrom>
http://groups.google.com/group/aroma-affymetrix/browse_thread/thread/269282aae0842811
</continuedFrom>