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())
示例#3
0
    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"))