Exemple #1
0
                    X[i,
                      j * m2 + k] = legendre.legval2d(f_lines_1_rf[i, 0],
                                                      f_lines_1_rf[i, 1], c)

        wav_sol_1 = np.linalg.lstsq(X,
                                    f_lines_1_rf[:, 0] * f_lines_1_rf[:, 3],
                                    rcond=-1)
        wav_sol2d_1 = wav_sol_1[0].reshape(m1, m2)

        fitwv1 = np.array([
            legendre.legval2d(f_lines_1_rf[i, 0], f_lines_1_rf[i, 1],
                              wav_sol2d_1) / f_lines_1_rf[i, 0]
            for i in range(len(f_lines_1_rf))
        ])
        res1 = fitwv1 - f_lines_1_rf[:, 3]
        rms1 = rmsd(fitwv1, f_lines_1_rf[:, 3])
        if rms1 < 3.0e-3:
            print(rms1, len(f_lines_1_rf))
            break
        else:
            mask1 = abs(res1) > 3.0 * rms1
            f_lines_1_rf = f_lines_1_rf[~mask1]

    f_lines_1_mask = np.array(
        [i in f_lines_1_rf[:, 3] for i in f_lines_1[:, 3]])
    f_lines_2 = deepcopy(f_lines_1)
    f_lines_2_mask = deepcopy(f_lines_1_mask)
    f_lines_3 = deepcopy(f_lines_1)
    f_lines_3_mask = deepcopy(f_lines_1_mask)

    # obtain the parameters of the selected lines by super-Gaussian fit
Exemple #2
0
                ]],
                               axis=0)
                # 0order, 1n, 2wav, 3flag, 4-8popt
            except:
                z1 = np.append(z1, [[
                    order + order_init, line_order[i, 0], line_order[i, 1],
                    0.0, *np.zeros(shape=(5), dtype=float)
                ]],
                               axis=0)

        mask1 = (z1[:, 3] == 1)
        x1 = z1[mask1, 1]
        y1 = z1[mask1, 5]
        popt1 = np.polyfit(x1, y1, 10)
        res1 = y1 - np.poly1d(popt1)(x1)
        rms1 = rmsd(y1, np.poly1d(popt1)(x1))
        mask2 = abs(res1) > 3.0 * rms1
        x2 = x1[~mask2]
        y2 = y1[~mask2]
        popt_nx = np.polyfit(x2, y2, 10)
        line_order = np.vstack(
            (line_order.T, np.poly1d(popt_nx)(line_order[:, 0]))).T
        # 0n, 1wav, 2line_center_(ThAr_solution), 3line_center_(Gaussian_solution)

        # plt.figure()
        # plt.plot(x1, y1 - np.poly1d(popt_nx)(x1), 'rs')
        # plt.plot(x2, y2 - np.poly1d(popt_nx)(x2), 'ks')
        # plt.show()

        for i in range(len(chunk) - 1):
                    X[i,
                      j * m2 + k] = legendre.legval2d(f_lines_1_rf[i, 0],
                                                      f_lines_1_rf[i, 1], c)

        wav_sol_1 = np.linalg.lstsq(X,
                                    f_lines_1_rf[:, 0] * f_lines_1_rf[:, 3],
                                    rcond=-1)
        wav_sol2d_1 = wav_sol_1[0].reshape(m1, m2)

        fitwv1 = np.array([
            legendre.legval2d(f_lines_1_rf[i, 0], f_lines_1_rf[i, 1],
                              wav_sol2d_1) / f_lines_1_rf[i, 0]
            for i in range(len(f_lines_1_rf))
        ])
        res1 = fitwv1 - f_lines_1_rf[:, 3]
        rms1 = rmsd(fitwv1, f_lines_1_rf[:, 3])
        if rms1 < 3.0e-3:
            print(rms1, len(f_lines_1_rf))
            break
        else:
            mask1 = abs(res1) > 3.0 * rms1
            f_lines_1_rf = f_lines_1_rf[~mask1]

    f_lines_1_mask = np.array(
        [i in f_lines_1_rf[:, 3] for i in f_lines_1[:, 3]])
    f_lines_2 = deepcopy(f_lines_1)
    f_lines_2_mask = deepcopy(f_lines_1_mask)
    f_lines_3 = deepcopy(f_lines_1)
    f_lines_3_mask = deepcopy(f_lines_1_mask)

    # obtain the parameters of the selected lines by super-Gaussian fit