@@ -376,48 +376,51 @@ def test_calibrated_classifier(self) -> None:
376376 self .assertEqual (predicted_value_array .shape , (len (TEST_SMILES ),))
377377 self .assertEqual (predicted_proba_array .shape , (len (TEST_SMILES ), 2 ))
378378
379- def test_conformal_pipeline_classifier (self ):
380- """Test conformal prediction with a pipeline on SMILES data."""
381- from molpipeline .experimental .uncertainty .conformal import UnifiedConformalCV , CrossConformalCV
382-
383- # Use the global test data
384- smiles = TEST_SMILES
385- y = np .array (CONTAINS_OX )
386-
387- # Build a pipeline: SMILES -> Mol -> MorganFP -> RF
388- smi2mol = SmilesToMol ()
389- mol2morgan = MolToMorganFP (radius = 2 , n_bits = 128 )
390- rf = RandomForestClassifier (n_estimators = 10 , random_state = 42 )
391- pipeline = Pipeline ([
392- ("smi2mol" , smi2mol ),
393- ("morgan" , mol2morgan ),
394- ("rf" , rf )
395- ])
396-
397- # Split data
398- from sklearn .model_selection import train_test_split
399- X_train , X_calib , y_train , y_calib = train_test_split (smiles , y , test_size = 0.3 , random_state = 42 )
400-
401- # UnifiedConformalCV
402- cp = UnifiedConformalCV (pipeline , estimator_type = "classifier" )
403- cp .fit (X_train , y_train )
404- cp .calibrate (X_calib , y_calib )
405- preds = cp .predict (X_calib )
406- probs = cp .predict_proba (X_calib )
407- sets = cp .predict_conformal_set (X_calib )
408- self .assertEqual (len (preds ), len (y_calib ))
409- self .assertEqual (probs .shape [0 ], len (y_calib ))
410- self .assertEqual (len (sets ), len (y_calib ))
411-
412- # CrossConformalCV
413- ccp = CrossConformalCV (pipeline , estimator_type = "classifier" , n_folds = 3 )
414- ccp .fit (smiles , y )
415- preds_ccp = ccp .predict (smiles )
416- probs_ccp = ccp .predict_proba (smiles )
417- sets_ccp = ccp .predict_conformal_set (smiles )
418- self .assertEqual (len (preds_ccp ), len (y ))
419- self .assertEqual (probs_ccp .shape [0 ], len (y ))
420- self .assertEqual (len (sets_ccp ), len (y ))
379+ def test_conformal_pipeline_classifier (self ) -> None :
380+ """Test conformal prediction with a pipeline on SMILES data.
381+
382+ This test does not take any parameters and does not return a value.
383+ """
384+ from molpipeline .experimental .uncertainty .conformal import UnifiedConformalCV , CrossConformalCV
385+
386+ # Use the global test data
387+ smiles = TEST_SMILES
388+ y = np .array (CONTAINS_OX )
389+
390+ # Build a pipeline: SMILES -> Mol -> MorganFP -> RF
391+ smi2mol = SmilesToMol ()
392+ mol2morgan = MolToMorganFP (radius = 2 , n_bits = 128 )
393+ rf = RandomForestClassifier (n_estimators = 10 , random_state = 42 )
394+ pipeline = Pipeline ([
395+ ("smi2mol" , smi2mol ),
396+ ("morgan" , mol2morgan ),
397+ ("rf" , rf )
398+ ])
399+
400+ # Split data
401+ from sklearn .model_selection import train_test_split
402+ X_train , X_calib , y_train , y_calib = train_test_split (smiles , y , test_size = 0.3 , random_state = 42 )
403+
404+ # UnifiedConformalCV
405+ cp = UnifiedConformalCV (pipeline , estimator_type = "classifier" )
406+ cp .fit (X_train , y_train )
407+ cp .calibrate (X_calib , y_calib )
408+ preds = cp .predict (X_calib )
409+ probs = cp .predict_proba (X_calib )
410+ sets = cp .predict_conformal_set (X_calib )
411+ self .assertEqual (len (preds ), len (y_calib ))
412+ self .assertEqual (probs .shape [0 ], len (y_calib ))
413+ self .assertEqual (len (sets ), len (y_calib ))
414+
415+ # CrossConformalCV
416+ ccp = CrossConformalCV (pipeline , estimator_type = "classifier" , n_folds = 3 )
417+ ccp .fit (smiles , y )
418+ preds_ccp = ccp .predict (smiles )
419+ probs_ccp = ccp .predict_proba (smiles )
420+ sets_ccp = ccp .predict_conformal_set (smiles )
421+ self .assertEqual (len (preds_ccp ), len (y ))
422+ self .assertEqual (probs_ccp .shape [0 ], len (y ))
423+ self .assertEqual (len (sets_ccp ), len (y ))
421424
422425
423426if __name__ == "__main__" :
0 commit comments