small but significant improvements: 1) no sleep between jobs = no idle CPU time, 2) better memory management after doing a scatter plot of max memory as a function of number of samples for several QC datasets, 3) locked creation of figures and tables, so two processes can't attempt to create the same figure/table simultaneously, 4) appended a partial todo list at the top of the script