circust.preprocessing¶
- circust.preprocessing.load_expression_matrix(path, gene_column=None, chunk_size=None)[source]¶
Carga una matriz de expresion genica desde disco en un DataFrame de pandas.
Forma esperada tras la carga¶
Filas = genes (indice de fila = simbolos genicos, ej. “ARNTL”, “PER1”)
Columnas = muestras (cada columna = un individuo/muestra)
Valores = conteos de expresion brutos (float); ceros y NaN permitidos
Formatos soportados¶
.csv Valores separados por comas .tsv / .txt Valores separados por tabuladores .xlsx / .xls Libro Excel (se lee la primera hoja) .parquet Apache Parquet — recomendado para conjuntos grandes
- param path:
Ruta al archivo. El formato se detecta por la extension.
- type path:
str- param gene_column:
Nombre de la columna que contiene los simbolos genicos. Especificar explicitamente si el archivo tiene un layout no estandar, ej. gene_column=”gene_id”.
- type gene_column:
Optional[str]- param chunk_size:
Solo para archivos .parquet. Numero de row-groups a leer por vez. Util cuando el archivo es mas grande que la RAM disponible. Si None (defecto), se carga el archivo completo de una vez. Ignorado para CSV/TSV/Excel.
- type chunk_size:
Optional[int]- returns:
Matriz con simbolos genicos como indice de fila (index.name = “gene_symbol”) e IDs de muestra como nombres de columna. Todos los valores son float64. Celdas que no se pudieron parsear como numeros se establecen a NaN.
- rtype:
DataFrame- raises FileNotFoundError:
Si no existe archivo en
path.- raises ValueError:
Si la extension del archivo no esta en la lista soportada.
- raises ImportError:
Si se lee un .parquet y pyarrow no esta instalado.
Example
Cargar un CSV estandar:
>>> df = load_expression_matrix("data/raw/gtex_brain.csv") >>> df.shape (56200, 479) >>> df.index[:3].tolist() ['ARNTL', 'PER1', 'CRY1']
Cargar un parquet grande con lectura por bloques:
>>> df = load_expression_matrix( ... "data/raw/gtex_brain.parquet", ... chunk_size=10_000, ... )
- Parameters:
path (str)
gene_column (str | None)
chunk_size (int | None)
- Return type:
DataFrame
- class circust.preprocessing.PreprocessingResult(expr_norm, expr_raw, dropped_sparse=<factory>, dropped_duplicates=<factory>, n_genes_in=0, n_genes_out=0, n_samples=0)[source]¶
Bases:
objectTodos los resultados producidos por
Preprocessor.- Variables:
expr_norm (pd.DataFrame) – Matriz de expresion normalizada, genes x muestras, valores en [-1, 1]. Es la matriz que consume cada paso (CPCA, FMM).
expr_raw (pd.DataFrame) – Matriz bruta filtrada despues de eliminar genes malos pero antes de normalizar. Util para depuracion y validacion.
dropped_sparse (List[str]) – Simbolos genicos eliminados porque > zero_threshold de muestras eran cero o NaN.
dropped_duplicates (List[str]) – Simbolos genicos eliminados durante la resolucion de duplicados (filas con menor MAD).
n_genes_in (int) – Numero de genes que entraron al preprocesador.
n_genes_out (int) – Numero de genes que sobrevivieron a todos los pasos de filtrado.
n_samples (int) – Numero de muestras. No cambia nunca durante el preprocesamiento.
- Parameters:
expr_norm (DataFrame)
expr_raw (DataFrame)
dropped_sparse (list[str])
dropped_duplicates (list[str])
n_genes_in (int)
n_genes_out (int)
n_samples (int)
- expr_norm: DataFrame¶
- expr_raw: DataFrame¶
- dropped_sparse: list[str]¶
- dropped_duplicates: list[str]¶
- n_genes_in: int = 0¶
- n_genes_out: int = 0¶
- n_samples: int = 0¶
- circust.preprocessing.normalise_matrix(mat, norm_min=-1.0, norm_max=1.0)[source]¶
Normaliza min-max cada fila de
matal intervalo [norm_min, norm_max].Filas constantes (min == max) se mapean a todos ceros.
- Parameters:
mat (
DataFrame) – Matriz genes × muestras. Valores pueden ser float o int.norm_min (
float) – Extremos del rango de salida. Por defecto [-1, 1].norm_max (
float) – Extremos del rango de salida. Por defecto [-1, 1].
- Return type:
DataFrame
- class circust.preprocessing.Preprocessor(sparse_threshold=0.3, zero_threshold=None, nan_threshold=None, norm_min=-1.0, norm_max=1.0, verbose=True)[source]¶
Bases:
objectLimpia y normaliza una matriz de expresion genica bruta.
Eliminar genes sin nombre (NA rownames en R)
Eliminar genes sparse (>
sparse_thresholdde muestras son cero O NaN)Resolver nombres de genes duplicados — conservar la fila con mayor MAD
Normalizar cada gen a [-1, 1]
- Parameters:
sparse_threshold (
float) – Fraccion de muestras que pueden ser cero o NaN antes de que un gen se elimine. La comparacion es estricta (>), asi que un gen exactamente en el umbral se conserva.zero_threshold (
Optional[float]) – Override para el umbral solo de ceros. Si None (defecto), usasparse_thresholdpara ceros.nan_threshold (
Optional[float]) – Override para el umbral solo de NaN. Si None (defecto), usasparse_thresholdpara NaN.verbose (
bool) – Si True, imprime mensajes de progreso tras cada paso.norm_min (float)
norm_max (float)
Example
>>> import pandas as pd >>> import numpy as np >>> >>> rng = np.random.default_rng(0) >>> mat = pd.DataFrame( ... rng.poisson(10, size=(200, 60)).astype(float), ... index=[f"GENE_{i}" for i in range(200)], ... columns=[f"sample_{j}" for j in range(60)], ... ) >>> >>> result = Preprocessor().run(mat) >>> result.expr_norm.values.min() >= -1.0 True >>> result.expr_norm.values.max() <= 1.0 True