Model Sharing#
Guide for sharing your trained scXpand models with the community.
Upload Steps#
1. Prepare Your Model Archive#
# Required files: model.joblib/model.pt, data_format.json, parameters.json, *.npz, *.csv
zip -r logistic_model.zip model.joblib data_format.json parameters.json *.npz *.csv
2. Upload to File Hosting Platform#
Upload your ZIP archive to any file hosting platform that provides direct stable public download URLs like Figshare.
3. Get Direct Download URL#
4. Add to scXpand Registry#
# In scxpand/pretrained/model_registry.py
"my_tumor_classifier": PretrainedModelInfo( # model_name: any descriptive identifier
name="my_tumor_classifier",
url="https://your-platform.com/direct-download-url.zip",
version="1.0.0",
),
Important Notes:
model_name: Registry identifier - can be any descriptive string (e.g., “tumor_classifier”, “blood_model”)Model type: Automatically detected from
model_type.txtfile in the model archive
Note: The system automatically handles files with numeric prefixes (e.g., 57702349_data_format.json) by normalizing them to standard names (data_format.json).
5. Test#
import scxpand
# Test download and inference
results = scxpand.run_inference(
model_name="my_tumor_classifier", # Use your model_name (registry identifier)
data_path="test_data.h5ad",
device=None # Auto-detect best available device
)
Usage#
Users can access models in two ways:
Registry Models (Curated)#
# List curated models
scxpand list-models
# Use curated model
scxpand inference --data_path data.h5ad --model_name pan_cancer_logistic
Direct URL Access (Any External Model)#
# Use any external model directly via URL - no code changes needed!
scxpand inference --data_path data.h5ad --model_url "https://your-platform.com/model.zip"
# Python API also supports both approaches
import scxpand
# Registry model
results = scxpand.run_inference(
model_name="pan_cancer_logistic", # model_name: registry identifier
data_path="data.h5ad",
device=None # Auto-detect device
)
# Direct URL (seamless model sharing!)
results = scxpand.run_inference(
model_url="https://your-platform.com/model.zip",
data_path="data.h5ad",
device=None # Auto-detect device
)