| applyCdfGroups {affxparser} | R Documentation |
Applies a function over the groups in a CDF structure.
applyCdfGroups(cdf, fcn, ...)
cdf |
A CDF list structure. |
fcn |
A function taking a list structure of group elements. |
... |
Arguments passed to the fcn function. |
Returns an updated CDF list structure.
Henrik Bengtsson (http://www.braju.com/R/)
To merge groups with the same name, for instance the forward and
reverse strands of SNP arrays, see cdfMergeStrands().
To merge fields for allele A and allele B, see
cdfMergeToQuartets().
To add sequence shifts of the probes, see cdfAddProbeOffsets().
To add counts of the number of nucleotides that mismatch the target
sequences for allele A and allele B, respectively, see
cdfAddBaseMmCounts().
for (zzz in 0) {
# Find the CDF file for the Mapping 100K Xba array
chipType <- "Mapping50K_Xba240";
cdfFile <- findCdf(chipType)
if (is.null(cdfFile))
break;
# Probeset SNP_A-1658298 (dbSNP rs7034018) has equal number of
# sense and anti-sense probes, but for the latter group the
# SNP "interrogating" probe pair has been excluded in
# Affymetrix' probe selection process when designing the
# Mapping 100K Xba array.
# Identify the unit index from the unit name
probeset <- "SNP_A-1658298"
unit <- which(readCdfUnitNames(cdfFile) == probeset)
rm(probeset)
# Read the CDF file
cdf0 <- readCdfUnits(cdfFile, units=unit, stratifyBy="pmmm")
cat("Default CDF structure:\n")
print(cdf0)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Infer the (true or the relative) offset for probe quartets.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cdf <- applyCdfGroups(cdf0, cdfAddProbeOffsets)
cat("Probe offsets:\n")
print(cdf)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Identify the number of nucleotides that mismatch the
# allele A and the allele B sequences, respectively.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cdf <- applyCdfGroups(cdf, cdfAddBaseMmCounts)
cat("Allele A & B target sequence mismatch counts:\n")
print(cdf)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Combine the signals from the sense and the anti-sense
# strands in a SNP CEL files.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# First, join the strands in the CDF structure.
cdf <- applyCdfGroups(cdf, cdfMergeStrands)
cat("Joined CDF structure:\n")
print(cdf)
# Then, read the CEL file using this new structure
# celFile <- "NA06985_Hind_B5_3005533.CEL"
# cel <- readCelUnits(celFile, cdf=cdf)
# cat("Joined CEL intensities:\n")
# print(cel)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Rearrange values of group fields into quartets. This
# requires that the values are already arranged as PMs and MMs.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cdf <- applyCdfGroups(cdf0, cdfMergeToQuartets)
cat("Probe quartets:\n")
print(cdf)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Get the x and y cell locations
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
x <- unlist(applyCdfGroups(cdf, cdfGetFields, "x"), use.names=FALSE)
y <- unlist(applyCdfGroups(cdf, cdfGetFields, "y"), use.names=FALSE)
# Clean up
rm(chipType, cdfFile, unit, cdf0, cdf, x, y)
} # for (zzz in 0)
rm(zzz)