readRawHeader()
for TabularTextFile
would
produce an obscure “Error in if (!isEmpty) { : argument is of length
zero” if the file is empty. Now it detects when the file is empty and
gives a more informative error message.dsApplyInPairs()
is defunct. Use
future.apply::future_mapply()
instead.extract()
from the
R.rsp package.dsApply()
, which has been defunct since version
2.13.0 (April 2019). Use future.apply::future_lapply()
instead.dsApplyInPairs()
is deprecated. Use
future.apply::future_mapply()
instead.
dsApply()
is defunct. Use
future.apply::future_lapply()
instead.
Removed defunct and hidden argument colClassPatterns
of readDataFrame()
for TabularTextFile
. Use
argument colClasses
instead.
Removed defunct and hidden argument files
of
extractMatrix()
for GenericTabularFileSet
. Use
extractMatrix(ds[files], ...)
instead.
loadToEnv()
for RDataFile
was not declared
an S3 method.Package requires R (>= 3.2.0) released April 2015.
Package no longer requires Bioconductor.
dsApply()
is now deprecated. Instead, use
future.apply::future_lapply()
.
dsApply()
with
.parallel = "BiocParallel::BatchJobs"
and
"BatchJobs"
are now defunct. Instead, use
future.apply::future_lapply()
with one of the many backends
that implements the Future API.
Now getChecksum()
for ChecksumFile
defaults to not creating a checksum file (which is the default for other
types of file), but instead always return the checksum of the file by
only calculating and in memory. This prevents for instance the
equals()
test on two different checksum files to generate
another set of checksum files on themselves.
Now findByName()
for GenericDataFileSet
reports on the non-existing root paths in error messages.
GenericDataFile
and GenericDataFileSet
no longer report on memory (RAM) usage of objects.
dsApply(..., .parallel = "future")
now used
future_lapply()
of the future package
internally. dsApply()
will soon be deprecated (see
below).Argument colClassPatterns
of
readDataFrame()
for TabularTextFile
is now
defunct. Use colClasses
instead.
Argument files
of extractMatrix()
for
GenericTabularFileSet
is defunct.
dsApply()
with either
.parallel = "BiocParallel::BatchJobs"
or
"BatchJobs"
is deprecated. Instead, use
future::future_lapply()
with whatever choice of
future::plan()
preferred.
Defunct argument aliased
of
getDefaultFullName()
for GenericDataFile
and
defunct argument alias
of GenericDataFileSet()
have been removed.
Now file sizes are reported using IEC binary prefixes, i.e. bytes, KiB, MiB, GiB, TiB, …, YiB.
Added hasChecksumFile()
for
GenericDataFile
.
hasBeenModified()
for GenericDataFile
gained argument update
.
na.omit()
for GenericDataFileSet
;
the default one in the stats package works equally
well.Arguments$getTags()
failed to drop missing
values.
equals(df, other)
for GenericDataFile
would give an error if other
was not a
GenericDataFile
.
dropTags()
would drop name if a tag had the same
name.
getOneFile()
on a GenericDataFileSet
with a single missing file would give an error, now it gives a file with
an NA pathname.
Preparing to make the default pathname for
GenericDataFile()
to become NA_character_
. It
is currently NULL, but the goal is to enforce
length(pathname)
to be one.
extractMatrix(ds, files, ...)
for
GenericTabularFileSet
is deprecated. Use
extractMatrix(ds[files], ...)
instead.
dsApply(..., .parallel = "future")
,
which utilizes the future package.Added support for sortBy(..., by = "mixedroman")
for
GenericDataFileSet
.
Now commentChar = ""
and
commentChar = FALSE
also disables searching for comment
characters (just as commentChar = NULL
) for
TabularTextFile
.
readDataFrame()
for TabularTextFile
with
column-names translators set, could give an error “Number of read data
columns does not match the number of column headers: …”. This was due to
an update in utils::read.table()
as of R v3.2.1 svn rev
68831.lapply()
,
dsApply()
returns a list with names corresponds to the full
names of the data set.getFullNames(..., onRemapping)
to
GenericDataFileSet
to warn/err on full-name translations
that generates inconsistent fullname-to-index maps before and
after.linkTo(..., skip = TRUE)
would give error “No
permission to modify existing file: …” also in the case when the proper
link already exists and there is no need to create a new one.
Now getReadArguments()
for
TabularTextFile
let duplicated named
colClasses
entries override earlier ones,
e.g. colClasses=c("*" = NA, "*" = "NULL", a = "integer")
is effectively the same as
colClasses=c("*" = "NULL", a = "integer")
. Added package
test.
nchar(..., type = "chars")
is used
internally for all file and directory names (including tags).as.character()
for GenericDataFile
with a
missing (NA) pathname on recent R-devel (>= 2015-04-23) related to an
update on how nchar()
handles missing values.Now [[
for GenericDataFileSet
returns a
GenericDataFile
not only if a numeric index is given but
also if a character string is given.
Now argument idx
for getFile()
for
GenericDataFileSet
can also be a character string, in which
case the file returned is identified using
indexOf(..., pattern = idx, by = "exact", onMissing = "error")
.
Added RDataFile
and RDataFileSet
classes for *.RData
files.
requireNamespace()
instead of
require()
internally.as.character()
for ChecksumFile
gave an
error when the checksum files was missing.Added support for sortBy(..., by = "filesize")
and
sortBy(..., decreasing = TRUE)
for
GenericDataFileSet
.
Added rep()
for
GenericDataFileSet
.
NOTES:
readDataFrame()
would ignore argument
colClasses
iff it had no names. Added package system test
for this case.commentChar = NULL
for
TabularTextFile
:s failed.readChecksums()
for
ChecksumFileSet
.byPath()
for GenericDataFileSet
would
output verbose message enumerating files loaded to stdout instead of
stderr.dsApply()
for GenericDataFileSet
would
coerce argument verbose
to logical before applying the
function.sep
for readDataFrame()
would
only work for ,
and \t
; now it works for any
separator.Now indexOf()
first searched by exact names, then as
before, i.e. by regular expression and fixed pattern matching. Added
package system tests that contains particularly complicated cases for
this. This was triggered by a rare but real use case causing an error in
aroma.affymetrix. Thanks Benilton Carvalho for
reporting on this.
Added argument by
to indexOf()
for
GenericDataFileSet
|List.
Added SuggestsNote
field to DESCRIPTION with list of
packages that are recommended for the most common use cases.
Bumped package dependencies.
ds[[idx]]
instead of
getFile(ds, idx)
where possible.dsApply(..., .parallel = "none")
would lower the
verbose threshold before applying the function resulting is less verbose
output in the non-parallel case.GenericDataFile
would fail with linkTo()
on
Windows systems without necessary privileges. Made the test less
conservative. Also, added an Rd section on privileges required on
Windows for linkTo()
to work. Thanks to Brian Ripley for
reporting on this.NOTES:
readColumns()
for TabularTextFile
handles also header-less files.copyTo()
for GenericDataFileSet
no longer
passes ...
to byPath()
when constructing the
return data set.renameTo()
passes ...
to
R.utils::renameFile()
making it possible to also overwrite
existing files.Added is.na()
for GenericDataFile
and
GenericDataFileSet
and na.omit()
for the
latter, which already supports anyNA()
.
Added linkTo()
for GenericDataFile
,
which create a symbolic link at a given destination pathname analogously
to how copyTo()
creates a file copy at a given destination
pathname.
copyTo()
for GenericDataFile
passes
...
to R.utils::copyFile()
.copyTo()
and renameTo()
for
GenericDataFile
had verbose output enabled by default.digest2()
is now defunct.Added duplicated()
, anyDuplicated()
,
and unique()
for GenericDataSet
, which all
compare GenericDataFile
:s using the equals()
method.
Now c()
for GenericDataFileSet
also
works to append GenericDataFile
:s. Added package system
test for common use cases of c()
.
Added nbrOfColumns()
for
GenericTabularFile
, which, if the number of columns cannot
be inferred from the column names, will fall back to read the first row
of data and use that as the number of columns.
Now nbrOfColumns()
for
ColumnNamesInterface
returns NA if column names cannot be
inferred and hence not be counted.
Now readDataFrame(..., header = FALSE)
works as
expected for tabular text files without headers.
Now getReadArguments()
for
TabularTextFile
returns a colClasses
vector of
the correct length also in the case when there are no column
names.
loadRDS()
available for plain files and
RdsFile
:s.RdsFile
and RdsFileSet
objects for
handling *.rds
file sets.GenericSummary
.ChecksumFile
and
ChecksumFileSet
.extract()
for GenericDataFileSet
also
handles when the data set to be extracted is empty,
e.g. extract(GenericDataFileSet(), NA_integer_)
. Also,
added support for argument onMissing = "dropall"
, which
drops all files if one or more missing files where requested. Added
package system tests for these case.GenericDataFileSet$byPath(..., recursive = TRUE)
would be
very slow setting up the individual files, especially for large data
sets. Now it’s only slow for the first file.Added "[["(x, i)
for
GenericDataFileSet
, which gets a
GenericDataFile
by index i
in
[1,length(x)]
. When i
is non-numeric, the next
"[["(x, i)
method in the class hierarchy is used, e.g. the
one for Object
:s.
Added gzip()
/gunzip()
for
GenericDataFileSet
.
Added anyNA()
to GenericDataFileSet
to
test whether any of the pathnames are NA, or not.
getChecksum()
on
GenericDataFile
:s and
GenericDataFileSet
:s.append()
to become a
generic function does now call base::append()
in the
default, instead of copy the latter. All this will eventually be
removed, when proper support for c
, [
,
[[
, etc. has been added everywhere.getChecksum()
from
R.cache instead of creating its own. This solves the
problem of the default getChecksum()
of
R.cache not being found.readDataFrame()
for
TabularTextFile
subsets by row, before reparsing numerical
columns that were quoted.autoload()
:s used internally.Deprecated digest2()
and deprecated -> defunct
-> dropped.
Now GenericDataFileSet()
gives an error informing
that argument alias
is defunct.
Now no generic functions are created for defunct methods.
R.filesets
Package
object is also
available when the package is only loaded (but not attached).cat()
from
R.utils.SPEEDUP: Package no longer uses
R.utils::whichVector()
, which use to be 10x faster, but
since R 2.11.0 which()
is 3x times again.
Package no longer utilizes import()
, only
importFrom()
:s.
WORKAROUND: For now, package attaches the R.oo
package. This is needed due to what appears to be a bug in how
R.oo finalizes Object
:s assuming
R.oo is/can be attached. Until that is resolved, we
make sure R.oo is attached.
Forgot to import
R.methodsS3::appendVarArgs()
.
[()
and c()
for
GenericDataFileSet
.private = FALSE
to byPath()
of GenericDataFileSet
.isGzipped()
ignores the case of the filename
extension when testing whether the file is gzipped or not.rm()
calls with NULL
assignments.digest2()
, which soon will
be deprecated.\usage{}
lines are at most 90
characters long.In addition to a fixed integer, argument skip
for
readDataFrame()
(default and for
TabularTextFile
) may also specify a regular expression
matching the first row of the data section.
Now argument skip
to TabularTextFile
and readDataFrame()
for that class causes the parser to
skip that many lines including commented lines, whereas before it did
not count commented lines.
Added a default readDataFrame()
for reading data
from one or more tabular text files via the
TabularTextFile
/TabularTextFileSet
classes.
colClassPatterns
of
readDataFrame()
for TabularTextFile
has been
renamed to colClasses
.startupMessage()
of
R.oo.indexOf()
for
GenericDataFileSet
throws an exception if user tries to
pass an argument names
.Added head()
and tail()
for
GenericTabularFile
.
Added subsetting via [()
to
GenericTabularFile
.
nbrOfRows()
for TabularTextFile
forgot
to exclude comment rows in the file header.
readColumns()
for GenericTabularFile would not
preserve the order of the requested columns
.
Added getOneFile()
for
GenericDataFileSet
, which returns the first
GenericDataFile
with a non-missing pathname.
Added argument absolute = FALSE
to
getPathname()
for GenericDataFile
.
GenericDataFile
stores the absolute
pathname of the file, even if a relative pathname is given. This makes
sure that the file is found also when the working directory is
changed.equals()
for GenericDataFileSet
would only
compare the first GenericDataFile
in each set.isGzipped()
to GenericDataFile
.writeColumnsToFiles()
to
GenericTabularFile
. Used to be available only for
TabularTextFile
.getDefaultColumnNames()
for
TabularTextFile
did not use columnNames
if it
was set when creating the TabularTextFile
object.
Now getReadArguments()
for
TabularTextFile
drops arguments that are NULL, because they
could cause errors downstreams, e.g. readDataFrame()
calling read.table(..., colClasses = NULL)
=>
rep_len(NULL, x)
=> “Error in rep_len(colClasses, cols)
: cannot replicate NULL to a non-zero length”.
as.list()
for GenericDataSet
to
return a named list of GenericDataFile
:s
(previously it had no names). The names are the (translated) full names
of the GenericDataFile
:s.lapply()
and sapply()
for
GenericDataSet
, because the corresponding functions in the
base package utilizes as.list()
.Now GenericDataFile()
retrieves the file time stamps
such that hasBeenModified()
returns a correct value also
when first called, and not only TRUE just in case. This has the effect
that getChecksum()
will detected cached results already at
the second call as long as the file has to been modified. Previously it
took two calls to getChecksum()
for it to be properly
cached.
Now declaring more internal and temporary Object
fields as “cached”, which means they will be cleared if
clearCache()
or gc()
is called on the
corresponding object.
Added further verbose output to
TabularTextFileSet
.
DOCUMENTATION: Minor corrections to help pages.
NOTES:
TabularTextFile
to ignore header comment arguments when
inferring column names and classes.clearCache()
for GenericDataFileSet
relies on ditto of Object
to clear all cached fields (=
with field modifier "cached"
).{get,set}Label()
for
GenericDataFile
and {get,set}Alias()
for
GenericData{File,FileSet}
. Related arguments such at
alias
to GenericDataFileSet
and
aliased
to getDefaultFullName()
for
GenericDataFile
are also deprecated.seq_along(x)
instead of
seq(along = x)
everywhere. Similarly, seq(ds)
where ds
is GenericDataFileSet
is now replaced
by seq_along(ds)
. Likewise, seq_len(x)
replaces seq(length = x)
, and length(ds)
replaces nbrOfFiles(ds)
.Now TabularTextFile()
tries to infer whether the
data section contains column names or not. This is done by comparing to
the optional columnNames
header argument. If that is not
available, it will (as before) assume there are column names.
Now readDataFrame()
acknowledge header comment
arguments columnNames
and columnClasses
if
specified in the file.
Now getDefaultColumnNames()
for
TabularTextFile
falls back to header comment argument
columnNames
, if there are no column names in the actual
data table.
Now readRawHeader()
for TabularTextFile
also parses and returns header comment arguments.
ColumnNamesInterface
which
GenericTabularFile
now implements. Classes inheriting from
GenericTabularFile
should rename any
getColumnNames()
method to
getDefaultColumnNames()
.whichVector()
with which()
,
because the latter is now the fastest again.setColumnNames()
for
GenericTabularFile
, which utilizes
setColumnNamesTranslator()
.{get,set}ColumnNameTranslator()
in favor of
{get,set}ColumnNamesTranslator()
; note the plural
form.readDataFrame()
for TabularTextFile
no
longer returns attribute fileHeader
, unless argument
debug
is TRUE.validate()
to GenericDataFileSet
,
which iteratively calls validate()
on all the
GenericDataFile
:s in the set. The default is to return NA,
indicating that no validation was done.Arguments$getReadablePath()
instead of
filePath(..., expandLinks = "any")
.Arguments$getFilename()
below....
to
NextMethod()
, cf. R-devel thread ‘Do not pass’…’
to NextMethod() - it’ll do it for you; missing documentation, a bug or
just me?’ on Oct 16, 2012.Arguments$getFilename()
from this package to
R.utils v1.17.0.fromFiles()
for GenericDataFileSet
is now defunct in place for byName()
, which has been
recommended since January
Now readDataFrame()
for TabularTextFile
defaults to read strings as characters rather than as factors. To read
strings as factors, just pass argument
stringsAsFactors = TRUE
.
Added readDataFrame()
for
TabularTextFileSet
.
ROBUSTNESS: Now getHeader()
for
TabularTextFile
checks if the file has been modified before
returned cached results.
trim()
being overridden by ditto from the IRanges package, iff
loaded.extractMatrix()
for
GenericTabularFile
adds column names just as ditto for
GenericTabularFileSet
does..Internal()
calls.GenericDataFile
and
GenericDataFileSet
handle so called “empty” files, which
are files with NULL pathnames.getCommentChar()
to
TabularTextFile
and argument commentChar
to
its constructor. This allows to use custom comment characters other than
just "#"
.GenericDataFileSet$byName(..., subdirs)
would throw
Error in strsplit(subdirs, split = "/\\")
iff
subdirs != NULL
.
Improved the handling of the newly introduced depth
parameter, e.g. by making it optional/backward compatible.
GenericDataFileSet
, such that one can
correctly infer fullname and subdirs from the path.named
to getTags()
for
FullNameInterface
. If TRUE, tags of format
"<name>=<value>"
will be parsed and returned as
a named "<value>"
,
e.g. "foo,n=23,bar,n=42"
is returned as
c("foo", "n"="23", "bar", "n"="42")
.readDataFrame(..., colClasses = ..., trimQuotes = TRUE)
of TabularTextFile
will read numeric columns that are
quoted. This is done by first reading them as quoted character strings,
dropping the quotes, and then rereading them as numeric values..fileClass
to appendFiles()
for GenericDataFileSet
.ROBUSTNESS: Now appendFiles()
for
GenericDataFileSet
asserts that all files to be appended
are instances of the file class of this set as given by the static
getFileClass()
.
ROBUSTNESS: Added argument .assertSameClass
to
appendFiles()
for GenericDataFileSet
, which if
TRUE asserts that the files to be appended inherits from the same class
as the existing files. Before this test was mandatory.
getChecksum()
to GenericDataFileSet
,
which calculates the checksum of the object returned by the protected
getChecksumData()
. Use with care, because what objects
should be the basis of the checksum is not clear, e.g. should it be only
the file system checksum, or should things such as translated fullnames
be included as well?equals()
for GenericDataFile
would
consider two files not to be equal only if their checksums was equal,
and vice verse. Also, when creating the message string explaining why
they differ an error would have been thrown.hpaste()
internally wherever applicable.appendFullNameTranslatorBy<what>()
for
<character>
and <function>
assert
that the translator correctly returns exactly one string. This has the
effect that setFullName()
and friends are also tested.Added =
to the list of safe characters for
Arguments$getFilename()
.
Added fullname()
, name()
,
tags()
, and dropTags()
.
findByName()
for
GenericDataFileSet
it would throw “<simpleError in
paths[sapply(rootPaths, FUN = isDirectory)]: invalid subscript type
‘list’>” in case no matching root path directories existed.Added dropRootPathTags()
.
GENERALIZATION: Added support to findByName()
for
GenericDataFileSet
such that root paths also can be
specified by simple regular expression (still via argument
paths
). Currently it is only the last subdirectory that can
be expanded, e.g. foo/bar/data(,.*)/
.
GENERALIZATION: Now byName()
for
GenericDataFileSet
will try all possible data set
directories located when trying to setup a data set. Before it only
tried the first one located. This new approach is equally fast for the
first data set directory as before. The advantage is that it adds
further flexibilities, e.g. the first directory may not be what we want
but the second, which can be further tested by the byPath()
and downstream methods such as the constructor.
ROBUSTNESS: Now writeColumnsToFiles()
for
TabularTextFile
writes files atomically, which should
minimize the risk for generating incomplete files.
getTags()
for Arguments
from
aroma.core package.fromFiles()
of
GenericDataFileSet
has been deprecated, if still called by
someone.GENERALIZATION: Now append()
for
GenericDataFileSet
tries to also append
non-GenericDataFileSet
object by passing them down to
appendFiles()
assuming they are
GenericDataFile
:s.
GENERALIZATION: Now appendFiles()
for
GenericDataFileSet
also accepts a single item. Thus, there
is no longer a need to wrap up single items in a list.
ROBUSTNESS: Now GenericDataFileSet$byName()
asserts
that arguments name
and tags
contain only
valid characters. This will for instance prevent passing paths or
pathnames by mistake.
Now appendFullNameTranslator(..., df)
for
FullNameInterface
takes either pattern
or
fixed
translations in data.frame.
Added sortBy()
to GenericDataFileSet
,
which sorts files either in a lexicographic or a mixedsort
order.
DOCUMENTATION: Added more Rd help pages.
DOCUMENTATION: Removed any duplicated \usage{}
statements from the Rd documentation.
indexOf()
for GenericDataFileSet
/List
would return NA if the search pattern/string contained parentheses. The
reason is that such have a special meaning in regular expression. Now
indexOf()
first search by regular expression patterns, then
by fixed strings. Thanks Johan Staaf at Lund University and Larry(?) for
reporting on this issue.Now
GenericDataFileSet$findByName(..., mustExist = FALSE)
do no
longer throw an exception even if there is no existing root
path.
Added argument firstOnly = TRUE
to
findByName()
for GenericDataFileSet
.
Added appendFullNameTranslatorBy...()
methods to the
FullNameInterface
class for data frames,
TabularTextFile
:s, and
TabularTextFileSet
:s.
"NA"
to the default na.strings
returned by getReadArguments()
for
TabularTextFile
.NOTES:
.onUnknownArgs
to
GenericDataFile()
and GenericDataFileSet()
. As
before, the default is to throw an exception if there are unknown
arguments. However, in certain case it is useful to allow (and ignore)
“stray” arguments.indexOf()
of GenericDataFileSet
and
GenericDataFileSetList
did not handle names with regular
expression symbols +
and *
. Thanks to Randy
Gobbel for the initial error report.GenericDataFile
and GenericDataFileSet
.fromFiles()
of
GenericDataSet
. Use byPath()
instead.files
is logical, then
extract()
of GenericDataFileSet
and
GenericDataFileSetList
now asserts that the length of
files
matches the number of available files.exData/
.readColumns(..., column=<string>)
on a
TabularTextFile
would give “Error … object ‘columnNames’
not found”.default = "\\.([^.]+)$"
to
getExtensionPattern()
of GenericDataFile
.
Before the default value was hard coded inside this function.setExtensionPattern(..., pattern = NULL)
of
GenericDataFile
works.Added protected as.data.frame()
to
GenericDataFileSet
List.
Now GenericDataFile(NA, mustExist = FALSE
) is a
valid object. Made all methods aware of such missing files.
Now extract(ds, c(1, 2, NA, 4), onMissing = "NA")
returns a valid GenericDataFileSet
where missing files are
returned as missing GenericDataFile
:s.
Added na.rm = TRUE
to all getTags()
so
that it returns NULL in case the file is missing.
copyTo()
of GenericDataFileSet
quietly
ignores missing files.
Added Rd help for indexOf()
of
GenericDataFileSet
.
ROBUSTNESS: Using new Arguments$getInstanceOf()
were
possible.
Now all index arguments are validated correctly using the new
max
argument of Arguments$getIndices()
. Before
the case where max == 0
was not handled
correctly.
Changed the default to parent = 0
for
getDefaultFullName()
of GenericDataFileSet
to
be consistent with the documentation.
Now GenericDataFile(pathname)
throws an error if
pathname
is referring to a directory.
getPath()
and getDefaultFullName()
of
GenericDataFileSet
would return a logical instead
of character value.
indexOf(ds, names)
of
GenericDataFileSet
would return a logical instead
of an integer vector of NA:s if none of the names
existed.
translateFullName()
of
FullNameInterface
and translateColumnNames()
of GenericTabularFile
throw an exception if some fullnames
were translated into NA. They also assert that no names were dropped or
added in the process.After doing append()
to a
GenericDataFileSet
, the total file size reported would
remain the same.
Appending empty data sets using append()
of
GenericDataFileSet
would give error ‘Error in
this$files[[1]] : subscript out of bounds’.
Added {get,set}ExtensionPattern
() to
FullNameInterface
.
Added getExtension()
to
GenericDataFile
.
appendFullNameTranslatorBylist()
which makes it
possible to do setup a sequence of fullnames translators
fnt1
, fnt2
, fnt3
by calling
setFullNameTranslator(..., list(fnt1, fnt2, fnt3))
.Added support for having a sequence of fullname translator
functions. These can be added using
appendFullNameTranslator()
.
Added an example()
to
FullNameInterface
.
[()
to
TabularTextFile
.Added the FullNameInterface
, which is the interface
class that defines what fullnames, names, tags etc are.
Now setFullName*s*Translator()
for
GenericDataFileSet
dispatches on the by
argument. If that is not possible, it call
setFullNameTranslator()
for each file in the set (as
before).
GenericDataFile
and GenericDataFileSet
implements the FullNameInterface
, which mean less redundant
code.fromFiles()
to byPath()
.
For backward compatibility the former calls the latter.findByName()
of GenericDataFileSet
follows Windows Shortcut links also for subdirectories.Analogously to the method for a GenericDataFile
, the
setFullNameTranslator()
method for
GenericDataFileSet
now assumes that the fullname translator
function accepts also argument set
.
Added argument .fileSetClass
to
GenericDataFileSet()
.
GenericDataFile
should accept any number of arguments. The first argument will always be
(an unnamed) argument containing the name (or names) to be translated.
If the translator is for a GenericDataFile
, an additional
argument file
will also be passed. This allows the
translator function to for instance read the file header and infer the
name that way.Extracted several classes and methods from the aroma.core package.
Created package.