Etapa 1 — CPCA (Circular PCA)

Que hace este modulo

Dada una matriz de expresion normalizada (genes x muestras), CPCA obtiene un orden circular preliminar de las muestras proyectandolas sobre el circulo unitario mediante PCA, ademas de un filtrado.

Como funciona

  1. Centrar cada gen (restar la media por filas).

  2. Escalar cada muestra (dividir por RMS de columnas).

  3. SVD truncada: extraer PC1 y PC2.

  4. Proyectar cada muestra al circulo: phi = arctan2(PC2, PC1).

  5. Detectar outliers (muestras con norma ||PC1, PC2|| pequeña).

  6. Repetir sin outliers.

Ejemplo de uso

from circust.cpca import CPCA
from circust.core_genes import CoreGeneSelector

sel    = CoreGeneSelector(preset="circust")
result = sel.select(prep.expr_norm)
cpca = CPCA(core_genes=result.genes)
result = cpca.run(expr_norm)

result.sample_order      # indices que ordenan las muestras
result.circular_scale    # angulos phi en [0, 2*pi)
result.samples_dropped   # indices de outliers eliminados

Referencia API

Ver circust.cpca.