11from  io  import  StringIO 
2+ import  logging 
23import  os 
34import  sys 
45import  unittest 
@@ -69,103 +70,104 @@ def setUp(self):
6970        self .y  =  y 
7071        self .mf  =  meta_features .metafeatures 
7172        self .helpers  =  meta_features .helper_functions 
73+         self .logger  =  logging .getLogger ()
7274
7375        # Precompute some helper functions 
7476        self .helpers .set_value (
7577            "PCA" ,
76-             self .helpers ["PCA" ](self .X_transformed , self .y ),
78+             self .helpers ["PCA" ](self .X_transformed , self .y ,  self . logger ),
7779            )
7880        self .helpers .set_value (
7981            "MissingValues" ,
80-             self .helpers ["MissingValues" ](self .X , self .y , self .categorical ),
82+             self .helpers ["MissingValues" ](self .X , self .y , self .logger ,  self . categorical ),
8183            )
8284        self .mf .set_value (
8385            "NumberOfMissingValues" ,
84-             self .mf ["NumberOfMissingValues" ](self .X , self .y , self .categorical ),
86+             self .mf ["NumberOfMissingValues" ](self .X , self .y , self .logger ,  self . categorical ),
8587            )
8688        self .helpers .set_value (
8789            "NumSymbols" ,
88-             self .helpers ["NumSymbols" ](self .X , self .y , self .categorical ),
90+             self .helpers ["NumSymbols" ](self .X , self .y , self .logger ,  self . categorical ),
8991            )
9092        self .helpers .set_value (
9193            "ClassOccurences" ,
92-             self .helpers ["ClassOccurences" ](self .X , self .y ),
94+             self .helpers ["ClassOccurences" ](self .X , self .y ,  self . logger ),
9395            )
9496        self .helpers .set_value (
9597            "Skewnesses" ,
96-             self .helpers ["Skewnesses" ](self .X_transformed , self .y , self .categorical_transformed ),
98+             self .helpers ["Skewnesses" ](self .X_transformed , self .y , self .logger ,  self . categorical_transformed ),
9799            )
98100        self .helpers .set_value (
99101            "Kurtosisses" ,
100-             self .helpers ["Kurtosisses" ](self .X_transformed , self .y , self .categorical_transformed ),
102+             self .helpers ["Kurtosisses" ](self .X_transformed , self .y , self .logger ,  self . categorical_transformed ),
101103            )
102104
103105    def  test_missing_values (self ):
104-         mf  =  self .helpers ["MissingValues" ](self .X , self .y , self .categorical )
106+         mf  =  self .helpers ["MissingValues" ](self .X , self .y , self .logger ,  self . categorical )
105107        self .assertTrue (sparse .issparse (mf .value ))
106108        self .assertEqual (mf .value .shape , self .X .shape )
107109        self .assertEqual (mf .value .dtype , np .bool )
108110        self .assertEqual (0 , np .sum (mf .value .data ))
109111
110112    def  test_number_of_missing_values (self ):
111-         mf  =  self .mf ["NumberOfMissingValues" ](self .X , self .y , self .categorical )
113+         mf  =  self .mf ["NumberOfMissingValues" ](self .X , self .y , self .logger ,  self . categorical )
112114        self .assertEqual (0 , mf .value )
113115
114116    def  test_percentage_missing_values (self ):
115-         mf  =  self .mf ["PercentageOfMissingValues" ](self .X , self .y , self .categorical )
117+         mf  =  self .mf ["PercentageOfMissingValues" ](self .X , self .y , self .logger ,  self . categorical )
116118        self .assertEqual (0 , mf .value )
117119
118120    def  test_number_of_Instances_with_missing_values (self ):
119121        mf  =  self .mf ["NumberOfInstancesWithMissingValues" ](
120-             self .X , self .y , self .categorical )
122+             self .X , self .y , self .logger ,  self . categorical )
121123        self .assertEqual (0 , mf .value )
122124
123125    def  test_percentage_of_Instances_with_missing_values (self ):
124126        self .mf .set_value ("NumberOfInstancesWithMissingValues" ,
125127                          self .mf ["NumberOfInstancesWithMissingValues" ](
126-                               self .X , self .y , self .categorical ))
127-         mf  =  self .mf ["PercentageOfInstancesWithMissingValues" ](self .X , self .y ,
128+                               self .X , self .y , self .logger ,  self . categorical ))
129+         mf  =  self .mf ["PercentageOfInstancesWithMissingValues" ](self .X , self .y ,  self . logger , 
128130                                                               self .categorical )
129131        self .assertAlmostEqual (0 , mf .value )
130132
131133    def  test_number_of_features_with_missing_values (self ):
132-         mf  =  self .mf ["NumberOfFeaturesWithMissingValues" ](self .X , self .y ,
134+         mf  =  self .mf ["NumberOfFeaturesWithMissingValues" ](self .X , self .y ,  self . logger , 
133135                                                          self .categorical )
134136        self .assertEqual (0 , mf .value )
135137
136138    def  test_percentage_of_features_with_missing_values (self ):
137139        self .mf .set_value ("NumberOfFeaturesWithMissingValues" ,
138140                          self .mf ["NumberOfFeaturesWithMissingValues" ](
139-                               self .X , self .y , self .categorical ))
140-         mf  =  self .mf ["PercentageOfFeaturesWithMissingValues" ](self .X , self .y ,
141+                               self .X , self .y , self .logger ,  self . categorical ))
142+         mf  =  self .mf ["PercentageOfFeaturesWithMissingValues" ](self .X , self .y ,  self . logger , 
141143                                                              self .categorical )
142144        self .assertAlmostEqual (0 , mf .value )
143145
144146    def  test_num_symbols (self ):
145-         mf  =  self .helpers ["NumSymbols" ](self .X , self .y , self .categorical )
147+         mf  =  self .helpers ["NumSymbols" ](self .X , self .y , self .logger ,  self . categorical )
146148
147149        symbol_frequency  =  [2 , 0 , 6 , 0 , 1 , 3 , 0 , 0 , 3 , 1 , 0 , 0 , 0 , 1 , 0 , 0 ,
148150                            0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 1 , 1 , 2 , 2 ]
149151        self .assertEqual (mf .value , symbol_frequency )
150152
151153    def  test_symbols_max (self ):
152154        # this is attribute steel 
153-         mf  =  self .mf ["SymbolsMax" ](self .X , self .y , self .categorical )
155+         mf  =  self .mf ["SymbolsMax" ](self .X , self .y , self .logger ,  self . categorical )
154156        self .assertEqual (mf .value , 6 )
155157
156158    def  test_symbols_mean (self ):
157-         mf  =  self .mf ["SymbolsMean" ](self .X , self .y , self .categorical )
159+         mf  =  self .mf ["SymbolsMean" ](self .X , self .y , self .logger ,  self . categorical )
158160        # Empty looking spaces denote empty attributes 
159161        symbol_frequency  =  [2 , 6 , 1 , 3 , 3 , 1 , 1 , 2 , 1 , 1 , 2 , 2 ]
160162        self .assertAlmostEqual (mf .value , np .mean (symbol_frequency ))
161163
162164    def  test_symbols_std (self ):
163-         mf  =  self .mf ["SymbolsSTD" ](self .X , self .y , self .categorical )
165+         mf  =  self .mf ["SymbolsSTD" ](self .X , self .y , self .logger ,  self . categorical )
164166        symbol_frequency  =  [2 , 6 , 1 , 3 , 3 , 1 , 1 , 2 , 1 , 1 , 2 , 2 ]
165167        self .assertAlmostEqual (mf .value , np .std (symbol_frequency ))
166168
167169    def  test_symbols_sum (self ):
168-         mf  =  self .mf ["SymbolsSum" ](self .X , self .y , self .categorical )
170+         mf  =  self .mf ["SymbolsSum" ](self .X , self .y , self .logger ,  self . categorical )
169171        self .assertEqual (mf .value , 25 )
170172
171173    def  test_skewnesses (self ):
@@ -175,7 +177,7 @@ def test_skewnesses(self):
175177                   - 0.6969708499033568 , 0.626346013011263 ,
176178                   0.3809987596624038 , 1.4762248835141034 ,
177179                   0.07687661087633726 , 0.36889797830360116 ]
178-         mf  =  self .helpers ["Skewnesses" ](self .X_transformed , self .y )
180+         mf  =  self .helpers ["Skewnesses" ](self .X_transformed , self .y ,  self . logger )
179181        print (mf .value )
180182        print (fixture )
181183        np .testing .assert_allclose (mf .value , fixture )
@@ -188,25 +190,25 @@ def test_kurtosisses(self):
188190                   - 1.1786325509475712 , - 1.2387998382327912 ,
189191                   1.393438264413704 , - 0.9768209837948336 ,
190192                   - 1.7937072296512782 ]
191-         mf  =  self .helpers ["Kurtosisses" ](self .X_transformed , self .y )
193+         mf  =  self .helpers ["Kurtosisses" ](self .X_transformed , self .y ,  self . logger )
192194        np .testing .assert_allclose (mf .value , fixture )
193195
194196    def  test_pca_95percent (self ):
195197        mf  =  self .mf ["PCAFractionOfComponentsFor95PercentVariance" ](
196-             self .X_transformed , self .y )
198+             self .X_transformed , self .y ,  self . logger )
197199        self .assertAlmostEqual (0.7741935483870968 , mf .value )
198200
199201    def  test_pca_kurtosis_first_pc (self ):
200-         mf  =  self .mf ["PCAKurtosisFirstPC" ](self .X_transformed , self .y )
202+         mf  =  self .mf ["PCAKurtosisFirstPC" ](self .X_transformed , self .y ,  self . logger )
201203        self .assertAlmostEqual (- 0.15444516166802469 , mf .value )
202204
203205    def  test_pca_skewness_first_pc (self ):
204-         mf  =  self .mf ["PCASkewnessFirstPC" ](self .X_transformed , self .y )
206+         mf  =  self .mf ["PCASkewnessFirstPC" ](self .X_transformed , self .y ,  self . logger )
205207        self .assertAlmostEqual (0.026514792083623905 , mf .value )
206208
207209    def  test_calculate_all_metafeatures (self ):
208210        mf  =  meta_features .calculate_all_metafeatures (
209-             self .X , self .y , self .categorical , "2" )
211+             self .X , self .y , self .categorical , "2" ,  logger = self . logger )
210212        self .assertEqual (52 , len (mf .metafeature_values ))
211213        sio  =  StringIO ()
212214        mf .dump (sio )
0 commit comments