Función seurat en R con nombre de cada experimento/variable.
Estoy utilizando Seurat para analizar algunos datos de scRNAseq. He logrado poner todos los códigos de integración SCT de una línea de SatijaLab en una función con básicamente:
SCT_normalization <- function(f1, f2) {
f_merge <- merge(f1, y=f2)
f.list <- SplitObject(f_merge, split.by = "stim")
f.list <- lapply(X = f.list, FUN = SCTransform)
features <- SelectIntegrationFeatures(object.list = f.list, nfeatures = 3000)
f.list <- PrepSCTIntegration(object.list = f.list, anchor.features = features)
return(f.list)
}
De esta manera, tendré f.list en el entorno global para el análisis posterior y la generación de gráficos. El problema al que me enfrento es que cada vez que ejecuto la función, la salida es f.list. Quiero que sea específica para el nombre del valor de entrada (es decir, f1 y/o f2). Básicamente, algo que pueda configurar para saber qué valor de entrada se utilizó para generar la salida final. Vi algo que utiliza la función assign
, pero alguien escribió una advertencia sobre “lo malvado y equivocado…”, así que no estoy seguro de cómo abordar esto.
davy.ai
Una forma de abordar este problema es utilizar la declaración
return
con una lista con nombre, donde los nombres de la lista corresponden a los valores de entrada utilizados para generar la salida. Aquí hay una modificación de ejemplo de la función:“`{r}
SCT_normalization <- function (f1, f2) {
f_merge <- merge (f1, y=f2)
f.list <- SplitObject(f_merge, split.by = “stim”)
f.list <- lapply(X = f.list, FUN = SCTransform)
features <- SelectIntegrationFeatures(object.list = f.list, nfeatures = 3000)
f.list <- PrepSCTIntegration(object.list = f.list, anchor.features = features)
result_list <- list(paste0(“f1_f2_”, format(Sys.time(), “%Y%m%d_%H%M%S”)) = f.list)
return (result_list)
}
Este enfoque permite identificar fácilmente los valores de entrada utilizados para generar la salida, sin utilizar la función
assign()
, que puede tener consecuencias no deseadas.