El desafío de datos de atención médica: más allá de los formatos normalizado
Las organizaciones de vitalidad y ciencias de la vida se ocupan de una heterogeneidad extraordinaria de formatos de datos que se extienden mucho más allá de los datos estructurados tradicionales. Los estándares de imágenes médicas como DICOM, instrumentos de laboratorio patentados, panorama de secuenciación genómica y formatos de archivo biomédicos especializados representan un desafío significativo para las plataformas de datos tradicionales. Si admisiblemente Apache Spark ™ proporciona un soporte robusto para aproximadamente 10 tipos de fuente de datos normalizado, el dominio de atención médica requiere comunicación a cientos de formatos y protocolos especializados.
Las imágenes médicas, que abarcan modalidades como TC, rayos X, PET, ultrasonido e resonancia magnética, son esenciales para muchos procesos de diagnosis y tratamiento en la atención médica en especialidades que van desde la prótesis hasta la oncología y la obstetricia. El desafío se vuelve aún más complicado cuando estas imágenes médicas están comprimidas, archivadas o almacenadas en formatos patentados que requieren bibliotecas especializadas de Python para el procesamiento.
Los archivos DICOM contienen una sección de encabezado de metadatos ricos. Hay más de 4200 etiquetas DICOM definidas normalizado. Algunos clientes implementan etiquetas de metadatos personalizados. El “zipdcm”
La fuente de datos se creó para acelerar la cuna de estas etiquetas de metadatos.
El problema: procesamiento pausado de imágenes médicas
Las organizaciones de atención médica a menudo almacenan imágenes médicas en archivos zip comprimidos que contienen miles de archivos DICOM. Procesar estos archivos a escalera generalmente requiere múltiples pasos:
- Extraer archivos zip al almacenamiento temporal
- Procesar archivos DICOM individuales utilizando bibliotecas de Python como Pydicom
- Los resultados de carga en Delta Lake para su prospección
Databricks ha decidido un acelerador de decisión, dbx.píxeleslo que facilita la integración de cientos de formatos de imagen a escalera. Sin bloqueo, el proceso aún puede ser pausado correcto a las operaciones de E/S de disco y el manejo temporal de archivos.
La decisión: API de fuente de datos de Python
El nuevo API de fuente de datos de Python Resuelve esto permitiendo la integración directa de las bibliotecas de Python específicas de atención médica en el entorno de procesamiento distribuido de Spark. En circunscripción de construir tuberías ETL complejas para primero los archivos descifrados y luego procesarlos con funciones definidas por el agraciado (UDF), puede procesar imágenes médicas comprimidas en un solo paso.
Una fuente de datos personalizada, implementada utilizando la API de fuente de datos de Python, que combina la cuna de archivos zip con el procesamiento de DICOM ofrece resultados impresionantes: 7x Procesamiento más rápido en comparación con el enfoque tradicional.
”zipdcm”
El leedor procesó 1,416 archivos ZipFile que contienen más de 107,000 archivos DICOM totales a 2.43 segundos centrales por archivo DICOM. Los probadores independientes informaron un rendimiento 10 veces más rápido. El clúster utilizado tenía dos nodos de trabajadores, 8 V-coro cada uno. El tiempo del temporalizador de hormaza para ejecutar el ”zipdcm”
El leedor fue de solo 3.5 minutos.
Al dejar los datos de origen adheridos y no expandir los archivos de origen de origen, nos dimos cuenta de un sobresaliente costos de almacenamiento en la nubarrón (4TB descuidado frente a 70 GB) 57 veces más bajos costos de almacenamiento en la nubarrón.
Implementación de la fuente de datos DICOM con cremallera
Aquí le mostramos cómo crear una fuente de datos personalizada que procese archivos zip que contienen imágenes DICOM que se encuentran en github
El quid de ojear archivos DICOM en un archivo zip (fuente diferente)
Altere este rizo para procesar otros tipos de archivos anidados interiormente de un archivo zip, zip_fp
es el mango del archivo del archivo interiormente del archivo zip. Con el fragmento de código antedicho, puede comenzar a ver cómo se abordan individualmente los miembros del archivo ZIP.
Algunos aspectos importantes de este diseño de código:
- Los metadatos de DiCom se devuelven a través de
yield
Lo cual es una técnica efectivo en la memoria porque no estamos acumulando la totalidad de los metadatos en la memoria. Los metadatos de un solo archivo DICOM son solo unos pocos kilobytes. - Desechamos los datos de píxeles para recortar aún más la huella de memoria de esta fuente de datos.
Con modificaciones adicionales al partitions()
método Incluso puede hacer que múltiples tareas de Spark funcionen en el mismo archivo zip. Para los dicones, por lo universal, los archivos ZIP se utilizan para apoyar cortes o marcos individuales de un escaneo 3D todos juntos en un archivo.
En universal, a un parada nivel, el
) como se muestra en el fragmento de código a continuación:
Donde se ve la carpeta de datos (la fuente de datos puede ojear archivos DCM desnudos y con zonas criticadas):
¿Por qué 7x más rápido?
Varios factores contribuyen a una prosperidad 7x más rápida mediante la implementación de una fuente de datos personalizada utilizando la API de fuente de datos de Python. Incluyen lo venidero:
- Sin archivos temporales: Los enfoques tradicionales escriben archivos DICOM descomprimidos en el disco. La fuente de datos personalizada procesa todo en la memoria.
- Reducción en los archivos # para aclarar: En nuestro conjunto de datos (doi: 10.7937/CF2P-AW56)1 Desde el Archivo de Imágenes Cáncer (TCIA), encontramos 1,412 archivos zip que contienen 107,000 archivos de texto individuales de DICOM y osadía. Esta es una expansión de 100x en el número de archivos para aclarar y procesar.
- Lecturas parciales: Nuestra fuente de datos DICOM Metadatos ZIPDCM descarta las etiquetas de datos de imágenes más grandes
"60003000,7FE00010,00283010,00283006")
- Inferior IO alrededor de y desde el almacenamiento: Antaño, con Unzip, tuvimos que escribir 107,000 archivos, para un total de 4 TB de almacenamiento. Los datos comprimidos descargados de TCIA fueron de solo 71 GB. Con el
zipdcm
Profesor, guardamos más de 210,000 archivos individuales iOS. - Paralelismo de la Partición: Conveniente a que el iterador expone tanto las cremalleras de nivel superior como los miembros interiormente de cada archivo, la fuente de datos puede crear múltiples particiones lógicas en un solo archivo zip. Por lo tanto, Spark extiende la carga de trabajo en muchos núcleos de ejecutores sin inflar primero el archivo en un disco compartido.
Tomadas en conjunto, estas optimizaciones cambian el cuello de botella del disco y la E/S de red al prospección de CPU puro, entregando una reducción de 7 × observada en el tiempo de ejecución de extremo a extremo en el conjunto de datos de remisión mientras mantiene predecible y pequeño el uso de la memoria.
Más allá de las imágenes médicas: el ecosistema de pitón de atención médica
La API de fuente de datos de Python abre el comunicación al rico ecosistema de la vitalidad y las ciencias de la vida de los paquetes de Python:
- Imágenes médicas: Pydicom, Simpleitk, Scikit-Image para procesar varios formatos de imagen médica
- Genómica: Biopython, Pysam, Genomics-Python para procesar datos de secuenciación genómica
- Datos de laboratorio: Analizadores especializados para citometría de flujo, espectrometría de masas e instrumentos de laboratorio clínico
- Farmacéutico: RDKIT para flujos de trabajo de informática y descubrimiento de fármacos químicos
- Datos clínicos: Bibliotecas de procesamiento de HL7 para estándares de interoperabilidad de atención médica
Cada uno de estos dominios tiene bibliotecas maduras y probadas en batalla que ahora pueden integrarse en tuberías de chispa escalables. El dominio de Python en la ciencia de datos de la vitalidad finalmente se traduce en ingeniería de datos a escalera de producción.
Empezando
La publicación del blog analiza cómo la API de fuente de datos de Python, combinada con Apache Spark, prosperidad significativamente la ingestión de imágenes médicas. Destaca una celeridad 7x en la indexación y hash de archivos DICOM, procesando más de 100,000 archivos DICOM en menos de cuatro minutos y reduciendo el almacenamiento en 57X. El mercado de prospección de imágenes radiológicas se valora en más de $ 40 mil millones anuales, lo que hace que estas ganancias de rendimiento sean una oportunidad para ayudar a estrechar el costo mientras se acelera la automatización de los flujos de trabajo. Los autores reconocen a los creadores del conjunto de datos de remisión utilizado en su estudio.
Rutherford, MW, Nolan, T., Pei, L., Wagner, U., Pan, Q., Farmer, P., Smith, K., Kopchick, B., Laura Opsahl-on, Sutton, G., Clunie, DA, Farahani, K. y Prior, F. (2025). Datos en apoyo del desafío MIDI-B (Subsistencia Midi-B-sintética, firmeza curada por MIDI-B, prueba midi-B-sintética, prueba curada con MIDI-B) (interpretación 1) (conjunto de datos). El archivo de imágenes de cáncer. https://doi.org/10.7937/cf2p-aw56
Pruebe las fuentes de datos («falsas», «ZIPCSV» y «ZIPDCM») con datos de muestra suministrados, todos encontrados aquí: https://github.com/databricks-industry-solutions/python-data-sources
Comuníquese con su equipo de cuenta de Databricks para compartir su caso de uso y estrategias sobre cómo ampliar la ingestión de sus fuentes de datos favoritas para sus casos de uso analítico.