smftools.analysis.compute.ml_cnn#

Matrix-level helpers for 1D CNN binary classifiers.

Inputs are plain numpy arrays and labels. No AnnData or file I/O occurs here.

Functions

build_cnn_baseline(X[, include_positional, ...])

build_cnn_input(X[, feature_labels, ...])

Convert a read x feature matrix into a CNN input tensor.

build_cnn_model(config)

cnn_config_from_dict(payload)

cnn_config_to_dict(config)

default_cnn_config(in_channels)

detect_torch_device()

fit_simple_cnn(X_train, y_train, X_val, y_val)

Train a residual dilated 1D CNN with early stopping on validation AUC.

predict_cnn_scores(trained_model, X[, ...])

Return positive-class probabilities for a trained CNN model.

split_train_validation(X, y[, ...])

Stratified train/validation split for CNN training.

Classes

AttentionPooling1d(channels)

CNNConfig(in_channels[, stem_channels, ...])

ResidualDilatedBlock1d(in_channels, ...)

ResidualDilatedCNN1d(config)

SqueezeExcite1d(channels[, reduction])

TrainedCNNModel(model, device, config[, ...])

smftools.analysis.compute.ml_cnn.detect_torch_device()#
Return type:

device

class smftools.analysis.compute.ml_cnn.CNNConfig(in_channels, stem_channels=32, block_channels=(64, 64, 96, 96, 128, 128), dilations=(1, 2, 4, 8, 16, 32), stem_kernel_size=9, kernel_size=5, dropout=0.15, hidden_dim=128, use_se=True, use_attention_pool=True)#

Bases: object

in_channels: int#
stem_channels: int = 32#
block_channels: tuple[int, ...] = (64, 64, 96, 96, 128, 128)#
dilations: tuple[int, ...] = (1, 2, 4, 8, 16, 32)#
stem_kernel_size: int = 9#
kernel_size: int = 5#
dropout: float = 0.15#
hidden_dim: int = 128#
use_se: bool = True#
use_attention_pool: bool = True#
smftools.analysis.compute.ml_cnn.cnn_config_to_dict(config)#
Return type:

dict

smftools.analysis.compute.ml_cnn.cnn_config_from_dict(payload)#
Return type:

CNNConfig

smftools.analysis.compute.ml_cnn.default_cnn_config(in_channels)#
Return type:

CNNConfig

class smftools.analysis.compute.ml_cnn.SqueezeExcite1d(channels, reduction=8)#

Bases: Module

forward(x)#
Return type:

Tensor

class smftools.analysis.compute.ml_cnn.ResidualDilatedBlock1d(in_channels, out_channels, kernel_size, dilation, dropout, use_se)#

Bases: Module

forward(x)#
Return type:

Tensor

class smftools.analysis.compute.ml_cnn.AttentionPooling1d(channels)#

Bases: Module

forward(x)#
Return type:

Tensor

class smftools.analysis.compute.ml_cnn.ResidualDilatedCNN1d(config)#

Bases: Module

forward_features(x)#
Return type:

Tensor

forward(x)#
Return type:

Tensor

smftools.analysis.compute.ml_cnn.build_cnn_model(config)#
Return type:

Module

class smftools.analysis.compute.ml_cnn.TrainedCNNModel(model, device, config, include_positional=False, include_spacing=False, include_design_mask=False, baseline_mode='zero')#

Bases: object

model: Module#
device: device#
config: CNNConfig#
include_positional: bool = False#
include_spacing: bool = False#
include_design_mask: bool = False#
baseline_mode: str = 'zero'#
smftools.analysis.compute.ml_cnn.build_cnn_input(X, feature_labels=None, include_positional=False, include_spacing=False, learnable_mask=None, include_design_mask=False)#

Convert a read x feature matrix into a CNN input tensor.

Return type:

ndarray

Channels#

Always included:

  • signal: methylation values with NaNs filled to 0

  • observed-mask: 1 where the original matrix was observed, 0 where missing

Optional:

  • design-mask: 1 where the position was intentionally masked from learning

  • positional: normalized coordinate channel in [-1, 1]

  • spacing-prev / spacing-next: normalized distances to previous/next learnable site

smftools.analysis.compute.ml_cnn.build_cnn_baseline(X, include_positional=False, include_spacing=False, include_design_mask=False, baseline_mode='zero')#
Return type:

ndarray

smftools.analysis.compute.ml_cnn.split_train_validation(X, y, validation_fraction=0.15, random_state=42)#

Stratified train/validation split for CNN training.

Return type:

tuple[ndarray, ndarray, ndarray, ndarray]

smftools.analysis.compute.ml_cnn.fit_simple_cnn(X_train, y_train, X_val, y_val, random_state=42, epochs=40, batch_size=128, learning_rate=0.001, patience=8, weight_decay=0.0001, config=None, include_positional=False, include_spacing=False, include_design_mask=False, baseline_mode='zero', device=None)#

Train a residual dilated 1D CNN with early stopping on validation AUC.

Return type:

TrainedCNNModel

smftools.analysis.compute.ml_cnn.predict_cnn_scores(trained_model, X, batch_size=512)#

Return positive-class probabilities for a trained CNN model.

Return type:

ndarray