본문으로 건너뛰기
cccskills
무료GitHub에 공개

deepspot-m

Predict spatial gene expression from H&E-stained tissue images using DeepSpot-M. Query a released panel of about 19,000 genes and combine predictions from small image tiles into slide-wide maps for research analysis.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Generates transcriptome-wide virtual spatial transcriptomics from H&E histology with DeepSpot-M. Used for predicted log1p-CPM expression from 224x224 tiles at about 20x, querying the released protein-coding gene panel by symbol, and whole-slide prediction after resolution-aware tiling with histolab.

연동 도구Hugging Face
설치 방법 보기

이럴 때 유용합니다

  • Mapping predicted marker-gene expression across a tumor section
  • Predicting expression across slides without matching gene-expression assays
  • Adding predicted expression to a histology image analysis pipeline
  • Building a slide-cohort atlas of predicted spatial expression

포함된 파일(3)

  • SKILL.md9.7 KB
  • references/api.md7.1 KB
  • references/whole_slide.md10.8 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

DeepSpot-M

Overview

DeepSpot-M is a multimodal foundation model that maps a 224x224 H&E histology tile to spatial gene expression in log1p-CPM. The output is virtual spatial transcriptomics: one value per queried gene per tile, laid out on the grid the tiles came from.

A LoRA-adapted pathology foundation backbone (Midnight) tokenises the tile. A cross-attention gene decoder lets each gene query attend to the patch tokens, and a gene router hypernetwork builds gene-specific projections from frozen biological embeddings (Evo 2, Orthrus, ProtT5, scGPT, Apertus). Genes enter the model as queryable embeddings rather than fixed output slots, so the released model covers a ~19k protein-coding gene panel including genes unseen in training. The panel ships with the weights as tokens.csv and is exposed as model.gene_names; genes outside it cannot be queried in this release.

Applied to TCGA, the model produced a virtual spatial transcriptomics atlas of 28,664 slides across 32 cancer types.

Licensing

The code is PolyForm Noncommercial 1.0.0 and the weights are CC-BY-NC-SA-4.0. The current model access form additionally restricts eligibility to academic/public nonprofit researchers without concurrent commercial affiliations and excludes commercially funded/collaborative use. Read the live declarations before requesting access; a noncommercial intention alone does not establish eligibility. Research use only, not clinical or diagnostic use. Preserve the applicable attribution and licenses.

Installation

uv pip install deepspotm==1.0.0

PyPI 1.0.0 declares Python >=3.10 without an upper bound; that is not proof of compatibility with every future dependency release. Use an isolated environment. Install the PyTorch build that matches your CUDA runtime if using a GPU. The optional histolab 0.7.0 tiler requires Python <3.12 and an older scientific stack: run tiling separately and exchange PNG tiles plus a coordinate manifest.

Model access

The weights are gated:

  1. Open https://huggingface.co/ratschlab/DeepSpotM and request access.
  2. Once access is granted, authenticate the machine that will download them:
hf auth login

The Hugging Face downloader uses cached credentials or HF_TOKEN; approval and authentication are separate. Set HF_HOME before importing Hub libraries if choosing a cache location. Do not put tokens in code. An approved local model directory can be loaded offline.

Quick start

Illustrative gated inference; the loading/query API and local preprocessing were checked without downloading the weights:

import torch
from PIL import Image
from deepspotm import DeepSpotM

device = "cuda" if torch.cuda.is_available() else "cpu"
revision = "48be27af436a50e5c74175680ac2b7b2596a506b"
model, image_processor = DeepSpotM.from_pretrained(
    "ratschlab/DeepSpotM", source="scgpt", device=device, revision=revision
)

with Image.open("tile.png") as image:
    if image.size != (224, 224):
        raise ValueError("Expected a pre-tiled 224x224 image at verified ~0.5 um/px")
    batch = image_processor(image.convert("RGB")).unsqueeze(0).to(device)
