6 import load_questionare
8 from config
import QUESTIONARE_DIRECTORY
10 def questionare_average(questionare_list
, silent
=False, tex
=False, cnt_limit
=1):
11 # Otake Hideo & $4.3 \pm 0.5$ & $3.0 \pm 0.0$ & $4.6 \pm 1.2$ & $3.6 \pm 0.9$ \\
14 for questionare
in questionare_list
:
15 for name
in questionare
.keys():
21 total
[name
].append(questionare
[name
])
24 for name
, counter
in count
.items():
25 l
.append( (counter
, name
) )
31 for counter
, name
in l
:
32 if counter
>= cnt_limit
:
35 print "%d: %20s"%(counter
, name
),
37 a
= numpy
.array(total
[name
]).transpose()
39 means
.append(b
.mean())
42 print u
"%2.3f \u00B1 %2.3f "%(b
.mean(), numpy
.sqrt(b
.var())),
44 print u
"& $%2.1f \pm %2.1f$"%(b
.mean(), numpy
.sqrt(b
.var())),
45 variance
.append(numpy
.sqrt(b
.var()))
51 variance
.append(numpy
.sqrt(b
.var()))
56 print "Mean standard deviation is: %2.3f"%(numpy
.array(variance
).mean(),)
59 def questionare_average_raw(questionare_list
):
63 for questionare
in questionare_list
:
64 for name
in questionare
.keys():
70 total
[name
].append(questionare
[name
])
73 for name
, counter
in count
.items():
74 l
.append( (counter
, name
) )
79 for counter
, name
in l
:
82 print "%s, %d,"%(name
, counter
),
83 a
= numpy
.array(total
[name
]).transpose()
85 means
.append(b
.mean())
86 print u
"%2.3f,"%(b
.mean()),
92 ### Explicit list of players
95 ### Following code consist of expert based knowledge kindly supplied by
96 ### Alexander Dinerstein 3-pro, Motoki Noguchi 7-dan and Vit Brunner 4-dan)
98 ### The vector at each name corresponds with
100 questionare_annotations
= ['territory', 'orthodox', 'aggressiveness', 'thickness']
101 ## the orthodox scale corresponds to novelty, the "name" of the scale remains
102 # the same for historical reasons --- the scales are defined the same though
105 #questionare_vit_brun
107 "Chen Yaoye": (7, 5, 7, 6),
108 "Cho Chikun": (9, 7, 7, 9),
109 "Cho U": (4, 6, 7, 4),
110 "Gu Li": (5, 6, 9, 5),
111 "Ishida Yoshio": (6, 3, 5, 5),
112 "Luo Xihe": (8, 4, 7, 7),
113 "Ma Xiaochun": (5, 7, 7, 7),
114 "O Meien": (3, 9, 6, 5),
115 "Otake Hideo": (4, 3, 6, 5),
116 "Rui Naiwei": (5, 6, 8, 5),
117 "Sakata Eio": (6, 4, 8, 6),
118 "Takemiya Masaki": (1, 4, 7, 2),
119 #"Yi Ch'ang-ho 2004-": (7, 6, 4, 4),
120 #"Yi Ch'ang-ho 2005+": (7, 6, 6, 4),
121 "Yi Ch'ang-ho": (7, 6, 6, 4),
122 "Yi Se-tol": (6, 5, 9, 5),
123 "Yoda Norimoto": (4, 4, 7, 3)
125 # questionare_motoki_noguchi
127 "Cho Chikun": (8, 9, 8, 8 ),
128 "Cho U": (9, 7, 6, 8),
129 "Gu Li": (7, 8, 10, 4 ),
130 "Ishida Yoshio": (9, 6, 2, 6),
131 "Luo Xihe": (6, 8, 9, 7 ),
132 "Ma Xiaochun": (9, 6, 7, 8),
133 "O Meien": (1, 10, 10, 2 ),
134 "Otake Hideo": (4, 3, 5, 3),
135 "Rui Naiwei": (6, 6, 10, 2),
136 "Sakata Eio": (10, 5, 6, 10),
137 "Takemiya Masaki": (2,6, 6, 1),
138 #"Yi Ch'ang-ho 2004-": (8, 3, 2, 3),
139 # P: udelal jsem to z 2004-
140 "Yi Ch'ang-ho": (8, 3, 2, 3),
141 "Yi Se-tol": (5, 10, 10, 8 ),
142 "Yoda Norimoto": (8, 2, 2, 5),
143 "Fujisawa Hideyuki": (4, 8, 7, 4 ),
144 "Go Seigen": (8, 10, 9, 6),
145 "Hane Naoki": (8, 2, 4, 6 ),
146 "Honinbo Dosaku": (2, 10, 8, 5 ),
147 "Honinbo Shusaku": (8, 3, 2, 6),
148 "Honinbo Shuwa": (10, 8, 2, 10),
149 "Kato Masao": (2,3, 9, 4),
150 "Kobayashi Koichi": (8, 3, 3, 6),
151 "Miyazawa Goro": (1, 10, 10, 3),
152 "Takao Shinji": (4, 3, 7, 4 ),
153 "Yamashita Keigo": (2, 8, 10, 4 ),
154 "Yuki Satoshi": (2, 8, 10, 4)
156 #questionare_alex_dinner
158 "Chen Yaoye": (5, 3, 5, 5),
159 "Cho Chikun": (10, 7, 5, 10),
160 "Cho U": (9, 5, 3, 7),
161 "Gu Li": (5, 7, 8, 3),
162 "Ishida Yoshio": (9, 6, 3, 5),
163 "Luo Xihe": (8, 10, 7, 4),
164 "Ma Xiaochun": (10, 6, 3, 9),
165 "O Meien": (4, 10, 9, 4),
166 "Otake Hideo": (5, 3, 3, 3),
167 "Rui Naiwei": (3, 5, 9, 3),
168 "Sakata Eio": (7, 5, 8, 8),
169 "Takemiya Masaki": (1, 9, 8, 1),
170 #"Yi Ch'ang-ho 2004-": (6, 6, 2, 1),
171 #"Yi Ch'ang-ho 2005+": (5, 4, 5, 3),
172 # commented because duplicates 2005+
173 "Yi Ch'ang-ho": (5, 4, 5, 3),
174 "Yi Se-tol": (5, 5, 9, 7),
175 "Yoda Norimoto": (7, 7, 4, 2),
176 "Chen Zude": (3, 8, 6, 5),
177 "Cho Tae-hyeon": (1, 4, 4, 2),
178 "Fujisawa Hideyuki": (3, 10, 7, 4),
179 "Go Seigen": (4, 8, 7, 4),
180 "Hane Naoki": (7, 3, 4, 3),
181 "Jie Li": (5, 3, 5, 4),
182 "Kato Masao": (3, 6, 10, 4),
183 "Kobayashi Koichi": (10, 2, 2, 5),
184 "Miyazawa Goro": (2, 10, 9, 5),
185 "Nie Weiping": (3, 7, 8, 4),
186 "Shao Zhenzhong": (4, 5, 5, 4),
187 "Suzuki Goro": (4, 7, 5, 5),
188 "Takao Shinji": (6, 4, 4, 5),
189 "Wu Songsheng": (2, 10, 7, 4),
190 "Yamashita Keigo": (2, 10, 9, 2),
191 "Yuki Satoshi": (4, 9, 8, 5),
192 #"breakfast": (7, 7, 3, 4),
193 #"rapyuta/daien": (4, 7, 6, 5),
194 #"MilanMilan": (5, 5, 6, 4),
195 #"roln111-": (6, 5, 7, 5),
196 #"somerville": (4, 5, 5, 6),
197 #"artem92-": (7, 4, 3, 2),
198 #"TheCaptain": (3, 8, 7, 6)
200 ## + guys from the online questionare
201 ] + load_questionare
.scan_d(QUESTIONARE_DIRECTORY
)
203 questionare_total
= questionare_average(questionare_list
, silent
=True)
205 def get_all_player_names(limit
=1):
208 for q
in Data
.questionare_list
:
210 pc
[p
] = pc
.get(p
, 0) + 1
212 ps
= set( p
for p
in pc
.keys() if pc
[p
] >= limit
)
216 def get_interesting_pros(style
, top
, bottom
, without_dist
=True):
217 style_vec
= numpy
.array(style
)
220 ( math
.sqrt( sum(numpy
.power(style_vec
- numpy
.array(pro_style
), 2))),
221 pro_name
) for pro_name
, pro_style
in Data
.questionare_total
.iteritems()
225 return dist
[:top
], dist
[-bottom
:]
230 return map(second
, dist
[:top
]), map(second
, dist
[-bottom
:])
232 if __name__
== '__main__':
234 """this prints the averaged questionare data, along with number of interviewees who
235 answered for the particular pro"""
236 #print get_all_player_names(4)
238 questionare_total
= questionare_average(Data
.questionare_list
, cnt_limit
=2, silent
=False, tex
=tex
)
240 pa
= get_all_player_names(2)
242 vals
= numpy
.array([ va
for pn
, va
in questionare_total
.iteritems() if pn
in pa
])
246 for desc
, num
in zip(Data
.questionare_annotations
, range(4)):
250 print u
"%s\n mean: %2.3f \u00B1 %2.3f"%(desc
, sli
.mean(), sli
.std())
252 print u
"%s & %2.3f \\pm %2.3f \\"%(desc
, sli
.mean(), sli
.std())
254 from utils
.utils
import pearson_coef
256 qa
= Data
.questionare_annotations
258 print "PAIRWISE CORRELATIONS"
260 print " | ".join("%15s"%an
for an
in (['']+qa
))
261 for i
in xrange(len(qa
)):
262 print "%15s | " % qa
[i
],
263 for j
in xrange(len(Data
.questionare_annotations
)):
265 print "%15s |" % ('' ),
267 p
= pearson_coef(key2vec
[qa
[i
]], key2vec
[qa
[j
]])
268 print "%15s |" % ( "%.3f" % p
),
276 def test_style(style
):
277 near
, dist
= get_interesting_pros(style
, 3, 3)
286 #test_style([1, 2, 3, 4])