-
Notifications
You must be signed in to change notification settings - Fork 4
CONN_para_analisis_rsfMRI
Si estas buscando una herramienta que te de la confianza de usar los parametros de SPM y de fmriprep, pero con interfaz visual, CONN puede ser tu herramienta.
Su interfase permite estar dando click seleccionando opciones y cargando tus archivos de rsfMRI y T1w desde el path que le indiques. Te recomendamos fervientemente que tengas tus archivos en una ubicacion diferente a donde los tienes en bids, ya que CONN realiza gunzip y tus nii.gz van a descomprimirse en a .nii. Entonces ya en .nii le puede hacer modificaciones a tu adquisicion original, entonces ahorrate un dolor de cabeza en el futuro, y copia en un directorio a parte los archivos que vas a necesitar. Ahi tambien será tu cwd por lo que se van a generar los outputs y las carpetas de analisis.
Ya teniendo esa consideración, ahora sí, ¿cómo abro CONN?
Carga el modulo matlab
module load matlab
Y escribe en tu terminal
matlab
Se va a desplegar el programa. Ahora en el menu superior de matlab, vas a encontrar Add-On's. Esa pagina te va a llevar a el sitio donde puedes descargar toolbox. Descarga CONN y guardalo en una ubicación de tu computadora de trabajo (e.j. /misc/compu/usuario/matlab).
Ahora carga el path del toolbox en el SET PATH de matlab, puedes dejar un script ejecutable .m , y solo ejecutarlo en la termminal de matlab de ahora en adelante. También vas a necesitar SPM, ese no lo vas a poder descargar de Add-On's, si no de aquí. Déjalo en la misma ubicación que conn para que no se te pase cargar ambos. Tambien puedes adjuntarlo a la accion de SET PATH, que vinculaste al script .m
Lo menos que queremos es quedarnos sin computadora por hooooras, así que cuando vayas avanzando en las pestañas de CONN, selecciona la opcion de someterlo después y guardar el script, y con ese script se hace la magia.
Para someterlo como job al cluster vas a necesitar scriptearlo en formato qsub. Guardalo con el nombre que quieras y la terminacion .sh (e.j. nombre_script.sh), la forma más sencilla es escribir nano nombre_script.sh y te va a abrir el editor de texto que ya tiene el nombre deseado de tu script, cuando termines de editarlo escribes ctrl + X y Y. Te muestro un ejemplo a continuación:
(NOTA: no te olvides que despues de los # simples, son comentarios del script, y son borrable. Los #$ en qsub sí se leen)
#!/bin/bash
#$ -S /bin/bash #ESTO LE DICE AL SCRIPT QUE QUIERE QUE USE EL LENGUAJE BASH PARA LEER EL SCRIPT
#$ -N nombre_job #AQUI NOMBRAS A TU JOB
#$ -o /misc/compu/usuario/conn/conn.qlog/250901194700923 #EN QUE PATH SE GUARDARA EL ARCHIVO OUTPUT DE INFORME DE PROCESOS
#$ -e /misc/compu/usuario/conn/conn.qlog/250901194700923 #EN QUE PATH SE GUARDARA EL ARCHIVO DE INFORME DE ERRORES
#$ -cwd
# Mejor manejo de errores
set -e
set -u
# Verifica espacio en disco de los archivos temporales, cuando son muchas secuencias me ha pasado que los temporales se van acumulando
echo "=== VERIFICACION DE ESPACIO tmp ==="
df -h /misc/compu/usuario/conn/ | head -2
df -h /tmp | head -2
echo ""
#COMO SE VA A SOMETER EL JOB A UNA MAQUINA DEL CLUSTER, ES BUENA PRACTICA CARGAR EL MODULO Y CHECAR SI LA MÁQUINA A LA QUE SE LE ASIGNO, PUEDE EJECUTAR MATLAB, PARA ESO LAS SIGUIENTES LINEAS
module load matlab || {
echo "ERROR: No se pudo cargar el módulo de MATLAB"
exit 1
}
# Verificar que los archivos existen antes de ejecutar. ESTAS LINEAS SON LAS QUE VAS A IR CAMBIANDO, SEGUN LA CARPETA DONDE SE VAN GUARDANDO LOS SCRIPTS .m DE TU ANALISIS, PREPROCESAMIENTO O SETUP.
PATHDEFFILE="/misc/compu/usuario/conn/pathdef.m"
NODEFILE="/misc/compu/usuario/conn/250901194700923/node_001250901194700923.m"
if [[ ! -f "$PATHDEFFILE" ]]; then
echo "ERROR: No se encuentra el archivo $PATHDEFFILE"
exit 1
fi
if [[ ! -f "$NODEFILE" ]]; then
echo "ERROR: No se encuentra el archivo $NODEFILE"
exit 1
fi
#AHORA SI, YA SE VERIFICO QUE HAY MATLAB, HAY CARPETAS EJECUTABLES Y SCRIPT QUE SOMETER, A CORRER
echo "Iniciando procesamiento MATLAB..."
/usr/local/MATLAB/R2023a/bin/matlab -nodisplay -nosplash -r \
"try, \
run('$PATHDEFFILE'); \
fprintf('=== OPTIMIZAR CONFIGURACIÓN ===\\n'); \
[status, result] = system('df -h . | head -2'); disp(result); \
spm('defaults', 'FMRI'); \
global defaults; \
defaults.images.write.uint8 = 1; \
spm('Clean'); spm('Clear'); \
fprintf('=== INICIANDO PROCESAMIENTO PRINCIPAL ===\\n'); \
run('$NODEFILE'); \
spm('Clean'); spm('Clear'); pack; \
fprintf('=== LIMPIEZA FINALIZADA EN tmp ===\\n'); \
catch e, disp(getReport(e)); exit(1); end; exit(0);"
#AQUI LE PIDO QUE ME VUELVA A VERIFICAR LOS tmp PARA MAS TRANQUILIDAD
echo "=== VERIFICACION FINAL DE ESPACIO tmp ==="
df -h /misc/compu/usuario/conn/ | head -2
echo "Procesamiento completado exitosamente"
exit 0
Listo ahora para someter el job escribe
qsub nombre_script.sh
Y finalmente vemos si se sometió y esta corriendo
qstat
Hay algunas máquinas que no tienen matlab, por lo que es importante verificar que se sometio el job y está en R su status. De no ser asi, vuelvelo a someter. Los archivos de output (.o) y errores (.e) se encuentran en la dirección que le especificaste en el script al principio.
Tabla de contenidos
- Home
- Como colaborar en la Wiki
- rocket.chat
- Resonadores
- Bash
- Clúster
- Procesamiento de Imágenes
- fMRI
- DW-MRI
- FIJI - Análisis histológico
- Herramientas Software
- Otros