genes = ["EPCAM", "CD3D"]
vals = model.predict_genes(batch, genes).cpu()  # shape (1, 2)

image_processor turns a PIL image into a tensor; unsqueeze(0) adds the batch dimension, and predict_genes takes the batch plus a list of HGNC gene symbols. Values come back in log1p-CPM, aligned with the gene list you passed, so keep that list beside the output to keep the columns labelled. Symbols must be in the released ~19k-gene panel (model.gene_names); an unknown symbol raises KeyError naming the offending genes.

Tile requirements

Tiles must be 224x224 RGB at roughly 20x magnification (about 0.5 microns per pixel). Check the size at the boundary of your pipeline rather than passing an unchecked crop through:

TILE_PX = 224

def require_tile(tile):
    """Return an RGB 224x224 tile, or raise if the crop is the wrong size."""
    if tile.size != (TILE_PX, TILE_PX):
        raise ValueError(
            f"DeepSpot-M expects a {TILE_PX}x{TILE_PX} tile at about 20x "
            f"(~0.5 microns per pixel); got {tile.size[0]}x{tile.size[1]}. "
            "Re-tile at the matching level or resample the crop."
        )
    return tile.convert("RGB")

Pixel size alone does not verify magnification. Read both MPP axes and the actual level downsample factors; use a native level only if its physical resolution is close enough to the chosen target. Otherwise explicitly resample from sufficiently fine source pixels and record the transform. Never infer 20x from a level number. The returned processor resizes/crops images but cannot establish their physical MPP.

Keep the dependency optional

deepspotm and its weights are a heavy, gated dependency. Import it inside the function that needs it so the surrounding project installs, imports and tests without it, and turn an ImportError into a message that names every step:

DEEPSPOTM_HELP = (
    "DeepSpot-M is unavailable. Install it with `uv pip install deepspotm==1.0.0`, request "
    "access to the gated weights at https://huggingface.co/ratschlab/DeepSpotM, then "
    "authenticate with `hf auth login`."
)

def load_deepspotm(source="scgpt"):
    try:
        from deepspotm import DeepSpotM
    except ImportError as exc:
        raise RuntimeError(DEEPSPOTM_HELP) from exc
    return DeepSpotM.from_pretrained("ratschlab/DeepSpotM", source=source)

Embedding sources

source selects which frozen gene embedding the router builds projections from. It is one of five values:

sourceGene embedding
evo2genomic sequence
orthrusRNA
prott5protein sequence
scgptsingle-cell expression
apertuslanguage model

Each gives a different view of gene identity. Pick one per run, and run the same tiles through more than one source when the choice matters to your analysis. The released multi-source model can switch using model.set_source(name); no reload is required. See references/api.md for the inference call surface, batching and device placement, gene symbol handling and output units.

Whole slide workflow

Prediction is per tile, so a slide-scale run is a tiling step followed by batched inference:

  1. Verify slide MPP, extract 224x224 tiles on a tissue grid with the histolab skill, and keep each tile's level-0 bounding box and measured output MPP.
  2. Process and stack tiles into batches with torch.stack.
  3. Call predict_genes once per batch with the same gene list.
  4. Concatenate batches in a recorded tile-ID order; join coordinates by those IDs, checking uniqueness and missing tiles rather than assuming file/report row order.

Keep outputs labeled as model predictions, not measured transcript counts. Validate on held-out slides/patients with paired assays for the intended tissue and processing conditions; tiles from one slide are not independent biological replicates. The released base model also differs from cancer-specific fine-tuned TCGA atlas models.

That matrix is the virtual spatial transcriptomics map for the slide, and it drops into AnnData for downstream analysis. Whole-slide workflow has a worked loop, batch sizing and an AnnData assembly step.

Verification scope

