In [1]:
import os, os.path
from subprocess import check_output
import shlex
import glob
from StringIO import StringIO
import contextlib
import tempfile
import shutil
import re


os.chdir('/home/will/matlabtmp/')

matlab_path = '/home/will/MATLAB/R2013a/bin/matlab'

In [2]:
@contextlib.contextmanager
def tmp_changedir(new_dir):

    cur_dir = os.path.abspath(os.curdir)
    try:
        os.chdir(new_dir)
        yield new_dir
    finally:
        os.chdir(cur_dir)

In [3]:
def get_warnings(mlint_out):
    
    last_line = 'For product information, visit www.mathworks.com.'
    handle = StringIO(mlint_out)
    for line in handle:
        if last_line in line:
            break
    return [line.strip() for line in handle if line.strip()]

def mlint_code(fpath):
    mlint_path = '/home/will/.matlab/R2013a/MLintGradingSettings.txt'
    mlint_cmd = "disp(checkcode('%(filename)s', '-config=%(gpath)s', '-notok', '-string')); quit;"
    test_mlint = mlint_cmd % {'filename':fpath, 'gpath':mlint_path }
    cmd = shlex.split(matlab_path + ' -nodesktop -nosplash -r "' + test_mlint + '"')
    out = check_output(cmd)
    return get_warnings(out)

In [4]:
def grade_homework(grade_tmp, fpath, new_fname, prefix = None, req_files = [], sanitize_func = None):
    fname = fpath.rsplit(os.sep, 1)[-1]
    tmpdir = tempfile.mkdtemp(prefix=prefix, dir = '/home/will/matlabtmp/')
    grade_tmp_name = grade_tmp.split(os.sep)[-1].split('.')[0]
    with open(os.path.join(tmpdir, grade_tmp_name+'.m'), 'w') as handle:
        with open(grade_tmp) as ihandle:
            tdict = {'filename':new_fname.split('.')[0]}
            handle.write(ihandle.read() % tdict)
    
    
    shutil.copyfile(fpath, os.path.join(tmpdir, new_fname))
    if sanitize_func is not None:
        sanitize_func(os.path.join(tmpdir, new_fname))
    for f in req_files:
        t_fname = f.split(os.sep)[-1]
        shutil.copyfile(f, os.path.join(tmpdir, t_fname))
        
    with tmp_changedir(tmpdir):
        mlint_lines = mlint_code(new_fname)
        cmd = matlab_path + ' -nodesktop -nosplash -r "%s; quit;"' % grade_tmp_name
        cmd_list = shlex.split(cmd)
        out = check_output(cmd_list)
    try:
        outres = float(re.findall('THIS IS THE GRADE!!!:([\-\.\d]*)', out)[0])
        wrong_lines = re.findall('THIS QUESTION WAS WRONG!: .*', out)
        if (outres == 0) and (len(wrong_lines) == 0):
            wrong_lines = ["DIDN'T RUN!!"]
        shutil.rmtree(tmpdir)
        return mlint_lines, wrong_lines, outres
    except:
        return mlint_lines, ["DIDN'T RUN!!"], None

In [5]:
def process_filenames(path):
    
    fname = path.rsplit(os.sep,1)[-1]
    parts = fname.split('_',4)
    bwid = parts[1]
    subname = parts[-1]
    date = parts[3].replace('_','-')
    
    return path, fname, date, bwid, subname

In [6]:
def get_fnames(base_dir):
    
    for root, dirs, files in os.walk(base_dir):
        for f in sorted(files):
            if f.endswith('.m'):
                yield os.path.join(root, f)

In [7]:
from functools import partial

def fix_micro_test_name(infile):
    with open(infile) as handle:
        tdata = handle.read()
    tdata = tdata.replace('microarray_test', 'MICROARRAY_TEST')
    with open(infile, 'w') as handle:
        handle.write(tdata)

dropbox_path = '/home/will/Dropbox/BMES375/Summer13/'
hw1_grade = partial(grade_homework, 
                    dropbox_path+'HW1/GradeHW1.m', 
                    req_files = [dropbox_path+'HW1/PAT_DATA.mat'])
