[Bioc-devel] TypeInfo

Martin Morgan mtmorgan at fhcrc.org
Wed Mar 7 18:30:19 CET 2007

Hi Wolfgang --

Yes, you should do it!

There's a vignette in TypeInfo written in the form of an R News
article (though not published as such) that outlines the basic steps &

It's used in our RWebServices packages, which should make it to Rpacks
real soon now.  We've exposed functionality of DNAcopy, PROcess and
affy as web services (http://cabig.bioconductor.org/axis/services;
affy is not there yet, these are not meant to be 'production'
services). There's a powerpoint presentation at
http://tinyurl.com/34u4lq discussing some issues; slides 7-15
illustrate some of the functionality, slides 27-28 sketch TypeInfo

TypeInfo provides functionality that is useful for ensuring that
incoming and return arguments match specified type. This means that
the code in the functions can focus on the operations they perform,
rather than checking that the arguments are valid.

TypeInfo also provides the language 'reflection' that's necessary when
moving from a weakly typed language like R to strongly typed languages
like Java or xsd-based web representations of data and methods. It
also makes creation of, e.g., graphical widgets easier.

There are costs to TypeInfo, in that the argument and return types are
actually checked (could be computationally expensive, but probably not
in terms of the overall functionality of vsn). Also, TypeInfo offers
advanced features that are beyond what the ArrayExpress people want --
basically, you'll want to stick to SimulataneousTypeSpecification with
TypedSignature matching arguments to specific classes (TypeInfo could,
in principle, do things like make sure that the lengths of different
input vectors were the same, or that there were no NA values, or...)

Which also points to an important issue, that to be useful in the web
services environment TypeInfo has to identify either primitive types
(e.g., "numeric") or S4 classes; S3 classes are not structured enough
to be useful.

The input arguments to S4 methods are already strongly typed, so for
these methods the benefit of TypeInfo is restricted to specifying
return values.

In terms of the ArrayExpress request, my experience has been that the
web environment probably wants to 'see' only selected functions or
functions that integrate a series of steps into a convenient work
flow. The basic issues are: big data transfer (which will make repeated
'interactive' calls impossibly slow); restricted functionality (side
effects like image creation are hard to deal / need to be made into
main effects with in the web context); and maybe a need to expose only
methods and parameters that are suitable for consumption by the
general populace rather than the full gamut of options relevant to
exploratory analyses or research statisticians. For these reasons, we
ended up writing 'wrapper' packages that contain a small number of
'work flow' functions that take and return S4 classes, and that have
TypeInfo applied.

We did some initial investigation with vsn and it seemed quite
possible to add the necessary information. If you'd like an example,
point to a suitable function and I'll generate something for you.


Wolfgang Huber <huber at ebi.ac.uk> writes:

> Hi Martin, Robert, Seth
> what's up with "TypeInfo"? Seems that nobody has been using it so far in 
> Bioconductor:
> huber at lobito:~/madman/Rpacks$ find . -name DESCRIPTION \
>      -exec grep -H TypeInfo {} \;
> ./TypeInfo/DESCRIPTION:Package: TypeInfo
> ......and nothing else......
> and the last substantial svn commits are from 2005.
> Misha's person at ArrayExpress who wants to put Web-GUIs on 
> bioc-packages has asked me to provide the functions in vsn with 
> TypeInfo, is that something worthwhile?
> Best wishes
>    Wolfgang
> ------------------------------------------------------------------
> Wolfgang Huber  EBI/EMBL  Cambridge UK  http://www.ebi.ac.uk/huber
> _______________________________________________
> Bioc-devel at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel

Martin Morgan
Bioconductor / Computational Biology

More information about the Bioc-devel mailing list