While this tool is independently maintained and not officially supported by 10x Genomics, it relies on code from LoupeR, an R package developed by 10x Genomics. LoupeR is licensed for use only in connection with data generated from 10x Genomics products. For more information, please refer to the 10x End User Software License. By using the setup function of this tool, you will need to agree to this license with an interactive prompt.
This can be simply installed from pip, using:
pip install loupepy
You must run the setup function and agree to the eula. This only needs to be done once.
from loupepy import setup
setup()
> This tool is independently maintained, but utilizes 10x genomics tools to perform conversions
> By using this tool, you agree to the 10X Genomics End User License Agreement (https://www.10xgenomics.com/legal/end-user-software-license-agreement)
> Do you agree to the terms of the EULA? (yes/y or no/n)
y
Will install the tool to the default program install directory in your OS. A custom path for the install can also be provided, however you will need to include it in subsequent commands using the:
loupe_converter_path
argument.
There are some differences between this one and the R version. Mainly, the R version will throw an error if a categorical has too many categories, or a dimensionality reduction isn't 2 x n_cells. Here, these are dropped with a warning. Enabling the strict parameter will mimic R's behavior.
Creates a Loupe Browser compatible .cloupe
file from an AnnData
object.
Parameters:
anndata
: AnnData object containing single-cell dataoutput_cloupe
: Path to save the output file (default: "cloupe.cloupe")layer
: Layer in AnnData to use for counts (default: None, uses.X
)dims
: List of dimension reduction keys fromadata.obsm
(default: None, uses all valid projections)obs_keys
: List of categorical annotations fromadata.obs
to include (default: None, uses all valid categories)strict_checking
: Whether to strictly validate inputs (default: False)tmp_file
: Temporary file path for intermediate data (default: 'tmp.h5')dims
: List of dimension reduction keys fromadata.obsm
to include (default: None, uses all valid projections)obs_keys
: List of categorical annotations fromadata.obs
to include (default: None, uses all valid categories)loupe_converter_path
: Path to the Loupe converter binary (default: None, uses default installation path)clean_tmp_file
: Whether to delete the temporary file after creation (default: True)force
: Whether to overwrite existing cloupe file (default: False)verbose
: Whether to log warnings when incompatible dims/obs are dropped. (default: True)test_mode
: Whether to run in test mode. Will not create a cloupe file.
Example:
import scanpy as sc
import loupepy
from scipy.sparse import diags
# Load data
adata = sc.datasets.pbmc3k_processed().raw.to_adata()
# Revert to raw counts, as loupee converter only takes raw counts
n_counts = adata.obs["n_counts"].values
counts_matrix = adata.X.expm1()
counts = diags(n_counts) * counts_matrix
adata.X = counts
# Create Loupe file with default settings
loupepy.create_loupe_from_anndata(adata, "my_results.cloupe")
# Create with specific dimensions and annotations
loupepy.create_loupe_from_anndata(
adata,
"my_custom_results.cloupe",
dims=["X_umap"],
obs_keys=["leiden"]
)
Extracts categorical observation data from an AnnData object.
Parameters:
anndata
: AnnData object containing the dataobs_keys
: List of keys to extract fromadata.obs
(default: None, uses all valid categories)strict
: Whether to strictly validate the keys. If true will throw errors on invalid keys instead of dropping (default: False)
Extracts dimensional reduction data from an AnnData object. Parameters:
anndata
: AnnData object containing the dataobsm_keys
: List of keys to extract fromadata.obsm
(default: None, uses all valid dimension reductions)strict
: Whether to strictly validate the keys. If true will throw errors on invalid keys instead of dropping (default: False)
Gets the count matrix from an AnnData object in the format required for Loupe.
Parameters:
anndata
: AnnData object containing the datalayer
: Layer in AnnData to use for counts (default: None, uses.X
)
Lower-level function to create a Loupe file from raw data components.
Parameters:
mat
: CSC matrix of counts (shape: n_features × n_cells)obs
: DataFrame of categorical cell annotationsvar
: DataFrame of gene/feature informationobsm
: Dictionary of dimension reduction embeddingstmp_file
: Path for temporary fileoutput_path
: Path to save the output filestrict_checking
: Whether to strictly validate inputs (default: False)loupe_converter_path
: Path to the Loupe converter binary (default: None, uses default installation path)'clean_tmp_file
: Whether to delete the temporary file after creation (default: True)force
: Whether to overwrite existing cloupe file (default: False)test_mode
: Whether to run in test mode. Will not create a cloupe file.
Example:
import scanpy as sc
import loupepy
from scipy.sparse import diags
# Load data
adata = sc.datasets.pbmc3k_processed().raw.to_adata()
# Revert to raw counts, as loupee converter only takes raw counts
n_counts = adata.obs["n_counts"].values
counts_matrix = adata.X.expm1()
counts = diags(n_counts) * counts_matrix
adata.X = counts
mat = loupepy.get_count_matrix(adata)
obs = loupepy.get_obs(adata, obs_keys=["leiden"])
var = adata.var
obsm = loupepy.get_obsm(adata, obsm_keys=["X_umap"])
loupepy.create_loupe(mat,obs,var,obsm,"my_results.cloupe")
Downloads and installs the Loupe converter binary.
Parameters:
path
: Installation directory path (default: None, uses OS-specific default location)
Example:
import loupepy
# Install the Loupe converter to the default location
loupepy.setup()
Parameters:
path
: Installation path (default: None, uses OS-specific default install location. Usually same path as setup)
Resets the EULA agreement and removes the installed Loupe converter binary.
A special thank you to the Lowy Lab for their support.
Thank you to 10x Genomics for supporting this and allowing the use of their tool.