Last Ran: 2021-05-27
DIR=("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/")
setwd(DIR)
ADNI.FILES<-list.files(DIR, ".csv")
df<-""
for (i in ADNI.FILES) {
x<-paste(DIR, i, sep="")
setwd(DIR)
ADNI <- readr::read_csv(x,
col_types = cols(`ADNI END Time` = col_character()))
ADNI<-ADNI[complete.cases(ADNI$`Scan Date`),]
ADNI<-ADNI[complete.cases(ADNI$`Scan ID`),]
ADNI$`Scan ID`<-str_replace(ADNI$`Scan ID` ,pattern = "__", replacement ="_ADNI_" )
if ("MR Tech" %in% names(ADNI)==TRUE) {
ADNI$Tech<-ADNI$`MR Tech`
ADNI$Tech<-toupper(ADNI$Tech)} else {NULL}
if ("MR Operator" %in% names(ADNI)==TRUE) {
ADNI$Tech<-ADNI$`MR Operator`
ADNI$Tech<-toupper(ADNI$Tech)
}else {NULL}
temp<-strsplit(ADNI$`Scan ID`, "_ADNI_")
mat<-matrix(unlist(temp), ncol=2, byrow = TRUE)
df.mat <- as.data.frame(mat)
df.mat$V1<-as.character(df.mat$V1)
ADNI$Site<-if_else(str_detect(df.mat$V1,"01")==TRUE, "PITT", as.character(df.mat$V1))
ADNI$Site<-if_else(str_detect(df.mat$V1,"02")==TRUE, "KU", as.character(ADNI$Site))
ADNI$Site<-if_else(str_detect(df.mat$V1,"03")==TRUE, "NEU", as.character(ADNI$Site))
ADNI$Scanner<-if_else(str_detect(df.mat$V1,"01_1")==TRUE, "Prisma 1", df.mat$V1)
ADNI$Scanner<-if_else(str_detect(ADNI$Scanner,"01_2")==TRUE, "Prisma 2", ADNI$Scanner)
ADNI$Scanner<-if_else(str_detect(ADNI$Scanner,"01_3")==TRUE, "Prisma 3", ADNI$Scanner)
ADNI$Scanner<- if_else(ADNI$Scanner=="01", " ",ADNI$Scanner)
ADNI$Scanner<- if_else(ADNI$Scanner=="02", " ",ADNI$Scanner)
ADNI$Scanner<- if_else(ADNI$Scanner=="03", " ",ADNI$Scanner)
ADNI_1<-ADNI %>% select(`Scan ID`,Site,Scanner,`Scan Date` ,
`ADNI END Time`,`MPRAGE Norm#`,`MPRAGE #`,`MPRAGE Changed?`,
Tech)
df<-rbind(df, ADNI_1)
}
df<-df[!duplicated(df),]
date<-format(Sys.Date(),"%b%y")
file<-paste(DIR,"IN/","merged_ADNI_Phantom", date,"_base.csv", sep="")
readr::write_csv(df,file )
rm(list=setdiff(ls(), "df"))
DIR=("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/")
setwd(DIR)
ADNI.FILES<-list.files(DIR, pattern=".txt")
ADNI.df<-NULL
#i=ADNI.FILES[3]
for (i in ADNI.FILES) {
setwd(DIR)
x<- paste("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/", i,sep="")
ADNI <- read.delim(x, header=FALSE, stringsAsFactors=FALSE)
ADNI <- ADNI[complete.cases(ADNI$V2),]
temp<-strsplit(ADNI$V1, "_ADNI_")
mat <- matrix(unlist(temp), ncol=2, byrow=TRUE)
df <- as.data.frame(mat)
ADNI$Date<-as.Date(df$V2, "%Y%m%d")
ADNI$Scanner<-as.character(df$V1)
ADNI$Scanner<-as.character(ADNI$Scanner)
ADNI$Site<-if_else(str_detect(ADNI$Scanner,"01")==TRUE, "PITT", as.character(ADNI$Scanner))
ADNI$Site<-if_else(str_detect(ADNI$Site,"02")==TRUE, "KU", as.character(ADNI$Site))
ADNI$Site<-if_else(str_detect(ADNI$Site,"03")==TRUE, "NEU", as.character(ADNI$Site))
ADNI$Scanner<-if_else(str_detect(ADNI$V1,"01_1")==TRUE, "Prisma 1", ADNI$Scanner)
ADNI$Scanner<-if_else(str_detect(ADNI$Scanner,"01_2")==TRUE, "Prisma 2", ADNI$Scanner)
ADNI$Scanner<-if_else(str_detect(ADNI$Scanner,"01_3")==TRUE, "Prisma 3", ADNI$Scanner)
ADNI$Scanner<- if_else(ADNI$Scanner=="01", " ",ADNI$Scanner)
ADNI$Scanner<- if_else(ADNI$Scanner=="02", " ",ADNI$Scanner)
ADNI$Scanner<- if_else(ADNI$Scanner=="03", " ",ADNI$Scanner)
ADNI$ADNI_SNR<-(ADNI$V2)
ADNI$Month<-format(as.Date(ADNI$Date), "%b/%y")
df<- ADNI %>% select(Date,Month, Site,Scanner, ADNI_SNR )
ADNI.df<-rbind(ADNI.df, df)
}
ADNI.df$Date<-as.Date(ADNI.df$Date)
ADNI.df<-ADNI.df[!(duplicated(ADNI.df)),]
date<-format(Sys.Date(),"%b%y")
file<-paste(DIR,"IN/","merged_ADNI_Phantom", date,"_data.csv", sep="")
readr::write_csv(ADNI.df,file )
rm(list=setdiff(ls(), "ADNI.df"))
ADNI.df<-ADNI.df[complete.cases(ADNI.df$ADNI_SNR),]
data<-list.files("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/IN/", "data.csv")
data<-read.csv(paste("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/IN/",data,sep=""),stringsAsFactors = FALSE)
data$Date<-as.character(data$Date)
base<-list.files("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/IN/", "base.csv")
base<-read.csv(paste("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/IN/",base,sep=""),stringsAsFactors = FALSE)
base<-base[-1,]
base<-base[complete.cases(base$Scan.Date),]
base$Scan.Date<-as.character(base$Scan.Date)
base$Date<-as.Date(base$Scan.Date, format="%Y%m%d")
base$Date<-as.character(base$Date)
ADNI<-full_join(data,base)
ADNI<-ADNI[!duplicated(ADNI),]
date<-format(Sys.Date(),"%b%y")
file<-paste("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/OUT/","ADNI_", date,".csv", sep="")
readr::write_csv(ADNI,file)
rm(list=setdiff(ls(), "ADNI"))
data<-list.files("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/OUT/", "ADNI_")
ADNI<-read.csv(paste("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/OUT/", data,sep=""))
ADNI<-ADNI[complete.cases(ADNI$ADNI_SNR),]
# Scanner
ADNI$Scanner<-if_else(ADNI$Site=="KU", "KU Skyra", as.character(ADNI$Scanner))
ADNI$Scanner<-if_else(ADNI$Site=="NEU", "NEU Prisma", as.character(ADNI$Scanner))
ADNI$Scanner<-if_else(ADNI$Scanner==" ", "NAN", as.character(ADNI$Scanner))
# Remove duplicated rows and unsorted 'Scan ID's (some scan IDs don't indicate Prisma 1 or 2)
ADNI<-ADNI[!(ADNI$Scanner=="NAN"),]
ADNI<-ADNI[!duplicated(ADNI),]
ADNI$Scanner<-as.factor(ADNI$Scanner)
### Count duplicated entries for indexing
ADNI<-ADNI %>%
group_by(Date,Scanner,ADNI_SNR) %>%
select(Scan.ID,Scanner,Date,Scan.Date,ADNI.END.Time, ADNI_SNR,MPRAGE.., MPRAGE.Changed., Tech)%>%
add_count()
### Generate index and remove duplicated/errored processing runs
ADNI$index<-if_else(ADNI$n>1 &ADNI$MPRAGE.Changed.==0 | ADNI$n==1, "Keep","" )
ADNI<-ADNI[ADNI$index=="Keep",]
ADNI<-ADNI %>% select(Scan.ID, Scanner,Scan.Date, Date,ADNI.END.Time,ADNI_SNR,MPRAGE..,MPRAGE.Changed.,Tech )
names(ADNI)<-c("Scan.ID","Scanner","Scan.Date","Date", "ADNI.END.Time","ADNI_SNR","N_vol","Parameter_Changed", "Tech")
### Write out .csv of organized data
date<-format(Sys.Date(),"%b%y")
file<-paste("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/ADNI/OUT/","CLEAN.ADNI", date,".csv", sep="")
readr::write_csv(ADNI,file)
rm(list=setdiff(ls(), "ADNI"))
ADNI$Scan.Date<-as.character(ADNI$Scan.Date)
ADNI$Date<-as.Date(ADNI$Scan.Date, format="%Y%m%d")
ADNI$Month.YR <- format(as.Date(ADNI$Date), "%b/%y")
ADNI<-arrange(ADNI, "Date")
ADNI$Month.YR <-factor(ADNI$Month.YR,
levels=c( "Nov/17" , "Dec/17" ,
"Jan/18" , "Feb/18", "Mar/18" ,
"Apr/18" ,"May/18", "Jun/18" ,"Jul/18" , "Aug/18" ,
"Sep/18", "Oct/18", "Nov/18" ,"Dec/18",
"Jan/19" , "Feb/19", "Mar/19" ,
"Apr/19" ,"May/19", "Jun/19" ,"Jul/19" , "Aug/19" ,
"Sep/19", "Oct/19", "Nov/19" , "Dec/19" ,
"Jan/20" , "Feb/20", "Mar/20" ,
"Apr/20" ,"May/20", "Jun/20" ,"Jul/20" , "Aug/20" ,
"Sep/20", "Oct/20", "Nov/20" , "Dec/20" ,"Jan/21",
"Feb/21", "Mar/21" , "Apr/21", "May/21"))
#scan frequency by site for each Quarter
scannerXmonth<- as.data.frame(table(Month.YR=ADNI$Month.YR, by=ADNI$Scanner))
names(scannerXmonth)[names(scannerXmonth) == "by"] <- "Scanner"
#reorder the database according to Quarter.time, so that when it comes to data visualization the weekdays will be in the right order##
scannerXmonth$Month<- factor(scannerXmonth$Month, levels=c( "Nov/17" , "Dec/17" ,
"Jan/18" , "Feb/18", "Mar/18" ,
"Apr/18" ,"May/18", "Jun/18" ,"Jul/18" , "Aug/18" ,
"Sep/18", "Oct/18", "Nov/18" ,"Dec/18",
"Jan/19" , "Feb/19", "Mar/19" ,
"Apr/19" ,"May/19", "Jun/19" ,"Jul/19" , "Aug/19" ,
"Sep/19", "Oct/19", "Nov/19" , "Dec/19" ,
"Jan/20" , "Feb/20", "Mar/20" ,
"Apr/20" ,"May/20", "Jun/20" ,"Jul/20" , "Aug/20" ,
"Sep/20", "Oct/20", "Nov/20" , "Dec/20" ,"Jan/21",
"Feb/21", "Mar/21" , "Apr/21", "May/21"))
Scan_freq<-scannerXmonth[order(scannerXmonth$Month),]
Counts_by_MONTH<-ggplot(data=Scan_freq,
aes(x =Month, y=Freq, fill=Scanner))+
geom_bar(stat = "identity")+
ggtitle(label = "Phantom Frequency by Month")+
theme_minimal()+
theme(plot.title = element_text(hjust = 0.5,
lineheight = 0.8, face = "bold"),
axis.text.x=element_text(angle=35,hjust=1, size=7))+
xlab(" ")+ylab("Scan Freq")
plotly::ggplotly(Counts_by_MONTH)
names(ADNI)
## [1] "Scan.ID" "Scanner" "Scan.Date"
## [4] "Date" "ADNI.END.Time" "ADNI_SNR"
## [7] "N_vol" "Parameter_Changed" "Tech"
## [10] "Month.YR"
ADNI.2020.for.plot=ADNI %>%
dplyr::group_by(ADNI$Scanner)%>%
dplyr::mutate(
ADNI.SNR.avg =mean(ADNI_SNR, na.rm = TRUE),
ADNI.SNR.sd=sd(ADNI_SNR),
count = n())
ADNI.SNR.PLOT<-ggplot(ADNI.2020.for.plot, aes(Scanner, ADNI.SNR.avg, fill=Scanner)) +
geom_col(stat="identity", position="dodge") +
geom_text(aes(label=count, y=0))+
geom_errorbar(aes(ymin = ADNI.SNR.avg - ADNI.SNR.sd, ymax = ADNI.SNR.avg + ADNI.SNR.sd), width=0.2)
ADNI.SNR.PLOT
df.plot<-ggplot(ADNI, aes(x = Date, y = ADNI_SNR)) +
geom_point(aes(y = ADNI_SNR, color=Scanner, text = paste("Parameter Changed:",Parameter_Changed)))+ geom_line(aes(y = ADNI_SNR, color=Scanner)) +
ggtitle("Phantom Quality Parameters Across Time")+ylab("SNR \n \n")+
facet_grid(vars(Scanner), scales = "free")+theme(legend.position="none",
strip.text = element_text(size = 7))
plotly::ggplotly(df.plot)
ADNI<-ADNI %>% group_by(Scanner,Month.YR) %>%add_count(Scanner)
df<-ADNI %>% select(Scanner,Month.YR , ADNI_SNR, n)
df<-df %>% group_by(Scanner,Month.YR) %>%mutate(
'Monthly_SNR.avg'=mean(ADNI_SNR),
'Monthly_SNR.sd'=sd(ADNI_SNR, na.rm = TRUE))
DIR=("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/")
setwd(DIR)
BULL.FILES<-list.files(DIR, "_QC_Output")
df<-""
#i=BULL.FILES[4]
for (i in BULL.FILES) {
x<-paste(DIR,i, sep="")
BULL<-read.csv(x, row.names=NULL)
names(BULL)<- c("Scan.ID","Scan.Date","BULL.Start.Time", "Tech" , "REST.Norm.","REST.." , "REST.Changed." )
BULL$Scan.ID<-as.character(BULL$Scan.ID)
BULL$Scan.ID<-toupper(BULL$Scan.ID)
BULL<-BULL[complete.cases(BULL$Scan.ID),]
BULL<-BULL[complete.cases(BULL$Scan.Date),]
BULL$Scan.ID<-str_replace(BULL$Scan.ID ,pattern = "__", replacement ="_BULL_" )
BULL$Site<-if_else(str_detect(BULL$Scan.ID, "01_")==1, "PITT", as.character(BULL$Scan.ID))
BULL$Site<-if_else(str_detect(BULL$Site, "02_")==1, "KU", as.character(BULL$Site))
BULL$Site<-if_else(str_detect(BULL$Site, "03_")==1, "NEU", as.character(BULL$Site))
BULL$Scanner<-if_else(str_detect(BULL$Scan.ID,"01_1")==TRUE, "Prisma 1", as.character(BULL$Scan.ID))
BULL$Scanner<-if_else(str_detect(BULL$Scanner,"01_2")==TRUE, "Prisma 2", BULL$Scanner)
BULL$Scanner<-if_else(str_detect(BULL$Scanner,"01_3")==TRUE, "Prisma 3", BULL$Scanner)
BULL$Scanner<- if_else(BULL$Scanner=="01", " ",BULL$Scanner)
BULL$Scanner<- if_else(BULL$Scanner=="02", " ",BULL$Scanner)
BULL$Scanner<- if_else(BULL$Scanner=="03", " ",BULL$Scanner)
BULL<-BULL %>% select(Scan.ID,Site, Scanner, Scan.Date,BULL.Start.Time, Tech ,REST.. ,REST.Changed.)
names(BULL)<-c("Scan.ID","Site", "Scanner","Scan.Date","BULL.Start.Time", "Tech" , "N_vol" ,"Parameter_Changed" )
print(i)
df <-rbind(df,BULL)
}
## [1] "IGNITE_BULL_QC_Output (1).csv"
## [1] "IGNITE_BULL_QC_Output_201802_201902.csv"
## [1] "IGNITE_BULL_QC_Output_New (1).csv"
## [1] "IGNITE_BULL_QC_Output_New (2).csv"
## [1] "IGNITE_BULL_QC_Output_New_test (1).csv"
## [1] "IGNITE_BULL_QC_Output_New_test (2).csv"
## [1] "IGNITE_BULL_QC_Output_New_test.csv"
## [1] "IGNITE_BULL_QC_Output_New.csv"
## [1] "IGNITE_BULL_QC_Output.csv"
df<-df[!duplicated(df),]
### Write out .csv of organized data
date<-format(Sys.Date(),"%b%y")
file<-paste("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/IN/","merged_BASE", date,".csv", sep="")
readr::write_csv(df,file)
BULL<-read.delim("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/ignite_stability_history_2018.txt")
BULL$Date<-paste(BULL$year, BULL$Month, BULL$Day, sep="-")
BULL$Date<-as.Date(BULL$Date, format="%Y-%b-%d")
BULL<-BULL[!duplicated(BULL),]
BULL$Site<-as.character(BULL$Site)
BULL$Site_0<-if_else(str_detect(BULL$Site, "UPMC")==1, "PITT", as.character(BULL$Site))
BULL$Site_0<-if_else(str_detect(BULL$Site_0, "MRRC")==1, "PITT", as.character(BULL$Site_0))
BULL$Site_0<-if_else(str_detect(BULL$Site_0, "MRRC")==1, "PITT", as.character(BULL$Site_0))
BULL$Site_0<-if_else(str_detect(BULL$Site_0, "Hoglund")==1, "KU", as.character(BULL$Site_0))
BULL$Site_0<-if_else(str_detect(BULL$Site_0, "Hogland")==1, "KU", as.character(BULL$Site_0))
BULL$Site_0<-if_else(str_detect(BULL$Site_0, "Northeastern")==1, "NEU", as.character(BULL$Site_0))
BULL$Site_0<-if_else(str_detect(BULL$Site_0, "NUBIC")==1, "NEU", as.character(BULL$Site_0))
DIR=("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/")
setwd(DIR)
BULL_DATE<-read.csv("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/IGNITE_BULL_QC_Output_New.csv",header = FALSE)
colnames(BULL_DATE)<-c("Scan.ID" ,"ScanDate","BULLStartTime", "MROperator", "RESTNormN","RESTN", "RESTChanged", "ScannerID" ,"MR TECH")
BULL_DATE<-BULL_DATE[-(1),]
BULL_DATE<-BULL_DATE[,-c(10)]
BULL_DATE<-BULL_DATE[!duplicated(BULL_DATE),]
BULL_DATE$Scan.ID<-as.character(BULL_DATE$Scan.ID)
BULL_DATE$ScanDate<-as.Date(BULL_DATE$ScanDate, format=("%Y%m%d"))
BULL_DATE$ScannerID<-as.character(BULL_DATE$ScannerID)
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="MRC67078", "Pitt Prisma 1", as.character(BULL_DATE$ScannerID))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="AWP167046", "Pitt Prisma 2", as.character(BULL_DATE$Scanner))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="MRC35073", "Pitt Prisma 3", as.character(BULL_DATE$Scanner))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="AWP45135", "KU Skyra", as.character(BULL_DATE$Scanner))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="AWP166030", "NEU Prisma", as.character(BULL_DATE$Scanner))
BULL_DATA<-read.csv("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/IGNITE_BULL_QC_Stability.csv",header = TRUE)
BULL_DATA$Scan.ID<-as.character(BULL_DATA$Scan.ID)
BULL_DATA<-BULL_DATA[!duplicated(BULL_DATA),]
BULL<-full_join(BULL_DATA,BULL_DATE, by="Scan.ID")
BULL<-BULL[complete.cases(BULL$Timepts),]
rm(BULL_DATE, BULL_DATA)
BULL$ScanDate<-as.character(BULL$ScanDate)
DIR=("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/")
setwd(DIR)
BULL<-read.delim("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/",header = FALSE)
colnames(BULL_DATE)<-c("Scan.ID" ,"ScanDate","BULLStartTime", "MROperator", "RESTNormN","RESTN", "RESTChanged", "ScannerID" ,"MR TECH")
BULL_DATE<-BULL_DATE[-(1),]
BULL_DATE<-BULL_DATE[,-c(10)]
BULL_DATE<-BULL_DATE[!duplicated(BULL_DATE),]
BULL_DATE$Scan.ID<-as.character(BULL_DATE$Scan.ID)
BULL_DATE$ScanDate<-as.Date(BULL_DATE$ScanDate, format=("%Y%m%d"))
BULL_DATE$ScannerID<-as.character(BULL_DATE$ScannerID)
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="MRC67078", "Pitt Prisma 1", as.character(BULL_DATE$ScannerID))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="AWP167046", "Pitt Prisma 2", as.character(BULL_DATE$Scanner))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="MRC35073", "Pitt Prisma 3", as.character(BULL_DATE$Scanner))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="AWP45135", "KU Skyra", as.character(BULL_DATE$Scanner))
BULL_DATE$Scanner<-if_else(BULL_DATE$ScannerID=="AWP166030", "NEU Prisma", as.character(BULL_DATE$Scanner))
BULL_DATA<-read.csv("/Volumes/IGNITE_Imaging/QC_Output/R_IGNITE/Phantom/BULL/IGNITE_BULL_QC_Stability.csv",header = TRUE)
BULL_DATA$Scan.ID<-as.character(BULL_DATA$Scan.ID)
BULL_DATA<-BULL_DATA[!duplicated(BULL_DATA),]
BULL<-full_join(BULL_DATA,BULL_DATE, by="Scan.ID")
BULL<-BULL[complete.cases(BULL$Timepts),]
rm(BULL_DATE, BULL_DATA)
BULL$ScanDate<-as.character(BULL$ScanDate)