class SigpyPulseOpts:
    def __init__(
        self,
        pulse_type: str = "slr",
        ptype: str = "st",
        ftype: str = "ls",
        d1: float = 0.01,
        d2: float = 0.01,
        cancel_alpha_phs: bool = False,
        n_bands: int = 3,
        band_sep: int = 20,
        phs_0_pt: str = "None",
    ):
        self.pulse_type = pulse_type

        if pulse_type == "slr":
            self.ptype = ptype
            self.ftype = ftype
            self.d1 = d1
            self.d2 = d2
            self.cancel_alpha_phs = cancel_alpha_phs

        if pulse_type == "sms":
            self.ptype = ptype
            self.ftype = ftype
            self.d1 = d1
            self.d2 = d2
            self.cancel_alpha_phs = cancel_alpha_phs
            self.n_bands = n_bands
            self.band_sep = band_sep
            self.phs_0_pt = phs_0_pt

    def __str__(self) -> str:
        s = "Pulse options:"
        s += "\nptype: " + str(self.ptype)
        s += "\nftype: " + str(self.ftype)
        s += "\nd1: " + str(self.d1)
        s += "\nd2: " + str(self.d2)
        s += "\ncancel_alpha_phs: " + str(self.cancel_alpha_phs)

        return s
