def test_get_class_parts_limits(self): l = model.get_class_parts_limits('class1') self.assertSequenceEqual(l, [589.5]) l = model.get_class_parts_limits('class2') self.assertSequenceEqual(l, [589.5, 1022.5, 1477.5]) l = model.get_class_parts_limits('class3a') self.assertSequenceEqual(l, [589.5, 1022.5, 1477.5]) l = model.get_class_parts_limits('class3b') self.assertSequenceEqual(l, [589.5, 1022.5, 1477.5])
def test_get_class_parts_limits_with_edges(self): classes = model._get_wltc_data()['classes'] class_limits = {cls: model.get_class_parts_limits(cls, edges=True) for cls in classes.keys()} for (cls, l) in class_limits.items(): self.assertEqual(l[0], 0, 'Class(%s): Left-edge not 0!'%cls) for (cls, l) in class_limits.items(): self.assertEqual(l[-1], len(classes[cls]['cycle'])-0.5, 'Class(%s): Section Right-edge not len(cycle)!'%cls)
def test_get_class_parts_limits_sorted(self): classes = model._get_wltc_data()['classes'] class_limits = { cls: model.get_class_parts_limits(cls, edges=True) for cls in classes.keys() } for (cls, l) in class_limits.items(): self.assertSequenceEqual(l, sorted(l), 'Class(%s): Unsorted!' % cls)
def data_meanN_gears(cls_num): """ Constructs meanN vs gears, hierarchically grouped by: vehicle, python/heinz, class_part :return: df like that:: python heinz gear n gear n 1154 Low 2.020374 1078.312480 2.039049 1105.891341 Medium 3.577367 1364.552656 3.618938 1353.300231 High 4.028571 1694.902241 4.160440 1618.457143 ExtraHigh 4.266254 2532.802858 4.424149 2514.894737 1155 ... """ def means_by_parts(df, cols_in, cols_out): df = df.ix[:, cols_in] data = df.groupby(pd.cut(df_g.index, bins=parts)).mean() data.index = part_names[:len(data.index)] data.columns = cols_out return data cls_name = class_name_from_num(cls_num) vehdata = wltpdb._run_the_experiments(transplant_original_gears=False, compare_results=False) vehdata = vehdata[vehdata['class'] == cls_num] ## Filter only the Class. cols_out = ['gear', 'n'] data = {} for (veh_num, df_g, df_h) in wltpdb._file_pairs(wltpdb.gened_fname_glob): try: class_num = vehdata.loc[veh_num, 'class'] except KeyError: continue parts = model.get_class_parts_limits(cls_name, edges=True) g_data = means_by_parts(df_g, ['gears', 'rpm'], cols_out) h_data = means_by_parts(df_h, ['gear', 'n'], cols_out) veh_data = pd.concat( (g_data, h_data), axis=1, keys=['python', 'heinz']) data[veh_num] = veh_data df = pd.concat(list(data.values()), axis=0, keys=data.keys()) return df
def test_get_class_parts_limits_sorted(self): classes = model._get_wltc_data()['classes'] class_limits = {cls: model.get_class_parts_limits(cls, edges=True) for cls in classes.keys()} for (cls, l) in class_limits.items(): self.assertSequenceEqual(l, sorted(l), 'Class(%s): Unsorted!'%cls)