def test_roundtime(self):
        """
        A testing function for rounTimeArray
        """
        obj_test1 = data_import.ImportData('./smallData/cgm_small.csv')
        output = data_import.roundTimeArray(obj_test1, 30, linear=True)
        for (time, val) in output:
            self.assertEqual(time.minute, 0)
            self.assertEqual(val, (131 + 138 + 144) / 3)
            break

        output = data_import.roundTimeArray(obj_test1, 30, linear=False)
        for (time, val) in output:
            self.assertEqual(time.minute, 0)
            self.assertEqual(val, (131 + 138 + 144) / 3)
            break

        obj_test2 = data_import.ImportData('./smallData/activity_small.csv')
        output = data_import.roundTimeArray(obj_test2, 40, linear=True)
        for (time, val) in output:
            self.assertEqual(time.minute, 0)
            self.assertEqual(val, (3 + 7 + 76 + 6 + 7))
            break

        output = data_import.roundTimeArray(obj_test2, 40, linear=False)
        for (time, val) in output:
            self.assertEqual(time.minute, 0)
            self.assertEqual(val, (3 + 7 + 76 + 6 + 7))
            break
예제 #2
0
 def test_linear_search_roundtime(self):
     # Linear search of the rounded table should return 2 entries for the first one
     r = data_import.ImportData('./smallData/activity_small.csv')
     data_import.roundTimeArray(r, 3)
     w = r.linear_search_value(r._time[0])
     # For activity_small, should return a sum of 0
     self.assertEqual(w, [0.0])
예제 #3
0
 def test_linear_search_double_index(self):
     # To make sure it's handling double digits okay, I choese
     # to return a double digit entry
     r = data_import.ImportData('./smallData/activity_small.csv')
     data_import.roundTimeArray(r, 1)
     w = r.linear_search_value(r._time[14])
     self.assertEqual([r._value[14]], w)
예제 #4
0
 def test_printarray_bolus_cgm(self):
     bolus_data = data_import.ImportData('smallData/bolus_small.csv')
     cgm_data = data_import.ImportData('smallData/cgm_small.csv')
     cgm_zip = data_import.roundTimeArray(cgm_data, 60, 'average')
     bolus_zip = data_import.roundTimeArray(bolus_data, 60, 'sum')
     data_list = [cgm_zip, bolus_zip]
     ann_list = ['cgm_small', 'bolus_small']
     base_name = 'test_printarray.csv'
     key_file = 'cgm_small'
     data_import.printArray(data_list, ann_list, base_name, key_file)
     assert os.path.exists(base_name)
     with open(base_name, 'r') as f:
         assert 'time,cgm,bolus' in f.readline()
         assert '2018-03-16 00:00:00,144.5,0.7,' in f.readline()
    def test_round_time(self):
        filename = './smallData/cgm_small.csv'
        obj = data_import.ImportData(filename)
        z = data_import.roundTimeArray(obj, 5)
        for (t, v) in z:
            self.assertEqual(v, 131)
            self.assertEqual(t.minute, 5)
            break

        z = data_import.roundTimeArray(obj, 30)
        for (t, v) in z:
            self.assertEqual(v, (131 + 138 + 144) / 3)
            self.assertEqual(t.minute, 0)
            break
예제 #6
0
 def test_roundtimearray_test_file_sum(self):
     csv_reader = data_import.ImportData('test_timeround.csv')
     zip_obj = data_import.roundTimeArray(csv_reader, 60, 'sum')
     for time_round, value_sum in zip_obj:
         assert value_sum == 435.0
         assert time_round == data_import.datetime.datetime(
             2018, 3, 16, 0, 0)
예제 #7
0
 def test_roundtimearray_test_file_average(self):
     csv_reader = data_import.ImportData('test_timeround.csv')
     zip_obj = data_import.roundTimeArray(csv_reader, 60, 'average')
     for time_round, value_avg in zip_obj:
         assert value_avg == 145.0
         assert time_round == data_import.datetime.datetime(
             2018, 3, 16, 0, 0)
    def test_print_array(self):
        folder_path = 'smallData'
        resolution = 5
        output_file = 'tmp.csv'
        key_file = 'cgm_small.csv'

        # pull all the folders in the file
        files_lst = [
            f for f in listdir(folder_path) if isfile(join(folder_path, f))
        ]

        # import all the files into a list of ImportData objects
        data_lst = []
        for f in files_lst:
            data_lst.append(data_import.ImportData(folder_path + '/' + f))

        # convert to zipped, rounded data
        zip_data = []
        for data in data_lst:
            zip_data.append(data_import.roundTimeArray(data, resolution))

        # print to a csv file
        data_import.printArray(zip_data, files_lst, output_file, key_file)

        self.assertTrue(os.path.exists(output_file))

        os.remove(output_file)
    def test_rounding_resolution(self):
        file_name = 'smallData/activity_small.csv'
        resolution = 5

        test_data = data_import.ImportData(file_name)
        rounded_data = data_import.roundTimeArray(test_data, resolution)
        # make sure the rounded times correct resolution
        for t, v in rounded_data:
            self.assertTrue(t.minute % resolution == 0)
