def prepSingle(filename, save=True): ''' preprocesses a single file by name - used for testing ''' sub = fs.Subject(filename=filename) X, y = preprocess(sub) if save: fs.write_csv(filename, X, y) return X, y
def prepAll(force=False): ''' preprocesses all files stored on properly on the drive. either mesa or shhs. the amount of time and errors are logged for testing purposes. optionally re-processing already completed files is possible. ''' log, clock = get_log('Preprocessing', echo=True), stopwatch() filenames = fs.getAllSubjectFilenames(preprocessed=False) # determines already completed files oldFiles = fs.getAllSubjectFilenames(preprocessed=True) if not force: filenames = [fn for fn in filenames if fn not in oldFiles] log.print('Files already completed: {0}'.format(len(oldFiles))) log.print('Files remaining: {0}'.format(len(filenames))) if (len(oldFiles) > 0): log.printHL() for fn in oldFiles: log.print('{0} already completed'.format(fn)) else: log.print('Files re-preprocessing: {0}'.format(len(oldFiles))) log.print('Files remaining: {0}'.format(len(filenames))) log.printHL() # processes each file with try/catch loop incase of errors in single files. clock.round() for i, filename in enumerate(filenames): try: subject = fs.Subject(filename=filename) X, y = preprocess(subject) fs.write_csv(filename, X, y) log.print('{0} preprocessed in {1}s'.format( filename, clock.round())) except Exception as e: log.print('{0} Exception: {1}'.format(filename, str(e))) clock.round() clock.stop()
def prep_X(edf, anno): ''' converts two edf and anno filepaths into X ''' sub = fs.Subject(edfPath=edf, annoPath=anno, ArousalAnno=False) return preprocess(sub, arousals=False)