Skip to content

add squidpy backend#628

Draft
Intron7 wants to merge 2 commits intomainfrom
add-squidpy-backend
Draft

add squidpy backend#628
Intron7 wants to merge 2 commits intomainfrom
add-squidpy-backend

Conversation

@Intron7
Copy link
Copy Markdown
Member

@Intron7 Intron7 commented Apr 7, 2026

This is the rapids-singlecell part of the backend for scverse/squidpy#1151

Comment on lines +1 to +30
"""Squidpy backend adapter for rapids_singlecell.

The dispatch decorator introspects the real RSC function signatures
(lazily imported on first access), so no need to duplicate them here.
"""

from __future__ import annotations

import importlib


class RscSquidpyBackend:
"""Backend adapter exposing rapids_singlecell GPU implementations to squidpy."""

name = "rapids_singlecell"
aliases = ["rapids-singlecell", "rsc", "cuda", "gpu"]

# squidpy function name -> module that implements it
_functions = {
"spatial_autocorr": "rapids_singlecell.squidpy_gpu",
"co_occurrence": "rapids_singlecell.squidpy_gpu",
"ligrec": "rapids_singlecell.squidpy_gpu",
}

def __getattr__(self, name: str):
if name in self._functions:
func = getattr(importlib.import_module(self._functions[name]), name)
setattr(self, name, func) # cache on instance
return func
raise AttributeError(f"{type(self).__name__!r} has no attribute {name!r}")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why the separate class? couldn't it just be a module that lazy re-exports the relevant functions?

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

Successfully merging this pull request may close these issues.

2 participants