# R/findCdf.R In affxparser: Affymetrix File Parsing SDK

#### Documented in findCdf

########################################################################/**
# @RdocFunction findCdf
#
# @title "Search for CDF files in multiple directories"
#
# \description{
#  @get "title".
# }
#
# @synopsis
#
# \arguments{
#  \item{chipType}{A @character string of the chip type to search for.}
#  \item{paths}{A @character @vector of paths to be searched.
#    The current directory is always searched at the beginning.
#    If @NULL, default paths are searched.  For more details, see below.}
#  \item{recursive}{If @TRUE, directories are searched recursively.}
#  \item{pattern}{A regular expression file name pattern to match.}
#  \item{...}{Additional arguments passed to @see "findFiles".}
# }
#
# \value{
#  Returns a @vector of the full pathnames of the files found.
# }
#
# \details{
#   Note, the current directory is always searched first, but never
#   recursively (unless it is added to the search path explicitly).
#   This provides an easy way to override other files in the search path.
#
#   If \code{paths} is @NULL, then a set of default paths are searched.
#   The default search path constitutes:
#   \enumerate{
#    \item \code{getOption("AFFX_CDF_PATH")}
#    \item \code{Sys.getenv("AFFX_CDF_PATH")}
#   }
#
#   One of the easiest ways to set system variables for \R is to
#   set them in an \code{.Renviron} file, e.g.
#   \preformatted{
#     # affxparser: Set default CDF path
#     AFFX_CDF_PATH=${AFFX_CDF_PATH};M:/Affymetrix_2004-100k_trios/cdf # AFFX_CDF_PATH=${AFFX_CDF_PATH};M:/Affymetrix_2005-500k_data/cdf
#   }
#   See @see "base::Startup" for more details.
# }
#
# @examples "../incl/findCdf.Rex"
#
# \seealso{
#   This method is used internally by @see "readCelUnits" if the CDF
#   file is not specified.
# }
#
# @author "HB"
#
# @keyword file
# @keyword IO
#**/#######################################################################
findCdf <- function(chipType=NULL, paths=NULL, recursive=TRUE, pattern="[.](c|C)(d|D)(f|F)$", ...) { settings <- getOption("affxparser.settings"); # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Customized search method? # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - findFcn <- settings$methods$findCdf; if (!is.null(findFcn)) { if (!is.list(findFcn)) findFcn <- list(findFcn); for (fcn in findFcn) { # Pass arguments as is pathnames <- fcn(chipType=chipType, paths=paths, recursive=recursive, pattern=pattern, ...); if (!is.null(pathnames)) return(pathnames); } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Setup search path and pattern # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (is.null(paths)) { paths <- c(getOption("AFFX_CDF_PATH"), Sys.getenv("AFFX_CDF_PATH")); } paths <- unlist(strsplit(paths, split=";"), use.names=FALSE); if (!is.null(chipType)) { if (regexpr("[.](c|C)(d|D)(f|F)$", chipType) !=-1)
warning("Argument 'chipType' of findCdf() has suffix '.cdf':", chipType);
pattern <- paste(chipType, pattern, sep="");
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Search
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 1. First, search the current directory
pathnames <- findFiles(pattern=pattern, paths=".", recursive=FALSE, ...);
if (!is.null(pathnames))
return(pathnames);

# 2. Then, scan all of the search path
findFiles(pattern=pattern, paths=paths, recursive=recursive, ...);
}

############################################################################
# HISTORY:
# 2007-08-27
# o The current path is never scanned recursively (unless explicitly
#   specified in the search path). This is to avoid endless scans in case
#   the search path has not been set.
# o Added argument 'recursive=TRUE' to findCdf().
# 2007-02-12 [moved to affxparser 2007-03-28]
# o Added option 'affxparser.settings' (for now private), allowing for an
#   alternative search function to be set it element methods\$findCdf.
#   This is utilized by the aroma.affymetrix package to look for CDF
#   using a more formalized hierarchical directory structure.
# 2006-09-21
# o findCdf() now gives a warning *.cdf extension is given, but tries not
#   to resolve it.
# 2006-09-15
# o The current directory "." was not the first directory scanned as
#   documented. Also added cdf/ and data/cdf to the beginning and not
#   at the end of the search path.
# 2006-03-14
# o Now making use of findFiles(), which makes this function much shorter.
# o Migrated the code to work without R.utils too.
# o Added system environment variable and option to the default path.
# 2006-02-22
# o Created.
############################################################################


## Try the affxparser package in your browser

Any scripts or data that you put into this service are public.

affxparser documentation built on Nov. 8, 2020, 7:26 p.m.