@@ -76,7 +76,7 @@ def __init__(self, id=None, name=None, version=None, description=None,
7676 logger .debug ("Data pickle file already exists." )
7777 else :
7878 try :
79- data = self ._get_arff ()
79+ data = self ._get_arff (self . format )
8080 except OSError as e :
8181 logger .critical ("Please check that the data file %s is there "
8282 "and can be read." , self .data_file )
@@ -111,7 +111,7 @@ def __eq__(self, other):
111111 else :
112112 return False
113113
114- def _get_arff (self ):
114+ def _get_arff (self , format ):
115115 """Read ARFF file and return decoded arff.
116116
117117 Reads the file referenced in self.data_file.
@@ -135,9 +135,17 @@ def _get_arff(self):
135135 if bits != 64 and os .path .getsize (filename ) > 120000000 :
136136 return NotImplementedError ("File too big" )
137137
138+ if format .lower () == 'arff' :
139+ return_type = arff .DENSE
140+ elif format .lower () == 'sparse_arff' :
141+ return_type = arff .COO
142+ else :
143+ raise ValueError ('Unknown data format %s' % format )
144+
138145 def decode_arff (fh ):
139146 decoder = arff .ArffDecoder ()
140- return decoder .decode (fh , encode_nominal = True )
147+ return decoder .decode (fh , encode_nominal = True ,
148+ return_type = return_type )
141149
142150 if filename [- 3 :] == ".gz" :
143151 with gzip .open (filename ) as fh :
@@ -246,8 +254,15 @@ def _retrieve_class_labels(self):
246254 # Should make a method that only reads the attributes
247255 arffFileName = self .data_file
248256
257+ if self .format .lower () == 'arff' :
258+ return_type = arff .DENSE
259+ elif self .format .lower () == 'sparse_arff' :
260+ return_type = arff .COO
261+ else :
262+ raise ValueError ('Unknown data format %s' % self .format )
263+
249264 with io .open (arffFileName , encoding = 'utf8' ) as fh :
250- arffData = arff .ArffDecoder ().decode (fh )
265+ arffData = arff .ArffDecoder ().decode (fh , return_type = return_type )
251266
252267 dataAttributes = dict (arffData ['attributes' ])
253268 if ('class' in dataAttributes ):
0 commit comments