-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
190 lines (152 loc) · 7.44 KB
/
main.py
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
import datetime
from test1 import test1
from test2 import test2, test2_pass
from test3 import test3
from test3OpticalFlow import test3_optical_flow
from test3b import test3b
from vis import vis_directions
if __name__ == "__main__":
report_file = open('../report/report.txt', 'w')
report_file.write("Report for fall risk assessment\n\n")
at_risk = False
total_tests = 3
passed_tests = 0
# =========================== gather user info ===========================
report_file.write("-------------------------------\n")
report_file.write("User information\n\n")
print("Please enter user name:")
user_name = str(input())
report_file.write("Name: %s\n" % user_name)
print("Please enter user age:")
user_age = int(input())
report_file.write("Age: %d\n" % user_age)
print("Please enter user gender (male or female):")
user_gender = str(input())
while (user_gender != "male" and user_gender != "female"):
print("Error input. Please enter user gender (male or female):")
user_gender = str(input())
report_file.write("Gender: %s\n" % user_gender)
print("Please enter user height in cm:")
user_height = int(input())
report_file.write("Height: %d cm\n" % user_height)
now = datetime.datetime.now()
report_file.write("Test date: %s\n" % now.strftime("%Y-%m-%d"))
# ============================== Run test1 (test_idx = 1) =================================
print("\nRunning test1 - the TUG test")
report_file.write("\n-------------------------------\n")
report_file.write("Test1 - Timed Up & Go (TUG)\n\n")
test_idx = 1
vis_directions(test_idx)
test1_time = test1()
print("test1 finished\n")
report_file.write("Total time = %.2f seconds. \n\n" % test1_time)
if (test1_time >= 12):
# User is at risk for falling
at_risk = True
report_file.write("Test1 failed. User is at risk for falling.\n")
else:
passed_tests += 1
report_file.write("Test1 passed. User is not at risk for falling.\n")
# ==========================================================================
# ============================== Run test2 (test_idx = 2) =================================
print("Running test2 - 30-Second Chair Stand")
report_file.write("\n-------------------------------\n")
report_file.write("Test2 - 30-Second Chair Stand\n\n")
test_idx = 2
vis_directions(test_idx)
test2_count = test2()
print("test2 finished\n")
report_file.write("Stand count = %d.\n\n" % test2_count)
if (test2_pass(user_age, user_gender, test2_count) == False):
# User is at risk for falling
at_risk = True
report_file.write("Test2 failed. User is at risk for falling.\n")
else:
passed_tests += 1
report_file.write("Test2 passed. User is not at risk for falling.\n")
# ==========================================================================
# ============================== Run test3 =================================
print("Running test3 - 4-Stage Balance Test\n")
report_file.write("\n-------------------------------\n")
report_file.write("Test3 - 4-Stage Balance Test\n")
# ============================== test3-stage1 (test_idx = 3, stage_idx = 1) ==============================
report_file.write("\n\t-------------------------------\n")
report_file.write("\tTest3 stage1 - stand with your feet side-by-side\n\n")
print("\ttest3 stage1 - stand with your feet side-by-side.")
test_idx = 3
stage_idx = 1
vis_directions(test_idx)
test3_stage1_time = test3_optical_flow(stage_idx)
report_file.write("\tTime = %.2f seconds.\n\n" % test3_stage1_time)
print("\ttest3 stage1 finished\n")
if (test3_stage1_time < 10):
# test failed
at_risk = True
report_file.write("\tTest3 stage1 failed. User is at risk for falling.\n")
else:
passed_tests += 1
report_file.write("\tTest3 stage1 passed. User is not at risk for falling.\n")
# ==================================================================================
# ============================== test3-stage2-left (test_idx = 4, stage_idx = 2) ========================
report_file.write("\n\t-------------------------------\n")
report_file.write("\tTest3 stage2-left - place the instep of left foot so it is touching the big toe of the right foot\n\n")
print("\ttest3 stage2-left - place the instep of left foot so it is touching the big toe of the right foot.")
test_idx = 4
stage_idx = 2
vis_directions(test_idx)
test3_stage2_left_time = test3_optical_flow(stage_idx)
report_file.write("\tTime = %.2f seconds.\n\n" % test3_stage2_left_time)
print("\ttest3 stage2-left finished\n")
if (test3_stage2_left_time < 10):
# test failed
at_risk = True
report_file.write("\tTest3 stage2-left failed. User is at risk for falling.\n")
else:
passed_tests += 1
report_file.write("\tTest3 stage2-left passed. User is not at risk for falling.\n")
# ==================================================================================
# ============================== test3-stage3-left (test_idx = 5, stage_idx = 3) ========================
report_file.write("\n\t-------------------------------\n")
report_file.write("\tTest3 stage3-left - Tandem stand: Place left foot in front of the right foot, heel touching toe. \n\n")
print("\ttest3 stage3-left - Tandem stand: Place left foot in front of the right foot, heel touching toe.")
test_idx = 5
stage_idx = 3
vis_directions(test_idx)
test3_stage3_left_time = test3_optical_flow(stage_idx)
report_file.write("\tTime = %.2f seconds.\n\n" % test3_stage3_left_time)
print("\ttest3 stage3-left finished\n")
if (test3_stage3_left_time < 10):
# test failed
at_risk = True
report_file.write("\tTest3 stage3-left failed. User is at risk for falling.\n")
else:
passed_tests += 1
report_file.write("\tTest3 stage3-left passed. User is not at risk for falling.\n")
# ==================================================================================
# ============================== test3-stage4-right (test_idx = 6) =======================
report_file.write("\n\t-------------------------------\n")
report_file.write("\tTest3 stage4-right - Stand on right foot.\n\n")
print("\ttest3 stage4-right - Stand on right foot.")
test_idx = 6
vis_directions(test_idx)
test3_stage4_right_time = test3b()
report_file.write("\tTime = %.2f seconds.\n\n" % test3_stage4_right_time)
print("\ttest3 stage4-right finished\n")
if (test3_stage4_right_time < 10):
# test failed
at_risk = True
report_file.write("\tTest3 stage4-right failed. User is at risk for falling.\n")
else:
passed_tests += 1
report_file.write("\tTest3 stage4-right passed. User is not at risk for falling.\n")
# ==================================================================================
print("\ntest3 finished\n")
print("\nAll tests finished\n")
report_file.write("\n-------------------------------\n")
report_file.write("Summary\n\n")
if (at_risk):
report_file.write("User is at risk for falling.\n\n")
else:
report_file.write("User is not at risk for falling.\n\n")
# report_file.write("Passed %d out of %d tests.\n" % (passed_tests, total_tests))
report_file.close()