Skip to content

Commit 2f88ec0

Browse files
committed
Correctly handle multi-channel data and labels
1 parent 89456dc commit 2f88ec0

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

cesium_app/handlers/feature.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,45 @@ def delete(self, featureset_id):
140140
def put(self, featureset_id):
141141
f = Featureset.get_if_owned_by(featureset_id, self.current_user)
142142
self.error("Functionality for this endpoint is not yet implemented.")
143+
144+
145+
class PrecomputedFeaturesHandler(BaseHandler):
146+
@auth_or_token
147+
def post(self):
148+
data = self.get_json()
149+
if data['datasetID'] not in [None, 'None']:
150+
dataset = Dataset.query.filter(Dataset.id == data['datasetID']).one()
151+
else:
152+
dataset = None
153+
current_project = Project.get_if_owned_by(data['projectID'],
154+
self.current_user)
155+
feature_data = StringIO(data['dataFile']['body'])
156+
fset = pd.read_csv(feature_data, index_col=0, header=[0, 1])
157+
if 'labels' in fset:
158+
labels = fset.pop('labels').values.ravel()
159+
if labels.dtype == 'O':
160+
labels = [str(label) for label in labels]
161+
else:
162+
labels = [None]
163+
fset_path = pjoin(
164+
self.cfg['paths:features_folder'],
165+
'{}_{}.npz'.format(uuid.uuid4(), data['dataFile']['name']))
166+
167+
featurize.save_featureset(fset, fset_path, labels=labels)
168+
169+
# Meta-features will have channel values of an empty string or a string
170+
# beginning with 'Unnamed:'
171+
features_list = [el[0] for el in fset.columns.tolist() if
172+
(el[1] != '' and not el[1].startswith('Unnamed:'))]
173+
174+
featureset = Featureset(name=data['featuresetName'],
175+
file_uri=fset_path,
176+
project=current_project,
177+
dataset=dataset,
178+
features_list=features_list,
179+
finished=datetime.datetime.now(),
180+
custom_features_script=None)
181+
DBSession().add(featureset)
182+
DBSession().commit()
183+
184+
self.success(featureset, 'cesium/FETCH_FEATURESETS')

0 commit comments

Comments
 (0)