% dia5_pipeline.m % Dia 5 - El pipeline completo, un sujeto de principio a fin. % % Requiere EEGLAB + ERPLAB instalados y los datos de ERP CORE (paradigma N400). % Cambia RAIZ por la carpeta donde bajaste los datos y corre por secciones. %% Configuracion clear; clc; [ALLEEG, EEG, CURRENTSET, ALLCOM] = eeglab; % arranca y deja todo en el path raiz = '/ruta/a/ERP_CORE/N400'; % <-- CAMBIA ESTO s = 'sub-001'; carp = fullfile(raiz, s); %% El archivo que define las condiciones % Escribirlo desde el script (y no a mano) hace que el analisis quede completo % en un solo lugar. Es la misma copia que esta en bins/bins_n400.txt. bdf = fullfile(raiz, 'bins_n400.txt'); fid = fopen(bdf, 'w'); fprintf(fid, 'bin 1\nPrime de par relacionado\n.{111;112}\n\n'); fprintf(fid, 'bin 2\nPrime de par no relacionado\n.{121;122}\n\n'); fprintf(fid, 'bin 3\nTarget relacionado, respuesta correcta\n.{211;212}{201}\n\n'); fprintf(fid, 'bin 4\nTarget no relacionado, respuesta correcta\n.{221;222}{201}\n'); fclose(fid); type(bdf) % miralo antes de usarlo % El bin 3 se lee: "alinea el tiempo cero en un 211 o un 212, y acepta la epoca % solo si el evento siguiente es un 201". %% Cargar y mirar antes de tocar nada EEG = pop_loadset('filename', [s '_N400.set'], 'filepath', carp); inventario(EEG); % la funcion del dia 3 size(EEG.data) % antes de epocar: DOS numeros %% Filtrar el continuo EEG = pop_basicfilter(EEG, 1:33, 'Filter', 'highpass', 'Design', 'butter', ... 'Cutoff', 0.1, 'Order', 2, 'RemoveDC', 'on', 'Boundary', 'boundary'); %% Etapas 1 a 3: EventList, bins, epocas EEG = pop_creabasiceventlist(EEG, 'AlphanumericCleaning', 'on', ... 'BoundaryNumeric', {-99}, 'BoundaryString', {'boundary'}); EEG = pop_binlister(EEG, 'BDF', bdf, ... 'IndexEL', 1, 'SendEL2', 'EEG', 'Voutput', 'EEG'); EEG = pop_epochbin(EEG, [-200.0 800.0], 'pre'); size(EEG.data) % ahora TRES: canales x muestras x epocas EEG.trials %% Etapa 4: artefactos (marca, no borra) EEG = pop_artmwppth(EEG, 'Channel', 1:33, 'Threshold', 100, ... 'Twindow', [-200 798], 'Windowsize', 200, 'Windowstep', 50, ... 'Flag', 1, 'Review', 'off'); pop_summary_AR_eeg_detection(EEG, ''); % % de rechazo, por bin y total % pop_eegplot(EEG, 1, 1, 1); % mirar las epocas marcadas %% Etapa 5: promediar y guardar salida = fullfile(raiz, 'derivados'); if ~exist(salida, 'dir'), mkdir(salida); end ERP = pop_averager(EEG, 'Criterion', 'good', 'SEM', 'on', 'Compute', 'ERP'); ERP = pop_savemyerp(ERP, 'erpname', [s '_N400'], ... 'filename', [s '_N400.erp'], 'filepath', salida, 'Warning', 'off'); %% Revisar antes de confiar iCPz = find(strcmp({ERP.chanlocs.labels}, 'CPz')); % el sitio donde vive el N400 pop_ploterps(ERP, [3 4], iCPz); % Entre 300 y 500 ms el bin 4 (no relacionado) deberia ir por debajo del bin 3. % Los bins 1 y 2 deberian quedar practicamente encima uno del otro: hasta ese % momento del ensayo las dos condiciones son identicas para el participante. %% Comparar umbrales de artefacto (el ejercicio 5 completo) % for umbral = [50 100 200] % pipeline_un_sujeto(raiz, s, umbral); % end