circust.cpca¶
circust/cpca.py¶
Etapas 1.1 + 1.2: Ordenamiento circular (CPCA) y deteccion de outliers.
Que es CPCA¶
PCA sobre los 12(o mas) genes core del reloj. Los loadings de PC1 y PC2 de cada muestra se tratan como coordenadas (x, y) en el plano, el angulo(phi) se obtiene:
phi = atan2(PC2, PC1) en [0, 2pi)
Y su norma(LEi):
norm12 = sqrt(PC1² + PC2²)
da un ordenamiento circular que refleja el ritmo circadiano subyacente. Muestras cercanas al origen tienen norma pequena y son potenciales outliers.
Deteccion de outliers (Seccion 3.3 del paper suplementario de CIRCUST)¶
Dos criterios en logica OR una muestra se elimina si viola cualquiera:
Radial CPCA: LEi < tight_radius (0.10) Muestras con distancia al origen en espacio PC1-PC2 muy pequena disrumpen la estructura circular y reflejan desalineaciones individuales.
Residuos FMM: |ri| > fmm_threshold (3.0) para cualquier gen core Detecta errores de medicion u otras anomalias comunes entre genes.
Si se detectan outliers, se eliminan, se renormaliza la matriz core y se re-ejecuta CPCA para obtener el ordenamiento final limpio.
Posicion en el pipeline¶
Preprocessor -> CPCA -> CircularSynchronizer -> …
- class circust.cpca.CPCAResult(sample_order, circular_scale, core_genes_found, variance_explained, expr_norm_final, core_norm_final, fmm_fits_final, fmm_peak_times_final, samples_dropped=<factory>, fmm_outliers=<factory>, pc1=<factory>, pc2=<factory>, pc3=<factory>, std_residuals_fmm=None, fmm_fits_initial=<factory>, cosinor_fits_initial=<factory>, pc1_initial=<factory>, pc2_initial=<factory>)[source]¶
Bases:
objectSalida de
CPCA— incluye el ordenamiento circular final y la deteccion de outliers (Etapas 1.1 + 1.2 del pipeline).Campos del pipeline (usados por etapas posteriores)¶
- sample_ordernp.ndarray de int, forma (n_muestras,)
Indices que ordenan las muestras por fase circular final.
- circular_scalenp.ndarray de float, forma (n_muestras,)
Valores de phi ordenados en [0, 2pi). Eje temporal para ajustes.
- core_genes_foundlist[str]
Genes centrales presentes en la matriz y usados para CPCA.
- variance_explainednp.ndarray de float, forma (3,)
Fraccion de varianza explicada por PC1, PC2, PC3 (CPCA final).
- expr_norm_finalpd.DataFrame, forma (n_genes, n_muestras_limpias)
Matriz de expresion completa con muestras outlier eliminadas, reordenada por fase circular y renormalizada.
- core_norm_finalpd.DataFrame, forma (n_genes_core, n_muestras_limpias)
Submatriz core normalizada, sin outliers, ordenada por fase.
- fmm_fits_finaldict[str, FitResult]
Ajustes FMM sobre genes core usando el ordenamiento final.
- fmm_peak_times_finaldict[str, float]
Tiempos de pico FMM (via compUU) para cada gen core (final).
- samples_droppedlist[int]
Indices originales de columna de las muestras eliminadas.
- fmm_outlierslist[int]
Subconjunto de samples_dropped detectados exclusivamente por el criterio de residuos FMM (|ri| > fmm_threshold).
Campos de diagnostico (para visualizacion)¶
- pc1, pc2, pc3np.ndarray
Loadings de PC1/PC2/PC3 del CPCA final (un valor por muestra).
- std_residuals_fmmpd.DataFrame o None
Residuos FMM estandarizados (genes+PCs x muestras, orden inicial).
- fmm_fits_initialdict[str, FitResult]
Ajustes FMM sobre genes core + PC1/PC2/PC3 en orden CPCA inicial.
- cosinor_fits_initialdict[str, FitResult]
Ajustes Cosinor sobre genes core + PC1/PC2/PC3 en orden inicial.
- sample_order: ndarray¶
- circular_scale: ndarray¶
- core_genes_found: list[str]¶
- variance_explained: ndarray¶
- expr_norm_final: DataFrame¶
- core_norm_final: DataFrame¶
- fmm_fits_final: dict¶
- fmm_peak_times_final: dict¶
- samples_dropped: list[int]¶
- fmm_outliers: list[int]¶
- pc1: ndarray¶
- pc2: ndarray¶
- pc3: ndarray¶
- std_residuals_fmm: DataFrame | None = None¶
- fmm_fits_initial: dict¶
- cosinor_fits_initial: dict¶
- pc1_initial: ndarray¶
- pc2_initial: ndarray¶
- Parameters:
sample_order (ndarray)
circular_scale (ndarray)
core_genes_found (list[str])
variance_explained (ndarray)
expr_norm_final (DataFrame)
core_norm_final (DataFrame)
fmm_fits_final (dict)
fmm_peak_times_final (dict)
samples_dropped (list[int])
fmm_outliers (list[int])
pc1 (ndarray)
pc2 (ndarray)
pc3 (ndarray)
std_residuals_fmm (DataFrame | None)
fmm_fits_initial (dict)
cosinor_fits_initial (dict)
pc1_initial (ndarray)
pc2_initial (ndarray)
- class circust.cpca.CPCA(core_genes=None, n_outlier_candidates=8, tight_radius=0.1, loose_radius=0.15, fmm_threshold=3.0, max_outlier_fraction=0.05, fmm_length_alpha_grid=48, fmm_length_omega_grid=24, fmm_num_reps=3, verbose=True)[source]¶
Bases:
objectEtapas 1.1 y 1.2: ordenamiento circular de muestras y deteccion de outliers residuales, segun la Seccion 3.3 del suplementario de CIRCUST.
Parametros — CPCA¶
- core_geneslist[str], opcional
Genes ancla circadianos. Por defecto los 12 del articulo CIRCUST.
- n_outlier_candidatesint
Muestras a examinar como candidatas a outlier (menor norma PC1-PC2). Por defecto: 8.
- tight_radiusfloat
Umbral radial primario. Muestras con LEi <= tight_radius se confirman como outliers CPCA. Por defecto: 0.10.
- loose_radiusfloat
Umbral de respaldo cuando ninguna muestra califica con tight_radius. Por defecto: 0.15.
Parametros — deteccion de outliers FMM¶
- fmm_thresholdfloat
Umbral de residuo FMM estandarizado. Muestras con |ri| > fmm_threshold en cualquier gen core se declaran outliers. Por defecto: 3.0.
- max_outlier_fractionfloat
Limite maximo de muestras eliminables: ceil(fraccion x n_muestras). Por defecto: 0.05.
Parametros — ajuste FMM¶
- fmm_length_alpha_gridint
Resolucion de rejilla para el parametro alfa de FMM. Por defecto: 48.
- fmm_length_omega_gridint
Resolucion de rejilla para el parametro omega de FMM. Por defecto: 24.
- fmm_num_repsint
Iteraciones de refinamiento FMM. Por defecto: 3.
- verbosebool
Imprimir mensajes de progreso.
Example
>>> from circust.preprocessing import load_expression_matrix, Preprocessor >>> from circust.cpca import CPCA >>> >>> matrix = load_expression_matrix("data/raw/expression.csv") >>> prep = Preprocessor().run(matrix) >>> result = CPCA().run(prep.expr_norm) >>> print(result.summary())
- Parameters:
core_genes (list[str])
n_outlier_candidates (int)
tight_radius (float)
loose_radius (float)
fmm_threshold (float)
max_outlier_fraction (float)
fmm_length_alpha_grid (int)
fmm_length_omega_grid (int)
fmm_num_reps (int)
verbose (bool)