def test_load(self, mock_pd): mock_pd.read_csv.return_value = mock_return = MagicMock() mock_return.values = expected_return = np.array([1, 2, 3, 4, 5]) actual_returned_value = PSGLabelService.load("subjectA") self.assertListEqual(expected_return.tolist(), actual_returned_value.tolist()) mock_pd.read_csv.assert_called_once_with( str(PSGLabelService.get_path("subjectA")))
def test_build(self, mock_load_cropped_array): subject_id = 'subjectA' data = np.array([[1, 1], [10, 2], [20, 0], [40, 1], [70, 2], [90, 3], [100, 1], [120, 2]]) valid_epochs = [ Epoch(timestamp=10, index=1), Epoch(timestamp=40, index=2) ] mock_load_cropped_array.return_value = data expected_labels = np.array([2, 1]) returned_labels = PSGLabelService.build(subject_id, valid_epochs) self.assertEqual(expected_labels.tolist(), returned_labels.tolist())
def build(subject_id): feature_count = ActivityCountFeatureService.load(subject_id) feature_hr = HeartRateFeatureService.load(subject_id) feature_time = TimeBasedFeatureService.load_time(subject_id) #feature_circadian = TimeBasedFeatureService.load_circadian_model(subject_id) feature_cosine = TimeBasedFeatureService.load_cosine(subject_id) labeled_sleep = PSGLabelService.load(subject_id) feature_dictionary = { FeatureType.count: feature_count, FeatureType.heart_rate: feature_hr, FeatureType.time: feature_time, #FeatureType.circadian_model: feature_circadian, FeatureType.cosine: feature_cosine } subject = Subject(subject_id=subject_id, labeled_sleep=labeled_sleep, feature_dictionary=feature_dictionary) # Uncomment to save plots of every subject's data: ax = plt.subplot(5, 1, 1) ax.plot(range(len(feature_hr)), feature_hr, label="Heart-Rate") ax.legend() ax = plt.subplot(5, 1, 2) ax.plot(range(len(feature_count)), feature_count, label="Motion") ax.legend() ax = plt.subplot(5, 1, 3) ax.plot(range(len(feature_cosine)), feature_cosine, label="Clock proxy") ax.legend() # ax = plt.subplot(5, 1, 4) # ax.plot(range(len(feature_circadian)), feature_circadian) ax = plt.subplot(5, 1, 4) ax.plot(range(len(labeled_sleep)), labeled_sleep, label="Sleep Stages") ax.legend() # plt.savefig( str(Constants.FIGURE_FILE_PATH.joinpath(subject_id + '_info.png'))) plt.close() return subject
def build(subject_id): feature_count = ActivityCountFeatureService.load(subject_id) feature_hr = HeartRateFeatureService.load(subject_id) feature_time = TimeBasedFeatureService.load_time(subject_id) if Constants.INCLUDE_CIRCADIAN: feature_circadian = TimeBasedFeatureService.load_circadian_model( subject_id) else: feature_circadian = None feature_cosine = TimeBasedFeatureService.load_cosine(subject_id) labeled_sleep = PSGLabelService.load(subject_id) feature_dictionary = { FeatureType.count: feature_count, FeatureType.heart_rate: feature_hr, FeatureType.time: feature_time, FeatureType.circadian_model: feature_circadian, FeatureType.cosine: feature_cosine } subject = Subject(subject_id=subject_id, labeled_sleep=labeled_sleep, feature_dictionary=feature_dictionary) # Uncomment to save plots of every subject's data: # ax = plt.subplot(5, 1, 1) # ax.plot(range(len(feature_hr)), feature_hr) # ax = plt.subplot(5, 1, 2) # ax.plot(range(len(feature_count)), feature_count) # ax = plt.subplot(5, 1, 3) # ax.plot(range(len(feature_cosine)), feature_cosine) # ax = plt.subplot(5, 1, 4) # ax.plot(range(len(feature_circadian)), feature_circadian) # ax = plt.subplot(5, 1, 5) # ax.plot(range(len(labeled_sleep)), labeled_sleep) # # plt.savefig(str(Constants.FIGURE_FILE_PATH.joinpath(subject_id + '_applewatch.png'))) # plt.close() return subject
def build_labels(subject_id, valid_epochs): psg_labels = PSGLabelService.build(subject_id, valid_epochs) PSGLabelService.write(subject_id, psg_labels)
def test_write(self, mock_np, mock_get_path): labels = np.array([1, 2, 3]) mock_get_path.return_value = path = 'path/to/return' PSGLabelService.write("subjectA", labels) mock_np.savetxt.assert_called_once_with(path, labels, fmt='%f')
def test_get_path(self): expected_path = Constants.FEATURE_FILE_PATH.joinpath("subjectA" + '_psg_labels.out') self.assertEqual(expected_path, PSGLabelService.get_path("subjectA"))