hw2_grade = partial(grade_homework, 
                    dropbox_path+'HW2/GradeHW2.m', 
                    req_files = [dropbox_path+'HW2/CORRECT_DATA.mat',
                                 dropbox_path+'HW2/migraineSymptoms.tsv',
                                 dropbox_path+'HW2/migraineTreats.tsv',
                                 ])
micro_mid_grade = partial(grade_homework, 
                    dropbox_path+'MICRO_TEST/GradeMicroMid.m', 
                    req_files = [dropbox_path+'MICRO_TEST/MICRO_SOL.mat',
                                 ],
                    sanitize_func = fix_micro_test_name)
pred_mid_grade = partial(grade_homework, 
                    dropbox_path+'PRED_TEST/GradePredTest.m', 
                    req_files = [dropbox_path+'PRED_TEST/HW5_data.mat',
                                 dropbox_path+'PRED_TEST/COR_ANSWERS.mat',
                                 ],
                    sanitize_func = fix_micro_test_name)



grade_checks = [
                {
                 'name':'PredTest',
                 'grade_func':pred_mid_grade,
                 'grade_path':dropbox_path+'PRED_TEST/PRED_TEST_grades.csv',
                 'grade_files':partial(get_fnames, dropbox_path+'PRED_TEST/downloaded/'),
                 'out_path':dropbox_path+'PRED_TEST/PRED_TEST_graded/'
                 },
                #{
                # 'name':'MicroTest',
                # 'grade_func':micro_mid_grade,
                # 'grade_path':dropbox_path+'MICRO_TEST/MICRO_TEST_grades.csv',
                # 'grade_files':partial(get_fnames, dropbox_path+'MICRO_TEST/downloaded/'),
                # 'out_path':dropbox_path+'MICRO_TEST/MICRO_TEST_graded/'
                # },
                #{
                # 'name':'HW2',
                # 'grade_func':hw2_grade,
                # 'grade_path':dropbox_path+'HW2/HW2_grades.csv',
                # 'grade_files':partial(get_fnames, dropbox_path+'HW2/downloaded/'),
                # 'out_path':dropbox_path+'HW2/HW2_graded/'
                # },
                #{
                # 'name':'HW1',
                # 'grade_func':hw1_grade,
                # 'grade_path':dropbox_path+'HW1/HW1_grades.csv',
                # 'grade_files':partial(get_fnames, dropbox_path+'HW1/downloaded/'),
                # 'out_path':dropbox_path+'HW1/HW1_graded/'
                # },
                
                ]

In [8]:
def rename_file(path, subname, count):
    if count > 0:
        tname = subname.split('.')[0] + '_' + str(count) + '.m'
    else:
        tname = subname.split('.')[0] + '.m'
    
    return os.path.join(path, tname)

In [16]:
import csv
from itertools import islice

for row in grade_checks:
    grade_func = row['grade_func']
    with open(row['grade_path'], 'a') as handle:
        writer = csv.writer(handle)
        for f in row['grade_files']():
            f, fname, date, bwid, subname = process_filenames(f)
            mlint_lines, grade_lines, grade = grade_func(f, subname, prefix = bwid+'_')
            
            count = 0
            new_name = rename_file(row['out_path'], subname, count)
            while os.path.exists(new_name):
                count += 1
                new_name = rename_file(row['out_path'], subname, count)
            
            nf = new_name.split('/')[-1]
            print row['name'], bwid, nf, date, len(mlint_lines), grade
            print grade_lines
            tup = (bwid, date, nf, grade, len(mlint_lines), 
                             '; '.join(m.strip() for m in mlint_lines), 
                            '; '.join(m.strip() for m in grade_lines), 
                            )
            writer.writerow(tup)
            
            
            if (grade is not None) and (grade > 0):
                shutil.move(f, new_name)
            else:
                shutil.copy(f, new_name)


PredTest aah67 aah67_PredTest.m 2013-08-12-15-35-19 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest aah67 aah67_PredTest_1.m 2013-08-12-15-36-49 0 79.4758
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.5528', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest aah67 aah67_PredTest_2.m 2013-08-12-15-39-56 0 100.0
[]
PredTest aek52 aek52_PredTest.m 2013-08-12-16-04-34 0 100.0
[]
PredTest amb453 amb453_PredTest.m 2013-08-12-01-16-12 1 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest amb453 amb453_PredTest_1.m 2013-08-12-01-17-01 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest aos24 aos24_PredTest.m 2013-08-12-15-42-49 0 100.0
[]
PredTest as3262 as3262_PredTest.m 2013-08-12-02-35-19 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest av378 av378_PredTest.m 2013-08-12-16-35-02 0 77.8721
['THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.93474', 'THIS QUESTION WAS WRONG!: q9b']
PredTest av378 av378_PredTest_1.m 2013-08-12-17-45-55 0 100.0
[]
PredTest bhv23 bhv23_PredTest.m 2013-08-12-12-05-51 0 100.0
[]
PredTest bhv23 bhv23_PredTest_1.m 2013-08-12-12-51-13 0 100.0
[]
PredTest cio23 cio23_PredTest.m 2013-08-12-09-51-53 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest cjg63 cjg63_PredTest.m 2013-08-12-17-40-42 0 0.0
["DIDN'T RUN!!"]
PredTest clc328 clc328_PredTest.m 2013-08-11-22-37-12 0 100.0
[]
PredTest cmg76 cmg76_PredTest.m 2013-08-12-16-39-55 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest cwv23 cwv23_PredTest.m 2013-08-11-21-23-41 0 100.0
[]
PredTest dln32 dln32_PredTest.m 2013-08-12-14-39-05 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest dln32 dln32_PredTest_1.m 2013-08-12-16-44-45 0 100.0
[]
PredTest dmr99 dmr99_PredTest.m 2013-08-12-00-02-03 0 100.0
[]
PredTest dmr99 dmr99_PredTest_1.m 2013-08-12-12-00-57 0 100.0
[]
PredTest eab88 eab88_PredTest.m 2013-08-12-17-43-08 1 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest emg54 emg54_PredTest.m 2013-08-12-15-03-38 0 100.0
[]
PredTest fc326 fc326_PredTest.m 2013-08-12-08-22-55 6 78.1989
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 1.2759', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest fc326 fc326_PredTest_1.m 2013-08-12-14-40-57 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest fc326 fc326_PredTest_2.m 2013-08-12-14-45-16 1 79.6717
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest fc326 fc326_PredTest_3.m 2013-08-12-14-45-29 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest.m 2013-08-12-14-11-29 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_1.m 2013-08-12-14-17-52 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_2.m 2013-08-12-14-31-43 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_3.m 2013-08-12-14-34-12 0 67.2076
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.015459', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_4.m 2013-08-12-14-50-52 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_5.m 2013-08-12-16-29-23 0 83.0994
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.53694', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_6.m 2013-08-12-16-49-14 0 67.794
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_7.m 2013-08-12-16-49-48 0 67.794
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_8.m 2013-08-12-16-50-20 0 67.794
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_9.m 2013-08-12-16-50-48 0 67.794
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_10.m 2013-08-12-16-53-21 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_11.m 2013-08-12-17-09-49 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_12.m 2013-08-12-17-12-43 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_13.m 2013-08-12-17-13-35 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_14.m 2013-08-12-17-14-25 0 67.2076
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.015459', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_15.m 2013-08-12-17-14-54 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_16.m 2013-08-12-17-16-12 0 83.0994
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.53694', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_17.m 2013-08-12-17-17-10 0 67.794
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_18.m 2013-08-12-17-18-05 0 67.794
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_19.m 2013-08-12-17-18-41 0 67.794
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_20.m 2013-08-12-17-19-22 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_21.m 2013-08-12-17-19-47 0 67.794
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_22.m 2013-08-12-17-23-15 0 67.794
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_23.m 2013-08-12-17-32-04 0 0.0
["DIDN'T RUN!!"]
PredTest hk383 hk383_PredTest_24.m 2013-08-12-17-33-13 0 67.794
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest hk383 hk383_PredTest_25.m 2013-08-12-17-50-22 0 76.687
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 1.8025', 'THIS QUESTION WAS WRONG!: q9b']
PredTest isa26 isa26_PredTest.m 2013-08-12-14-29-23 0 100.0
[]
PredTest jc3235 jc3235_PredTest.m 2013-08-12-14-57-27 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest jd578 jd578_PredTest.m 2013-08-12-14-50-55 0 100.0
[]
PredTest jdm327 jdm327_PredTest.m 2013-08-12-17-28-00 0 77.8721
['THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.93474', 'THIS QUESTION WAS WRONG!: q9b']
PredTest jes423 jes423_PredTest.m 2013-08-12-13-19-43 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest jes423 jes423_PredTest_1.m 2013-08-12-16-33-52 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest jes423 jes423_PredTest_2.m 2013-08-12-17-16-40 0 100.0
[]
PredTest jes423 jes423_PredTest_3.m 2013-08-12-17-52-25 0 100.0
[]
PredTest jes423 jes423_PredTest_4.m 2013-08-12-17-54-19 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest jkc52 jkc52_HW5_predictor.m 2013-08-05-17-47-52 0 0.0
["DIDN'T RUN!!"]
PredTest jkc52 jkc52_HW5_script.m 2013-08-05-17-47-52 1 0.0
["DIDN'T RUN!!"]
PredTest jkc52 jkc52_PredTest.m 2013-08-12-17-26-20 1 0.0
["DIDN'T RUN!!"]
PredTest jkc52 jkc52_PredTest_1.m 2013-08-12-21-14-16 0 77.8721
['THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.93474', 'THIS QUESTION WAS WRONG!: q9b']
PredTest jlw334 jlw334_PredTest.m 2013-08-11-22-38-32 0 100.0
[]
PredTest jp862 jp862_PredTest.m 2013-08-12-17-24-53 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest jpc95 jpc95_PredTest.m 2013-08-12-16-57-36 0 100.0
[]
PredTest kmp94 kmp94_PredTest.m 2013-08-12-13-24-59 0 100.0
[]
PredTest lcd43 lcd43_PredTest_1.m 2013-08-12-16-21-21 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest lcd43 lcd43_PredTest_2.m 2013-08-12-16-22-49 0 100.0
[]
PredTest lmh85 lmh85_PredTest.m 2013-08-12-16-03-01 1 100.0
[]
PredTest maw356 maw356_PredTest.m 2013-08-12-13-07-27 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest mbh55 mbh55_PredTest.m 2013-08-12-16-16-42 5 0.0
["DIDN'T RUN!!"]
PredTest mk878 mk878_PredTest.m 2013-08-12-12-19-27 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest mk878 mk878_PredTest_1.m 2013-08-12-17-53-30 0 100.0
[]
PredTest mqp23 mqp23_PredTest.m 2013-08-12-16-14-41 1 100.0
[]
PredTest mqp23 mqp23_PredTest_1.m 2013-08-12-16-17-47 0 100.0
[]
PredTest mqp23 mqp23_PredTest_2.m 2013-08-12-16-19-09 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest ms3297 ms3297_PredTest.m 2013-08-12-17-52-52 0 100.0
[]
PredTest ms3329 ms3329_Pred_Test.m 2013-08-12-16-19-19 0 100.0
[]
PredTest msl73 MSL73_PredTest.m 2013-08-12-15-10-18 0 100.0
[]
PredTest mwc45 mwc45_PredTest.m 2013-08-12-10-25-37 0 79.2275
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.3044', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nal48 nal48_PredTest.m 2013-08-12-14-16-53 0 100.0
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load']
PredTest nal48 nal48_PredTest_1.m 2013-08-12-16-56-41 0 100.0
[]
PredTest nhm26 nhm26_PredTest.m 2013-08-12-15-57-03 0 0.0
["DIDN'T RUN!!"]
PredTest nhm26 nhm26_PredTest_1.m 2013-08-12-15-59-04 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nmm67 nmm67_PredTest.m 2013-08-12-16-58-40 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nra27 nra27_PredTest.m 2013-08-12-17-23-08 0 100.0
[]
PredTest nsa37 nsa37_PredTest.m 2013-08-12-14-05-28 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_1.m 2013-08-12-14-07-28 0 67.2076
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.015459', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_2.m 2013-08-12-14-09-18 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_3.m 2013-08-12-14-13-07 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_4.m 2013-08-12-14-23-27 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_5.m 2013-08-12-14-46-55 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_6.m 2013-08-12-14-50-19 0 75.4863
['THIS QUESTION WAS WRONG!: Used illegal function !!!: load', 'THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_7.m 2013-08-12-17-17-03 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_8.m 2013-08-12-17-18-41 0 67.2076
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.015459', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_9.m 2013-08-12-17-21-08 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_10.m 2013-08-12-17-22-19 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_11.m 2013-08-12-17-22-53 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_12.m 2013-08-12-17-23-35 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_13.m 2013-08-12-17-24-12 0 75.4863
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.60186', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_14.m 2013-08-12-17-50-32 0 76.687
['THIS QUESTION WAS WRONG!: q5b Partial Credit: 5.6394', 'THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 1.8025', 'THIS QUESTION WAS WRONG!: q9b']
PredTest nsa37 nsa37_PredTest_15.m 2013-08-12-17-58-25 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest rbp39 rbp39_PredTest.m 2013-08-12-15-06-41 1 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest rmn29 rmn29_PredTest.m 2013-08-12-16-59-29 0 100.0
[]
PredTest rs623 rs623_PredTest.m 2013-08-12-15-05-59 0 100.0
[]
PredTest rw383 rw383_PredTest.m 2013-08-12-18-01-16 0 77.8721
['THIS QUESTION WAS WRONG!: q7 Partial Credit: 0.014316', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 0.93474', 'THIS QUESTION WAS WRONG!: q9b']
PredTest rw383 rw383_PredTest_1.m 2013-08-12-19-55-54 0 98.1408
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 5.8331']
PredTest shc34 shc34_PredTest.m 2013-08-12-16-50-55 0 100.0
[]
PredTest shc34 shc34_PredTest_1.m 2013-08-12-17-05-12 0 79.4758
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.5528', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest sjr64 sjr64_PredTest.m 2013-08-12-14-56-21 0 100.0
[]
PredTest slg73 slg73_PredTest.m 2013-08-12-01-59-09 0 100.0
[]
PredTest ssj36 ssj36_PredTest.m 2013-08-12-15-20-29 0 0.0
["DIDN'T RUN!!"]
PredTest ssj36 ssj36_PredTest_1.m 2013-08-12-15-51-16 0 0.0
["DIDN'T RUN!!"]
PredTest ssj36 ssj36_PredTest_2.m 2013-08-12-16-07-25 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest ssj36 ssj36_PredTest_3.m 2013-08-12-16-07-57 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest vmt27 vmt27_PredTest.m 2013-08-12-17-07-10 0 78.1917
['THIS QUESTION WAS WRONG!: q7', 'THIS QUESTION WAS WRONG!: q8 Partial Credit: 1.2687', 'THIS QUESTION WAS WRONG!: q9b']
PredTest vmt27 vmt27_PredTest_1.m 2013-08-12-17-12-51 0 100.0
[]
PredTest vmt27 vmt27_PredTest_2.m 2013-08-12-17-16-23 0 79.4758
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.5528', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest vmt27 vmt27_PredTest_3.m 2013-08-12-17-18-01 0 100.0
[]
PredTest vmt27 vmt27_PredTest_4.m 2013-08-12-17-21-02 0 79.4758
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.5528', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest vmt27 vmt27_PredTest_5.m 2013-08-12-17-22-32 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest vmt27 vmt27_PredTest_6.m 2013-08-12-17-25-59 0 100.0
[]
PredTest vvm25 vvm25_PredTest.m 2013-08-12-15-49-03 0 79.4758
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.5528', 'THIS QUESTION WAS WRONG!: q9a', 'THIS QUESTION WAS WRONG!: q9b']
PredTest vvm25 vvm25_PredTest_1.m 2013-08-12-15-57-29 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']
PredTest vvm25 vvm25_PredTest_2.m 2013-08-12-16-00-18 0 100.0
[]
PredTest zma24 zma24_PredTest.m 2013-08-12-08-49-38 2 None
["DIDN'T RUN!!"]
PredTest zma24 zma24_PredTest_1.m 2013-08-12-17-27-58 0 87.364
['THIS QUESTION WAS WRONG!: q8 Partial Credit: 2.7486', 'THIS QUESTION WAS WRONG!: q9b']

In [8]:
.