Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating beachmat to tatami #121

Open
LTLA opened this issue May 31, 2023 · 1 comment
Open

Updating beachmat to tatami #121

LTLA opened this issue May 31, 2023 · 1 comment

Comments

@LTLA
Copy link

LTLA commented May 31, 2023

(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.

@PeteHaitch
Copy link
Contributor

I'd honestly forgotten that we'd used beachmat and I don't have any time at the moment to work on bsseq.
The tatami stuff looks cool though and I'll keep this in mind if I have time to play around with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants