--- a +++ b/3-Preprocessing/downsample_upsample.py @@ -0,0 +1,36 @@ +# Example code of how to downsample or upsample the ECG as some are measured at 250 Hz and others at 500 Hz + +def upsample_5k_single(input_array,output_array): + assert input_array.shape == (2500, 12, 1), f"input_array is shape {input_array.shape} not (2500, 12, 1)" + processed_data = cv2.resize(input_array.squeeze(),(input_array.shape[1],input_array.shape[0]*2),interpolation=cv2.INTER_LINEAR) + output_array.append(processed_data) + + +def upsample_5k_batch(input_array,output_array): + a=0 + time1 = time.time() + assert input_array.shape[1:] == (2500, 12, 1), f"input_array is shape {input_array.shape[1:]} not (2500, 12, 1)" + for ecg in input_array: + a+=1 + processed_data = cv2.resize(ecg.squeeze(),(ecg.shape[1],ecg.shape[0]*2),interpolation=cv2.INTER_LINEAR) + output_array.append(processed_data) + if a%1000==0: + print(a,'ECGs converted') + print(time.time()-time1,"seconds since start") + output_array = np.expand_dims(output_array, axis=3) + print(output_array.shape) + + +def downsample_5k_batch(input_array,output_array): + a=0 + time1 = time.time() + assert input_array.shape[1:] == (5000, 12, 1), f"input_array is shape {input_array.shape[1:]} not (5000, 12, 1)" + for ecg in input_array: + a+=1 + processed_data = cv2.resize(ecg.squeeze(),(ecg.shape[1],ecg.shape[0]*0.5),interpolation=cv2.INTER_LINEAR) + output_array.append(processed_data) + if a%1000==0: + print(a,'ECGs converted') + print(time.time()-time1,"seconds since start") + output_array = np.expand_dims(output_array, axis=3) + print(output_array.shape)