Beispiel #1
0
def convtest(test_signal, delta, func):
    domain = test_signal.domain

    # Create Convolution Operator
    conv_op = ift.FuncConvolutionOperator(domain, func)

    # Convolve, Adjoint-Convolve
    conv_signal = conv_op(test_signal)
    cac_signal = conv_op.adjoint_times(conv_signal)

    print(test_signal.integrate(), conv_signal.integrate(),
          cac_signal.integrate())

    # generate kernel image
    conv_delta = conv_op(delta)

    # Plot results
    plot = ift.Plot()
    plot.add(signal, title='Signal')
    plot.add(conv_signal, title='Signal Convolved')
    plot.add(cac_signal, title='Signal, Conv, Adj-Conv')
    plot.add(conv_delta, title='Kernel')
    plot.output()
    MOCK_NOISE = N.draw_sample()
    data = R(MOCK_SIGNAL) + MOCK_NOISE

    # Build inverse propagator D and information source j
    D_inv = R.adjoint @ N.inverse @ R + S.inverse
    j = R.adjoint_times(N.inverse_times(data))
    # Make D_inv invertible (via Conjugate Gradient)
    IC = ift.GradientNormController(iteration_limit=500, tol_abs_gradnorm=1e-3)
    D = ift.InversionEnabler(D_inv, IC, approximation=S.inverse).inverse

    # Calculate WIENER FILTER solution
    m = D(j)

    # Plotting
    rg = isinstance(position_space, ift.RGSpace)
    plot = ift.Plot()
    filename = "getting_started_1_mode_{}.png".format(mode)
    if rg and len(position_space.shape) == 1:
        plot.add([HT(MOCK_SIGNAL), GR.adjoint(data),
                  HT(m)],
                 label=['Mock signal', 'Data', 'Reconstruction'],
                 alpha=[1, .3, 1])
        plot.add(mask_to_nan(mask, HT(m - MOCK_SIGNAL)), title='Residuals')
        plot.output(nx=2, ny=1, xsize=10, ysize=4, name=filename)
    else:
        plot.add(HT(MOCK_SIGNAL), title='Mock Signal')
        plot.add(mask_to_nan(mask, (GR(Mask)).adjoint(data)), title='Data')
        plot.add(HT(m), title='Reconstruction')
        plot.add(mask_to_nan(mask, HT(m - MOCK_SIGNAL)), title='Residuals')
        plot.output(nx=2, ny=2, xsize=10, ysize=10, name=filename)
    print("Saved results as '{}'.".format(filename))