Skip to content

Updating beachmat to tatami #121

@LTLA

Description

@LTLA

(Pretty much a regurgitation of const-ae/glmGamPoi#52, but while Constantin is finishing his thesis...)

I see you're still using the old-school beachmat interface, which is fine and will still be around.

But perhaps you'll consider switching to the new tatami interface, which is now on BioC-devel via beachmat v2.17.3.

This does away with the need for integer/numeric templates, it makes it easier to parallelize at the C++ level, and some delayed operations are captured natively (i.e., some DelayedArrays are translated to their C++ equivalents). Other R matrices are still supported, of course, but are handled more slowly by calling back into DelayedArray::extract_array().

It also greatly simplifies compilation. In the coolest and most experimental part of this update, beachmat will generate external pointers to matrix instances that can be passed to bsseq's shared libraries. This means that bsseq doesn't need to actually need to compile support for the various matrix implementations in its own *.so file, which makes it easier to extend tatami's C++ support to, e.g., HDF5, TileDB, Zarr-backed matrices. (WIP in this direction at the beachmat.hdf5 repo.)

I've already switched SingleR to this latest paradigm and it seems to have gotten through on BioC-devel. I'd like a non-Aaron package developer to test out this new approach, and you're next on my hitlist after Constantin.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions