MCPcopy Create free account
hub / github.com/brain-workshop/brainworkshop / update

Method update

brainworkshop.py:3322–3407  ·  view source on GitHub ↗
(self, skip=False)

Source from the content-addressed store, hash-verified

3320 self.update()
3321
3322 def update(self, skip=False):
3323 if mode.started or mode.session_number == 0 or skip:
3324 self.label.text = ''
3325 return
3326
3327 poss_mods = ['position1', 'position2', 'position3', 'position4',
3328 'vis1', 'vis2', 'vis3', 'vis4', 'color', 'visvis',
3329 'visaudio', 'audiovis', 'image', 'audio',
3330 'audio2', 'arithmetic'] # arithmetic must be last so it's easy to exclude
3331
3332 rights = dict([(mod, 0) for mod in poss_mods])
3333 wrongs = dict([(mod, 0) for mod in poss_mods])
3334 category_percents = dict([(mod, 0) for mod in poss_mods])
3335
3336 mods = mode.modalities[mode.mode]
3337 data = stats.session
3338
3339 for mod in mods:
3340 for x in range(mode.back, len(data['position1'])):
3341
3342 if mode.flags[mode.mode]['crab'] == 1:
3343 back = 1 + 2*(x % mode.back)
3344 else:
3345 back = mode.back
3346 if cfg.VARIABLE_NBACK:
3347 back = mode.variable_list[x - back]
3348
3349 # data is a dictionary of lists.
3350 if mod in ['position1', 'position2', 'position3', 'position4',
3351 'vis1', 'vis2', 'vis3', 'vis4', 'audio', 'audio2', 'color', 'image']:
3352 rights[mod] += int((data[mod][x] == data[mod][x-back]) and data[mod+'_input'][x])
3353 wrongs[mod] += int((data[mod][x] == data[mod][x-back]) ^ data[mod+'_input'][x]) # ^ is XOR
3354 if cfg.JAEGGI_SCORING:
3355 rights[mod] += int(data[mod][x] != data[mod][x-back] and not data[mod+'_input'][x])
3356
3357 if mod in ['visvis', 'visaudio', 'audiovis']:
3358 modnow = mod.startswith('vis') and 'vis' or 'audio' # these are the python<2.5 compatible versions
3359 modthn = mod.endswith('vis') and 'vis' or 'audio' # of 'vis' if mod.startswith('vis') else 'audio'
3360 rights[mod] += int((data[modnow][x] == data[modthn][x-back]) and data[mod+'_input'][x])
3361 wrongs[mod] += int((data[modnow][x] == data[modthn][x-back]) ^ data[mod+'_input'][x])
3362 if cfg.JAEGGI_SCORING:
3363 rights[mod] += int(data[modnow][x] != data[modthn][x-back] and not data[mod+'_input'][x])
3364
3365 if mod in ['arithmetic']:
3366 ops = {'add':'+', 'subtract':'-', 'multiply':'*', 'divide':'/'}
3367 answer = eval("Decimal(data['numbers'][x-back]) %s Decimal(data['numbers'][x])" % ops[data['operation'][x]])
3368 rights[mod] += int(answer == Decimal(data[mod+'_input'][x])) # data[...][x] is only Decimal if op == /
3369 wrongs[mod] += int(answer != Decimal(data[mod+'_input'][x]))
3370
3371 str_list = []
3372 if not CLINICAL_MODE:
3373 str_list += [_('Correct-Errors: ')]
3374 sep = ' '
3375 keys = dict([(mod, cfg['KEY_%s' % mod.upper()]) for mod in poss_mods[:-1]]) # exclude 'arithmetic'
3376
3377 for mod in poss_mods[:-1]: # exclude 'arithmetic'
3378 if mod in mods:
3379 keytext = key.symbol_string(keys[mod])

Callers 1

__init__Method · 0.95

Calls 1

submit_sessionMethod · 0.80

Tested by

no test coverage detected