changeset 2485:f9bb57550f0d

generate_report: results ordered by date; date shown as title.
author Brecht De Man <b.deman@qmul.ac.uk>
date Mon, 08 Aug 2016 11:03:07 +0200
parents 51191d791e7e
children a6820a146469
files python/generate_report.py
diffstat 1 files changed, 37 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/python/generate_report.py	Thu Aug 04 12:13:03 2016 +0100
+++ b/python/generate_report.py	Mon Aug 08 11:03:07 2016 +0200
@@ -72,6 +72,9 @@
     else:
         user = ''
 
+# Months
+month_array = ['January', 'February', 'March', 'April', 'May', 'June', \
+                'July', 'August', 'September', 'October', 'November', 'December']
 
 # begin LaTeX document
 header = r'''\documentclass[11pt, oneside]{article} 
@@ -107,8 +110,6 @@
         \end{thebibliography}
         \end{document}'''
 
-body = ''
-
 # make sure folder_name ends in '/'
 folder_name = os.path.join(folder_name, '')
 
@@ -118,6 +119,10 @@
     subprocess.call("python score_parser.py '"+folder_name+"'", shell=True)
     subprocess.call("python score_plot.py '"+folder_name+"ratings/'", shell=True)
 
+# make array of text and array of dates
+body_array = []
+date_array = []
+
 # get every XML file in folder
 files_list = os.listdir(folder_name)
 for file in files_list: # iterate over all files in files_list
@@ -126,9 +131,28 @@
         tree = ET.parse(folder_name + file)
         root = tree.getroot()
         
-        # PRINT name as section
-        body+= '\n\section{'+file[:-4].capitalize()+'}\n' # make section header from name without extension
+        # get date
+          # <datetime>
+          #   <date year="2016" month="7" day="12"/>
+          #   <time hour="14" minute="12" secs="6"/>
+          # </datetime>
+        date_node = root.find("./datetime/date")
+        time_node = root.find("./datetime/time")
+        year   = date_node.get("year")
+        month  = date_node.get("month")
+        day    = date_node.get("day")
+        hour   = time_node.get("hour")
+        minute = time_node.get("minute")
+        second = time_node.get("secs")
+        date_array.append((int(year),int(month),int(day),\
+            int(hour),int(minute),int(second)))
         
+        # date as section title
+        body = '\n\section{'+day+' '+month_array[int(month)]+' '+year+' '+hour+':'+minute+':'+second+'}\n'
+
+        # file name
+        body += '\n'+file[:-4]+'\n \\\\'
+
         # reset for new subject
         total_duration = 0
         page_number = 0
@@ -291,6 +315,12 @@
         # PRINT timeline plots
         body += timeline_plots
 
+        body_array.append(body)
+
+# put sections in order according to date
+body_array_ordered = [b for d,b in sorted(zip(date_array,body_array))]
+body = ''.join(body_array_ordered)
+
 # join to footer
 footer = body + footer
 
@@ -316,7 +346,7 @@
 body += '\\end{tabular} \\vspace{1.5cm} \\\\ \n'
 
 # Average duration for first, second, ... page
-body += "\t\t\\vspace{.5cm} \n\n\t\tAverage duration per page (see also Figure \\ref{fig:avgtimeperpage}): \\\\ \n\t\t"
+body += "\n\n\t\t\\subsection*{Average duration per page}\n See also Figure \\ref{fig:avgtimeperpage}. \\\\ \n\t\t"
 body += r'''\begin{tabular}{lll}
                     \textbf{Page} & \textbf{Duration} & \textbf{\# subjects}\\'''
 tpp_averages = [] # store average time per page
@@ -353,8 +383,7 @@
 combined_list = sorted(zip(*combined_list), key=operator.itemgetter(1, 2)) # sort
 
 # Show average duration for all songs
-body += r'''\vspace{.5cm}
-                Average duration per page (see also Figure \ref{fig:avgtimeperpage}): \\
+body += '\n\n\t\t'+r'''\subsection*{Average duration per page}\n See also Figure \\ref{fig:avgtimeperpage}.
                 \begin{tabular}{llll}
                         \textbf{Audioholder} & \textbf{Duration} & \textbf{\# subjects} & \textbf{\# fragments} \\'''
 page_names_ordered = []
@@ -425,7 +454,7 @@
         \label{fig:subjectsperpage}
          \end{center}
          \end{figure}
-         
+
          '''
 #TODO add error bars
 #TODO layout of figures