def intra_patient_split(patient_id, train_frac=0.8, val_frac=0.1): p = Patient(patient_id) seizures = p.get_seizures() clips = p.get_seizure_clips() test_frac = 1.0 - train_frac - val_frac n_val_seizures = max(1, int(round(val_frac * len(seizures)))) n_test_seizures = max(1, int(round(test_frac * len(seizures)))) n_train_seizures = len(seizures) - n_val_seizures - n_test_seizures return ( # Training clips clips[:n_train_seizures], # Validation clips clips[n_train_seizures:n_train_seizures + n_val_seizures], # Test clips clips[n_train_seizures + n_val_seizures:])