Anàlisi exploratòria de dades
mèdiques
Júlia Bosch Llufriu
Projecte de Fi de Grau
Especialitat: Computació
Directors: Pere-Pau Vázquez i Eva Monclús
25 de gener de 2021
Resum
La motilitat del còlon és un factor que complica l’anàlisi d’aquest òrgan. Degut a les dificultats derivades dels sistemes d’extracció de dades, fins ara s’ha conegut poc sobre les relacions entre les dietes i el comportament del còlon. Tot i que és possible obtenir dades morfològiques representatives a través de la tomografia computeritzada (TC), la radiació que comporten aquestes tècniques fa que només siguin adequades per a pacients amb trastorns importants. No obstant, darrerament s’ha avançat suficientment en tècniques d’imatges extretes per ressonància magnètica (RM) com per poder obtenir dades morfològiques del còlon prou fiables a través d’aquest mètode en pacients sans, i sense exposar-los a radiacions ni medicaments. Això fa que els investigadors amb els que treballen els directors d’aquest projecte disposin d’una base de dades àmplia amb dades tant de pacients sans com amb malalties. Aquest Treball de Fi de Grau desenvolupa una aplicació web que permet als digestòlegs tenir una visualització general de les dades extretes per RM i analitzar-les i comparar-les amb dades de motilitat. Es proporcionen eines interactives i de manipulació de les dades per tal de mostrar-ne una representació personalitzada general i detallada de la base de dades, permetent l’anàlisi estadístic de les mateixes i la comparació de pacients, així com l’avaluació de possibles patrons que puguin descriure l’efecte de les dietes en el còlon.
Resumen
La motilidad del colon es un factor que complica el análisis de este órgano. Debido a las dificultades derivadas de los sistemas de extracción de datos, hasta ahora se ha conocido poco sobre las relaciones entre las dietas y el comportamiento del colon. Aunque es posible obtener datos morfológicos representativos a través de la tomografía computerizada (TC), la radiación que conllevan estas técnicas hace que sólo sean adecuadas para pacientes con trastornos importantes. Sin embargo, últimamente se ha avanzado lo suficiente en técnicas de imágenes extraídas por resonancia magnética (RM) como para poder obtener datos morfológicos del colon suficientemente fiables a través de este método en pacientes sanos, y sin exponerlos a radiaciones ni medicamentos. Esto hace que los investigadores con los que trabajan los directores de este proyecto dispongan de una base de datos amplia con datos tanto de pacientes sanos como con enfermedades. Este Trabajo de Fin de Grado desarrolla una aplicación web que permite a los digestólogos tener una visualización general de los datos extraídos por RM y analizarlos y compararlos con datos de motilidad. Se proporcionan herramientas interactivas y de manipulación de los datos para mostrar una representación personalizada general y detallada de la base de datos, permitiendo el análisis estadístico de las mismas y la comparación de pacientes, así como la evaluación de posibles patrones que puedan describir el efecto de las dietas en el colon.
Abstract
The colon motility is a factor that complicates the analysis of this organ. Due to the difficulties arising from data extraction systems, little is known so far about the relationship between diet and colon behaviour. Although it is possible to obtain representative morphological data through computerised tomography (CT), the radiation involved in these techniques makes them suitable only for patients with significant disorders. However, sufficient progress has recently been made in magnetic resonance imaging (MRI) techniques to be able to obtain sufficiently reliable morphological data of the colon through this method in healthy patients, and without exposing them to radiation or medication. This means that the researchers with whom the directors of this project are working have an extensive database with data on both healthy and sick patients. This Degree Final Project develops a web application that allows digestologists to have a general visualization of the data extracted by MRI and to analyze and compare it with motility data. It provides interactive and data manipulation tools to show a general and detailed customized representation of the database, allowing statistical analysis of the data and comparison of patients, as well as the evaluation of possible patterns that may describe the effect of diets on the colon.
Índex de continguts
1. Introducció i contextualització 13 1.1. Introducció i conceptes 13 1.2. Problema a resoldre 15 1.3. Actors 16 2. Justificació 17 3. Estat de l’art 193.1. Eines per al preprocessat 20
3.2. Eines de visualització 22 3.2.1. Python 22 3.2.1.1. Pandas 22 3.2.1.2. Matplotlib 22 3.2.1.3. Plotly 23 3.2.1.4. Seaborn 23 3.2.1.5. Bokeh 23 3.2.1.6. Altair 23 3.2.1.7. Dash 24 3.2.1.8. Streamlit 24 3.2.2. JavaScript 25 3.2.2.1. D3 25 3.2.3. C++ 25 3.2.3.1. Qt 26 3.3. Conclusions 26 4. Abast 28 4.1. Objectius i subobjectius 28
4.2. Requeriments funcionals i no-funcionals 29
4.3. Obstacles i riscos 29
5. Metodologia i rigor 30
5.1. Eines utilitzades 31
6. Disseny 31
6.1. Mòdul de preprocessat 32
6.1.1. Format de les dades 32
6.1.2. Estructura 34
6.2. Mòdul de visualització 39
6.2.1. SPLOM 40
6.2.2. Scatters 42
7. Implementació 44 7.1. Preprocessat de dades 45 7.1.1. Home 46 7.1.2. Lector 46 7.1.3. Classificador 47 7.1.4. Filtratge 48 7.1.5. Abreviació 48 7.1.6. Opcions de visualització 49 7.2. Dashboard 49 7.2.1. Classe Scatter 50 7.2.2. Classe SPLOM 52 7.2.3. Visualització 54 8. Validació 56 8.1. Proves 57
9. Gestió del projecte 58
9.1. Planificació temporal 58
9.1.1. Recursos necessaris 58
9.1.2. Descripció de les tasques 59
9.1.2.1. GP - Gestió de projecte 59
9.1.2.2. TP - Treball previ 60
9.1.2.3. DP - Desenvolupament del projecte 60
9.1.2.4. EU - Estudi d’usuari 61
9.1.3. Estimacions i Gantt 62
9.1.4. Gestió del risc: Plans alternatius i obstacles 63 9.1.5. Desviacions de la planificació incial 64
9.2. Gestió econòmica 66
9.2.1. Cost de personal per activitat 66
9.2.2. Costos genèrics 67 9.2.2.1. Amortitzacions 67 9.2.2.2. Electricitat 68 9.2.2.3. Local 69 9.2.2.4. Internet 69 9.2.2.5. Aigua 69 9.2.2.6. Transport 69 9.2.3. Contingències 70 9.2.4. Imprevistos 70
9.2.5. Estimació del pressupost 71
10.1. Autoavaluació 72
10.2. Dimensió econòmica 73
10.3. Dimensió ambiental 74
10.4. Dimensió social 74
12. Conclusions 75
12.1. Validació dels objectius 75
12.2. Competències treballades 76 12.1.Treball futur 76 Bibliografia 77 Annexos 94
Índex de figures
1.1. Pipeline d’extracció de dades del mòdul de visualització. 14 1.2. Pipeline d’extracció de dades de contingut del còlon. 14
1.3. Segments del còlon. 15
1.4. Imatges obtingudes per ressonància magnètica. 16
1.5. Imatges obtingudes per endoscòpia. 16
2.1. SPLOM de la primera versió de l’aplicació. 17
2.2. Esquema visual general de la primera versió. 19 6.1. Pipeline general de l’aplicació desenvolupada. 32
6.2. Pipeline del mòdul de preprocessat. 32
6.3. Captura de la pantalla inicial. 36
6.4. Captures de pantalla del lector d’excels. 36
6.5. Captura de pantalla del mòdul de classificació. 37
6.6. Captura de pantalla del mòdul de filtrat. 37
6.7. Captura de pantalla del mòdul de reanomenament. 38 6.8. Captura de pantalla del mòdul de d’opcions de visualització. 39 6.9. Captura de pantalla del mòdul de visualització. 40 6.10. SPLOM de la segona versió de l’aplicació (1). 41 6.11. SPLOM de la segona versió de l’aplicació (2). 41 6.12. SPLOM de la segona versió de l’aplicació (3). 42
6.13. Scatterplot. 43
6.14. Visualització de dades de pacients. 44
7.1. Estructura de l’aplicació 45
7.2. Dialog de preselecció. 48
7.3. SPLOM amb cross-selection 53
7.4. Captura de pantalla del mòdul de visualització inicial. 55
9.1. Diagrama de Gantt. 62
Índex de taules
3.1. Comparativa R i Python. 21
3.2. Resum de les eines considerades. 21
6.1. Nomenclatura dels fitxers generats per l’aplicació. 34 7.1. Taula resum de la gestió dels fitxers per mòduls. 45
7.2. Callbacks de l’aplicació. 56
8.1. Configuracions amb què s’han executat els Tests 1 i 2. 57
9.1. Resum descriptiu de les tasques. 63
9.2. Desviacions de les tasques. 66
9.3. Sous i costos dels rols del projecte. 66
9.4. Càlcul de costos de personal per activitat. 67
9.5. Càlcul del cost dels recursos materials. 68
9.6. Cost de l’electricitat. 68
9.7. Costos genèrics. 70
9.8. Costos amb contingències. 70
9.9. Costos d’imprevistos. 71 9.10. Pressupost final. 71
Glossari
EDA - Exploratory data analysis, anàlisi exploratòria de dades
ML - Machine learning, aprenentatge automàtic
RM, MR/MRI - Ressonància magnètica/imatges de ressonància magnètica
SPLOM - Scatterplot matrix. Matriu de gràfics de dispersió.
TC, CT - Tomografia computeritzada
1. Introducció i contextualització
1.1. Introducció i conceptes
L’anàlisi exploratòria de dades (EDA per les seves sigles en anglès) és un pas previ i un procés d’investigació inicial a l’hora de representar la població de la qual procedeixen les dades mostrals. L’objectiu de l’anàlisi és identificar el model teòric més adequat explorant, descrivint, resumint i visualitzant la naturalesa de les dades recollides [5].
Aquest anàlisi es fa mitjançant l’aplicació de tècniques simples de resum de dades, mètodes gràfics, i estadístics sense assumpcions que permetin la seva interpretació. La finalitat és explorar la distribució de les dades identificant característiques tals com valors atípics o outliers, salts o discontinuïtats, concentracions de valors, forma de la distribució, etc. També permet testejar hipòtesis i comprovar supòsits, així com donar sentit a les dades recollides abans de treballar-hi, i possibilita la comprensió inicial de les dades per a una recopilació inicial d’idees sobre les mateixes [1][21][35].
Per altra banda, l’EDA es pot realitzar sobre tots els casos i dades conjuntament o bé de forma separada per grups. En aquest darrer cas, els gràfics i estadístics permeten identificar si les dades procedeixen d’una o diverses poblacions, considerant la variable que determina els grups com a factor diferenciador de les poblacions. També permet comprovar, mitjançant tècniques gràfiques i contrastos no paramètrics, si les dades han estat extretes d’una població amb distribució aproximadament normal.
El programa SPSS i el llenguatge de programació R són les aplicacions més utilitzades per dur a terme aquest anàlisi, tot i que no són les úniques.
Figura 1.1. Segments del còlon: ascendent (blau), transversal (vermell), descendent (groc) i pèlvic (verd). Font: [30]
El sistema digestiu és molt complex, amb molts òrgans i funcions diferents que juguen un paper important en la nostra salut. Entre tots els òrgans de la cavitat abdominal, ens interessa el còlon. El còlon és un òrgan en moviment continu, amb quatre segments diferents: esquerre (o ascendent), transversal, dret (o descendent) i pèlvic, com es mostra a la Figura 1.1. Aquests segments presenten morfologies molt variables entre els pacients: la seva mida, longitud, volum, etc. no semblen estar relacionats amb altres paràmetres morfològics dels pacients, com ara l’alçada o el pes.
Aquest és un teball de fi de grau de la menció en computació del Grau en Enginyeria Informàtica de la Facultat d’Informàtica de Barcelona, Universitat Politècnica de Catalunya, i està codirigit per Pere-Pau Vázquez i Eva Monclús, tots dos membres del grup de recerca ViRVIG [48].
El projecte s'emmarca en la recerca que el grup ViRVIG duu a terme en col·laboració amb la unitat de Digestologia de l'hospital Vall d'Hebron de Barcelona. En aquesta recerca [29 ][30], s'investiga l'efecte de les dietes en el comportament dels intestins. En particular, es desenvolupen diferents plataformes de software que permeten analitzar el contingut i la motilitat del còlon (veure Figura 1.2).
Figura 1.2. Pipeline d’extracció de dades del mòdul de visualització. En vermell s’han indicat
les parts de l’arquitectura del sistema de la recerca que intervenen en aquest treball. Font: [29]
La Figura 1.2 il·lustra el procés d’obtenció de les dades que s’utilitzaran per dissenyar, desenvolupar i testejar l’aplicació, i la Figura 1.3 detalla el procés mitjançant el que es generen les dades de contingut del còlon. Com es pot observar, tant les dades geomètriques o de morfologia i les dades de contingut s’obtenen a partir de les imatges extretes amb tècniques de RM, mentre que les de motilitat s’obtenen d’una font externa a partir del software de càpsules de vídeo inalàmbriques mitjançant un procés anomenat endoscòpia.
Figura 1.3. Pipeline d’extracció de dades de contingut del còlon. Font: [29]
1.2. Problema a resoldre
Actualment es coneix poc sobre el comportament de les diferents parts d’un còlon saludable en resposta a diferents afeccions alimentàries. No s’ha establert cap relació entre diferents paràmetres del còlon (per exemple, la seva longitud) respecte d’altres característiques morfològiques dels pacients (per exemple, l’alçada o pes).
En la recerca s’utilitzen tres tipus de dades del còlon: dades morfològiques (o geomètriques), dades de contingut de còlon (ambdues recollides amb imatges per ressonància magnètica (veure Figura 1.4) o MRI per les seves sigles en anglès) i, mitjançant endoscòpia de càpsules de vídeo sense fils (veure Figura 1.5), dades de motilitat.
Aquest projecte parteix de la necessitat d’una aplicació per disminuir el temps que han d’invertir els investigadors per dur a terme l’EDA, ja que, per una banda, es realitza mitjançant un programari estadístic (fulls de càlcul amb Excel i SPSS) que fa que sigui un procés tediós en el que triguen fins a tres hores per obtenir la base de dades de morfologia. Per altra banda, les dades de contingut i motilitat del
Figura 1.4. Imatges obtingudes per ressonància magnètica. Font: [30]
Figura 1.5. Imatges obtingudes per endoscòpia. Font: [40]
còlon també són analitzades pels metges mitjançant SPSS per a buscar-hi correlacions entre elles, una tasca d’entre cinc i sis hores [29].
El nostre enfocament explicat a continuació pretén reduir aquest costós procés, proporcionant una eina dissenyada específicament que faciliti l’anàlisi de múltiples variables, impulsant així l’exploració inicial de dades. Essencialment, els experts volen poder avaluar ràpidament si certes variables presenten correlacions dins d’un conjunt de pacients.
L’objectiu del projecte és desenvolupar una aplicació d’anàlisi de dades exploratòria que permeti visualitzar i explorar dades numèriques extretes dels procediments mèdics comentats anteriorment. Es vol desenvolupar un sistema amb mètodes d’interacció que facilitin la comparació visual de grans conjunts de dades, i capaç de calcular algunes funcions estadístiques estàndard (per exemple, el coeficient de Pearson).
1.3. Actors
El sistema a desenvolupar va dirigit específicament als investigadors de la Vall d'Hebron i l'Hospital General de Catalunya, ja que són ells els que estan interessats en aconseguir eines que permetin analitzar d'una forma més eficient les dades que s'obtenen a través de les proves diagnòstiques.
Per altra banda, si ho enfoquem des d’un punt de vista més general, l’aplicació tindrà com a beneficiari el Grup ViRVIG, ja que permetrà avançar en el desenvolupament d'aplicacions de visualització de dades, més enllà de les dades i interessos de la recerca en qüestió, i per conseqüent permetrà agilitzar processos d’anàlisi de dades.
Finalment, també cal tenir en compte com a actors i beneficiaris els pacients dels metges amb els que es treballa. Són la font de les dades i, a la fi, seran també uns dels principals beneficiats, ja que els metges que els tracten seran capaços de treballar millor i més eficientment, cosa que implica resultats positius per ambdós.
2. Justificació
Per a contextualitzar una mica més la motivació d’aquest projecte, val a dir que hi ha una primera versió d'aquesta eina que conté un mòdul de visualització, però és limitat tant en el nombre de les interaccions com en la forma de manipular les dades. Per exemple, com podem observar en la Figura 2.1, corresponent a una matriu scatterplots (SPLOM) d’aquesta versió, en fer hover sobre un gràfic es poden visualitzar els noms de les variables i es realça el gràfic simètric amb un contorn.
Figura 2.1. SPLOM amb hover sobre un gràfic de la primera versió de l’aplicació [29].
Per tant, l’objectiu inicial serà crear una aplicació que asseguri els requisits
de la primera versió, i posteriorment afegir-hi millores per ampliar-ne les possibilitats d’anàlisi i, en definitiva, els beneficis.
Les principals mancances de la primera aplicació són degudes, principalment, a tot el que suposa treballar amb aquestes dades (veure l’annex B per més detalls):
● Com es pot veure a la Figura 1.1 i s’explica anteriorment, tot i que els Excels amb els que treballen els investigadors provenen d’altres sofwares, com que ells mateixos són els que manipulen el format de les dades i hi posen etiquetes diferents, es fa difícil la homogenització. A més a més, només disposem d’un fitxer Excel de dades de cada tècnica, cosa que en dificulta més la generalització.
● Tant en el fitxer de dades per ressonància magnètica com en el de dades per càpsula hi trobem un gran nombre de variables diferents (56 i 92 respectivament). Això fa que l’anàlisi simultani de totes les dades no sigui possible, de manera que els investigadors duen a terme més d’una sessió d’anàlisi per cada fitxer.
Amb tot això, l’aplicació anterior estava enfocada únicament a l’anàlisi de les dades de les que disposem, amb un format detreminat, mentre que aquesta versió proporciona un mòdul amb mètodes que permeten treballar amb diferents tipus de dades i de variables perquè la naturalesa de l’aplicació no suposi una limitació a l’hora d’expandir l’abast de les dades (afegir noves variables, tipus, etc.). A més a més, es recorda la darrera configuració de visualització per a cada fitxer per facilitar les sessions d’anàlisi seguides.
La contribució d’aquest projecte radica en la creació d’una eina visual interactiva per facilitar l’anàlisi exploratòria de les dades extretes mitjançant un disseny de matriu de diagrama de dispersió personalitzat (SPLOM) i diagrames de dispersió individuals (scatterplots), ja que l’enfocament visual pot reduir el costós procés d’anàlisi de dades del còlon. Com a resultat, els metges han estat capaços d’obtenir nous coneixements sobre els efectes de les dietes i també obtenir una millor comprensió de la motilitat del còlon. Així, l’aprofitament, adaptació i ampliació d’aquesta eina permetrà agilitzar i facilitar el desenvolupament de l’anàlisi de les dades del còlon.
Figura 2.2. Esquema visual general de la primera versiól projecte, amb la SPLOM (baix a la dreta) i els scatterplots individuals [29].
L’estructura visual de l’aplicació pretén mostrar entre tres i quatre gràfiques de mida raonable en pantalla: la principal, una matriu d’scatterplots amb les dades d’entrada, que variarà en funció de si aquestes són d’un sol tipus de mesura (per exemple dades només morfològiques) o de dos (morfològiques i motilitat); i dos o tres scatterplots de caràcter més específic. La matriu d’scatterplots permet obtenir una visualització general i ràpida de les dades i les relacions entre variables, així com les corbes de regressió, mentre que els scatterplots senzills proporcionen una vista precisa i detallada de la distribució de les dades dels diferents pacients. A més, aquestes visualitzacions van acompanyades d’una sèrie de càlculs estadístics com el coeficient de Pearson (que quantifica la correlació entre dues variables) per a
destacar aquells parells de variables correlacionats. A la Figura 2.2 es pot veure l’estructura visual de la primera versió de l’aplicació.
La intenció és realitzar una sola aplicació que permeti comparar de diferents formes dades de múltiples pacients i que, mitjançant una sèrie d'estadístics i tècniques d'interacció, es faciliti trobar correlacions entre diferents variables. En resum, el que es vol és una eina tipus web que permeti als metges llegir dades i fer una anàlisi exploratòria de la manera més còmoda i ràpida possible.
3. Estat de l’art
Degut a la complexitat i singularitat de cada un dels tipus de dades que es tracten en les investigacions, és difícil trobar programes o aplicacions genèrics per dur a terme l’anàlisi exploratòria de dades. En tot cas, existeixen diferents llibreries que estan enfocades en la proporció d’eines senzilles i funcionals per a dur a terme el nostre EDA personalitzat. Per tant, quan parlem d’aplicacions similars presents en el mercat, cal tenir en compte que ens poden servir d’inspiració, però el que s’ha de considerar són les eines, llenguatges i llibreries que proporcionin mètodes per a la programació de les funcionalitats específiques que es defineixen en l’especificació del treball. S’ha agafat inspiració de diferents projectes que duen a terme usuaris individuals ja que, avui en dia, els fòrums d’ajuda i les comunitats són un gran factor a tenir en compte a l’hora de decidir de l’eina que es vol utilitzar, i més en un projecte d’EDA on les possibilitats de personalització de l’aplicació i interaccions són gairebé infinites.
3.1. Eines per al preprocessat
A causa dels problemes dels sets de dades comentats en l’apartat 2, ha resultat necessari proporcionar una eina de preprocessat de dades que permeti als usuaris dur a terme un filtratge previ sobre la base de dades original. D’aquest filtratge en sortiran unes dades adequades perquè el mòdul de visualització les pugui tractar i representar correctament.
Inicialment, aquesta tasca es volia implementar en forma de widget, programat en Qt. Aquest widget tenia les funcions de lectura dels fitxers i selecció i reanomenament de dades per a la visualització. En el plantejament inicial, els càlculs estadístics estaven pensats com un preprocés en R, on es generaria un fitxer que seria llegit posteriorment per l’aplicació. En aquesta versió de l’aplicació, a diferència de la primera, l’entrada de dades s’ha fet més flexible i per això és necessari ampliar les possibilitats de manipulació de dades. A causa de la poca experiència en Qt, es va fer una prova on la implementació del widget i la incorporació de nous passos en la manipulació de les dades es preveia més costosa del necessari.
Python és un llenguatge multiplataforma que compta amb un gran nombre de llibreries i frameworks que, juntament amb el seu rendiment, fan que hagi sigut l’opció escollida. A més a més, és llegible i en poques línies de codi es poden programar funcionalitats molt interessants. Finalment, s’ha proposat una nova disposició de l’aplicació: aprofitant la condició que s’ha de proporcionar una eina web i que la llibreria Pandas de Python proporciona eines molt útils i senzilles per a tractar Excels i CSVs, el preprocessat s’ha definit com un pas previ necessari a l’hora de configurar la visualització, integrat en l’aplicació, de manera que el preprocessat i els càlculs estadístics es duen a terme dins de la mateixa aplicació.
El llenguatge R proposat inicialment està creat específicament per a anàlisis estadístiques i mineria de dades i, com Python, orientat a data science. Tot i que proporciona nombroses opcions de visualització i d’anàlisi de dades (aproximadament 12.500 paquets en el repositori CRAN de paquets de R [10]), R està desenvolupat per estadistes i inclou el seu llenguatge específic, mentre que Python segueix sent preferible per aquest preprocessat perquè permet implementar fàcilment un frontend, i un backend que proporcioni les dades estadístiques que necessitem sense renunciar a l’eficiència i llegibilitat. La Taula 3.1 compara aquests dos llenguatges en diferents aspectes que són interessants per al nostre objectiu concret.
Taula 3.1. Comparativa R i Python. Font: elaboració pròpia.
Després d’una recerca en diferents fòrums específics, s’ha decidit utilitzar el framework Flask de Python per al tractament de les dades i configuració de la visualització d’aquesta versió, ja que proporciona les eines necessàries per al
Aspecte R Python
Ús Anàlisi estadística Enfocament general a data science Objectiu Anàlisi de dades i
estadística Implementació i producció
Usuaris Acadèmics i I+D Programadors i desenvolupadors
Flexibilitat En ús de biblioteques En creació de nous models Corba
d’aprenentatge Elevada al principi Lineal i aprenentatge suau Integració Execució local Bona integració en aplicacions Processat de
desenvolupament àgil i ràpid de mètodes de manipulació de les dades, amb la possibilitat d’afegir-hi funcionalitats a través de plugins en versions posteriors de l’aplicació. És popular, de codi obert i compta amb una bona comunitat i documentació. A més a més, té bona corba d’aprenentatge i s’ha pogut aprendre ràpidament.
Un dels altres frameworks web de Python més coneguts i utilitzats, Django, com diu a [6], a diferència de Flask és complet, però és més complicat d’aprendre i la majoria de les característiques que proporciona no són rellevants per al projecte gràcies a la senzillesa de les tecnologies web necessàries, ja que les dades per a la visualització són guardades en fitxers CSV i no es necessita una base de dades.
3.2. Eines de visualització
A continuació es descriu l’anàlisi de mercat i les eines tingudes en compte a l’hora d’escollir la més adequada per al mòdul de visualització d’aquest projecte.
Amb la finalitat de proveir a l’usuari les visualitzacions i interaccions desitjades, s’han tingut en compte diferents llenguatges, frameworks i llibreries. Les propostes principals eren la llibreria Altair de Python, D3 de JavaScript i el framework Qt de C++. A continuació, s’expliquen les que s’han considerat i el motiu per què s’han decidit utilitzar o descartar (veure annex D per una informació més detallada).
3.2.1. Python
Python és un llenguatge de programació interpretat, multiparadigma, fortament tipat, dinàmic i de codi obert. Pel que fa a l’experiència personal, s’han treballat els conceptes de Python en l’assignatura Llenguatges de Programació [28], alhora que es va generar un script senzill en aquest llenguatge.
És un llenguatge senzill i potent, sobretot en ML i visualització de dades. És llegible i en poques línies de codi es poden programar funcionalitats molt interessants. És molt popular i té moltes llibreries i documentació que han permès facilitar i agilitzar la feina. A més a més, també és adequat per al desenvolupament d’aplicacions web [49].
Com diu [19], l’índex de paquets Python té biblioteques per a pràcticament totes les necessitats de visualització de dades, però les més populars que ofereixen la gamma més àmplia de funcionalitats són les següents:
3.2.1.1. Pandas
Pandas [33] és una llibreria de Python per l’anàlisi visual de dades. És una eina d’anàlisi i manipulació de dades de codi obert ràpida, potent, flexible i fàcil d’utilitzar. En aquest projecte s’utilitza per a la lectura dels fitxers Excel de l’usuari i per al seu posterior tractament en format CSV i visualització.
3.2.1.2. Matplotlib
Matplotlib va ser la primera llibreria de visualització de dades de Python i la biblioteca més àmpliament utilitzada per generar visualitzacions senzilles i potents a la comunitat Python.
Tot i que Matplotlib és adequat per obtenir una idea de les dades, no és molt útil per crear gràfics amb qualitat de publicació de forma ràpida i senzilla. Com assenyala Chris Moffitt en la seva visió general de les eines de visualització de Python a [32], Matplotlib "és extremadament potent, però amb aquest poder arriba la complexitat".
3.2.1.3. Plotly
Plotly, en canvi, és una eina de visualització de dades més sofisticada que Matplotlib i és més adequada per crear gràfics elaborats de manera més eficient, a la vegada que és elegant i proporciona interactivitat.
3.2.1.4. Seaborn
Seaborn és una biblioteca de Python de visualització de dades basada en Matplotlib i que s’integra amb Pandas. Ofereix una interfície d’alt nivell per dibuixar gràfics estadístics atractius i informatius.
A [44] hi trobem un exemple senzill d’implementació d’una matriu dde gràfics de dispersió en molt poques línies de codi. Tanmateix, pel que fa a les interaccions, es recomana utilitzar una interfície Jupyter / IPython en mode Matplotlib, o bé crides a matplotlib.pyplot.show() per a la visualització dels gràfics. Això fa que siguin preferibles altres eines de visualització i interacció considerades, ja que permeten una manipulació dels atributs i propietats més flexible.
3.2.1.5. Bokeh
És una llibreria per a visualització interactiva (disponible per a Python, R (rbokeh), Lua (bokeh-lua) i Julia (bokeh.jl)). A diferència de les llibreries populars de visualització de Python, com Matplotlib i Plotly, Bokeh renderitza els seus gràfics mitjançant HTML i JavaScript, de manera que s’orienta als navegadors web per a representar-los. Per això podria ser una bona opció per al TFG, ja que el que busquem principalment és una aplicació web de gràfics interactius [39].
3.2.1.6. Altair
Altair és una llibreria Python dissenyada per a la visualització estadística. És de naturalesa declarativa (“indica què fer en comptes de com fer-ho”). Es basa en Vega i Vega-Lite, que són gramàtiques de visualització que permeten descriure l’aspecte visual i el comportament interactiu d’una visualització en format JSON. Els gràfics bàsics d’Altair no proporcionen mètodes interactius, com sí que fan altres eines com Plotly, Bokeh o D3.
3.2.1.7. Dash
Dash [16] és un framework Python per crear aplicacions web, desenvolupat pels creadors de Plotly. Està basat principalment en Flask, Plotly.js i React.js, i té les següents característiques [31]:
● Les aplicacions es renderitzen al navegador.
○ Això comporta que podem tenir la nostra aplicació o servei desplegat en un servidor, i posteriorment podem compartir, mitjançant URL, el nostre dashboard o quadre de comandament amb diverses persones. ○ En renderitzar al navegador, dues persones poden estar veient el
mateix dashboard i poden realitzar modificacions o visualitzacions diferents en aquests dashboards, i no es trepitgen l'una a l'altra, ja que cada dashboard és propi de cada navegador.
● És multiplataforma i està preparat per a mòbils, cosa que és molt important avui en dia.
● Permet crear aplicacions senzilles de manera molt ràpida i concisa, encara que també es poden complicar tot el que vulguem.
● És de codi obert.
● Permet crear dashboards en Python pur.
Dash s’integra perfectament amb la llibreria d’anàlisi i manipulació de dades Pandas. Té molt bona documentació i compta amb una comunitat molt activa, cosa molt útil, ja que Dash permet crear figures i gràfics personalitzats.
3.2.1.8. Streamlit
Streamlit [51] permet construir dashboards semblants als obtinguts amb Dash. És una llibreria de codi obert que proporciona mètodes per a la creació ràpida i molt senzilla d’aplicacions web per ML i data science estètiques. Es combina amb altres llibreries com Pandas, Matplotlib, Plotly o Seaborn per a la creació dels gràfics.
Com que s’ha escollit Flask per al preprocessament, ens convé una integració fàcil i ràpida per a la cohesió de l’aplicació general. Segons [27], Streamlit executa el seu propi servidor web mitjançant el framework Tornado i no hi ha una manera adequada d’incorporar una aplicació Streamlit dins d’un servidor Flask. De fet, Streamlit no està pensat per a ser integrat en altres eines, sinó que més aviat és un framework per crear una aplicació web completa. A més a més, no és especialment eficient ni molt personalitzable, cosa que fa que no sigui la millor opció per aquest projecte, ja que podria limitar-ne l’escalabilitat [13].
3.2.2. JavaScript
JavaScript és un llenguatge de programació interpretat i és conegut com a llenguatge d’scripting per a pàgines web i utilitzat en molts entorns fora del navegador, com Node.js i Adobe Acrobat. És un llenguatge de programació basat en prototips, multiparadigma, d’un sol thread, dinàmic, amb suport per a programació orientada a objectes, imperativa i declarativa. L’experiència personal amb aquest llenguatge és poca, limitada als conceptes bàsics.
Potser JavaScript no estigui entre els idiomes adoptats per a Data Science, però ofereix grans oportunitats per a la visualització de dades, i moltes llibreries per a altres llenguatges són en realitat embolcalls per a paquets de JavaScript.
Un dels desavantatges de JavaScript respecte a Python és que la manipulació dels fitxers CSV no es fa de manera tan abstracta com sí que es pot aconseguir amb Pandas.
3.2.2.1. D3
D3 [7] es diu la mare de totes les biblioteques de visualització, ja que és la base de moltes biblioteques. Tot i ser la més antiga, continua sent la llibreria de
visualització de dades JavaScript més popular i extensa. Utilitza estàndards web, és un framework agnòstic (no depèn de cap altre), i funciona sense problemes amb qualsevol framework JavaScript. D3 està dissenyat per manipular documents basats en dades i donar vida a les dades mitjançant HTML, SVG i CSS. L’èmfasi de D3 en els estàndards web proporciona les capacitats dels navegadors moderns sense que s’acoblin a un ‘host framework’, i combina components de visualització i un enfocament basat en dades per a la manipulació del model d’objecte de document (DOM).
A [26] trobem un exemple d’implementació d’una matriu de correlacions en D3 interactiva, molt semblant al que es vol aconseguir en el mòdul de visualització d’aquest projecte. D3 va ser l’eina escollida per a la implementació de la primera versió de l’aplicació.
3.2.3. C++
C++ és un llenguatge de programació orientat a objectes compilat, multiparadigma, multiplataforma i amb un sistema de tipus fort, estàtic i nominatiu. El domini previ sobre aquest llenguatge és ampli, ja que s’hi ha treballat durant els primers anys del Grau.
Entre les seves principals característiques destaca el seu alt rendiment, ja que és capaç de fer crides directes al sistema operatiu, és un llenguatge compilat per cada plataforma, amb gran varietat de paràmetres d’optimització i s’integra de forma directa amb el llenguatge assemblador. També cal destacar que és un llenguatge antic, però actualitzat, de manera que permet crear, relacionar i operar amb dades complexes i ha implementat múltiples patrons de disseny [41].
Els desavantatges de C++ que s’han de tenir en compte són essencialment el fet que és un llenguatge molt ampli (amb molts anys i moltes línies de codi), així com la necessitat de compilació per a cada plataforma i la dificultat de depuració. Pel que fa a aquest projecte, caldrà llegir, manipular i guardar fitxers Excel o CSV, tasca que no és tan fàcil en C++ com amb Python a través de Pandas.
3.2.3.1. Qt
Qt és un framework de codi obert de C++ multiplataforma i orientat a objectes, àmpliament utilitzat per al desenvolupament d’interfícies gràfiques d’usuari i treballat en l’assignatura IDI [25] del Grau.
A [43] es pot veure un exemple d’implementació de gràfic de dispersió amb la classe QScatterSeries de Qt. Cal destacar que cada propietat del gràfic que es vulgui
afegir o modificar sol requerir una línia de codi addicional amb mètodes molt específics.
El principal problema que presenta Qt a l’hora de ser considerat per al desenvolupament d’aquest projecte és la seva integració en la web, ja que s’han de descarregar les versions binàries a les plataformes Linux, macOS i Windows i crear les aplicacions Qt perquè s’executin dins d’un navegador web [9].
3.3. Conclusions
Llenguatge Framework/ Llibreria/ Eina Avantatges InconvenientsPython Bokeh 1. Orientada a web
2. Bon rendiment en grans sets de dades 3. Proporciona sortida en diversos suports 4. Integració en Flask 5. Flexibilitat en les interaccions 6. Bona corba d’aprenentatge
1. Codi obert. Possibles canvis.
2. Menys opcions de visualització que altres eines com D3
3. En baix nivell l’especificació és en Matplotlib (pot arribar a ser molt complexa)
Altair 1. Naturalesa declarativa 2. Abstracció en les interaccions 3. Codi concís 1. En fase de desenvolupament 2. No té interaccions per defecte
Dash 1. Escrit sobre Flask i Plotly
2. Funcionalitats ‘out of
the box’
3. Gran comunitat i documentació 4. Declaratiu 5. Utilitza D3.js 6. Estable 7. Codi concís
1. Les interaccions de l’usuari es produeixen en els punts/dades
JavaScript D3 1. Molt potent
2. Dóna pas a moltes possibilitats
3. Tecnologia web
1. Codi, extens, poc declaratiu
2. Bastant laboriós 3. S’han de tenir coneixements de JavaScript
Taula 3.2. Resum de les eines considerades
El resum de la Taula 3.2 il·lustra els principals avantatges i inconvenients de les eines que s’han decidit tenir en compte per a la implementació del mòdul de visualització de l’aplicació. Està dividida per llenguatges, que alhora deriven en les eines i frameworks dels que disposen. Pel que fa a les llibreries Matplotlib i Plotly val a dir que s’han considerat altres frameworks construïts a sobre seu, tenint en compte les característiques base d’aquestes llibreries, ja que proporcionen funcionalitats ‘out of the box’ i un nivell d’abstracció que ajuda a la implementació de les funcionalitats necessàries. Finalment s’ha escollit Dash per diferents motius:
● Està construït sobre Plotly, que ja proporciona alguns avantatges sobre Matplotlib comentats anteriorment.
● S’integra perfectament amb Pandas.
● Té una sintaxi i mètodes molt útils, fàcils d’utilitzar i d’aprendre. A més a més, les propietats es personalitzen de forma declarativa a través d’arguments.
● S’escriu completament en Python, fet que accelera encara més el procés d’aprenentatge pel fet que només s’ha d’aprendre un llenguatge/framework i és molt llegible.
● Els diferents nivells d’abstracció que proporciona permeten crear gràfics molt ràpidament i en una sola línia de codi, però també tenim l’opció de crear-ne de nous totalment personalitzats i adaptats a les necessitats. Això és especialment útil, ja que l’estructura de l’SPLOM no és molt popular i en les figures d’aquest tipus predefinides solen mancar-hi funcionalitats i mètodes necessaris per a la realització d’aquest treball. A més a més, en el nostre cas hem de gestionar de dues formes aquesta figura (depenent de si llegim un fitxer o dos).
● Les interaccions també es fan senzilles a través de ‘callbacks’. Només cal especificar els elements que intervenen en la interacció, d’entrada i de sortida, i la funció que determina els valors de sortida segons els d’entrada. ● Si és necessari es poden crear components i ‘callbacks’ des de 0 amb
JavaScript i ReactJS. La bona documentació de la qual disposa fa que aquestes tasques siguin significativament més senzilles del que resultarien amb altres frameworks, ja que ens estalvien temps de recerca en diferents llocs.
● Les aplicacions creades amb Dash estan compostes per dues parts: el layout i les interaccions. Pel layout, Dash proporciona classes de Python per a tots els
C++ Qt 1. Eficient
2. Ampli i amb molta informació
1. Integració web 2. Complex i extens en les opcions
3. Sol requerir moltes línies de codi
components visuals de l’aplicació [22], tant per qualsevol etiqueta HTML com pels de més alt nivell i interactius, propis de Dash.
● La seva documentació és molt extensa, ben organitzada i ben mantinguda, i també compta amb una gran comunitat que proporciona solucions, alternatives o almenys resposta a gairebé tots els dubtes i problemes que es puguin tenir. Això ha cobrat molt pes, ja que per a l’aplicació es necessiten funcionalitats senzilles però molt específiques, i que amb altres llibreries podrien resultar més complicades.
En treballar amb Python tant pel tractament de les dades com per a la visualització, el format d’aquestes és el mateix, i els DataFrames de Pandas ens facilitaran la feina.
4. Abast
4.1. Objectius i subobjectius
Com s’ha explicat abans, l’objectiu principal del projecte és desenvolupar una eina basada en gràfics 2D per facilitar l’anàlisi visual exploratòria i, en concret, la recerca, per exemple, de correlacions entre mesures morfològiques, així com l’anàlisi detallada de casos individuals o la comparació pacient-pacient sense la necessitat d’utilitzar programari addicional. Per tant, l’enfocament inicial és construir una eina per analitzar la base de dades amb l’objectiu d’obtenir coneixement sobre la influència de les dietes o d’altres relacions que els metges considerin que cal investigar. La nostra intenció és agrupar, en una única eina basada en web, les característiques d’anàlisi estadística que utilitzen a SPSS i la possibilitat d’inspecció individual de dades numèriques per a pacients. Per a l’assoliment d’aquest objectiu, s’han definit els següents subobjectius:
1. Desenvolupament d’un sistema de lectura en format CSV (en la fita inicial) de dades morfològiques, o morfològiques i de motilitat.
2. Desenvolupament d’eines de visualització general de les dades carregades. 3. Desenvolupament d’eines d’interacció que permetin modificar i ajustar les
dades i detalls mostrats.
4. Programació de càlculs estadístics sobre les dades (amb filtratge o sense) per a la detecció i anàlisi de potencials correlacions.
4.2. Requeriments funcionals i no-funcionals
L’aplicació proporcionarà mètodes d’interacció diversos per a obtenir informació més detallada, així com funcionalitats que permetran treballar més eficientment amb les dades representades. Inicialment es volen programar eines
que permetin les tasques típiques de filtratge, zoom i detalls sobre demanda. Això es vol aconseguir mitjançant interaccions com per exemple:
● hover sobre un scatterplot gran per a mostar les dades del pacient, ● hover sobre un element de la matriu d’scatterplots per mostrar les
dades estadístiques i els noms de les variables (abreviades en els scatterplots, veure Figura 1),
● arrossegar un element a un scatterplot per mostrar les dades de l’element a l’scatterplot,
● la filtració de variables, fent possible l’eliminació de les seleccionades de la matriu d’scatterplots,
● l’accés a les dades dels pacients d’un scatterplot
i altres funcionalitats i càlculs sota demanda que puguin sorgir durant l’etapa de desenvolupament i testatge.
L’eina d’inspecció visual complirà dos requeriments bàsics per a l’assoliment dels objectius: els usuaris seran capaços d’analitzar múltiples paràmetres alhora i l’aplicació serà fàcilment accessible des de diferents ordinadors per a facilitar la col·laboració entre companys.
4.3. Obstacles i riscos
Com en tot projecte, en el camí ens podem trobar amb diferents obstacles que cal resoldre de la manera més ràpida i eficient possible, de la mateixa manera que s’han d’assumir uns certs riscos per avançat. Seguidament s’exposen i es descriuen els principals tipus de problemes amb què ens podríem trobar durant la realització del projecte.
1. Problemes de disseny. El creixement exponencial de les combinacions de variables possibles. Tenint en compte que estem tractant amb dades que s’analitzaran en relació de parells en la disposició dels scatterplots, la proporció d’aquests pot arribar a ser molt gran si s’han de tenir en compte totes les variables. Cal buscar abstraccions o aplicar un filtratge basat en paràmetres de les dades per a presentar un número raonable de dades que no comprometi els resultats de l’anàlisi.
2. Problemes d’implementació. Per a evitar en la mesura possible els problemes que puguin sorgir a causa de la dificultat de la implementació, cal buscar assessorament i informació per intentar predir les possibles problemàtiques i dilemes derivats de les possibilitats que ofereixen els diferents llenguatges i llibreries.
3. Problemes de dades. És un factor del qual no es té control directe, ja que els encarregats de proporcionar les dades amb què treballem són els metges. Això pot significar que al llarg del projecte ens trobem amb falta de les mateixes dades o que no en tinguem tantes com seria desitjable.
4. Problemes d’avaluació. Aquesta és una dificultat afegida fermada als temps actuals. El fet de treballar amb professionals de l’àmbit de la salut ens condiciona a l’evolució de la COVID-19. En el cas d’una altra onada de la malaltia, amb xifres d’ingressats similars a la primera, els col·laboradors que suposadament haurien d’avaluar i testejar l’aplicació es veuen obligats a dedicar-se pràcticament íntegrament a la pandèmia, perjudicant aquesta part del projecte.
5. Metodologia i rigor
Per a la correcta realització d’un projecte i l’assoliment dels objectius proposats, cal escollir una metodologia que s’adapti a les característiques i requeriments d’aquest.
Per endavant, la intenció que es persegueix és la de començar definint uns objectius que garanteixin un producte viable sense errors que tingui, com a mínim, les funcionalitats del producte anterior, comentat en l’apartat 2. D’acord amb aquesta idea, la metodologia àgil de desenvolupament de software encaixa amb els requeriments establerts.
El terme 'Agile' es refereix a les metodologies àgils. Recull unes tècniques per a la gestió de projectes en què s'utilitza un enfocament incremental i iteratiu per gestionar els projectes.
Si seguim un desenvolupament àgil, estarem seguint un cicle de vida adaptatiu davant dels canvis. Té la peculiaritat que el producte va evolucionant al llarg de tot el projecte, de manera que ni es dissenya ni es planifica per avançat. L’objectiu és tenir una major flexibilitat davant la presència de canvis. Així mateix, en un entorn de desenvolupament agile es va creant i presentant el producte al client en intervals curts que es coneixen sota el nom d’'esprints'.
Agile és la metodologia a seguir ideal per als projectes d'IT en què hi ha canvis constants, amb molta rapidesa a causa de noves decisions del client o canvis en l'entorn. Així, permet una gran flexibilitat que ens és d’una ajuda important a l’hora de definir les funcionalitats més importants i urgents, com els requeriments que sorgeixen durant la implementació.
A més, s’ha d’assegurar que el projecte es desenvolupa en un entorn de rigor i fiabilitat, pel que és necessari portar un seguiment periòdic de l’estat del projecte que asseguri que es va avançant. La responsable d’aquest seguiment és la codirectora Eva Monclús, ja que és qui té contacte directe amb els metges. També es volia fer un estudi d’usuari final amb els col·laboradors.
5.1. Eines utilitzades
Per una banda, per a facilitar el seguiment dels objectius s’ha utilitzat Slack [45], una de les eines de comunicació per a equips en remot més populars actualment. Slack ens ha permès tenir una comunicació eficient i ràpida adequada per als problemes i dubtes que han sorgit durant la realització del projecte.
Per altra banda, per al control de versions s’ha utilitzat GitLab [18], que ha permès tenir presents en tot moment els canvis i progressos que s’han anat fent al projecte, així com recuperar parts del codi de versions anteriors quan ha resultat necessari.
Finalment, s’han programat visites al Centre de Realitat Virtual (CRV) [2] per a treballar en un ambient més favorable i possibilitar un seguiment més acurat amb un contacte més directe.
6. Disseny
A continuació s’explica detalladament el disseny que s’ha seguit per al desenvolupament de l’aplicació i s’acompanya de captures de pantalla per a proporcionar una idea general del funcionament dels mòduls que conformen l’aplicació. La Figura 6.1 en mostra el pipeline general. Com es pot observar, és un disseny seqüencial, de manera que, partint de les dades originals, s’aplica un preprocessat i el resultat d’aquest serveix d’entrada per al mòdul de visualització.
Figura 6.1. Pipeline general de l’aplicació desenvolupada. Font: elaboració pròpia.
6.1. Mòdul de preprocessat
Aquest mòdul proporciona eines i mètodes que permeten donar a les dades un format adequat per a la seva posterior representació en el mòdul de visualització.
La Figura 6.2 il·lustra el pipeline d’aquest mòdul, amb els passos de processament de dades corresponents.
Figura 6.2. Pipeline del mòdul de preprocessat. Font: elaboració pròpia.
6.1.1. Format de les dades
A causa de les lleis de protecció de dades [60], les dades personals dels pacients (que puguin servir per a identificar-los) amb les que treballem han de ser anònimes, de manera que els identificadors estan codificats. Aquesta codificació de pacient és diferent per a cada un dels tipus d’extracció de dades. Els investigadors, però, tenen un fitxer amb informació sobre els pacients i les seves dades, degudament emmagatzemat, protegit i tractat. Com que no podem tenir accés a aquest fitxer per a determinar la relació entre identificadors i pacients per raons òbvies, l’aplicació té un fitxer ids.csv creat manualment que guarda la correspondència entre els identificadors de RM i els de càpsula, a partir d’un fitxer de dades de pacients proporcionat pels investigadors amb les dades dels dos tipus. Aquest fitxer és necessari per a determinar si en el mode 2 hi ha valors introduïts sense correspondència.
Com que la base de dades que utilitzen els investigadors no té un format predefinit, el preprocessat proporciona eines per a la manipulació de les dades abans de la visualització. Durant aquest preprocessat es guarden diferents fitxers que seran necessaris per al correcte funcionament i visualització de l’aplicació:
● Fitxers de dades: es guarden en format .csv, ja que Pandas és més eficient llegint i escrivint fitxers en aquest format en comptes d’Excel [47]
○ Fitxer original: per a cada fitxer de dades en format Excel introduït per l’usuari, es guarda una còpia de les dades en un fitxer .csv.
○ Fitxer filtrat: cada fitxer de dades entrat per l’usuari es modifica durant el preprocessat per a deixar-lo enllestit per la visualització. Aquest fitxer parteix de l’original guardat a l’aplicació i es modifica en els passos de filtratge de variables i de configuració de les opcions de visualització. El resultat és un fitxer ‘filtered_mr_data.csv’ o ‘filtered_capsule_data.csv’, depenent del fitxer original de partida, on s’han eliminat les variables que no es representaran en la visualització i on s’han ordenat i eliminat els pacients segons la correspondència en ids.csv (ampliació en el capítol “Implementació”).
● Diccionaris: són necessaris tant en el preprocessat com en la visualització, ja que guarden informació de diferents tipus sobre les variables i permeten emmagatzemar la informació introduïda per un usuari en una visualització per tenir-la en compte per a la pròxima, facilitant així les diferents sessions d’anàlisi.
○ Tipus: té com a claus el nom original de cada variable, i com a valors els tipus introduïts per a cadascuna per l’usuari en el pas de classificació de les variables. Els valors possibles són ‘Content’, ‘Morphological’, ‘Motility’ i ‘Pacient’.
○ Select: té com a claus el nom original de cada variable, i com a valor un booleà que indica si la variable en qüestió es representa o no en el mòdul de visualització.
○ Rename: té com a claus el nom original de cada variable, i com a valors les abreviatures que l’usuari introdueix per a cadascuna en el pas de reanomenament.
○ Opcions de visualització: té com a clau l’string ‘tag_var’ i com a valor el nom de la variable que representa l’identificador del pacient. A més a més, si el fitxer és de RM, també conté la clau ‘patient_type_var’ que indica si hi ha alguna variable que codifiqui el tipus de pacient (en que tenim, correspon al valor de ‘health’ en les dades de RM).
○ Correlacions: té com a claus parells de noms de variables separats pel caràcter ‘$’. Si la visualització és només de les dades de RM, es crea el diccionari de correlacions de RM, que té com a claus les combinacions de parells de variables possibles (excloent les de tipus ‘Pacient’). Si és de dades de RM i Càpsula, es crea el diccionari de correlacions de càpsula i les primeres variables dels parells corresponen a les variables de càpsula i les segones a les de RM. Com a valors té els valors absoluts dels coeficients de correlació de Pearson dels parells.
Cadascun d’aquests fitxers es crea per cadascun dels tipus de fitxers (ressonància magnètica i càpsula), de manera que les dades sempre es tracten de manera separada. La Taula 6.1 mostra la nomenclatura dels fitxers.
Taula 6.1. Nomenclatura dels fitxers generats per l’aplicació. Font: Elaboració pròpia.
Els diccionaris de Python són guardats en format JSON, mentre que les dades en format CSV, ja que és l’opció més eficient de Pandas per a llegir i escriure DataFrames, la seva estructura de dades que guarda les dades dels fitxers Excel i CSV.
6.1.2. Estructura
A continuació s’exposa l’estructura del mòdul de preprocessat, que a la vegada està dividit en mòduls o pantalles que permeten a l’usuari introduir valors per a configurar la representació.
6.1.2.1. Home
Conté un botó per a cada “mode” de visualització, depenent de si s’ha de llegir un fitxer o dos (veure Figura 6.3).
Tipus de
fitxer Subtipus Ressonància magnètica Càpsula
Dades Original ‘original_rm_data.csv’ ‘original_capsule_data.csv’ Filtrat ‘filtered_rm_data.csv’ ‘filtered_capsule_data.csv’ Diccionari Tipus ‘mr_header_types.json’ ‘capsule_header_types.json’
Select ‘mr_header_select.json’ ‘capsule_header_select.json’ Rename ‘mr_header_renames.json’ ‘capsule_header_renames.json’ Opcions de
visualització ‘mr_visualisation_options.json’ ‘capsule_visualisation_options.json’ Correlacions ‘mr_correlations.json’ ‘capsule_correlations.json’
Figura 6.3. Captura de pantalla de la pantalla inicial de l’aplicació. Font: elaboració pròpia.
6.1.2.2. Lector d’excels
Si s’ha escollit el mode 1, la pantalla mostra un formulari que conté, a més del camp per seleccionar el fitxer de l’equip de l’usuari, un select per indicar de quin tipus es tracta (ressonància magnètica/càpsula). Si el mode escollit és el 2, el formulari conté dos camps per a inserir els fitxers de cada tipus, com es pot veure en la Figura 6.4.
Figura 6.4. Captures de pantalla del lector d’excels d’un tipus (esquerra) i de dos (esquerra)
de l’aplicació. Font: elaboració pròpia.
6.1.2.3. Classificador de variables
Permet escollir de quin tipus és cada variable que s’ha detectat en el fitxer, com es mostra a la Figura 6.5. Entre els valors possibles hi ha ‘Morphological’, ‘Content’, ‘Motility’ i ‘Pacient’. Les variables que no siguin de tipus pacient es representaran a l’SPLOM i, la resta, sota demanda mitjançant les interaccions proporcionades.
Figura 6.5. Captura de pantalla del mòdul de classificació del preprocessat amb dades de
ressonància magnètica (dalt) i de càpsula (baix). Font: elaboració pròpia.
6.1.2.4. Filtratge de variables
Permet seleccionar quines variables vol veure representades l’usuari en el mòdul de visualització, tal com es mostra a la Figura 6.6.
Figura 6.6. Captura de pantalla del mòdul de filtrat del preprocessat amb dades de
ressonància magnètica (dalt) i de càpsula (baix). Font: elaboració pròpia.
6.1.2.5.Abreviació de variables
Per qüestions de llegibilitat a la visualització, aquest mòdul permet definir els noms abreviats de les variables que es mostraran en la visualització (veure Figura 6.7).
Figura 6.7. Captura de pantalla del mòdul de reanomenament del preprocessat amb dades de
ressonància magnètica (dalt) i de càpsula (baix). Font: elaboració pròpia.
6.1.2.6. Opcions de visualització
Per a la visualització és necessari que l’usuari indiqui la columna que fa referència a l’identificador del pacient (codi de la càpsula o etiqueta de la RM) per assegurar una visualització correcta de les dades, i quina al tipus de pacient. Aquesta última defineix un color per a cada un dels valors que conté, de manera que es puguin identificar visualment. No és obligatori introduir una columna que identifiqui el tipus de pacient. Això es du a terme mitjançant un formulari com el
Figura 6.8. Captura de pantalla del mòdul de definició d’opcions de visualització del preprocessat amb dades de ressonància magnètica (dalt) i de càpsula (baix). Font: elaboració
pròpia.
6.2. Mòdul de visualització
El segon mòdul de l’aplicació és el de visualització, ja que s’alimenta dels fitxers generats en el preprocessat per representar les dades. A continuació s’explica el disseny d’aquest mòdul que, com es pot veure a la Figura 6.9, consta d’un
dashboard interactiu que proporciona una visió general en forma d’SPLOM de les dades introduïdes i filtrades per l’usuari. Aquesta figura està composta d’un gràfic de dispersió per cada parell de variables en qüestió. Si el mode escollit és l’1,
l’SPLOM mostra les dades de RMxRM. Per altra banda, si el mode escollit és el 2, en l’eix X es representen les dades de motilitat de la càpsula i en l’eix Y les dades morfològiques i de contingut del fitxer de RM.
A la dreta de l’SPLOM es mostren en gran els dos darrers gràfics seleccionats per l’usuari i, a la part de baix, les dades dels dos darrers pacients seleccionats. També s’indica el nombre de pacients que es mostren en la visualització.
Figura 6.9. Captura de pantalla del mòdul de visualització amb dades de ressonància
magnètica. Font: elaboració pròpia
6.2.1. SPLOM
L’SPLOM és l’element principal del mòdul de visualització. Seguidament s’explica el disseny d’aquesta representació gràfica segons el mode que l’usuari hagi escollit, segons si vol visualitzar només les dades de RM o tant les de RM com les de càpsula.
Per una banda, com que el mode 1 genera una matriu d’scatterplots quadrada d’ordre N, on N és el nombre de variables representables (de tipus diferent de ‘Pacient’) del fitxer RM filtrat, la informació representada en els triangles inferior i superior de la matriu és redundant. Així, triangle inferior de l’SPLOM està compost per gràfics de dispersió, mentre que el triangle superior mostra les línies de regressió de les dades, permetent una anàlisi més àmplia. La Figura 6.10 mostra un SPLOM generat per l’aplicació en mode 1.
Figura 6.10. SPLOM de l’aplicació en mode 1 i dades de ressonància magnètica. Font: elaboració pròpia
Per altra banda, el mode 2 genera una matriu d’scatterplots de dimensió MxN, on M representa el nombre de característiques representables del fitxer de càpsula i N el del fitxer de RM. En aquest mode l’SPLOM no mostra les línies de regressió. La Figura 6.11 mostra un SPLOM generat per l’aplicació en mode 2.
Figura 6.11. SPLOM de l’aplicació en mode 2 i dades de ressonància magnètica. Font: elaboració pròpia.