stride_angle_calculation.R 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. Folder="/home/user/owncloud/DLC_Analyse_RotatingBeam/PB_T3_Sham/PB_T3_"
  2. Middle="_P3_RotatingBeam_"
  3. csv="croppedDLC_resnet50_RotatingBeam3.0Jul12shuffle1_200000_filtered.csv"
  4. Number_of_videos=31
  5. T3_12_3_1=paste0(Folder, "12_3", Middle, "1", csv)
  6. T3_12_3_2=paste0(Folder, "12_3", Middle, "2", csv)
  7. T3_12_3_3=paste0(Folder, "12_3", Middle, "3", csv)
  8. T3_12_3_4=paste0(Folder, "12_3", Middle, "4", csv)
  9. T3_13_2_1=paste0(Folder, "13_2", Middle, "1", csv)
  10. T3_13_2_2=paste0(Folder, "13_2", Middle, "2", csv)
  11. T3_13_2_3=paste0(Folder, "13_2", Middle, "3", csv)
  12. T3_13_2_4=paste0(Folder, "13_2", Middle, "4", csv)
  13. T3_13_3_1=paste0(Folder, "13_3", Middle, "1", csv)
  14. T3_13_3_2=paste0(Folder, "13_3", Middle, "2", csv)
  15. T3_13_3_3=paste0(Folder, "13_3", Middle, "3", csv)
  16. T3_13_3_4=paste0(Folder, "13_3", Middle, "4", csv)
  17. T3_14_2_2=paste0(Folder, "14_2", Middle, "2", csv)
  18. T3_14_2_3=paste0(Folder, "14_2", Middle, "3", csv)
  19. T3_14_2_4=paste0(Folder, "14_2", Middle, "4", csv)
  20. T3_14_4_1=paste0(Folder, "14_4", Middle, "1", csv)
  21. T3_14_4_2=paste0(Folder, "14_4", Middle, "2", csv)
  22. T3_14_4_3=paste0(Folder, "14_4", Middle, "3", csv)
  23. T3_14_4_4=paste0(Folder, "14_4", Middle, "4", csv)
  24. T3_15_2_1=paste0(Folder, "15_2", Middle, "1", csv)
  25. T3_15_2_2=paste0(Folder, "15_2", Middle, "2", csv)
  26. T3_15_2_3=paste0(Folder, "15_2", Middle, "3", csv)
  27. T3_15_2_4=paste0(Folder, "15_2", Middle, "4", csv)
  28. T3_16_1_1=paste0(Folder, "16_1", Middle, "1", csv)
  29. T3_16_1_2=paste0(Folder, "16_1", Middle, "2", csv)
  30. T3_16_1_3=paste0(Folder, "16_1", Middle, "3", csv)
  31. T3_16_1_4=paste0(Folder, "16_1", Middle, "4", csv)
  32. T3_17_2_1=paste0(Folder, "17_2", Middle, "1", csv)
  33. T3_17_2_2=paste0(Folder, "17_2", Middle, "2", csv)
  34. T3_17_2_3=paste0(Folder, "17_2", Middle, "3", csv)
  35. T3_17_2_4=paste0(Folder, "17_2", Middle, "4", csv)
  36. ResolutionHeight=1080
  37. ResolutionWidth=1920
  38. Shamnames2<-c("1231", "1232", "1233", "1234", "1321", "1322", "1323", "1324", "1331", "1332", "1333", "1334", "1422", "1423", "1424", "1441", "1442", "1443", "1444", "1521", "1522", "1523", "1524", "1611", "1612", "1613", "1614", "1721", "1722", "1723", "1724")
  39. Shamnames3<-c("PB_T3_12_3_P3_RotatingBeam_1", "PB_T3_12_3_P3_RotatingBeam_2", "PB_T3_12_3_P3_RotatingBeam_3", "PB_T3_12_3_P3_RotatingBeam_4", "PB_T3_13_2_P3_RotatingBeam_1", "PB_T3_13_2_P3_RotatingBeam_2", "PB_T3_13_2_P3_RotatingBeam_3", "PB_T3_13_2_P3_RotatingBeam_4", "PB_T3_13_3_P3_RotatingBeam_1", "PB_T3_13_3_P3_RotatingBeam_2", "PB_T3_13_3_P3_RotatingBeam_3", "PB_T3_13_3_P3_RotatingBeam_4", "PB_T3_14_2_P3_RotatingBeam_2", "PB_T3_14_2_P3_RotatingBeam_3", "PB_T3_14_2_P3_RotatingBeam_4", "PB_T3_14_4_P3_RotatingBeam_1", "PB_T3_14_4_P3_RotatingBeam_2", "PB_T3_14_4_P3_RotatingBeam_3", "PB_T3_14_4_P3_RotatingBeam_4", "PB_T3_15_2_P3_RotatingBeam_1", "PB_T3_15_2_P3_RotatingBeam_2", "PB_T3_15_2_P3_RotatingBeam_3", "PB_T3_15_2_P3_RotatingBeam_4", "PB_T3_16_1_P3_RotatingBeam_1", "PB_T3_16_1_P3_RotatingBeam_2", "PB_T3_16_1_P3_RotatingBeam_3", "PB_T3_16_1_P3_RotatingBeam_4", "PB_T3_17_2_P3_RotatingBeam_1", "PB_T3_17_2_P3_RotatingBeam_2", "PB_T3_17_2_P3_RotatingBeam_3", "PB_T3_17_2_P3_RotatingBeam_4")
  40. Shamnames4<-c(T3_12_3_1, T3_12_3_2, T3_12_3_3, T3_12_3_4, T3_13_2_1, T3_13_2_2, T3_13_2_3, T3_13_2_4, T3_13_3_1, T3_13_3_2, T3_13_3_3, T3_13_3_4, T3_14_2_2, T3_14_2_3, T3_14_2_4, T3_14_4_1, T3_14_4_2, T3_14_4_3, T3_14_4_4, T3_15_2_1, T3_15_2_2, T3_15_2_3, T3_15_2_4, T3_16_1_1, T3_16_1_2, T3_16_1_3, T3_16_1_4, T3_17_2_1, T3_17_2_2, T3_17_2_3, T3_17_2_4)
  41. ShamFPS<-c(30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30)
  42. for(i in 1:Number_of_videos){
  43. x<-prep.dlc(Shamnames4[i], Height=ResolutionHeight, Width=ResolutionWidth, FPS=ShamFPS[i])
  44. assign(paste("T", as.character(Shamnames2[i]), sep=""), x)
  45. }
  46. Shamnames<-list(T1231, T1232, T1233, T1234, T1321, T1322, T1323, T1324, T1331, T1332, T1333, T1334, T1422, T1423, T1424, T1441, T1442, T1443, T1444, T1521, T1522, T1523, T1524, T1611, T1612, T1613, T1614, T1721, T1722, T1723, T1724)
  47. Difs<-data.frame()
  48. for(i in 1:length(DLCnames)){
  49. for(j in 1:nrow(DLCnames[[i]])){
  50. if(is.na(DLCnames[[i]]$forepaw_right_x[j])==F && is.na(DLCnames[[i]]$hindpaw_right_x[j])==F){
  51. Difs[j,i]=(as.numeric(DLCnames[[i]]$forepaw_right_x[j])-as.numeric(DLCnames[[i]]$hindpaw_right_x[j]))
  52. }
  53. }
  54. }
  55. SDifs<-data.frame()
  56. for(i in 1:length(Shamnames)){
  57. for(j in 1:nrow(Shamnames[[i]])){
  58. if(is.na(Shamnames[[i]]$forepaw_right_x[j])==F && is.na(Shamnames[[i]]$hindpaw_right_x[j])==F){
  59. SDifs[j,i]=(as.numeric(Shamnames[[i]]$forepaw_right_x[j])-as.numeric(Shamnames[[i]]$hindpaw_right_x[j]))
  60. }
  61. }
  62. }
  63. Steps<-data.frame()
  64. for(i in 1:length(DLCnames)){
  65. stepcount=0
  66. stepblock=0
  67. for(j in 1:nrow(Difs)){
  68. if(stepblock==0 && is.na(Difs[j,i])==F && is.na(Difs[j+1,i])==F && Difs[j,i]<(Difs[j+1,i])+1){
  69. stepcount=stepcount+1
  70. stepblock=1
  71. Steps[stepcount, i]=DLCnames[[i]]$seq[j]
  72. }
  73. if(is.na(Difs[j,i])==F && is.na(Difs[j+1,i])==F && Difs[j,i]>(Difs[j+1,i]+1)){
  74. stepblock=0
  75. }
  76. }
  77. }
  78. SSteps<-data.frame()
  79. for(i in 1:length(Shamnames)){
  80. stepcount=0
  81. stepblock=0
  82. for(j in 1:nrow(SDifs)){
  83. if(stepblock==0 && is.na(SDifs[j,i])==F && is.na(SDifs[j+1,i])==F && SDifs[j,i]<(SDifs[j+1,i])+1){
  84. stepcount=stepcount+1
  85. stepblock=1
  86. SSteps[stepcount, i]=Shamnames[[i]]$seq[j]
  87. }
  88. if(is.na(SDifs[j,i])==F && is.na(SDifs[j+1,i])==F && SDifs[j,i]>(SDifs[j+1,i]+1)){
  89. stepblock=0
  90. }
  91. }
  92. }
  93. StepangleKnee=data.frame()
  94. for(i in 1:ncol(Steps)){
  95. for(j in 1:nrow(Steps)){
  96. if(is.na(Steps[j,i])==F && is.na(Steps[j+1,i])==F){
  97. steprow=nrow(StepangleKnee)+1
  98. for(k in 1:(as.numeric(Steps[j+1,i]-as.numeric(Steps[j,i])))){
  99. StepangleKnee[steprow,k]=singleangle(DLCnames[[i]], (Steps[j,i]+k), "hip_right", "knee_right", "ankle_right")
  100. }
  101. }
  102. }
  103. }
  104. SStepangleKnee=data.frame()
  105. for(i in 1:ncol(SSteps)){
  106. for(j in 1:nrow(SSteps)){
  107. if(is.na(SSteps[j,i])==F && is.na(SSteps[j+1,i])==F){
  108. steprow=nrow(SStepangleKnee)+1
  109. for(k in 1:(as.numeric(SSteps[j+1,i]-as.numeric(SSteps[j,i])))){
  110. SStepangleKnee[steprow,k]=singleangle(Shamnames[[i]], (SSteps[j,i]+k), "hip_right", "knee_right", "ankle_right")
  111. }
  112. }
  113. }
  114. }
  115. colSums(!is.na(StepangleKnee))#mindestens 20 values -> bis column 23
  116. cmax=23
  117. StepangleKnee2<-data.frame()
  118. for(i in 1:cmax){
  119. StepangleKnee2[i,1]=(i*(100/cmax))
  120. StepangleKnee2[i,2]=mean(StepangleKnee[,i], na.rm=T)
  121. StepangleKnee2[i,3]=sd(StepangleKnee[,i], na.rm=T)
  122. }
  123. colSums(!is.na(SStepangleKnee))#mindestens 20 values -> bis column 23
  124. SStepangleKnee2<-data.frame()
  125. for(i in 1:cmax){
  126. SStepangleKnee2[i,1]=(i*(100/cmax))
  127. SStepangleKnee2[i,2]=mean(SStepangleKnee[,i], na.rm=T)
  128. SStepangleKnee2[i,3]=sd(SStepangleKnee[,i], na.rm=T)
  129. }
  130. ggplot()+
  131. geom_ribbon(aes(ymin=StepangleKnee2$V2-StepangleKnee2$V3, ymax=StepangleKnee2$V2+StepangleKnee2$V3, x=StepangleKnee2$V1), fill="blue", alpha=0.5)+
  132. geom_ribbon(aes(ymin=SStepangleKnee2$V2-SStepangleKnee2$V3, ymax=SStepangleKnee2$V2+SStepangleKnee2$V3, x=SStepangleKnee2$V1), fill="red", alpha=0.5)+
  133. geom_line(aes(y=StepangleKnee2$V2, x=StepangleKnee2$V1), color="darkblue")+
  134. geom_line(aes(y=SStepangleKnee2$V2, x=SStepangleKnee2$V1), color="darkred")+
  135. scale_y_continuous(limits = c(0,180))+
  136. theme_classic()+
  137. xlab("% stride")+
  138. ylab("Knee angle (degree)")
  139. StepangleHip=data.frame()
  140. for(i in 1:ncol(Steps)){
  141. for(j in 1:nrow(Steps)){
  142. if(is.na(Steps[j,i])==F && is.na(Steps[j+1,i])==F){
  143. steprow=nrow(StepangleHip)+1
  144. for(k in 1:(as.numeric(Steps[j+1,i]-as.numeric(Steps[j,i])))){
  145. StepangleHip[steprow,k]=singleangle(DLCnames[[i]], (Steps[j,i]+k), "middle_back", "hip_right", "knee_right")
  146. }
  147. }
  148. }
  149. }
  150. SStepangleHip=data.frame()
  151. for(i in 1:ncol(SSteps)){
  152. for(j in 1:nrow(SSteps)){
  153. if(is.na(SSteps[j,i])==F && is.na(SSteps[j+1,i])==F){
  154. steprow=nrow(SStepangleHip)+1
  155. for(k in 1:(as.numeric(SSteps[j+1,i]-as.numeric(SSteps[j,i])))){
  156. SStepangleHip[steprow,k]=singleangle(Shamnames[[i]], (SSteps[j,i]+k), "middle_back", "hip_right", "knee_right")
  157. }
  158. }
  159. }
  160. }
  161. colSums(!is.na(StepangleHip))#mindestens 20 values -> bis column 19
  162. cmax=19
  163. StepangleHip2<-data.frame()
  164. for(i in 1:cmax){
  165. StepangleHip2[i,1]=(i*(100/cmax))
  166. StepangleHip2[i,2]=mean(StepangleHip[,i], na.rm=T)
  167. StepangleHip2[i,3]=sd(StepangleHip[,i], na.rm=T)
  168. }
  169. colSums(!is.na(SStepangleHip))#mindestens 20 values -> bis column 19
  170. SStepangleHip2<-data.frame()
  171. for(i in 1:cmax){
  172. SStepangleHip2[i,1]=(i*(100/cmax))
  173. SStepangleHip2[i,2]=mean(SStepangleHip[,i], na.rm=T)
  174. SStepangleHip2[i,3]=sd(SStepangleHip[,i], na.rm=T)
  175. }
  176. ggplot()+
  177. geom_ribbon(aes(ymin=StepangleHip2$V2-StepangleHip2$V3, ymax=StepangleHip2$V2+StepangleHip2$V3, x=StepangleHip2$V1), fill="blue", alpha=0.5)+
  178. geom_ribbon(aes(ymin=SStepangleHip2$V2-SStepangleHip2$V3, ymax=SStepangleHip2$V2+SStepangleHip2$V3, x=SStepangleHip2$V1), fill="red", alpha=0.5)+
  179. geom_line(aes(y=StepangleHip2$V2, x=StepangleHip2$V1), color="darkblue")+
  180. geom_line(aes(y=SStepangleHip2$V2, x=SStepangleHip2$V1), color="darkred")+
  181. scale_y_continuous(limits = c(0,180))+
  182. theme_classic()+
  183. xlab("% stride")+
  184. ylab("Hip angle (degree)")
  185. anovaANGHip<-aov(SStepangleHip2$V2~StepangleHip2$V2)
  186. summary(anovaANGHip)
  187. StepangleAnkle=data.frame()
  188. for(i in 1:ncol(Steps)){
  189. for(j in 1:nrow(Steps)){
  190. if(is.na(Steps[j,i])==F && is.na(Steps[j+1,i])==F){
  191. steprow=nrow(StepangleAnkle)+1
  192. for(k in 1:(as.numeric(Steps[j+1,i]-as.numeric(Steps[j,i])))){
  193. StepangleAnkle[steprow,k]=singleangle(DLCnames[[i]], (Steps[j,i]+k), "forepaw_right", "ankle_right", "knee_right")
  194. }
  195. }
  196. }
  197. }
  198. SStepangleAnkle=data.frame()
  199. for(i in 1:ncol(SSteps)){
  200. for(j in 1:nrow(SSteps)){
  201. if(is.na(SSteps[j,i])==F && is.na(SSteps[j+1,i])==F){
  202. steprow=nrow(SStepangleAnkle)+1
  203. for(k in 1:(as.numeric(SSteps[j+1,i]-as.numeric(SSteps[j,i])))){
  204. SStepangleAnkle[steprow,k]=singleangle(Shamnames[[i]], (SSteps[j,i]+k), "forepaw_right", "ankle_right", "knee_right")
  205. }
  206. }
  207. }
  208. }
  209. colSums(!is.na(StepangleAnkle))#mindestens 20 values -> bis column 22
  210. cmax=22
  211. StepangleAnkle2<-data.frame()
  212. for(i in 1:cmax){
  213. StepangleAnkle2[i,1]=(i*(100/cmax))
  214. StepangleAnkle2[i,2]=mean(StepangleAnkle[,i], na.rm=T)
  215. StepangleAnkle2[i,3]=sd(StepangleAnkle[,i], na.rm=T)
  216. }
  217. colSums(!is.na(SStepangleAnkle))#mindestens 20 values -> bis column 22
  218. SStepangleAnkle2<-data.frame()
  219. for(i in 1:cmax){
  220. SStepangleAnkle2[i,1]=(i*(100/cmax))
  221. SStepangleAnkle2[i,2]=mean(SStepangleAnkle[,i], na.rm=T)
  222. SStepangleAnkle2[i,3]=sd(SStepangleAnkle[,i], na.rm=T)
  223. }
  224. ggplot()+
  225. geom_ribbon(aes(ymin=StepangleAnkle2$V2-StepangleAnkle2$V3, ymax=StepangleAnkle2$V2+StepangleAnkle2$V3, x=StepangleAnkle2$V1), fill="darkblue", alpha=0.5)+
  226. geom_ribbon(aes(ymin=SStepangleAnkle2$V2-SStepangleAnkle2$V3, ymax=SStepangleAnkle2$V2+SStepangleAnkle2$V3, x=SStepangleAnkle2$V1), fill="red", alpha=0.5)+
  227. geom_line(aes(y=StepangleAnkle2$V2, x=StepangleAnkle2$V1), color="darkblue")+
  228. geom_line(aes(y=SStepangleAnkle2$V2, x=SStepangleAnkle2$V1), color="darkred")+
  229. scale_y_continuous(limits = c(0,180))+
  230. theme_classic()+
  231. xlab("% stride")+
  232. ylab("Ankle angle (degree)")
  233. ggplot()+
  234. geom_bar(stat="identity", aes(y=Difs$V2, x=seq(1, nrow(Difs))), na.rm=T)+
  235. scale_x_continuous(limits = c(0,300))
  236. ggplot()+
  237. geom_line(aes(y=Difs$V1, x=seq(1, nrow(Difs))), na.rm=T)+
  238. scale_x_continuous(limits = c(0,300))+
  239. theme_classic()+
  240. xlab("Frame Indices")+
  241. ylab("Distance Forepaw/Hindpaw (px)")