neuroimagen:bioface_atn
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
neuroimagen:bioface_atn [2021/09/10 09:20] – [random Forest] osotolongo | neuroimagen:bioface_atn [2022/06/14 08:22] (current) – [evaluando WMH] osotolongo | ||
---|---|---|---|
Line 245: | Line 245: | ||
</ | </ | ||
+ | ^ Clasificación ^ Probabilidades de N+ ^ | ||
| {{ : | | {{ : | ||
Line 257: | Line 258: | ||
rf_cl <- randomForest(ND ~ ., data = xt, na.action = na.omit) | rf_cl <- randomForest(ND ~ ., data = xt, na.action = na.omit) | ||
base$ND <- predict(rf_cl, | base$ND <- predict(rf_cl, | ||
+ | base$post <- predict(rf_cl, | ||
plot(base$AGE, | plot(base$AGE, | ||
+ | hist(base$post[, | ||
</ | </ | ||
- | {{ : | + | ^ Clasificación ^ Probabilidades de N+ ^ |
+ | | {{ : | ||
**FACEHBI** | **FACEHBI** | ||
Line 266: | Line 270: | ||
< | < | ||
face$ND <- predict(rf_cl, | face$ND <- predict(rf_cl, | ||
+ | face$post <- predict(rf_cl, | ||
plot(face$AGE, | plot(face$AGE, | ||
+ | hist(face$post[, | ||
</ | </ | ||
- | {{ : | + | ^ Clasificación ^ Probabilidades de N+ ^ |
+ | | {{ : | ||
=== support-vector machine === | === support-vector machine === | ||
Line 291: | Line 298: | ||
{{ : | {{ : | ||
+ | |||
+ | ===== Introduciendo WMH en AT(N)===== | ||
+ | |||
+ | ¿Son las afecciones vasculares parte de la neurodegeneracion? | ||
+ | |||
+ | Pues si queremos hacerlo de esta manera, hay basicamente dos maneras. Utilizando las WMH de Freesurfer (T1w) o las calculadas por un soft independiente (T2w). Si tenemos un FLAIR 3D podemos hacerlo de ambas maneras pero en caso contrario. | ||
+ | |||
+ | ==== evaluando WMH ==== | ||
+ | |||
+ | Las WMH vienen ya calculadas en el procedimiento // | ||
+ | |||
+ | <code RMarkdown> | ||
+ | ucsffsx -> ucsffsx_t | ||
+ | ucsffsx_t$VISCODE <- ifelse(ucsffsx_t$VISCODE == " | ||
+ | a1 <- merge(pop, ucsffsx_t, by=c(" | ||
+ | a1t <- a1[, c(" | ||
+ | ... | ||
+ | ... | ||
+ | axt <- rbind(a1t, a2t, a3t) | ||
+ | xt <- rename(axt, " | ||
+ | </ | ||
+ | |||
+ | y esto hay que hacerlo para cada una de las tablas y despues concatenar los resutados. Ahora habria tambien que introducir las WMH en la DB del test, | ||
+ | |||
+ | < | ||
+ | base$WMH = base$WM.hypointensities | ||
+ | </ | ||
+ | |||
+ | |||
+ | ++++ que se dice un poco mas rapido de lo que se hace, tambien es cierto, | | ||
+ | |||
+ | <code Rmarkdown> | ||
+ | library(" | ||
+ | library(" | ||
+ | library(" | ||
+ | library(" | ||
+ | library(" | ||
+ | |||
+ | input_file=" | ||
+ | output_file=" | ||
+ | output_fig=" | ||
+ | pop <- adnimerge[(adnimerge$DX==" | ||
+ | pop$ND = as.factor(ifelse(pop$DX == " | ||
+ | ucsffsx -> ucsffsx_t | ||
+ | ucsffsx_t$VISCODE <- ifelse(ucsffsx_t$VISCODE == " | ||
+ | a1 <- merge(pop, ucsffsx_t, by=c(" | ||
+ | ucsffsx51 -> ucsffsx_t | ||
+ | ucsffsx_t$VISCODE <- ifelse(ucsffsx_t$VISCODE == " | ||
+ | a2 <- merge(pop, ucsffsx_t, by=c(" | ||
+ | ucsffsx6 -> ucsffsx_t | ||
+ | ucsffsx_t$VISCODE <- ifelse(ucsffsx_t$VISCODE == " | ||
+ | a3 <- merge(pop, ucsffsx_t, by=c(" | ||
+ | a1t <- a1[, c(" | ||
+ | a2t <- a2[, c(" | ||
+ | a3t <- a3[, c(" | ||
+ | axt <- rbind(a1t, a2t, a3t) | ||
+ | xt <- rename(axt, " | ||
+ | classifier_cl <- naiveBayes(ND ~ ., data = xt) | ||
+ | base <- read.csv(input_file) | ||
+ | base$Hippocampus = base$Left.Hippocampus + base$Right.Hippocampus | ||
+ | base$Entorhinal = base$lh.entorhinal.GrayVol + base$rh.entorhinal.GrayVol | ||
+ | base$Ventricles <- base$Left.Inf.Lat.Vent + base$Right.Inf.Lat.Vent + base$Left.Lateral.Ventricle + base$Right.Lateral.Ventricle | ||
+ | base$MidTemp = base$lh.middletemporal.GrayVol + base$rh.middletemporal.GrayVol | ||
+ | base$ICV = base$eTIV | ||
+ | base$WMH = base$WM.hypointensities | ||
+ | base$ND <- predict(classifier_cl, | ||
+ | base2e = base[, c(" | ||
+ | write.csv(base2e, | ||
+ | a <- lm(base$Hippocampus ~ base$ICV) | ||
+ | base$aHV = base$Hippocampus - a$coefficients[[2]]*(base$ICV - mean(base$ICV, | ||
+ | postscript(output_fig, | ||
+ | plot(base$AGE, | ||
+ | dev.off() | ||
+ | a <- lm(base$MidTemp ~ base$ICV) | ||
+ | base$aMidTemp = base$MidTemp - a$coefficients[[2]]*(base$ICV - mean(base$ICV, | ||
+ | output_fig=" | ||
+ | postscript(output_fig, | ||
+ | plot(base$AGE, | ||
+ | dev.off() | ||
+ | a <- lm(base$Entorhinal ~ base$ICV) | ||
+ | base$aEntorhinal = base$Entorhinal - a$coefficients[[2]]*(base$ICV - mean(base$ICV, | ||
+ | output_fig=" | ||
+ | postscript(output_fig, | ||
+ | plot(base$AGE, | ||
+ | dev.off() | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | OK, ya puestos también podemos hacerlo con las WMH calculadas desde T2W. Yo uso PGS, para las WMH de T2w, asi que tengo que pegarlas a las tablas, | ||
+ | |||
+ | (Ejemplo con facehbi) | ||
+ | |||
+ | < | ||
+ | [osotolongo@brick03 facehbi]$ sed ' | ||
+ | [osotolongo@brick03 facehbi]$ sed -i ' | ||
+ | [osotolongo@brick03 facehbi]$ join -t, codes.csv facehbi_wmh_metrics.csv | awk -F',' | ||
+ | [osotolongo@brick03 facehbi]$ ./ | ||
+ | [osotolongo@brick03 facehbi]$ xnat_pullfs.pl -s aseg -p facehbi -o base_aseg.csv | ||
+ | [osotolongo@brick03 facehbi]$ xnat_pullfs.pl -s aparc -p facehbi -o base_aparc.csv | ||
+ | [osotolongo@brick03 facehbi]$ join -t, base_aseg.csv base_aparc.csv > base_full.csv | ||
+ | [osotolongo@brick03 facehbi]$ (head -n 1 facehbi_age_data.csv && tail -n +2 facehbi_age_data.csv | sort -t, -n)> facehbi_age_data_sorted.csv | ||
+ | [osotolongo@brick03 facehbi]$ join -t, facehbi_age_data_sorted.csv facehbi_wmh.csv > facehbi_age_wmh.csv | ||
+ | [osotolongo@brick03 facehbi]$ join -t, base_full.csv facehbi_age_wmh.csv > input_data.csv | ||
+ | |||
+ | </ | ||
+ | |||
+ | Claro que aqui hay que usar la tabla de UCD WMH, | ||
+ | |||
+ | < | ||
+ | pop <- adnimerge[(adnimerge$DX==" | ||
+ | ucd_wmh -> ucd_t | ||
+ | ucd_t$VISCODE <- ifelse(ucd_t$VISCODE == " | ||
+ | ucd_t$VISCODE <- ifelse(ucd_t$VISCODE == " | ||
+ | pop <- merge(pop, ucd_t, by=c(" | ||
+ | </ | ||
+ | |||
+ | y despues modificar un poco las de nuestro proyecto para que cuadren las unidades, | ||
+ | |||
+ | < | ||
+ | base$TOTAL_WMH = base$WMH*0.001 | ||
+ | </ | ||
+ | |||
+ | ++++ OK, ya puestos también podemos hacerlo con las WMH calculadas desde T2W | | ||
+ | <code Rmarkdown> | ||
+ | library(" | ||
+ | library(" | ||
+ | library(" | ||
+ | library(" | ||
+ | input_file=" | ||
+ | output_file=" | ||
+ | output_fig=" | ||
+ | pop <- adnimerge[(adnimerge$DX==" | ||
+ | ucd_wmh -> ucd_t | ||
+ | ucd_t$VISCODE <- ifelse(ucd_t$VISCODE == " | ||
+ | ucd_t$VISCODE <- ifelse(ucd_t$VISCODE == " | ||
+ | pop <- merge(pop, ucd_t, by=c(" | ||
+ | pop$ND = as.factor(ifelse(pop$DX == " | ||
+ | xt <- pop[, c(" | ||
+ | classifier_cl <- naiveBayes(ND ~ ., data = xt) | ||
+ | base <- read.csv(input_file) | ||
+ | base$Hippocampus = base$Left.Hippocampus + base$Right.Hippocampus | ||
+ | base$Entorhinal = base$lh.entorhinal.GrayVol + base$rh.entorhinal.GrayVol | ||
+ | base$Ventricles <- base$Left.Inf.Lat.Vent + base$Right.Inf.Lat.Vent + base$Left.Lateral.Ventricle + base$Right.Lateral.Ventricle | ||
+ | base$MidTemp = base$lh.middletemporal.GrayVol + base$rh.middletemporal.GrayVol | ||
+ | base$ICV = base$eTIV | ||
+ | base$TOTAL_WMH = base$WMH*0.001 | ||
+ | base$ND <- predict(classifier_cl, | ||
+ | base$posterior <- predict(classifier_cl, | ||
+ | base2e = base[, c(" | ||
+ | write.csv(base2e, | ||
+ | a <- lm(base$Hippocampus ~ base$ICV) | ||
+ | base$aHV = base$Hippocampus - a$coefficients[[2]]*(base$ICV - mean(base$ICV, | ||
+ | postscript(output_fig, | ||
+ | plot(base$AGE, | ||
+ | dev.off() | ||
+ | a <- lm(base$MidTemp ~ base$ICV) | ||
+ | base$aMidTemp = base$MidTemp - a$coefficients[[2]]*(base$ICV - mean(base$ICV, | ||
+ | output_fig=" | ||
+ | postscript(output_fig, | ||
+ | plot(base$AGE, | ||
+ | dev.off() | ||
+ | a <- lm(base$Entorhinal ~ base$ICV) | ||
+ | base$aEntorhinal = base$Entorhinal - a$coefficients[[2]]*(base$ICV - mean(base$ICV, | ||
+ | output_fig=" | ||
+ | postscript(output_fig, | ||
+ | plot(base$AGE, | ||
+ | dev.off() | ||
+ | |||
+ | </ | ||
+ | |||
+ | ++++ (**NO WAY**, explicar como se hace que hay que meter el ucd_wmh de ADNI y sacar wl WMH con PGS) | ||
+ | |||
+ | Con BIOFACE: | ||
+ | |||
+ | ^ no WMH ^ T1w WMH ^ T2w WMH ^ | ||
+ | | {{ : | ||
+ | |||
+ | ^ ^ T1w WMH ^ T2w WMH ^ | ||
+ | | -2+ | 0 | 1 (1%) | | ||
+ | | +2- | 9 (10%) | 4 (4%) | | ||
+ | |||
+ | Con FACEHBI: | ||
+ | |||
+ | ^ no WMH ^ T1w WMH ^ T2w WMH ^ | ||
+ | | {{ : | ||
+ | |||
+ | ^ ^ T1w WMH ^ T2w WMH ^ | ||
+ | | -2+ | 0 | 0 | | ||
+ | | +2- | 21 (4%) | 10 (2%) | |
neuroimagen/bioface_atn.1631265636.txt.gz · Last modified: 2021/09/10 09:20 by osotolongo