예제 #10
0
 def test_round_time(self):
     filename = './smallData/smbg_small.csv'
     obj = data_import.ImportData(filename)
     rounded = data_import.roundTimeArray(obj, 5)
     for (time, value) in rounded:
         self.assertEqual(value, 254.0)
         d = datetime.datetime(2018, 3, 16, 8, 45)
         self.assertEqual(time, d)
         break
    def test_rounding_unique(self):
        file_name = 'smallData/activity_small.csv'
        resolution = 5

        test_data = data_import.ImportData(file_name)
        rounded_data = data_import.roundTimeArray(test_data, resolution)

        times = []
        for t, v in rounded_data:
            times.append(t)
        # make sure the rounded times are unique
        self.assertFalse(len(times) > len(times))
예제 #12
0
 def test_print_array_round_to_15(self):
     data = []
     for f in os.listdir('smallData'):
         data.append(di.ImportData('smallData/' + f))
     rdata_15 = []
     for i in data:
         rdata_15.append(di.roundTimeArray(i, 15))
     self.assertNotEqual(
         di.printArray(rdata_15, os.listdir('smallData'), 'out_15',
                       'meal_small.csv'), -1)
     self.assertTrue(os.path.exists('out_15.csv'))
     os.remove('out_15.csv')
    def test_print_array(self):
        files_lst = os.listdir('./smallData/')
        data = []
        for f in files_lst:
            data.append(data_import.ImportData(join('./smallData/', f)))
            data_5 = []
        for obj in data:
            data_5.append(data_import.roundTimeArray(obj, 5))

        r = data_import.printArray(data_5, files_lst, 'out_5',
                                   'smbg_small.csv')
        self.assertTrue(os.path.exists('out_5.csv'))
        os.remove('out_5.csv')
    def test_print_array(self):
        files_lst = os.listdir('smallData')
        data_lst = []
        for f in files_lst:
            data_lst.append(data_import.ImportData('smallData/' + f))

        data_5 = []
        for obj in data_lst:
            data_5.append(data_import.roundTimeArray(obj, 5))

        r = data_import.printArray(data_5, files_lst, 'out_5', 'hr_small.csv')
        self.assertNotEqual(r, -1)
        self.assertTrue(os.path.exists('out_5.csv'))
        os.remove('out_5.csv')
 def test_print_array_round_to_5(self):
     data = []
     for f in os.listdir('smallData'):
         if '.csv' in f:
             data.append(data_import.ImportData('smallData/' + f))
     data_5 = []
     for i in data:
         data_5.append(data_import.roundTimeArray(i, 5))
     self.assertNotEqual(
         data_import.printArray(data_5,
                                os.listdir('smallData'),
                                'out_5', 'cgm_small.csv'), -1)
     self.assertTrue(os.path.exists('out_5.csv'))
     os.remove('out_5.csv')
    def test_printarray(self):
        """
        A testing function for printArray
        """
        file_lst = os.listdir('./smallData')
        data_list = []
        for i in range(len(file_lst)):
            obj = data_import.ImportData('./smallData/' + file_lst[i])
            data_list.append(data_import.roundTimeArray(obj, 5))

        result = data_import.printArray(data_list, file_lst, 'test_printarray',
                                        'meal_small.csv')
        self.assertNotEqual(result, -1)
        self.assertTrue(os.path.exists('test_printarray.csv'))
        os.remove('test_printarray.csv')
예제 #17
0
    def test_DataImport_linear_search_value(self):
        data_times = []
        data_values = []
        key_index = random.randint(0, 9)
        key_time = None
        with open("test_file.csv", mode="w") as test_data:
            data_writer = csv.writer(test_data, delimiter=",")
            data_writer.writerow(["time", "value"])
            idate = datetime.datetime.now()
            for item in range(9):
                idatestr = idate.strftime("%m/%d/%Y %H:%M")
                randval = str(random.randint(0, 10000))
                data_writer.writerow([idatestr, randval])
                data_times.append(idatestr)
                data_values.append(randval)
                idate = idate + datetime.timedelta(minutes=2)
            test_data.close()

        testdata = ImportData("test_file.csv")
        data_import.roundTimeArray(testdata, 5)
        key_time = testdata._roundtime[key_index]
        os.remove("test_file.csv")
        self.assertIn(int(data_values[key_index]),
                      testdata.linear_search_value(key_time))
예제 #18
0
 def test_printarray_input_types(self):
     bolus_data = data_import.ImportData('smallData/bolus_small.csv')
     cgm_data = data_import.ImportData('smallData/cgm_small.csv')
     cgm_zip = data_import.roundTimeArray(cgm_data, 60, 'average')
     bolus_zip = data_import.roundTimeArray(bolus_data, 60, 'sum')
     data_list = [cgm_zip, bolus_zip]
     ann_list = ['cgm_small', 'bolus_small']
     base_name = 'test_printarray.csv'
     key_file = 'cgm_small'
     self.assertRaises(TypeError, data_import.printArray, 1, ann_list,
                       base_name, key_file)
     self.assertRaises(TypeError, data_import.printArray, data_list,
                       'string!', base_name, key_file)
     self.assertRaises(TypeError, data_import.printArray, data_list,
                       ann_list, 1.234, key_file)
     self.assertRaises(TypeError, data_import.printArray, data_list,
                       ann_list, base_name, [1, 2, 3, 4])
     self.assertRaises(
         TypeError, data_import.printArray,
         [zip([1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), 'not a zip!'], ann_list,
         base_name, key_file)
     self.assertRaises(IndexError, data_import.printArray, data_list,
                       ['a', 'b', 10, [1, 2, 3, 4]], base_name, key_file)
     os.remove('test_printarray.csv')
예제 #19
0
 def test_roundtimearray_test_modify(self):
     csv_reader = data_import.ImportData('test_timeround.csv')
     csv_reader_old = copy.deepcopy(csv_reader)
     data_import.roundTimeArray(csv_reader, 60, 'sum', modify=True)
     assert len(csv_reader._time) != len(csv_reader_old._time)
예제 #20
0
 def test_round_output_type(self):
     data = datimp.ImportData('smallData/cgm_small.csv')
     output = datimp.roundTimeArray(data, 5)
     self.assertEqual(type(output), zip)
예제 #21
0
 def test_linear_search_roundtime_sum(self):
     # Linear search of 5 minute rounding, which should be a sum of 0
     r = data_import.ImportData('./smallData/activity_small.csv')
     data_import.roundTimeArray(r, 5)
     w = r.linear_search_value(r._time[0])
     self.assertEqual(w, [0.0])
예제 #22
0
 def test_linear_search_roundtime_avg(self):
     # Linear search of forty minute rounding, which should be an avg of 138
     r = data_import.ImportData('./smallData/cgm_small.csv')
     data_import.roundTimeArray(r, 9)
     w = r.linear_search_value(r._time[1])
     self.assertEqual(w, [138.0])
예제 #23
0
 def test_linear_search_first(self):
     # Given a specific time, we should return the proper value
     r = data_import.ImportData('./smallData/activity_small.csv')
     data_import.roundTimeArray(r, 1)
     w = r.linear_search_value(r._time[0]) 
     self.assertEqual([r._value[0]], w)
예제 #24
0
 def test_linear_search_mid(self):
     # See if a mid entry matches
     r = data_import.ImportData('./smallData/cgm_small.csv')
     data_import.roundTimeArray(r, 1)
     w = r.linear_search_value(r._time[4])
     self.assertEqual([r._value[4]], w)
예제 #25
0
    # do this in a loop, where you loop through the data_lst

    data_5 = []  # a list with time rounded to 5min
    data_15 = []  # a list with time rounded to 15min

    # Linear Search (linear search is default)

    t1 = time.time()
    for data_import_obj in data_lst:
        sum_key = [
            add_file in data_import_obj._file_name
            for add_file in ['activity, bolus, meal']
        ]
        if any(sum_key):
            data_5.append(
                data_import.roundTimeArray(data_import_obj, 5,
                                           operation='add'))
        else:
            data_5.append(data_import.roundTimeArray(data_import_obj, 5))
    try:
        data_import.printArray(data_5, files_lst, args.output_file + '_5.csv',
                               args.sort_key)
    except IndexError:
        print("sort_key provided was did not apply to the files in " +
              args.folder_name,
              file=sys.stderr)
        sys.exit(1)

    t2 = time.time()

    for data_import_obj in data_lst:
        sum_key = [