Esempio n. 1
0
    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])
Esempio n. 2
0
 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])
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
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
Esempio n. 7
0
 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)