コード例 #1
0
def sdt_ms(gtab, data, affine, mask, ratio, sphere, min_angle=25.0, relative_peak_th=0.1):

    gd1, gd2, gd3 = prepare_data_for_multi_shell(gtab, data, mask)

    coeffs = []
    invBs = []
    for gd in [gd1, gd2, gd3]:
        response, ratio = estimate_response(gd[0], gd[1],
                                            affine, mask, fa_thr=0.7)
        model = ConstrainedSDTModel(gd[0], ratio, sh_order=8)
        peaks = pfm(model, gd[1], mask, sphere, False, min_angle, relative_peak_th)
        coeffs.append(peaks.shm_coeff)
        invBs.append(peaks.invB)
        #print(peaks.invB)

    coeffs3 = np.array(coeffs)
    best_coeffs = max_abs(coeffs3)

    odf = np.dot(best_coeffs, peaks.invB)
    new_peaks = PeaksAndMetrics()
    new_peaks.peak_dirs = dirs_from_odf(odf, sphere, min_separation_angle = min_angle, relative_peak_threshold = relative_peak_th)
    new_peaks.invB = peaks.invB
    new_peaks.shm_coeff = best_coeffs

    return new_peaks
コード例 #2
0
def csd_ms(gtab, data, affine, mask, response, sphere):

    gd1, gd2, gd3 = prepare_data_for_multi_shell(gtab, data, mask)

    coeffs = []
    invBs = []
    for gd in [gd1, gd2, gd3]:
        response, ratio = estimate_response(gd[0], gd[1],
                                            affine, mask, fa_thr=0.7)
        model = ConstrainedSphericalDeconvModel(gd[0], response, sh_order=8)
        peaks = pfm(model, gd[1], mask, sphere)
        coeffs.append(peaks.shm_coeff)
        invBs.append(peaks.invB)
        #print(peaks.invB)

    coeffs3 = np.array(coeffs)
    best_coeffs = max_abs(coeffs3)

    odf = np.dot(best_coeffs, peaks.invB)
    new_peaks = PeaksAndMetrics()
    new_peaks.peak_dirs = dirs_from_odf(odf, sphere)
    new_peaks.invB = peaks.invB
    new_peaks.shm_coeff = best_coeffs

    return new_peaks