+ (shell-command (concat (expand-file-name "analyze_episodes2.py")
+ " -e " episode " -p " person " -i " buffer-file-name )))
+
+(defun transcribe-analyze (episodenumber personid)
+ "Extract from a given episode and person the number of asunits per
+ second produced, and the number of clauses per asunits, for L2 and L1."
+ (interactive "sepisodenumber: \nspersonid:")
+ (setq interventionsl2 '())
+ (setq interventionsl1 '())
+ (setq xml (xml-parse-region (point-min) (point-max)))
+ (setq results (car xml))
+ (setq episodes (xml-get-children results 'episode))
+ (setq asunitsl2 0.0000)
+ (setq asunitsl1 0.0000)
+ (setq shifts)
+ (setq clausesl1 0.0000)
+ (setq errorsl1 0.0000)
+ (setq clausesl2 0.0000)
+ (setq errorsl2 0.0000)
+ (dolist (episode episodes)
+ (setq numbernode (xml-get-children episode 'number))
+ (setq number (nth 2 (car numbernode)))
+ (when (equal episodenumber number)
+ (setq durationnode (xml-get-children episode 'duration))
+ (setq duration (nth 2 (car durationnode)))
+ (setq transcription (xml-get-children episode 'transcription))
+ (dolist (turn transcription)
+ (setq interventionnode (xml-get-children turn (intern personid)))
+ (dolist (intervention interventionnode)
+ (setq l2node (xml-get-children intervention 'l2))
+ (dolist (l2turn l2node)
+ (setq l2 (nth 2 l2turn))
+ (setq clausesl2node (nth 1 l2turn))
+ (setq clausesl2nodeinc (cdr (car clausesl2node)))
+ (when (not (equal clausesl2node nil))
+ (setq clausesl2 (+ clausesl2
+ (string-to-number clausesl2nodeinc))))
+ (when (not (equal l2 nil))
+ (add-to-list 'interventionsl2 l2)
+ (setq asunitsl2 (1+ asunitsl2))))
+ (setq l1node (xml-get-children intervention 'l1))
+ (dolist (l1turn l1node)
+ (setq l1 (nth 2 l1turn))
+ (setq clausesl1node (nth 1 l1turn))
+ (setq clausesl1nodeinc (cdr (car clausesl1node)))
+ (when (not (equal clausesl1node nil))
+ (setq clausesl1 (+ clausesl1
+ (string-to-number clausesl1nodeinc))))
+ (when (not (equal l1 nil))
+ (add-to-list 'interventionsl1 l1)
+ (setq asunitsl1 (1+ asunitsl1))))))))
+ (reverse interventionsl2)
+ (reverse interventionsl1)
+ ;(print interventions) ;uncomment to display all the interventions on screen
+ (setq asunitspersecondl2 (/ asunitsl2 (string-to-number duration)))
+ (setq clausesperasunitl2 (/ clausesl2 asunitsl2))
+ (setq asunitspersecondl1 (/ asunitsl1 (string-to-number duration)))
+ (setq clausesperasunitl1 (/ clausesl1 asunitsl1))
+ (princ (format "episode: %s, duration: %s, person: %s\n" number duration personid))
+ (princ (format "L2(Asunits/second): %s, L2(clauses/Asunit): %s, L1(Asunits/second): %s"
+ asunitspersecondl2 clausesperasunitl2 asunitspersecondl1))
+)