Tarde o temprano, quien trabaja con estudios de sueño, EEG o registros largos de ECG recibe un archivo terminado en .edf y necesita saber qué contiene. Puede que un grupo colaborador haya enviado un conjunto de datos, que un amplificador nuevo exporte así sus registros o que un script de análisis se niegue a cargar un archivo que parece perfectamente normal. El European Data Format se diseñó para ser sencillo, y esa sencillez permite responder a casi cualquier pregunta sobre un archivo en pocos minutos, siempre que sepas dónde mirar.
Esta guía recorre ese proceso en el orden que más tiempo ahorra: identificar la variante, leer la cabecera, entender los canales, revisar las anotaciones y, por último, buscar los errores que hacen que otros programas rechacen un archivo. Puedes seguirla con cualquier registro en nuestro Visor de Archivos EDF, que funciona íntegramente en tu navegador, o con los ejemplos integrados si no tienes un archivo a mano.
Paso 1: Identifica la Variante
La extensión dice poco. Los archivos EDF, EDF+ y BDF comparten la misma estructura de cabecera, y algunos sistemas incluso usan la extensión .rec para datos EDF. Lo que de verdad identifica la variante son dos campos de la cabecera.
Los primeros ocho bytes son la versión. Un archivo EDF o EDF+ guarda el carácter 0 seguido de espacios. Un archivo BDF, la variante de 24 bits introducida por BioSemi, empieza con el byte de valor 255 seguido de las letras BIOSEMI. Si no aparece ninguno de los dos, el archivo no pertenece a esta familia: una sorpresa frecuente cuando se ha renombrado un archivo de otro formato.
El segundo es el campo reservado de 44 bytes. En EDF simple está vacío. EDF+ escribe EDF+C para un registro continuo o EDF+D para uno discontinuo, y los archivos BDF suelen llevar 24BIT. La diferencia importa porque los archivos EDF+ tienen estructura adicional —campos de paciente normalizados y un canal de anotaciones— que un lector de EDF simple ignorará o, peor aún, mostrará como una señal sin sentido.
Paso 2: Lee la Cabecera Fija
Una vez conocida la variante, lee el resto de la cabecera fija de 256 bytes. Todos los campos son texto ASCII rellenado con espacios, así que la cabecera se puede leer incluso en un editor hexadecimal. Cinco campos merecen especial atención.
Fecha y hora de inicio
Se guardan como dd.mm.aa y hh.mm.ss. El año de dos cifras sigue una regla de corte: del 85 al 99 significa de 1985 a 1999, y del 00 al 84 significa de 2000 a 2084. Los archivos EDF+ escriben además el año completo de cuatro cifras en el campo de identificación del registro, tras la palabra Startdate, y ese valor debería coincidir con el corto. Ten en cuenta que la hora es la del reloj local del equipo de registro; el formato no tiene campo de zona horaria.
Número de registros de datos y duración del registro
Una grabación se divide en registros de datos de igual longitud, muy a menudo de un segundo o de treinta segundos. Multiplicar el número de registros por su duración da la longitud total. Un valor de -1 en el número de registros significa que la grabación nunca se cerró: la especificación solo lo permite mientras la adquisición sigue en curso.
Número de bytes de cabecera y número de señales
Ambos deben ser coherentes: el tamaño de la cabecera es siempre 256 bytes multiplicado por el número de señales más uno. Un archivo con 20 señales tiene una cabecera de 5.376 bytes. Cuando el tamaño declarado no coincide, distintos programas pueden empezar a leer los datos en lugares distintos, lo que es una de las formas más desconcertantes en que un archivo parece estar dañado.
Paso 3: Entiende los Canales
Tras la cabecera fija viene un bloque de 256 bytes por señal, con los campos ordenados por columnas. Para cada canal tienes una etiqueta, el tipo de transductor, la unidad física, cuatro valores de rango, una descripción del prefiltrado y el número de muestras por registro de datos. Juntos responden a las preguntas prácticas que más se hacen los investigadores.
¿Cuál es la frecuencia de muestreo?
EDF no guarda la frecuencia de muestreo directamente. Divide el número de muestras por registro entre la duración del registro. Un canal con 256 muestras por registro de un segundo va a 256 Hz; un canal con 3.000 muestras por registro de 30 segundos va a 100 Hz. Es habitual que los canales de un mismo archivo tengan frecuencias distintas: en una polisomnografía típica, el EEG y el ECG se muestrean mucho más rápido que el esfuerzo respiratorio o la saturación de oxígeno. Los scripts que suponen una única frecuencia para todo el archivo son una fuente frecuente de señales desalineadas o estiradas.
¿En qué unidades están los valores?
Los enteros del archivo se convierten en valores físicos con el mínimo y máximo físicos y el mínimo y máximo digitales. La relación es lineal: el mínimo digital pasa a ser el mínimo físico y el máximo digital, el máximo físico. La unidad sale del campo de dimensión física: uV, mV, %, degC, etc. Si la unidad está en blanco, como pasa a menudo con las bandas respiratorias, los valores están en unidades arbitrarias y solo su forma tiene sentido.
¿Cómo se filtró la señal?
El campo de prefiltrado es texto libre, pero la mayoría de sistemas siguen la convención de la especificación: HP:0.3Hz LP:35Hz N:50Hz para un filtro paso alto, uno paso bajo y uno de red. Leerlo antes del análisis evita un error clásico: aplicar un segundo paso alto a datos que el amplificador ya filtró, o buscar ondas lentas en un canal filtrado por encima de las frecuencias que te interesan.
¿Hay algún canal saturado?
Los límites digitales suelen describir los valores extremos que podía producir el conversor. Cuando una parte importante de las muestras cae exactamente en uno de esos límites, lo más probable es que la entrada se saliera de rango: un electrodo despegado, un artefacto de movimiento o una ganancia demasiado alta. El Visor EDF cuenta esas muestras para cada canal en su tabla de señales, de modo que un canal con la parte superior aplanada salta a la vista antes incluso de mirar la onda.
Paso 4: Revisa las Anotaciones
En los archivos EDF+ y BDF+, uno o varios canales con la etiqueta EDF Annotations (o BDF Annotations) contienen texto en lugar de muestras. Guardan listas de anotaciones con marca de tiempo: un instante en segundos desde el inicio del archivo, una duración opcional y uno o varios textos. Ahí se almacenan las fases de sueño puntuadas, los microdespertares, los eventos respiratorios, los marcadores de estímulo y las notas del técnico.
Hay tres detalles que confunden a menudo:
- El hipnograma puede estar en otro archivo. Varias bases de datos públicas de sueño distribuyen las señales en un archivo EDF y las fases puntuadas en un segundo archivo EDF+ que solo contiene un canal de anotaciones. Si abres solo el archivo de señales, no verás ninguna fase de sueño.
- Cada registro tiene una anotación de cronometraje. La primera anotación de cada registro de datos tiene el texto vacío y simplemente indica cuándo empieza el registro. Los lectores la ocultan, pero es lo que hace funcionar a los archivos discontinuos.
- El texto de las anotaciones es UTF-8. A diferencia de la cabecera, que debe ser ASCII, los textos de anotación pueden contener tildes o caracteres no latinos, así que una nota escrita en español o en japonés debería verse correctamente.
Paso 5: ¿Continuo o Discontinuo?
En un archivo EDF+C o EDF simple el tiempo es implícito: el registro número n empieza n veces la duración del registro después del inicio del archivo. En un archivo EDF+D no es así. Los registradores de eventos y algunos sistemas de potenciales evocados solo guardan tramos seleccionados, y la hora de inicio de cada registro sale de su anotación de cronometraje. Si conviertes un archivo así en una simple lista de muestras y das por hecho un tiempo uniforme, sus eventos aparecerán en momentos equivocados. Al recorrer un archivo EDF+D en el visor, una marca muestra cada punto donde el registro salta hacia delante y el tamaño del hueco.
Solución de Problemas: ¿Por Qué No se Abre mi Archivo EDF?
Cuando un programa rechaza un archivo o muestra basura, la causa casi siempre es uno de unos pocos problemas de cabecera. Comprobarlos en orden resuelve la mayoría de los casos.
- El archivo está truncado. Compara el tamaño que implica la cabecera —bytes de cabecera más registros multiplicados por el tamaño de registro— con el tamaño real. Si falta algo, el último registro está incompleto, normalmente tras una copia interrumpida o un disco lleno durante la grabación. Los lectores que se fían de la cabecera fallan al llegar al final. Los datos anteriores al corte suelen estar intactos.
- El número de registros es -1 o es incorrecto. El número real de registros completos se puede calcular a partir del tamaño del archivo, y un lector tolerante lo hará. Un lector estricto rechazará el archivo.
- El tamaño de cabecera no coincide con el número de señales. Algunos programas escriben un valor erróneo en ese campo. Como las cabeceras de señal tienen tamaño fijo, los datos siguen empezando en 256 por el número de señales más uno.
- Rangos no válidos. Un mínimo digital que no es menor que el máximo digital, o límites físicos idénticos, dejan sin definir la conversión a unidades físicas. Suele afectar a un único canal auxiliar.
- Caracteres no ASCII o fechas imposibles. Los nombres de paciente o etiquetas con tildes y fechas como 31.02 rompen a los analizadores que siguen la especificación al pie de la letra.
El Visor EDF comprueba cada uno de estos puntos y describe cada problema con un aviso legible, así que puedes explicar a un compañero exactamente qué le pasa a un archivo en lugar de decir solo que «no se abre».
Una Nota Sobre Privacidad Antes de Compartir Archivos
El campo de identificación local del paciente, de 80 caracteres, forma parte de toda cabecera EDF, y en las exportaciones clínicas contiene con frecuencia un nombre, una fecha de nacimiento o un número de historia. EDF+ incluso lo define como subcampos estructurados precisamente para esa información. Antes de enviar un registro fuera de tu organización, revisa ese campo y el de identificación del registro, que puede incluir el nombre de un técnico. EDF+ usa la letra X para los subcampos desconocidos, así que un archivo anonimizado sigue siendo válido.
Por eso también importa la herramienta que elijas. Subir un archivo desconocido a un conversor online para averiguar qué contiene puede ser en sí mismo una revelación de información de salud. Un visor que lee el archivo en local te permite inspeccionar la cabecera, incluidos sus campos identificativos, sin ese riesgo.
Una Lista de Comprobación Rápida
Cuando llega un archivo EDF nuevo, estas preguntas cubren casi todo lo que necesitas saber antes del análisis:
- ¿Es EDF, EDF+C, EDF+D o BDF?
- ¿Tiene sentido la fecha de inicio y cuál es la duración total?
- ¿Cuántos canales hay y cuáles son sus etiquetas, unidades y frecuencias de muestreo?
- ¿Qué prefiltrado aplicó el sistema de adquisición?
- ¿Hay anotaciones y, si esperabas fases de sueño, están en este archivo o en otro?
- ¿Coincide el tamaño del archivo con la cabecera y hay canales saturados?
- ¿Contiene el campo de paciente información identificativa que haya que eliminar antes de compartirlo?
Responderlas lleva un par de minutos con el Visor de Archivos EDF, y evita la sesión de depuración mucho más larga que llega cuando un análisis usa sin avisar la frecuencia de muestreo equivocada, una base de tiempo errónea o un archivo truncado.