OCDocker.OCScore.Utils.DUDEzSplit module¶
Receptor- and kind-aware train/validation/test splitting for DUDEz screening.
Strategies:
receptor_heldout_complete(staged OCScore default): assigns complete receptor cases (all ligands + all decoys) to train, validation, or test. No receptor appears in more than one split. Validation and test are used for grouped early-enrichment metrics on unseen receptors.receptor_stratified_kind: splits ligands and decoys separately within each receptor (historical row-wise stratification per receptor).receptor_held_out: fraction-based receptor hold-out (historical).random_row: global row shuffle (not recommended for grouped metrics).
- class OCDocker.OCScore.Utils.DUDEzSplit.DUDEzSplitConfig(strategy='receptor_stratified_kind', receptor_column='receptor', kind_column='kind', positive_kind='ligands', negative_kind='decoys', train_size=0.6, validation_size=0.2, test_size=0.2, random_seed=42, relaxed_split=False, min_kind_per_split=1, train_receptors=None, validation_receptors=None, test_receptors=None, n_train_receptors=31, n_validation_receptors=6, n_test_receptors=6, balance_by='ligands', shuffle_within_splits=True)[source]¶
Bases:
objectConfiguration for DUDEz train/validation/test splitting.
- Parameters:
strategy (str, optional) – Split strategy. See
DUDEZ_SPLIT_STRATEGIES. Default isreceptor_stratified_kindfor backward compatibility when constructing this dataclass directly; staged OCScore usesreceptor_heldout_complete.receptor_column (str, optional) – Receptor/target column, by default
"receptor".kind_column (str, optional) – Ligand/decoy kind column, by default
"kind".positive_kind (str, optional) – Canonical positive kind label for logging, by default
"ligands".negative_kind (str, optional) – Canonical negative kind label for logging, by default
"decoys".train_size (float, optional) – Training fraction for fraction-based strategies, by default
0.6.validation_size (float, optional) – Validation fraction for fraction-based strategies, by default
0.2.test_size (float, optional) – Test fraction for fraction-based strategies, by default
0.2.random_seed (int, optional) – Random seed for deterministic splits, by default
42.relaxed_split (bool, optional) – When False, raise if validity constraints cannot be met. When True, apply documented fallbacks, by default
False.min_kind_per_split (int, optional) – Minimum samples per kind in a receptor split when possible (stratified strategy only), by default
1.train_receptors (list[str] | None, optional) – Explicit training receptors for
receptor_heldout_complete.validation_receptors (list[str] | None, optional) – Explicit validation receptors for
receptor_heldout_complete.test_receptors (list[str] | None, optional) – Explicit test receptors for
receptor_heldout_complete.n_train_receptors (int, optional) – Target training receptor count when lists are not provided, by default
31.n_validation_receptors (int, optional) – Target validation receptor count, by default
6.n_test_receptors (int, optional) – Target test receptor count, by default
6.balance_by (str, optional) – Receptor ordering key for greedy assignment:
"ligands"(default),"decoys", or"rows".shuffle_within_splits (bool, optional) – Shuffle rows within each split after receptor assignment, by default
True.
- strategy: str = 'receptor_stratified_kind'¶
- receptor_column: str = 'receptor'¶
- kind_column: str = 'kind'¶
- positive_kind: str = 'ligands'¶
- negative_kind: str = 'decoys'¶
- train_size: float = 0.6¶
- validation_size: float = 0.2¶
- test_size: float = 0.2¶
- random_seed: int = 42¶
- relaxed_split: bool = False¶
- min_kind_per_split: int = 1¶
- train_receptors: list[str] | None = None¶
- validation_receptors: list[str] | None = None¶
- test_receptors: list[str] | None = None¶
- n_train_receptors: int = 31¶
- n_validation_receptors: int = 6¶
- n_test_receptors: int = 6¶
- balance_by: str = 'ligands'¶
- shuffle_within_splits: bool = True¶
- class OCDocker.OCScore.Utils.DUDEzSplit.DUDEzSplitResult(train_idx, val_idx, test_idx, diagnostics=<factory>)[source]¶
Bases:
objectIndices and diagnostics from a DUDEz split.
- Parameters:
train_idx (np.ndarray) – Training row indices.
val_idx (np.ndarray) – Validation row indices.
test_idx (np.ndarray) – Test row indices.
diagnostics (dict[str, Any]) – JSON-compatible split diagnostics and constraint reporting.
- train_idx: ndarray¶
- val_idx: ndarray¶
- test_idx: ndarray¶
- diagnostics: dict[str, Any]¶
- OCDocker.OCScore.Utils.DUDEzSplit.dudez_receptor_heldout_complete_config(random_seed=42, *, n_train_receptors=31, n_validation_receptors=6, n_test_receptors=6, receptor_column='receptor', kind_column='kind', train_receptors=None, validation_receptors=None, test_receptors=None, relaxed_split=False, balance_by='ligands')[source]¶
Return a
DUDEzSplitConfigfor complete receptor hold-out splitting.- Parameters:
random_seed (int, optional) – Random seed, by default
42.n_train_receptors (int, optional) – Training receptor count when lists are omitted, by default
31.n_validation_receptors (int, optional) – Validation receptor count, by default
6.n_test_receptors (int, optional) – Test receptor count, by default
6.receptor_column (str, optional) – Receptor column name, by default
"receptor".kind_column (str, optional) – Kind column name, by default
"kind".train_receptors (list[str] | None, optional) – Explicit training receptors.
validation_receptors (list[str] | None, optional) – Explicit validation receptors.
test_receptors (list[str] | None, optional) – Explicit test receptors.
relaxed_split (bool, optional) – Allow incomplete receptors to be excluded, by default
False.balance_by (str, optional) – Greedy balancing key, by default
"ligands".
- Returns:
Configured split definition for staged DUDEz Optuna.
- Return type:
- OCDocker.OCScore.Utils.DUDEzSplit.split_dudez_by_receptor_and_kind(df, config=None, *, receptor_column=None, kind_column=None, positive_kind=None, negative_kind=None, train_size=None, validation_size=None, test_size=None, random_seed=None, relaxed_split=None)[source]¶
Split a DUDEz dataframe by receptor and ligand/decoy kind.
- Parameters:
df (pd.DataFrame) – DUDEz dataframe with receptor and kind columns.
config (DUDEzSplitConfig | None, optional) – Split configuration. Individual keyword arguments override fields when both are provided.
receptor_column (str | None, optional) – Override for
config.receptor_column.kind_column (str | None, optional) – Override for
config.kind_column.positive_kind (str | None, optional) – Override for
config.positive_kind(logging only).negative_kind (str | None, optional) – Override for
config.negative_kind(logging only).train_size (float | None, optional) – Override for
config.train_size.validation_size (float | None, optional) – Override for
config.validation_size.test_size (float | None, optional) – Override for
config.test_size.random_seed (int | None, optional) – Override for
config.random_seed.relaxed_split (bool | None, optional) – Override for
config.relaxed_split.
- Returns:
Train/validation/test indices and diagnostics.
- Return type:
- Raises:
ValueError – If fractions are invalid, required columns are missing, or strict validity constraints cannot be satisfied.