Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BaselineProcessor revision to include in PR #641 #686

Open
atravert opened this issue Jun 12, 2023 · 0 comments
Open

BaselineProcessor revision to include in PR #641 #686

atravert opened this issue Jun 12, 2023 · 0 comments
Assignees
Labels
deprecated code enhancement New feature or request

Comments

@atravert
Copy link
Collaborator

Pour info si ca peut t'aider j'avais commence à écrire ça. Je l'utiliserai pour le nouveau GUI aussi.

class BaselineView:
    """View for Baseline"""

    def _baseline_view(self):
        self._multivariate_dropdown = widgets.Dropdown(
            options=[False, "SVD", "NMF"],
            value=self.multivariate,
            description="Multivariate",
        )

        self._n_components_slider = widgets.IntSlider(
            value=3,
            min=1,
            max=8,
            description="Components",
        )

        self._model_dropdown = widgets.Dropdown(
            options=["Detrend", "Polynomial", "AsLS", "SNIP"],
            value="Polynomial",
            description="Model",
        )

        self._order_dropdown = widgets.Dropdown(
            options=[
                "Constant",
                "Linear",
                "Quadratic",
                "Cubic",
                4,
                5,
                6,
                7,
                8,
                "PCHIP",
            ],
            value="Linear",
            description="Order",
        )

        self._mu_slider = widgets.FloatLogSlider(
            value=1e5,
            base=10,
            min=1,  # max exponent of base
            max=9,  # min exponent of base
            step=0.5,  # exponent step
            description="Smoothing ($\mu$)",
        )

        self._asymmetry_slider = widgets.FloatLogSlider(
            value=0.01,
            base=10,
            min=-3,  # max exponent of base
            max=-1,  # min exponent of base
            step=0.1,  # exponent step
            description="Asymmetry",
        )

        self._tol_slider = widgets.FloatLogSlider(
            value=0.001,
            base=10,
            min=-5,  # max exponent of base
            max=-1,  # min exponent of base
            step=0.1,  # exponent step
            description="Tolerance",
        )

        self._max_iter_slider = widgets.IntSlider(
            value=50, min=1, max=1000, step=1, description="Iterations max"
        )

        self._snip_width_slider = widgets.IntSlider(
            value=50, min=1, max=1000, step=1, description="Snip width"
        )

        self._ranges_control = widgets.Textarea(
            value="",
            placeholder="Type ranges here (e.g. 1000.0:2000.0, 3000.0:4000.0)",
            description="Ranges",
        )

        multivariate = widgets.VBox(
            children=[
                self._n_components_slider,
                self._model_dropdown,
            ]
        )

        sequential = widgets.VBox(
            children=[
                self._model_dropdown,
            ]
        )

        approach = widgets.Stack(
            children=[sequential, multivariate, multivariate], selected_index=0
        )

        detrend = widgets.VBox(
            children=[
                self._order_dropdown,
            ],
        )

        polynomial = widgets.VBox(
            children=[self._order_dropdown, self._ranges_control],
        )

        asls = widgets.VBox(
            children=[
                self._mu_slider,
                self._asymmetry_slider,
                self._tol_slider,
                self._max_iter_slider,
            ],
        )

        snip = widgets.VBox(children=[self._snip_width_slider])

        model = widgets.Stack(
            children=[detrend, polynomial, asls, snip], selected_index=1
        )

        # client side links
        widgets.jslink((self._model_dropdown, "index"), (model, "selected_index"))
        widgets.jslink(
            (self._multivariate_dropdown, "index"), (approach, "selected_index")
        )

        inputs = widgets.VBox(children=[self._multivariate_dropdown, approach, model])

        # Baseline view
        # -------------
        baseline_view = widgets.VBox(
            children=[
                widgets.HTML("<H3><center>Baseline correction</center></H3>"),
                widgets.HBox(
                    children=[
                        inputs,
                    ]
                ),
            ]
        )

        return baseline_view
@atravert atravert self-assigned this Jun 12, 2023
@atravert atravert transferred this issue from spectrochempy/spectrochempy_gui Jun 12, 2023
@atravert atravert added enhancement New feature or request deprecated code labels Jun 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
deprecated code enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant