Mercurial > hg > webaudioevaluationtool
changeset 2279:17b7ab4f93f2
generate_report compatible with Python 2.7 and 3.x: print ... --> print(...); minor updates
author | Brecht De Man <b.deman@qmul.ac.uk> |
---|---|
date | Wed, 20 Apr 2016 21:19:54 +0200 |
parents | df459c20946e |
children | 334b11f2b418 185232d01324 |
files | python/generate_report.py |
diffstat | 1 files changed, 46 insertions(+), 46 deletions(-) [+] |
line wrap: on
line diff
--- a/python/generate_report.py Wed Apr 20 20:36:47 2016 +0200 +++ b/python/generate_report.py Wed Apr 20 21:19:54 2016 +0200 @@ -19,8 +19,8 @@ # XML results files location if len(sys.argv) == 1: folder_name = "../saves/" # Looks in 'saves/' folder from 'scripts/' folder - print "Use: python generate_report.py [results_folder] [no_render | -nr]" - print "Using default path: " + folder_name + print("Use: python generate_report.py [results_folder] [no_render | -nr]") + print("Using default path: " + folder_name) elif len(sys.argv) == 2: folder_name = sys.argv[1] # First command line argument is folder elif len(sys.argv) == 3: @@ -54,7 +54,7 @@ # arrays initialisation page_names = [] real_page_names = [] # regardless of differing numbers of fragments -subject_count = [] # subjects per audioholder name +subject_count = [] # subjects per page name page_count = [] duration_page = [] # duration of experiment in function of page content duration_order = [] # duration of experiment in function of page number @@ -150,11 +150,11 @@ #TODO add plot of age # get list of all page names - for audioholder in root.findall("./page"): # iterate over pages - page_name = audioholder.get('id') # get page name + for page in root.findall("./page"): # iterate over pages + page_name = page.get('ref') # get page name if page_name is None: # ignore 'empty' audio_holders - print "WARNING: " + file + " contains empty audio holder. (evaluation_stats.py)" + print("WARNING: " + file + " contains empty audio holder. (evaluation_stats.py)") break # move on to next number_of_comments = 0 # for this page @@ -162,9 +162,9 @@ not_played = [] # for this page not_moved = [] # for this page - if audioholder.find("./metric/metricresult[@id='testTime']") is not None: # check if time is included - # 'testTime' keeps total duration: subtract time so far for duration of this audioholder - duration = float(audioholder.find("./metric/metricresult[@id='testTime']").text) - total_duration + if page.find("./metric/metricresult[@id='testTime']") is not None: # check if time is included + # 'testTime' keeps total duration: subtract time so far for duration of this page + duration = float(page.find("./metric/metricresult[@id='testTime']").text)# - total_duration # total duration of test total_duration += duration @@ -173,22 +173,22 @@ total_duration = float('nan') # number of audio elements - audioelements = audioholder.findall("./audioelement") # get audioelements + audioelements = page.findall("./audioelement") # get audioelements number_of_fragments += len(audioelements) # add length of this list to total # number of comments (interesting if comments not mandatory) for audioelement in audioelements: response = audioelement.find("./comment/response") - was_played = audioelement.find("./metric/metricresult/[@name='elementFlagListenedTo']") - was_moved = audioelement.find("./metric/metricresult/[@name='elementFlagMoved']") - if response.text is not None and len(response.text) > 1: + was_played = audioelement.find("./metric/metricResult/[@name='elementFlagListenedTo']") + was_moved = audioelement.find("./metric/metricResult/[@name='elementFlagMoved']") + if response is not None and response.text is not None and len(response.text) > 1: number_of_comments += 1 else: number_of_missing_comments += 1 if was_played is not None and was_played.text == 'false': - not_played.append(audioelement.get('id')) + not_played.append(audioelement.get('name')) if was_moved is not None and was_moved.text == 'false': - not_moved.append(audioelement.get('id')) + not_moved.append(audioelement.get('name')) # update global counters total_empty_comments += number_of_missing_comments @@ -220,7 +220,7 @@ str(number_of_comments+number_of_missing_comments)+'&'+\ seconds2timestr(duration)+'\\\\\n' - # get timeline for this audioholder + # get timeline for this page img_path = 'timelines_movement/'+file[:-4]+'-'+page_name+'.pdf' # check if available @@ -235,9 +235,9 @@ else: duration_order.append([duration]) - # keep list of audioholder ids and count how many times each audioholder id + # keep list of page ids and count how many times each page id # was tested, how long it took, and how many fragments there were - # (if number of fragments is different, store as different audioholder id) + # (if number of fragments is different, store as different page id) if page_name in page_names: page_index = page_names.index(page_name) # get index # check if number of audioelements the same @@ -261,7 +261,7 @@ duration_page.append([duration]) fragments_per_page.append(len(audioelements)) - # number of subjects per audioholder regardless of differing numbers of + # number of subjects per page regardless of differing numbers of # fragments (for inclusion in box plots) if page_name in real_page_names: page_index = real_page_names.index(page_name) # get index @@ -354,15 +354,15 @@ # Show average duration for all songs body += r'''\vspace{.5cm} - Average duration per audioholder (see also Figure \ref{fig:avgtimeperaudioholder}): \\ + Average duration per page (see also Figure \ref{fig:avgtimeperpage}): \\ \begin{tabular}{llll} \textbf{Audioholder} & \textbf{Duration} & \textbf{\# subjects} & \textbf{\# fragments} \\''' -audioholder_names_ordered = [] -average_duration_audioholder_ordered = [] +page_names_ordered = [] +average_duration_page_ordered = [] number_of_subjects = [] for page_index in range(len(page_names)): - audioholder_names_ordered.append(combined_list[page_index][0]) - average_duration_audioholder_ordered.append(combined_list[page_index][1]) + page_names_ordered.append(combined_list[page_index][0]) + average_duration_page_ordered.append(combined_list[page_index][1]) number_of_subjects.append(combined_list[page_index][3]) body += '\n\t\t\t'+combined_list[page_index][0] + "&" +\ seconds2timestr(combined_list[page_index][1]) + "&" +\ @@ -371,25 +371,25 @@ body += '\n\t\t\\end{tabular}\n' # SHOW bar plot of average time per page -plt.bar(range(1,len(audioholder_names_ordered)+1), np.array(average_duration_audioholder_ordered)/60) +plt.bar(range(1,len(page_names_ordered)+1), np.array(average_duration_page_ordered)/60) plt.xlabel('Audioholder') -plt.xlim(.8, len(audioholder_names_ordered)+1) -plt.xticks(np.arange(1,len(audioholder_names_ordered)+1)+.4, audioholder_names_ordered, rotation=90) +plt.xlim(.8, len(page_names_ordered)+1) +plt.xticks(np.arange(1,len(page_names_ordered)+1)+.4, page_names_ordered, rotation=90) plt.ylabel('Average time [minutes]') -plt.savefig(folder_name+"time_per_audioholder.pdf", bbox_inches='tight') +plt.savefig(folder_name+"time_per_page.pdf", bbox_inches='tight') plt.close() # SHOW bar plot of average time per page -plt.bar(range(1,len(audioholder_names_ordered)+1), number_of_subjects) +plt.bar(range(1,len(page_names_ordered)+1), number_of_subjects) plt.xlabel('Audioholder') -plt.xlim(.8, len(audioholder_names_ordered)+1) -plt.xticks(np.arange(1,len(audioholder_names_ordered)+1)+.4, audioholder_names_ordered, rotation=90) +plt.xlim(.8, len(page_names_ordered)+1) +plt.xticks(np.arange(1,len(page_names_ordered)+1)+.4, page_names_ordered, rotation=90) plt.ylabel('Number of subjects') ax = plt.gca() ylims = ax.get_ylim() yint = np.arange(int(np.floor(ylims[0])), int(np.ceil(ylims[1]))+1) plt.yticks(yint) -plt.savefig(folder_name+"subjects_per_audioholder.pdf", bbox_inches='tight') +plt.savefig(folder_name+"subjects_per_page.pdf", bbox_inches='tight') plt.close() # SHOW both figures @@ -408,10 +408,10 @@ body += r'''\begin{figure}[htbp] \begin{center} \includegraphics[width=.65\textwidth]{'''+\ - folder_name+'time_per_audioholder.pdf'+\ + folder_name+'time_per_page.pdf'+\ r'''} - \caption{Average time spent per audioholder.} - \label{fig:avgtimeperaudioholder} + \caption{Average time spent per page.} + \label{fig:avgtimeperpage} \end{center} \end{figure} @@ -419,10 +419,10 @@ body += r'''\begin{figure}[htbp] \begin{center} \includegraphics[width=.65\textwidth]{'''+\ - folder_name+'subjects_per_audioholder.pdf'+\ + folder_name+'subjects_per_page.pdf'+\ r'''} - \caption{Number of subjects per audioholder.} - \label{fig:subjectsperaudioholder} + \caption{Number of subjects per page.} + \label{fig:subjectsperpage} \end{center} \end{figure} @@ -430,20 +430,20 @@ #TODO add error bars #TODO layout of figures -# SHOW boxplot per audioholder +# SHOW boxplot per page #TODO order in decreasing order of participants -for audioholder_name in page_names: # get each name +for page_name in page_names: # get each name # plot boxplot if exists (not so for the 'alt' names) - if os.path.isfile(folder_name+'ratings/'+audioholder_name+'-ratings-box.pdf'): + if os.path.isfile(folder_name+'ratings/'+page_name+'-ratings-box.pdf'): body += r'''\begin{figure}[htbp] \begin{center} \includegraphics[width=.65\textwidth]{'''+\ - folder_name+"ratings/"+audioholder_name+'-ratings-box.pdf'+\ + folder_name+"ratings/"+page_name+'-ratings-box.pdf'+\ r'''} - \caption{Box plot of ratings for audioholder '''+\ - audioholder_name+' ('+str(subject_count[real_page_names.index(audioholder_name)])+\ + \caption{Box plot of ratings for page '''+\ + page_name+' ('+str(subject_count[real_page_names.index(page_name)])+\ ''' participants).} - \label{fig:boxplot'''+audioholder_name.replace(" ", "")+'''} + \label{fig:boxplot'''+page_name.replace(" ", "")+'''} \end{center} \end{figure} @@ -509,7 +509,7 @@ texfile = header+body+footer # add bits together -print 'pdflatex -output-directory="'+folder_name+'"" "'+ folder_name + 'Report.tex"' # DEBUG +# print('pdflatex -output-directory="'+folder_name+'"" "'+ folder_name + 'Report.tex"')# DEBUG # write TeX file with open(folder_name + 'Report.tex','w') as f: