예제 #1
0
def test_kfold_xval_MD_mod():
    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv,
                                                bvals_pv,
                                                bvecs_pv,
                                                mask_pv,
                                                "decaying_exp",
                                                10,
                                                initial=-0.5,
                                                bounds=[(None, None)],
                                                signal="log")
    # Check to see if the sum of the squared errors is around the values
    # that we want.
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv,
                                                bvals_pv,
                                                bvecs_pv,
                                                mask_pv,
                                                "decaying_exp_plus_const",
                                                10,
                                                initial=(-0.5, -0.5),
                                                bounds=[(None, None),
                                                        (None, None)],
                                                signal="log")
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv,
                                                bvals_pv,
                                                bvecs_pv,
                                                mask_pv,
                                                "two_decaying_exp",
                                                10,
                                                initial=(-0.5, -0.5, -0.5),
                                                bounds=[(None, None),
                                                        (None, None),
                                                        (None, None)],
                                                signal="log")
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "single_exp_rs", 10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "single_exp_nf_rs",
                                                10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "bi_exp_rs", 10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "bi_exp_nf_rs", 10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)
예제 #2
0
def test_kfold_xval_MD_mod():
    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "decaying_exp",
                                                10, initial = -0.5,
                                                bounds=[(None, None)],
                                                signal="log")
    # Check to see if the sum of the squared errors is around the values
    # that we want.
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "decaying_exp_plus_const",
                                                10, initial = (-0.5, -0.5),
                                                bounds=[(None, None), (None, None)],
                                                signal="log")
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "two_decaying_exp",
                                                10, initial=(-0.5, -0.5, -0.5),
                                                bounds=[(None, None), (None, None),
                                                (None, None)],
                                                signal="log")
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "single_exp_rs", 10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "single_exp_nf_rs", 10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "bi_exp_rs", 10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)

    ss_err, predict_out = mdm.kfold_xval_MD_mod(data_pv, bvals_pv, bvecs_pv,
                                                mask_pv, "bi_exp_nf_rs", 10)
    npt.assert_equal(np.mean(ss_err) < 200, 1)
    
    bvals = np.loadtxt(os.path.join(data_path, "bvals"))
    bvecs = np.loadtxt(os.path.join(data_path, "bvecs"))
    
    low = i*2000
    # Make sure not to go over the edge of the mask:
    high = np.min([(i+1) * 2000, int(np.sum(mask_data))])

    # Now set the mask:
    mask = np.zeros(wm_data_file.shape)
    mask[mask_idx[0][low:high], mask_idx[1][low:high], mask_idx[2][low:high]] = 1
    
    if im == "bi_exp_rs":
        shorthand_im = "be"
    elif im == "single_exp_rs":
        shorthand_im = "se"
        
    param_out, fit_out, _ = mdm.optimize_MD_params(data, bvals, bvecs, mask,
                                                   im, signal = "relative_signal")
    
    cod, predict_out = mdm.kfold_xval_MD_mod(data, bvals, bvecs, mask,
                                            im, 10, signal="relative_signal")
    
    
    np.save(os.path.join(data_path, "im_cod_%s%s.npy"%(shorthand_im, i)), cod)
    np.save(os.path.join(data_path, "im_predict_out_%s%s.npy"%(shorthand_im, i)), predict_out)
    np.save(os.path.join(data_path, "im_param_out_%s%s.npy"%(shorthand_im, i)), param_out)
    
    t2 = time.time()
    print "This program took %4.2f minutes to run."%((t2 - t1)/60.)