Mercurial > hg > webaudioevaluationtool
comparison scripts/score_parser.py @ 1252:a44af5ba444c
Quick update for scripts/score_parser.py to parse new save files.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Tue, 15 Mar 2016 15:33:29 +0000 |
parents | 47bfd9594617 |
children |
comparison
equal
deleted
inserted
replaced
1251:ee5f18d2fc47 | 1252:a44af5ba444c |
---|---|
41 | 41 |
42 # get subject ID from XML file | 42 # get subject ID from XML file |
43 subject_id = file_name[:-4] # file name (without extension) as subject ID | 43 subject_id = file_name[:-4] # file name (without extension) as subject ID |
44 | 44 |
45 # get list of all pages this subject evaluated | 45 # get list of all pages this subject evaluated |
46 for audioholder in root.findall("./page"): # iterate over pages | 46 for page in root.findall("./page"): # iterate over pages |
47 page_name = audioholder.get('id') # get page name | 47 page_name = page.get('ref') # get page reference ID |
48 | 48 |
49 if page_name is None: # ignore 'empty' audio_holders | 49 if page_name is None: # ignore 'empty' audio_holders |
50 print "WARNING: " + file_name + " contains empty audio holder. (score_parser.py)" | 50 print "WARNING: " + file_name + " contains empty audio holder. (score_parser.py)" |
51 break | 51 break |
52 | |
53 if page.get('state') != "complete": | |
54 print "WARNING:" + file_name + " contains incomplete page " +page_name+ ". (score_parser.py)" | |
55 break; | |
52 | 56 |
53 file_name = folder_name+'/ratings/'+page_name+'-ratings.csv' # score file name | 57 file_name = folder_name+'/ratings/'+page_name+'-ratings.csv' # score file name |
54 | 58 |
55 # create folder 'ratings' if not yet created | 59 # create folder 'ratings' if not yet created |
56 if not os.path.exists(folder_name + '/ratings'): | 60 if not os.path.exists(folder_name + '/ratings'): |
58 | 62 |
59 # header: fragment IDs in 'alphabetical' order | 63 # header: fragment IDs in 'alphabetical' order |
60 # go to fragment column, or create new column if it doesn't exist yet | 64 # go to fragment column, or create new column if it doesn't exist yet |
61 | 65 |
62 # get array of audio elements and number of audio elements | 66 # get array of audio elements and number of audio elements |
63 audiolist = audioholder.findall("./audioelement") | 67 audiolist = page.findall("./audioelement") |
64 n_fragments = len(audiolist) | 68 n_fragments = len(audiolist) |
65 | 69 |
66 # get alphabetical array of fragment IDs from this subject's XML | 70 # get alphabetical array of fragment IDs from this subject's XML |
67 fragmentnamelist = [] # make empty list | 71 fragmentnamelist = [] # make empty list |
68 for audioelement in audiolist: # iterate over all audioelements | 72 for audioelement in audiolist: # iterate over all audioelements |
69 fragmentnamelist.append(audioelement.get('id')) # add to list | 73 fragmentnamelist.append(audioelement.get('ref')) # add to list |
70 | 74 |
71 | 75 |
72 # if file exists, get header and add any 'new' fragments not yet in the header | 76 # if file exists, get header and add any 'new' fragments not yet in the header |
73 if os.path.isfile(file_name): | 77 if os.path.isfile(file_name): |
74 with open(file_name, 'r') as readfile: | 78 with open(file_name, 'r') as readfile: |
117 # prepare row to be written for this subject for this page | 121 # prepare row to be written for this subject for this page |
118 ratingrow = [subject_id] | 122 ratingrow = [subject_id] |
119 | 123 |
120 # get scores related to fragment [id] | 124 # get scores related to fragment [id] |
121 for fragmentname in headerrow[1:]: # iterate over fragments in header (skip first empty column) | 125 for fragmentname in headerrow[1:]: # iterate over fragments in header (skip first empty column) |
122 elementvalue = audioholder.find("./audioelement/[@id='" | 126 elementvalue = page.find("./audioelement/[@ref='" |
123 + fragmentname | 127 + fragmentname |
124 + "']/value") | 128 + "']/value") |
125 if hasattr(elementvalue, 'text'): # if rating for this fragment exists | 129 if hasattr(elementvalue, 'text'): # if rating for this fragment exists |
126 ratingrow.append(elementvalue.text) # add to rating row | 130 ratingrow.append(elementvalue.text) # add to rating row |
127 else: # if this subject has not rated this fragment | 131 else: # if this subject has not rated this fragment |