Description Display methods The bimap concept Flat representation of a bimap AnnDbBimap and FlatBimap objects The "flatten" generic Property0 The Bimap interface in AnnotationDbi See Also Examples
What we usually call "annotation maps" are in fact Bimap objects. In the following sections we present the bimap concept and the Bimap interface as it is defined in AnnotationDbi.
In the code snippets below,
x
is a Bimap object.
show(x)
:
Display minimal information about Bimap object x
.
summary(x)
:
Display a little bit more information about Bimap object x
.
A bimap is made of:
1 2 3 4 5 6 |
1 2 3 4 5 |
In other words, a bimap is a bipartite graph.
Here are some examples:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
The flat representation of a bimap is a data frame. For example, for B1, it is:
1 2 3 4 5 6 | left right
a A
a B
b A
d C
|
If in addition the right objects have 1 multivalued attribute, for example, a numeric vector:
1 2 3 4 |
then the flat representation of B1 becomes:
1 2 3 4 5 6 7 8 9 10 |
Note that now the number of rows is greater than the number of links!
An AnnDbBimap object is a bimap whose data are stored in a data base. A FlatBimap object is a bimap whose data (left keys, right keys and links) are stored in memory (in a data frame for the links). Conceptually, AnnDbBimap and FlatBimap objects are the same (only their internal representation differ) so it's natural to try to define a set of methods that make sense for both (so they can be manipulated in a similar way). This common interface is the Bimap interface.
Note that both AnnDbBimap and FlatBimap objects have a read-only semantic: the user can subset them but cannot change their data.
1 2 3 | flatten(x) converts AnnDbBimap object x into FlatBimap
object y with no loss of information
|
Note that a FlatBimap object can't be converted into an AnnDbBimap object (well, in theory maybe it could be, but for now the data bases we use to store the data of the AnnDbBimap objects are treated as read-only). This conversion from AnnDbBimap to FlatBimap is performed by the "flatten" generic function (with methods for AnnDbBimap objects only).
The "flatten" generic plays a very useful role when we need to understand or explain exactly what a given Bimap method f will do when applied to an AnnDbBimap object. It's generally easier to explain what it does on a FlatBimap object and then to just say "and it does the same thing on an AnnDbBimap object". This is exactly what Property0 says:
1 2 3 | for any AnnDbBimap object x, f(x) is expected to be
indentical to f(flatten(x))
|
Of course, this implies that the f method for AnnDbBimap objects return the same type of object than the f method for FlatBimap objects. In this sense, the "revmap" and "subset" Bimap methods are particular because they are expected to return an object of the same class as their argument x, so f(x) can't be identical to f(flatten(x)). For these methods, Property0 says:
1 2 3 | for any AnnDbBimap object x, flatten(f(x)) is expected to
be identical to f(flatten(x))
|
Note to the AnnotationDbi maintainers/developpers: the checkProperty0
function (AnnDbPkg-checker.R file) checks that Property0 is satisfied on all
the AnnDbBimap objects defined in a given package (FIXME: checkProperty0 is
currently broken).
The full documentation for the methods of the Bimap interface is splitted into 4 man pages: Bimap-direction, Bimap-keys and Bimap-toTable.
Bimap-direction, Bimap-keys, Bimap-toTable, BimapFormatting, Bimap-envirAPI
1 2 3 4 5 6 |
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.