Reviewed the current PyPI 1.0.0 wheel and matching upstream model source on 2026-09-30. CPU checks used Python 3.12.10, Torch 2.7.1, Torchvision 0.22.1, Transformers 5.18.0, PEFT 0.21.1, Lightning 2.6.6 and Hugging Face Hub 1.33.0. Synthetic checks cover loading/query contracts, normalization, resolution rejection, coordinate joins and H5AD round-trip. Gated weights, CUDA, real-slide tiling and biological prediction accuracy were not tested; full inference examples are illustrative.

Common use cases

  • Spatial expression maps for marker genes across a tumour section.
  • Transcriptome-wide prediction over a slide cohort with no matching assay run.
  • Querying any of the ~19k panel genes by symbol, including genes unseen in training — far beyond the few hundred genes of a typical spatial assay panel.
  • Adding an expression channel to a morphology-only histology pipeline.
  • Building a slide-level cohort atlas, as done for TCGA.

Detailed references

  • references/api.md: from_pretrained and predict_genes in full, the five embedding sources and how to choose, batching, device placement, gene symbol handling, and converting log1p-CPM output.
  • references/whole_slide.md: tiling with histolab, a slide-scale prediction loop, assembling and storing a tiles-by-genes matrix, and cohort-scale runs.

Primary sources

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Estimate intracellular reaction rates from steady-state carbon-13 tracing measurements. Validate carbon atom mappings and measurement inputs, simulate labeling, fit constrained fluxes, and diagnose which pathway rates the data can meaningfully constrain.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Estimate metabolic fluxes from carbon-13 labeling
  • Validate atom mappings and measurement inputs
  • Simulate labeling for proposed reaction rates
K-Dense-AI/scientific-agent-skills5.4만2026년 10월 19일 업데이트

adaptyv

무료

Plan protein characterization experiments with Adaptyv's cloud laboratory, estimate costs, submit sequences, track progress, and retrieve measured results. Supports binding, thermal stability, expression, fluorescence, and enzyme activity workflows through the API and Python SDK.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Plan binding screens for candidate protein sequences
  • Estimate experiment costs before submission
  • Track laboratory progress and retrieve results
K-Dense-AI/scientific-agent-skills5.4만2026년 10월 19일 업데이트

aeon

무료

Analyze time series with aeon, a Python toolkit for data that changes over time. Supports classification, regression, clustering, forecasting, anomaly detection, and pattern search, with guidance on preprocessing, algorithm selection, and evaluation.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Classify time series and predict continuous outcomes
  • Group time series with similar patterns
  • Forecast future values
K-Dense-AI/scientific-agent-skills5.4만2026년 10월 19일 업데이트

Investigate how DNA variants may affect gene activity using precomputed AlphaGenome Atlas results and model predictions. Rank candidate variants, examine tissue-specific effects, and inspect the features behind scores to develop research hypotheses about biological mechanisms.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Ranking candidate variants from a VCF
  • Examining tissue-specific effects on gene activity
  • Comparing reference and altered DNA predictions
K-Dense-AI/scientific-agent-skills5.4만2026년 10월 19일 업데이트

Plan and document studies that assess whether an analytical procedure suits its intended use. Select the governing framework, evaluate calibration, accuracy, precision, and detection limits, and compare methods using acceptance criteria defined before data collection.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Planning analytical validation studies and acceptance criteria
  • Evaluating calibration, accuracy, and precision
  • Estimating and confirming detection and quantitation limits
K-Dense-AI/scientific-agent-skills5.4만2026년 10월 19일 업데이트

anndata

무료

Organize single-cell measurements with cell and gene metadata, read and write h5ad or Zarr files, and prepare subsets or combined datasets. Includes guidance on handling large annotated matrices without loading all measurement values into memory.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Read and write h5ad or Zarr datasets
  • Combine experimental batches with source labels
  • Select cells or genes using metadata
K-Dense-AI/scientific-agent-skills5.4만2026년 10월 19일 업데이트

K-Dense-AI의 스킬 모두 보기

이 스킬의 문제 신고