import numpy as np

from symop.modes.envelopes import GaussianEnvelope
from symop.modes.transfer import RectBandpass
from symop.modes.transfer.apply import apply_transfer
import symop.viz as viz

env = GaussianEnvelope(
    omega0=10.0,
    sigma=1.0,
    tau=0.0,
    phi0=0.0,
)

filt = RectBandpass(
    w0=10.0,
    width=1.0,
)

out, eta = apply_transfer(filt, env)

print(type(out).__name__)
print(f"eta = {eta:.6f}")

t = np.linspace(-10.0, 10.0, 2000)
w = np.linspace(8.0, 12.0, 2000)

viz.plot(
    out,
    t=t,
    w=w,
    title=f"Numerically filtered envelope, eta={eta:.6f}",
    freq_relative=True,
    show=False,
)