Skip to main content
Glama
scvi.py8.57 kB
from pydantic import Field from typing import Optional, List, Union, Dict, Any from .base import JSONParsingModel # ==================== Setup ==================== class SetupAnndataModel(JSONParsingModel): """Setup AnnData for scvi-tools models.""" layer: Optional[str] = Field( default=None, description="Key in adata.layers for count data. If None, uses adata.X" ) batch_key: Optional[str] = Field( default=None, description="Key in adata.obs for batch information" ) labels_key: Optional[str] = Field( default=None, description="Key in adata.obs for cell type labels (for SCANVI)" ) categorical_covariate_keys: Optional[List[str]] = Field( default=None, description="Keys in adata.obs for categorical covariates" ) continuous_covariate_keys: Optional[List[str]] = Field( default=None, description="Keys in adata.obs for continuous covariates" ) # ==================== SCVI ==================== class SCVISetupModel(SetupAnndataModel): """Setup AnnData for SCVI model.""" pass class SCVICreateModel(JSONParsingModel): """Create SCVI model.""" n_hidden: int = Field( default=128, description="Number of nodes per hidden layer" ) n_latent: int = Field( default=10, description="Dimensionality of the latent space" ) n_layers: int = Field( default=1, description="Number of hidden layers" ) dropout_rate: float = Field( default=0.1, description="Dropout rate for neural networks" ) gene_likelihood: str = Field( default="zinb", description="Gene likelihood: 'zinb', 'nb', 'poisson'" ) class SCVITrainModel(JSONParsingModel): """Train SCVI model.""" max_epochs: int = Field( default=400, description="Maximum number of training epochs" ) batch_size: int = Field( default=128, description="Minibatch size for training" ) early_stopping: bool = Field( default=True, description="Enable early stopping" ) early_stopping_patience: int = Field( default=45, description="Number of epochs with no improvement after which training stops" ) class SCVIGetLatentModel(JSONParsingModel): """Get latent representation from SCVI.""" give_mean: bool = Field( default=True, description="Return mean of latent distribution" ) save_key: str = Field( default="X_scVI", description="Key in adata.obsm to save latent representation" ) class SCVIGetNormalizedModel(JSONParsingModel): """Get normalized expression from SCVI.""" library_size: float = Field( default=1e4, description="Library size to use for normalization" ) save_layer: str = Field( default="scvi_normalized", description="Layer in adata.layers to save normalized expression" ) class SCVIDifferentialExpressionModel(JSONParsingModel): """Perform differential expression analysis with SCVI.""" groupby: str = Field( description="Key in adata.obs for grouping" ) group1: Optional[List[str]] = Field( default=None, description="First group of cells. If None, all groups are compared" ) group2: Optional[str] = Field( default=None, description="Second group to compare. If None, compare to rest" ) mode: str = Field( default="change", description="Mode: 'vanilla' or 'change'" ) delta: float = Field( default=0.25, description="Specific case of region inducing differential expression" ) batch_correction: bool = Field( default=False, description="Correct for batch effects" ) class SCVISaveModel(JSONParsingModel): """Save SCVI model.""" dir_path: str = Field( description="Path to directory where to save the model" ) overwrite: bool = Field( default=False, description="Overwrite existing directory" ) class SCVILoadModel(JSONParsingModel): """Load SCVI model.""" dir_path: str = Field( description="Path to saved model directory" ) # ==================== SCANVI ==================== class SCANVISetupModel(SetupAnndataModel): """Setup AnnData for SCANVI model.""" unlabeled_category: str = Field( description="Value used for unlabeled cells in labels_key" ) class SCANVICreateModel(JSONParsingModel): """Create SCANVI model.""" unlabeled_category: str = Field( description="Value used for unlabeled cells" ) n_hidden: int = Field( default=128, description="Number of nodes per hidden layer" ) n_latent: int = Field( default=10, description="Dimensionality of the latent space" ) n_layers: int = Field( default=1, description="Number of hidden layers" ) dropout_rate: float = Field( default=0.1, description="Dropout rate" ) gene_likelihood: str = Field( default="zinb", description="Gene likelihood: 'zinb', 'nb', 'poisson'" ) class SCANVIFromSCVIModel(JSONParsingModel): """Create SCANVI from pretrained SCVI.""" unlabeled_category: str = Field( description="Value used for unlabeled cells" ) class SCANVIPredictModel(JSONParsingModel): """Predict cell types with SCANVI.""" save_key: str = Field( default="scanvi_predictions", description="Key in adata.obs to save predictions" ) soft: bool = Field( default=False, description="Return probabilities instead of predicted labels" ) # ==================== TOTALVI ==================== class TOTALVISetupModel(JSONParsingModel): """Setup AnnData for TOTALVI model.""" protein_expression_obsm_key: str = Field( description="Key in adata.obsm for protein expression" ) layer: Optional[str] = Field( default=None, description="Layer for RNA counts" ) batch_key: Optional[str] = Field( default=None, description="Batch key in adata.obs" ) categorical_covariate_keys: Optional[List[str]] = Field( default=None, description="Categorical covariate keys" ) continuous_covariate_keys: Optional[List[str]] = Field( default=None, description="Continuous covariate keys" ) class TOTALVICreateModel(JSONParsingModel): """Create TOTALVI model.""" n_latent: int = Field( default=20, description="Dimensionality of latent space" ) gene_likelihood: str = Field( default="nb", description="Gene likelihood: 'nb', 'zinb'" ) class TOTALVIGetProteinForegroundProbModel(JSONParsingModel): """Get protein foreground probability.""" save_key: str = Field( default="totalvi_protein_fg_prob", description="Key to save in adata.obsm" ) # ==================== PEAKVI ==================== class PEAKVISetupModel(JSONParsingModel): """Setup AnnData for PEAKVI model.""" batch_key: Optional[str] = Field( default=None, description="Batch key in adata.obs" ) layer: Optional[str] = Field( default=None, description="Layer for counts. If None, use adata.X" ) class PEAKVICreateModel(JSONParsingModel): """Create PEAKVI model.""" n_hidden: int = Field( default=128, description="Number of nodes per hidden layer" ) n_latent: int = Field( default=10, description="Dimensionality of latent space" ) n_layers_encoder: int = Field( default=2, description="Number of layers for encoder" ) n_layers_decoder: int = Field( default=2, description="Number of layers for decoder" ) class PEAKVIDifferentialAccessibilityModel(JSONParsingModel): """Differential accessibility analysis with PEAKVI.""" groupby: str = Field( description="Key in adata.obs for grouping" ) group1: Optional[List[str]] = Field( default=None, description="First group" ) group2: Optional[str] = Field( default=None, description="Second group" ) # ==================== Common Operations ==================== class GetELBOModel(JSONParsingModel): """Get ELBO (Evidence Lower Bound).""" pass class GetReconstructionErrorModel(JSONParsingModel): """Get reconstruction error.""" pass

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hyennnnnnn/scvi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server