OCDocker.OCScore.Optimization.StagedOptuna module¶
Current staged Optuna protocol for OCScore PDBbind/DUDEz modeling.
It is imported as:
from OCDocker.OCScore.Optimization.StagedOptuna import StagedProtocol
- class OCDocker.OCScore.Optimization.StagedOptuna.DUDEzOptunaConfig(kind_column='kind', target_group_column='receptor', primary_metric='BEDROC', bedroc_alpha=20.0, n_trials=10, epochs=100, storage='auto', study_name='DUDEz_Screening_Optimization', load_if_exists=False, validation_size=0.2, test_size=0.2, direction='maximize', sampler_seed=None, random_seed=None, use_gpu=True, verbose=False, n_jobs=1, allow_scratch=True, use_class_weighting=True, search_space=None, split_config=None, dudez_scaling_config=None, calibration_report_mode='ranking_only')[source]¶
Bases:
objectConfiguration for the DUDEz screening Optuna stage.
- Parameters:
kind_column (str, optional) – Column used to derive active/decoy labels, by default “kind”.
target_group_column (str, optional) – Column used for target-grouped splits, by default “receptor”.
primary_metric (str, optional) – DUDEz validation objective metric, by default “BEDROC”.
bedroc_alpha (float, optional) – Exponential BEDROC weighting factor, by default 20.0.
n_trials (int, optional) – Number of Optuna trials, by default 10.
epochs (int, optional) – Training epochs per trial, by default 100.
storage (str | None, optional) – Optuna storage URL. Use “auto” to create
optuna.dbin the protocol output directory (shared across stages and replicas), by default “auto”.study_name (str, optional) – Optuna study name, by default “DUDEz_Screening_Optimization”.
load_if_exists (bool, optional) – Reuse an existing Optuna study with the same name, by default False.
validation_size (float, optional) – Fraction of non-test data held out for validation, by default 0.2.
test_size (float, optional) – Fraction held out for test metrics, by default 0.2.
direction (str, optional) – Optuna direction. Must be “maximize”, by default “maximize”.
sampler_seed (int | None, optional) – Seed for the Optuna sampler, by default None.
random_seed (int | None, optional) – Stage-specific seed override, by default None.
use_gpu (bool, optional) – Use CUDA when available, by default True.
verbose (bool, optional) – Reserved for compatibility with OCScore verbosity patterns, by default False.
n_jobs (int, optional) – Number of parallel Optuna jobs, by default 1.
allow_scratch (bool, optional) – Allow from-scratch DUDEz feature extractors as a tunable option, by default True.
use_class_weighting (bool, optional) – Apply positive-class weighting in BCEWithLogitsLoss, by default True.
search_space (DUDEzSearchSpaceConfig | None, optional) – Centralized Optuna search-space definition. If None, defaults are used.
split_config (DUDEzSplitConfig | None, optional) – Receptor/kind-aware train/validation/test split configuration. When None, defaults to receptor-wise stratified splitting using
validation_size,test_size,target_group_column, andkind_column.dudez_scaling_config (DUDEzScalingConfig | None, optional) – DUDEz feature scaling policy. When None, the PDBbind-fitted scaler is reused strictly for transfer-compatible DUDEz inputs.
calibration_report_mode (str, optional) – Controls diagnostic vs validated calibration reporting in export metrics, by default
"ranking_only".
- kind_column: str = 'kind'¶
- target_group_column: str = 'receptor'¶
- primary_metric: str = 'BEDROC'¶
- bedroc_alpha: float = 20.0¶
- n_trials: int = 10¶
- epochs: int = 100¶
- storage: str | None = 'auto'¶
- study_name: str = 'DUDEz_Screening_Optimization'¶
- load_if_exists: bool = False¶
- validation_size: float = 0.2¶
- test_size: float = 0.2¶
- direction: str = 'maximize'¶
- sampler_seed: int | None = None¶
- random_seed: int | None = None¶
- use_gpu: bool = True¶
- verbose: bool = False¶
- n_jobs: int = 1¶
- allow_scratch: bool = True¶
- use_class_weighting: bool = True¶
- search_space: DUDEzSearchSpaceConfig | None = None¶
- split_config: DUDEzSplitConfig | None = None¶
- dudez_scaling_config: DUDEzScalingConfig | None = None¶
- calibration_report_mode: str = 'ranking_only'¶
- class OCDocker.OCScore.Optimization.StagedOptuna.DUDEzOptunaStage(config=None)[source]¶
Bases:
objectOptuna stage that optimizes DUDEz screening by one screening metric only.
- Parameters:
config (DUDEzOptunaConfig | None, optional) – Stage configuration. If None, default DUDEz settings are used.
- name = 'dudez_optuna'¶
- __init__(config=None)[source]¶
Initialize the DUDEz Optuna stage.
- Parameters:
config (DUDEzOptunaConfig | None, optional) – Stage configuration. If None, default DUDEz settings are used.
- Return type:
None
- run(context)[source]¶
Run DUDEz screening optimization.
- Parameters:
context (ProtocolContext) – Protocol context containing DUDEz data and transferred extractor.
- Returns:
Updated context with DUDEz artifacts.
- Return type:
- class OCDocker.OCScore.Optimization.StagedOptuna.DUDEzScreeningModel(*args, **kwargs)[source]¶
Bases:
ModuleDUDEz classifier/ranking model using a feature extractor and new head.
- Parameters:
feature_extractor (FeatureExtractor) – Transferred or newly initialized feature extractor.
classifier_hidden_size (int, optional) – Hidden size for the classifier head, by default 128.
dropout (float, optional) – Classifier dropout probability, by default 0.0.
activation (str, optional) – Activation name, by default “GELU”.
- class OCDocker.OCScore.Optimization.StagedOptuna.FeatureExtractor(*args, **kwargs)[source]¶
Bases:
ModuleMonotonic MLP feature extractor with optional projection block.
- Parameters:
input_size (int) – Input feature dimension.
hidden_sizes (Sequence[int]) – Monotonic hidden layer sizes.
latent_dim (int) – Latent encoder dimension.
activation (str, optional) – Activation name, by default “GELU”.
dropout (float, optional) – Dropout probability, by default 0.0.
projection_dim (int, optional) – Optional projection output dimension. A value of 0 disables projection, by default 0.
- projection: nn.Sequential | None¶
- class OCDocker.OCScore.Optimization.StagedOptuna.PDBbindOptunaConfig(target_column='experimental', n_trials=10, epochs=100, storage='auto', study_name='PDBbind_Regression_Optimization', search_phase='full', enable_pruning=True, pruner_n_startup_trials=None, pruner_n_warmup_steps=None, load_if_exists=False, validation_size=0.2, test_size=0.2, objective_metric='RMSE', direction='minimize', sampler_seed=None, random_seed=None, use_gpu=True, verbose=False, n_jobs=1, search_space=None, split_config=None)[source]¶
Bases:
objectConfiguration for the PDBbind regression Optuna stage.
- Parameters:
target_column (str, optional) – Regression target column, by default “experimental”.
n_trials (int, optional) – Number of Optuna trials, by default 10.
epochs (int, optional) – Training epochs per trial, by default 100.
storage (str | None, optional) – Optuna storage URL. Use “auto” to create
optuna.dbin the protocol output directory (shared across stages and replicas), by default “auto”.study_name (str, optional) – Optuna study name, by default “PDBbind_Regression_Optimization”.
load_if_exists (bool, optional) – Reuse an existing Optuna study with the same name, by default False.
validation_size (float, optional) – Fraction of non-test data held out for validation, by default 0.2.
test_size (float, optional) – Fraction held out for test metrics, by default 0.2.
objective_metric (str, optional) – Stage objective metric. Must be “RMSE”, by default “RMSE”.
direction (str, optional) – Optuna direction. Must be “minimize”, by default “minimize”.
sampler_seed (int | None, optional) – Seed for the Optuna sampler, by default None.
random_seed (int | None, optional) – Stage-specific seed override, by default None.
use_gpu (bool, optional) – Use CUDA when available, by default True.
verbose (bool, optional) – Reserved for compatibility with OCScore verbosity patterns, by default False.
n_jobs (int, optional) – Number of parallel Optuna jobs, by default 1.
search_space (PDBbindSearchSpaceConfig | None, optional) – Centralized Optuna search-space definition. If None, defaults are used.
search_phase (str, optional) – Staged search phase:
full(default) orencoder_regression(Phase 1: encoder + regression only). Ignored whensearch_spaceis set explicitly.enable_pruning (bool, optional) – When False, Optuna uses
NopPruner(recommended for Phase 1 experiments).pruner_n_startup_trials (int | None, optional) – MedianPruner startup trials. When None,
max(10% of n_trials, 5).pruner_n_warmup_steps (int | None, optional) – MedianPruner warmup epochs before pruning. When None,
max(10% of epochs, 10).split_config (PDBbindSplitConfig | None, optional) – Affinity-aware PDBbind split configuration. When None, defaults to quantile-bin stratified splitting using
target_column,validation_size, andtest_size.
- target_column: str = 'experimental'¶
- n_trials: int = 10¶
- epochs: int = 100¶
- storage: str | None = 'auto'¶
- study_name: str = 'PDBbind_Regression_Optimization'¶
- search_phase: str = 'full'¶
- enable_pruning: bool = True¶
- pruner_n_startup_trials: int | None = None¶
- pruner_n_warmup_steps: int | None = None¶
- load_if_exists: bool = False¶
- validation_size: float = 0.2¶
- test_size: float = 0.2¶
- objective_metric: str = 'RMSE'¶
- direction: str = 'minimize'¶
- sampler_seed: int | None = None¶
- random_seed: int | None = None¶
- use_gpu: bool = True¶
- verbose: bool = False¶
- n_jobs: int = 1¶
- search_space: PDBbindSearchSpaceConfig | None = None¶
- split_config: PDBbindSplitConfig | None = None¶
- class OCDocker.OCScore.Optimization.StagedOptuna.PDBbindOptunaStage(config=None)[source]¶
Bases:
objectOptuna stage that optimizes PDBbind regression by validation RMSE only.
- Parameters:
config (PDBbindOptunaConfig | None, optional) – Stage configuration. If None, default PDBbind settings are used.
- name = 'pdbbind_optuna'¶
- __init__(config=None)[source]¶
Initialize the PDBbind Optuna stage.
- Parameters:
config (PDBbindOptunaConfig | None, optional) – Stage configuration. If None, default PDBbind settings are used.
- Return type:
None
- run(context)[source]¶
Run PDBbind regression optimization.
- Parameters:
context (ProtocolContext) – Protocol context with reduced PDBbind data and selected features.
- Returns:
Updated context with PDBbind artifacts.
- Return type:
- class OCDocker.OCScore.Optimization.StagedOptuna.PDBbindRegressionModel(*args, **kwargs)[source]¶
Bases:
ModulePDBbind affinity regression model with optional weak decoder.
- Parameters:
feature_extractor (FeatureExtractor) – Encoder/projection module used for affinity prediction.
input_size (int) – Original feature dimension used by the optional decoder.
activation (str) – Activation name used by the optional decoder.
decoder_sizes (Sequence[int] | None, optional) – Decoder hidden sizes. If None, reconstruction is disabled.
- decoder: nn.Sequential | None¶
- forward(x, return_reconstruction=False)[source]¶
Run affinity prediction and optional reconstruction.
- Parameters:
x (torch.Tensor) – Input feature tensor.
return_reconstruction (bool, optional) – Return decoder reconstruction when available, by default False.
- Returns:
Feature embedding, regression prediction, and optional reconstruction.
- Return type:
dict[str, torch.Tensor | None]
- class OCDocker.OCScore.Optimization.StagedOptuna.TransferFeatureExtractorStage[source]¶
Bases:
objectTransfer reusable PDBbind feature extractor layers to the DUDEz stage.
Notes
The final PDBbind regression head is not transferred to DUDEz. The decoder is also excluded because it is only a PDBbind reconstruction regularizer.
- name = 'transfer_feature_extractor'¶
- run(context)[source]¶
Transfer the PDBbind feature extractor without the regression head.
- Parameters:
context (ProtocolContext) – Protocol context containing a PDBbind model or checkpoint path.
- Returns:
Updated context with
transferred_feature_extractor.- Return type:
- OCDocker.OCScore.Optimization.StagedOptuna.apply_fine_tuning_mode(feature_extractor, mode, num_unfrozen_layers=1)[source]¶
Apply frozen, partial, or full fine-tuning to a transferred extractor.
- Parameters:
feature_extractor (nn.Module) – Feature extractor to update in-place.
mode (str) – One of
"frozen","partial", or"full".num_unfrozen_layers (int, optional) – Number of final linear layers unfrozen when mode is
"partial".
- Return type:
None
- OCDocker.OCScore.Optimization.StagedOptuna.build_dudez_model(input_size, params, transferred_extractor=None, feature_extractor_architecture=None)[source]¶
Build a DUDEz screening model from sampled parameters.
- Parameters:
input_size (int) – Input feature dimension.
params (dict[str, Any]) – Sampled DUDEz model and training parameters.
transferred_extractor (FeatureExtractor | None, optional) – Transferred PDBbind feature extractor used when transfer is enabled.
feature_extractor_architecture (dict[str, Any] | None, optional) – Resolved extractor architecture for scratch DUDEz models.
- Returns:
Initialized DUDEz screening model.
- Return type:
- OCDocker.OCScore.Optimization.StagedOptuna.build_pdbbind_model(input_size, params)[source]¶
Build a PDBbind regression model from sampled parameters.
- Parameters:
input_size (int) – Input feature dimension.
params (dict[str, Any]) – Sampled PDBbind model and training parameters.
- Returns:
Initialized PDBbind regression model.
- Return type:
- OCDocker.OCScore.Optimization.StagedOptuna.compute_regression_reconstruction_loss(prediction, target, reconstruction, features, regression_loss, reconstruction_loss, lambda_rec)[source]¶
Compute regression loss plus optional reconstruction regularization.
- Parameters:
prediction (torch.Tensor) – Regression predictions.
target (torch.Tensor) – Regression targets.
reconstruction (torch.Tensor | None) – Reconstructed input features, if decoder regularization is enabled.
features (torch.Tensor) – Original input features.
regression_loss (nn.Module) – Primary regression loss.
reconstruction_loss (nn.Module) – Reconstruction loss.
lambda_rec (float) – Reconstruction loss weight. A value of 0 disables reconstruction.
- Returns:
Total loss for backpropagation.
- Return type:
torch.Tensor
- OCDocker.OCScore.Optimization.StagedOptuna.derive_dudez_labels(df, kind_column='kind')[source]¶
Derive DUDEz labels from kind values.
ligands/ligandmap to 1 anddecoys/decoymap to 0.- Parameters:
df (pd.DataFrame) – DUDEz dataframe containing active/decoy kind values.
kind_column (str, optional) – Column used to derive labels, by default “kind”.
- Returns:
Binary labels as float32 values.
- Return type:
np.ndarray
- OCDocker.OCScore.Optimization.StagedOptuna.dudez_search_space_summary(search_space=None)[source]¶
Return the DUDEz Optuna search-space summary.
- Parameters:
search_space (DUDEzSearchSpaceConfig | None, optional) – Search-space configuration. Defaults to
DEFAULT_DUDEZ_SEARCH_SPACE.- Returns:
JSON-serializable DUDEz search-space description.
- Return type:
dict[str, Any]
- OCDocker.OCScore.Optimization.StagedOptuna.evaluate_regression_metrics(y_true, y_pred)[source]¶
Evaluate PDBbind regression metrics.
- Parameters:
y_true (np.ndarray) – Experimental affinity values.
y_pred (np.ndarray) – Predicted affinity values.
- Returns:
RMSE, MAE, Pearson r, Spearman rho, and R2 metrics.
- Return type:
dict[str, float]
- OCDocker.OCScore.Optimization.StagedOptuna.pdbbind_phase1_experiment_config(*, n_trials=40, epochs=100, study_name='PDBbind_EncoderRegression_Phase1', enable_pruning=False, **kwargs)[source]¶
Preset PDBbind Optuna config for Phase 1 encoder-regression experiments.
- Parameters:
n_trials (int, optional) – Number of Optuna trials (default 40, within the 30–50 Phase 1 band).
epochs (int, optional) – Training epochs per trial.
study_name (str, optional) – Distinct study name so Phase 1 does not resume the full-search study.
enable_pruning (bool, optional) – When False (default), pruning is disabled for the experiment.
**kwargs – Additional
PDBbindOptunaConfigfields.
- Returns:
Phase 1 experiment configuration.
- Return type:
- OCDocker.OCScore.Optimization.StagedOptuna.pdbbind_search_space_summary(search_space=None)[source]¶
Return the PDBbind Optuna search-space summary.
- Parameters:
search_space (PDBbindSearchSpaceConfig | None, optional) – Search-space configuration. Defaults to
DEFAULT_PDBBIND_SEARCH_SPACE.- Returns:
JSON-serializable PDBbind search-space description.
- Return type:
dict[str, Any]
- OCDocker.OCScore.Optimization.StagedOptuna.prepare_dudez_screening_data(df, selected_features, labels, groups, split_config, target_group_column=None, scaling_config=None, pdbbind_scaler=None, *, fixed_train_indices=None, fixed_validation_indices=None, fixed_test_indices=None)[source]¶
Prepare train/validation/test arrays for DUDEz screening.
- Parameters:
df (pd.DataFrame) – Reduced DUDEz dataframe.
selected_features (Sequence[str]) – Descriptor columns selected by feature reduction.
labels (np.ndarray) – Binary active/decoy labels.
groups (np.ndarray | None) – Optional target groups aligned with
df(used for grouped metrics).split_config (DUDEzSplitConfig) – Receptor/kind-aware split configuration.
target_group_column (str | None, optional) – Target column name recorded in split diagnostics.
scaling_config (DUDEzScalingConfig | None)
pdbbind_scaler (StandardScaler | None)
fixed_train_indices (Sequence[int] | None)
fixed_validation_indices (Sequence[int] | None)
fixed_test_indices (Sequence[int] | None)
- Returns:
Train, validation, and test arrays with source indices.
- Return type:
dict[str, Any]
- OCDocker.OCScore.Optimization.StagedOptuna.summarize_dudez_split_diagnostics(df, labels, train_idx, val_idx, test_idx, groups=None, target_group_column=None)[source]¶
Summarize DUDEz split composition for logging and reproducibility.
- Parameters:
df (pd.DataFrame) – Reduced DUDEz dataframe.
labels (np.ndarray) – Binary active/decoy labels.
train_idx (np.ndarray) – Training row indices.
val_idx (np.ndarray) – Validation row indices.
test_idx (np.ndarray) – Test row indices.
groups (np.ndarray | None, optional) – Target/receptor group labels aligned with
labels.target_group_column (str | None, optional) – Source column name used for grouped metrics.
- Returns:
JSON-compatible split diagnostics.
- Return type:
dict[str, Any]
- OCDocker.OCScore.Optimization.StagedOptuna.prepare_pdbbind_regression_data(df, selected_features, split_config, *, fixed_train_indices=None, fixed_validation_indices=None, fixed_test_indices=None)[source]¶
Prepare scaled train/validation/test arrays for PDBbind regression.
- Parameters:
df (pd.DataFrame) – Reduced PDBbind dataframe.
selected_features (Sequence[str]) – Descriptor columns selected by feature reduction.
split_config (PDBbindSplitConfig) – PDBbind split configuration (used for metadata when fixed indices are supplied).
fixed_train_indices (Sequence[int] | None, optional) – When provided, reuse this fixed training partition instead of recomputing a split.
fixed_validation_indices (Sequence[int] | None, optional) – Fixed validation partition indices.
fixed_test_indices (Sequence[int] | None, optional) – Fixed test partition indices.
- Returns:
Scaled train, validation, and test arrays with source indices and scaler.
- Return type:
dict[str, Any]
- OCDocker.OCScore.Optimization.StagedOptuna.resolve_dudez_primary_metric(requested_metric, metrics)[source]¶
Return the effective DUDEz objective metric.
BEDROC is preferred by default. If it is missing or non-finite, PR-AUC is used as the primary objective.
- Parameters:
requested_metric (str) – Requested screening objective metric.
metrics (dict[str, float]) – Validation screening metrics.
- Returns:
Effective metric name used for optimization.
- Return type:
str
- OCDocker.OCScore.Optimization.StagedOptuna.run_staged_ocscore_optuna_protocol(context, pdbbind_config=None, dudez_config=None)[source]¶
Run the current staged OCScore Optuna protocol.
- Parameters:
context (ProtocolContext) – Initial protocol context.
pdbbind_config (PDBbindOptunaConfig | None, optional) – PDBbind stage configuration, by default None.
dudez_config (DUDEzOptunaConfig | None, optional) – DUDEz stage configuration, by default None.
- Returns:
Updated protocol context after all stages complete.
- Return type:
Sample optional decoder hidden sizes for PDBbind reconstruction.
- Parameters:
trial (optuna.Trial) – Optuna trial object.
search_space (DecoderSearchSpace) – Decoder search-space definition.
latent_dim (int) – Encoder latent dimension.
input_dim (int) – Original input feature dimension.
projection_dim (int)
- Returns:
Decoder hidden sizes and reconstruction-loss weight.
- Return type:
tuple[list[int] | None, float]
- OCDocker.OCScore.Optimization.StagedOptuna.suggest_dudez_trial_params(trial, allow_scratch=True, search_space=None)[source]¶
Sample DUDEz screening hyperparameters for one Optuna trial.
- Parameters:
trial (optuna.Trial) – Optuna trial object.
allow_scratch (bool, optional) – Allow sampling from-scratch feature extractors, by default True.
search_space (DUDEzSearchSpaceConfig | None, optional) – Centralized search-space definition.
- Returns:
Sampled DUDEz hyperparameters.
- Return type:
dict[str, Any]
- OCDocker.OCScore.Optimization.StagedOptuna.suggest_encoder_architecture(trial, input_dim, search_space=None)[source]¶
Sample monotonic encoder hidden sizes and latent dimension.
- Parameters:
trial (optuna.Trial) – Optuna trial object.
input_dim (int) – Input feature dimension.
search_space (EncoderSearchSpace | None, optional) – Encoder search-space definition.
- Returns:
Encoder architecture index, hidden layer sizes, and latent dimension.
- Return type:
tuple[int, list[int], int]
- OCDocker.OCScore.Optimization.StagedOptuna.suggest_pdbbind_trial_params(trial, input_dim, search_space=None)[source]¶
Sample PDBbind regression hyperparameters for one Optuna trial.
- Parameters:
trial (optuna.Trial) – Optuna trial object.
input_dim (int) – Input feature dimension.
search_space (PDBbindSearchSpaceConfig | None, optional) – Centralized search-space definition.
- Returns:
Sampled PDBbind hyperparameters.
- Return type:
dict[str, Any]
__all__ re-exports several names from other modules for convenience; they’re excluded
above to avoid documenting them twice under two different module paths. See their original
modules (DUDEzSplit, PDBbindSplit,
Protocol,
Ranking) for their documentation.