OCDocker.OCScore.Utils.PDBbindSplit module¶
Affinity-aware train/validation/test splitting for PDBbind regression.
Default strategy affinity_quantile_stratified bins the continuous affinity
target into quantiles and uses those bins for stratified splitting. This keeps
weak/medium/strong binders represented across train/validation/test so RMSE
selection is scientifically meaningful.
- class OCDocker.OCScore.Utils.PDBbindSplit.PDBbindSplitConfig(strategy='affinity_quantile_stratified', target_column='experimental', receptor_column='receptor', n_affinity_bins=5, train_size=0.6, validation_size=0.2, test_size=0.2, random_seed=42, relaxed_split=False)[source]¶
Bases:
objectConfiguration for PDBbind regression splitting.
- Parameters:
strategy (str, optional) – Split strategy. Defaults to
"affinity_quantile_stratified".target_column (str, optional) – Continuous regression target column, by default
"experimental".receptor_column (str | None, optional) – Optional receptor/target column for diagnostics, by default
"receptor". If missing in the dataframe, receptor diagnostics are skipped.n_affinity_bins (int, optional) – Requested number of affinity quantile bins, by default 5.
train_size (float, optional) – Training fraction, by default 0.6.
validation_size (float, optional) – Validation fraction, by default 0.2.
test_size (float, optional) – Test fraction, by default 0.2.
random_seed (int, optional) – Random seed for deterministic splits, by default 42.
relaxed_split (bool, optional) – If False, fail loudly when quantile binning/stratification is invalid. If True, reduce the number of bins until stratification is feasible and drop rows with NaN targets, by default False.
- strategy: str = 'affinity_quantile_stratified'¶
- target_column: str = 'experimental'¶
- receptor_column: str | None = 'receptor'¶
- n_affinity_bins: int = 5¶
- train_size: float = 0.6¶
- validation_size: float = 0.2¶
- test_size: float = 0.2¶
- random_seed: int = 42¶
- relaxed_split: bool = False¶
- class OCDocker.OCScore.Utils.PDBbindSplit.PDBbindSplitResult(train_idx, val_idx, test_idx, diagnostics=<factory>)[source]¶
Bases:
objectIndices and diagnostics from a PDBbind regression 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.PDBbindSplit.split_pdbbind_regression(df, config=None, *, target=None)[source]¶
Split PDBbind regression rows into train/validation/test.
- Parameters:
df (pd.DataFrame) – PDBbind dataframe containing a continuous affinity target.
config (PDBbindSplitConfig | None, optional) – Split configuration. Defaults to
PDBbindSplitConfig.target (np.ndarray | None, optional) – Optional override target array aligned with
df. When provided, it is used instead ofdf[config.target_column]. This exists to support upstream preprocessing while keeping a single splitting implementation.
- Returns:
Indices for each split plus JSON-compatible diagnostics.
- Return type: