Skip to content

Scaden

ScadenModule

Bases: Module

ScadenModule is a simple implementation of the Scaden model from the original implementation. paper: https://www.nature.com/articles/s41467-022-34550-9

This module is a combination of three ScadenBaseModule with different parameters.

Attributes:

Name Type Description
model_256 ScadenBaseModule

ScadenBaseModule with 256 hidden units.

model_512 ScadenBaseModule

ScadenBaseModule with 512 hidden units.

model_1024 ScadenBaseModule

ScadenBaseModule with 1024 hidden

Methods:

Name Description
forward

Forward pass of the model.

Source code in src/pydeconv/model/nn/scaden.py
@requires_torch
class ScadenModule(nn.Module):
    """ScadenModule is a simple implementation of the Scaden model from the original implementation.
    paper: https://www.nature.com/articles/s41467-022-34550-9

    This module is a combination of three ScadenBaseModule with different parameters.

    Attributes
    ----------
    model_256 : ScadenBaseModule
        ScadenBaseModule with 256 hidden units.
    model_512 : ScadenBaseModule
        ScadenBaseModule with 512 hidden units.
    model_1024 : ScadenBaseModule
        ScadenBaseModule with 1024 hidden

    Methods
    -------
    forward(x)
        Forward pass of the model.
    """

    def __init__(self, input_dim: int, output_dim: int, model_params_dict: dict):
        """ScadenModule is a simple implementation of the Scaden model from the original implementation.

        Parameters
        ----------
        input_dim : int
            Input dimension.
        output_dim : int
            Output dimension.
        model_params_dict : dict
            model parameters.
        """
        super().__init__()

        # Initialize the models with different parameters
        self.model_256 = _ScadenBaseModule(input_dim=input_dim, output_dim=output_dim, **model_params_dict["model_256"])
        self.model_512 = _ScadenBaseModule(input_dim=input_dim, output_dim=output_dim, **model_params_dict["model_512"])
        self.model_1024 = _ScadenBaseModule(
            input_dim=input_dim, output_dim=output_dim, **model_params_dict["model_1024"]
        )

    def forward(self, x):
        """Forward pass of the model.

        Parameters
        ----------
        x : torch.Tensor
            Input tensor.

        Returns
        -------
        torch.Tensor
            Output
        """
        # Get predictions from each model
        output_1 = self.model_256(x)
        output_2 = self.model_512(x)
        output_3 = self.model_1024(x)

        # Combine the outputs (e.g., averaging)
        output = (output_1 + output_2 + output_3) / 3
        return output

__init__(input_dim, output_dim, model_params_dict)

ScadenModule is a simple implementation of the Scaden model from the original implementation.

Parameters:

Name Type Description Default
input_dim int

Input dimension.

required
output_dim int

Output dimension.

required
model_params_dict dict

model parameters.

required
Source code in src/pydeconv/model/nn/scaden.py
def __init__(self, input_dim: int, output_dim: int, model_params_dict: dict):
    """ScadenModule is a simple implementation of the Scaden model from the original implementation.

    Parameters
    ----------
    input_dim : int
        Input dimension.
    output_dim : int
        Output dimension.
    model_params_dict : dict
        model parameters.
    """
    super().__init__()

    # Initialize the models with different parameters
    self.model_256 = _ScadenBaseModule(input_dim=input_dim, output_dim=output_dim, **model_params_dict["model_256"])
    self.model_512 = _ScadenBaseModule(input_dim=input_dim, output_dim=output_dim, **model_params_dict["model_512"])
    self.model_1024 = _ScadenBaseModule(
        input_dim=input_dim, output_dim=output_dim, **model_params_dict["model_1024"]
    )

forward(x)

Forward pass of the model.

Parameters:

Name Type Description Default
x Tensor

Input tensor.

required

Returns:

Type Description
Tensor

Output

Source code in src/pydeconv/model/nn/scaden.py
def forward(self, x):
    """Forward pass of the model.

    Parameters
    ----------
    x : torch.Tensor
        Input tensor.

    Returns
    -------
    torch.Tensor
        Output
    """
    # Get predictions from each model
    output_1 = self.model_256(x)
    output_2 = self.model_512(x)
    output_3 = self.model_1024(x)

    # Combine the outputs (e.g., averaging)
    output = (output_1 + output_2 + output_3) / 3
    return output