-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFourierTransformation.R
More file actions
113 lines (79 loc) · 4.1 KB
/
Copy pathFourierTransformation.R
File metadata and controls
113 lines (79 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#############################################################
##################### FOURIER TRANSFORM #####################
#############################################################
# Change from Long to Wide format
Epilepsy.Data.Wide.Ordered <- Epilepsy.Data.Long.Ordered %>% spread(Time, Voltage)
#Create a composite variable name (Block + subID)
Epilepsy.Data.Wide.Ordered$BlockID <- paste(Epilepsy.Data.Wide.Ordered$Block,Epilepsy.Data.Wide.Ordered$subID)
Epilepsy.Data.Wide.Ordered <- Epilepsy.Data.Wide.Ordered[-c(1:2)]
#Move Group to the front
Epilepsy.Data.Wide.Ordered = Epilepsy.Data.Wide.Ordered[,c(ncol(Epilepsy.Data.Wide.Ordered),1:(ncol(Epilepsy.Data.Wide.Ordered)-1))]
#Label the rows
rownames(Epilepsy.Data.Wide.Ordered) <- Epilepsy.Data.Wide.Ordered[,1]
#Remove the composite variable name (Block + subID)
Epilepsy.Data.Wide.Ordered <- Epilepsy.Data.Wide.Ordered[-c(1)]
# Write the file in csv format
write.csv(Epilepsy.Data.Wide.Ordered, file = "Epilepsy_Data_Wide.csv")
# Transpose the dataset to get it ready for Fourier Transform (cols are subIDs, rows are timepoints)
Epilepsy.Data.Wide.Ordered.Transposed <- t(Epilepsy.Data.Wide.Ordered)
# Different frequency ranges
# DELTA (0-4Hz)
output_delta <- eegfft(Epilepsy.Data.Wide.Ordered.Transposed,178,0,4)
# THETA (4-8Hz)
output_theta <- eegfft(Epilepsy.Data.Wide.Ordered.Transposed,178,4,8)
# ALPHA (8-16Hz)
output_alpha <- eegfft(Epilepsy.Data.Wide.Ordered.Transposed,178,8,16)
# BETA (16-32Hz)
output_beta <- eegfft(Epilepsy.Data.Wide.Ordered.Transposed,178,16,32)
# GAMMA (32-64Hz)
output_gamma <- eegfft(Epilepsy.Data.Wide.Ordered.Transposed,178,32,64)
#############################################################
################# PLOTS OF FOURIER TRANSFORM ################
#############################################################
# DELTA (0-4Hz)
# Getting all the frequency and amplitude values in the right format
output.delta <- as.data.frame(output_delta$strength)
output.delta.long <- output.delta %>% gather(BlockID, Amplitude, 1:198)
output.delta.long$Frequency <- rep(output_delta$frequency)
write.csv(output.delta.long, "output_delta_long.csv")
# THETA (4-8Hz)
# Getting all the frequency and amplitude values in the right format
output.theta <- as.data.frame(output_theta$strength)
output.theta.long <- output.theta %>% gather(BlockID, Amplitude, 1:198)
output.theta.long$Frequency <- rep(output_theta$frequency)
write.csv(output.theta.long, "output_theta_long.csv")
# ALPHA (8-16Hz)
# Getting all the frequency and amplitude values in the right format
output.alpha <- as.data.frame(output_alpha$strength)
output.alpha.long <- output.alpha %>% gather(BlockID, Amplitude, 1:198)
output.alpha.long$Frequency <- rep(output_alpha$frequency)
write.csv(output.alpha.long, "output_alpha_long.csv")
# BETA (16-32Hz)
# Getting all the frequency and amplitude values in the right format
output.beta <- as.data.frame(output_beta$strength)
output.beta.long <- output.beta %>% gather(BlockID, Amplitude, 1:198)
output.beta.long$Frequency <- rep(output_beta$frequency)
write.csv(output.beta.long, "output_beta_long.csv")
# GAMMA (32-64Hz)
# Getting all the frequency and amplitude values in the right format
output.gamma <- as.data.frame(output_gamma$strength)
output.gamma.long <- output.gamma %>% gather(BlockID, Amplitude, 1:297)
output.gamma.long$Frequency <- rep(output_gamma$frequency)
write.csv(output.gamma.long, "output_gamma_long.csv")
# FOURIER GRAPH
fourier.output.graph <- read.csv("output_wave_long_graph.csv")
fourier.output.graph <- ggplot(data=fourier.output.graph, aes(x=Frequency, y=Amplitude, group=Block)) +
geom_line()+
xlab('Frequency [Hz]')+
ylab('Amplitude')+
scale_y_continuous(limits = c(0,200)) +
theme_bw()+
facet_grid(facets = Block ~ Wave, scales = "free")+
theme(panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
legend.title = element_blank(),
text=element_text(family="Times", face="bold", size=14),
legend.text = element_text(family = "Times New Roman",
face="bold", size = 10))
fourier.output.graph
ggsave("FourierGraph.png")