changeset 2995:ac6720456322

Fixing #215. timeline_plot_movement handles no scale possibilities with AB/ABX
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Wed, 02 Aug 2017 08:10:46 +0100
parents beb60cab1f66
children eaa5dc4aedbf
files .gitignore python/timeline_view_movement.py
diffstat 2 files changed, 25 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/.gitignore	Wed Aug 02 07:42:50 2017 +0100
+++ b/.gitignore	Wed Aug 02 08:10:46 2017 +0100
@@ -11,3 +11,6 @@
 *.DS_STORE
 *.swp
 *.swo
+saves/ratings/*
+saves/timelines/*
+saves/timelines_movement/*
--- a/python/timeline_view_movement.py	Wed Aug 02 07:42:50 2017 +0100
+++ b/python/timeline_view_movement.py	Wed Aug 02 08:10:46 2017 +0100
@@ -74,6 +74,10 @@
             if page_name is None: # ignore 'empty' audio_holders
                 print("Skipping empty page name from "+subject_id+".")
                 break
+            
+            if page.get("state") != "complete":
+                print("Skipping non-completed page "+page_name+" from "+subject_id+".")
+                break
                 
             # subtract total page length from subsequent page event times
             page_time_temp = page.find("./metric/metricresult/[@id='testTime']")
@@ -108,11 +112,16 @@
                 if audioelement is not None: # Check it exists
                     audio_id = str(audioelement.get('ref'))
                     
-                    # break if no initial position or move events registered
+                    # break if no initial position....
                     initial_position_temp = audioelement.find("./metric/metricresult/[@name='elementInitialPosition']")
                     if initial_position_temp is None:
                         print("Skipping "+page_name+" from "+subject_id+": does not have initial positions specified.")
                         break
+                    # ... or move events registered
+                    movements = audioelement.find("./metric/metricresult[@name='elementTrackerFull']")
+                    if movements is None:
+                        print("Skipping "+page_name+" from "+subject_id+": does not have trackers.")
+                        break
                     
                     # get move events, initial and eventual position
                     initial_position = float(initial_position_temp.text)
@@ -299,13 +308,20 @@
                 interfaces = page_setup.findall("./interface")
                 interface_title = interfaces[0].find("./title")
                 scales = interfaces[0].findall("./scales") # get first interface by default
-                scalelabels = scales[0].findall("./scalelabel") # get first scale by default
-
+                
                 labelpos = [] # array of scalelabel positions
                 labelstr = [] # array of strings at labels
-                for scalelabel in scalelabels:
-                    labelpos.append(float(scalelabel.get('position'))/100.0)
-                    labelstr.append(scalelabel.text)
+                
+                # No scales given. Use normal floats
+                if len(scales) is 0:
+                    labelpos = [0.0, 1.0]
+                    labelstr = ["0", "100"]
+                else:
+                    scalelabels = scales[0].findall("./scalelabel") # get first scale by default
+                
+                    for scalelabel in scalelabels:
+                        labelpos.append(float(scalelabel.get('position'))/100.0)
+                        labelstr.append(scalelabel.text)
 
                 # use interface name as Y axis label
                 if interface_title is not None: