Exemple #1
0
def grid_unidec(mzgrid, igrid, numit=1000, fwhm=5, mode=0, msig=0, zsig=1):
    pmat = make_pmat(mzgrid, fwhm)
    b = deepcopy(igrid)
    b2 = b
    diff = 1
    i = 0
    while diff > 1e-9 and i < numit:
        # Blur
        b = blur(b, msig, zsig)
        # Deconvolve
        if mode == 0:
            b = ud.safedivide(b * igrid, conv(b, pmat))
        elif mode == 1:
            b = ud.safedivide(b * igrid * igrid, conv(b * igrid, pmat))
        elif mode == 2:
            b *= conv(ud.safedivide(igrid, conv(b, pmat)), pmat)
        else:
            print("Mode is invalid:", mode)
            exit()
        # Convergence Test
        b /= np.amax(b)
        diff = np.sum((b2 - b)**2.)
        i += 1
        b2 = b
    print("Interations:", i)
    return b
    pass
Exemple #2
0
 def dd_core(self, data, kernel):
     ckernel = kernel[::-1]
     I = deepcopy(data)
     i = 0
     diff = 1
     while i < 50 and diff > 0.0001:
         newI = I * cconv2(ud.safedivide(data, cconv2(kernel, I)), ckernel)
         diff = np.sum((I - newI) ** 2) / np.sum(I)
         I = newI
         i += 1
     I /= np.amax(I)
     return I
Exemple #3
0
def get_resolution(testdata):
    """
    Get the median resolution of 1D MS data.
    :param testdata: N x 2 data (mz, intensity)
    :return: Median resolution (float)
    """
    diffs = np.transpose([testdata[1:, 0], np.diff(testdata[:, 0])])
    resolutions = ud.safedivide(diffs[:, 0], diffs[:, 1])
    # popt, pcov = scipy.optimize.curve_fit(fit_line, diffs[:, 0], resolutions, maxfev=1000000)
    # fitLine = fit_line(diffs[:, 0], *popt)
    # fitMax = np.max(fitLine)
    # fitMin = np.min(fitLine)
    # diffs_new = diffs[(1.2 * fitMin < resolutions) & (resolutions < 1.2 * fitMax)]
    # resolutions_new = resolutions[(1.2 * fitMin < resolutions) & (resolutions < 1.2 * fitMax)]
    # popt2, pcov2 = scipy.optimize.curve_fit(fit_line, diffs_new[:, 0], resolutions_new, maxfev=1000000)
    # plt.figure()
    # plt.plot(diffs[:,0], resolutions)
    # plt.plot(diffs[:, 0], fit_line(diffs[:, 0], *popt2), 'r-')
    # plt.show()
    # Currently use A * m ^1.5 (0.5?)
    # Maybe use a*M^b
    # return popt2
    return np.median(resolutions)