void MyEventSender::consume(IConsumer::info consume_info, ssi_size_t stream_in_num, ssi_stream_t stream_in[]) { ssi_real_t *in = ssi_pcast(ssi_real_t, stream_in[0].ptr); ssi_real_t *out = ssi_pcast(ssi_real_t, _event.ptr); ssi_mean(stream_in[0].num, stream_in[0].dim, in, out); _event.time = ssi_cast(ssi_size_t, consume_info.time * 1000); _event.dur = ssi_cast(ssi_size_t, consume_info.dur * 1000); _elistener->update(_event); }
void TupleEventSender::consume (IConsumer::info consume_info, ssi_size_t stream_in_num, ssi_stream_t stream_in[]) { ssi_size_t dim = stream_in[0].dim; ssi_size_t num = stream_in[0].num; ssi_real_t *src = ssi_pcast(ssi_real_t, stream_in[0].ptr); ssi_event_tuple_t *dst = ssi_pcast(ssi_event_tuple_t, _event.ptr); _event.time = ssi_cast (ssi_size_t, 1000 * consume_info.time + 0.5); _event.dur = ssi_cast (ssi_size_t, 1000 * consume_info.dur + 0.5); _event.state = consume_info.status == IConsumer::COMPLETED ? SSI_ESTATE_COMPLETED : SSI_ESTATE_CONTINUED; if (_options.mean) { ssi_real_t *mean = new ssi_real_t[dim]; ssi_mean(num, dim, src, mean); for (ssi_size_t i = 0; i < dim; i++) { dst++->value = mean[i]; } } if (_options.var) { ssi_real_t *var = new ssi_real_t[dim]; ssi_var(num, dim, src, var); for (ssi_size_t i = 0; i < dim; i++) { dst++->value = var[i]; } } if (_options.minval || _options.maxval) { ssi_real_t *minval = new ssi_real_t[dim]; ssi_size_t *minpos = new ssi_size_t[dim]; ssi_real_t *maxval = new ssi_real_t[dim]; ssi_size_t *maxpos = new ssi_size_t[dim]; ssi_minmax(num, dim, src, minval, minpos, maxval, maxpos); if (_options.minval) { for (ssi_size_t i = 0; i < dim; i++) { dst++->value = minval[i]; } } if (_options.maxval) { for (ssi_size_t i = 0; i < dim; i++) { dst++->value = maxval[i]; } } } _listener->update(_event); }
void MapEventSender::consume (IConsumer::info consume_info, ssi_size_t stream_in_num, ssi_stream_t stream_in[]) { ssi_size_t dim = stream_in[0].dim; ssi_size_t num = stream_in[0].num; _event.time = ssi_cast (ssi_size_t, 1000 * consume_info.time + 0.5); _event.dur = ssi_cast (ssi_size_t, 1000 * consume_info.dur + 0.5); _event.state = consume_info.status == IConsumer::COMPLETED ? SSI_ESTATE_COMPLETED : SSI_ESTATE_CONTINUED; if (_options.mean) { ssi_real_t *src = ssi_pcast(ssi_real_t, stream_in[0].ptr); ssi_event_map_t *dst = ssi_pcast(ssi_event_map_t, _event.ptr); ssi_real_t *mean = new ssi_real_t[dim]; ssi_mean(num, dim, src, mean); for (ssi_size_t i = 0; i < dim; i++) { dst++->value = mean[i]; } if (_listener) { _listener->update(_event); } delete[] mean; } else { ssi_real_t *src = ssi_pcast(ssi_real_t, stream_in[0].ptr); ssi_event_map_t *dst = ssi_pcast(ssi_event_map_t, _event.ptr); for (ssi_size_t i = 0; i < num; i++) { for (ssi_size_t j = 0; j < dim; j++) { dst++->value = *src++; } if (_listener) { _listener->update(_event); } } } }
bool ISNorm::setNorm (ssi_size_t index, Params ¶ms) { if (index >= _n_streams) { ssi_wrn("index exceeds #streams (%u != %u)", index, _n_streams); return false; } if (params.inialized && params.n_features != _n_features[index]) { ssi_wrn("precomputed parameters are bad #features (%u != %u)", params.n_features, _n_features[index]); return false; } _params[index] = ¶ms; if (!params.inialized) { InitParams(params, _n_features[index]); if (params.method != METHOD::NONE) { ssi_real_t **matrix; ssi_size_t *classes; ModelTools::CreateSampleMatrix(_samples, index, _n_samples, params.n_features, &classes, &matrix); switch (params.method) { case METHOD::SCALE: { ssi_minmax(_n_samples, params.n_features, matrix[0], params.mins, params.maxs); ssi_real_t *aptr = params.mins; ssi_real_t *bptr = params.maxs; for (ssi_size_t j = 0; j < params.n_features; j++) { *bptr -= *aptr++; if (*bptr == 0.0f) { ssi_wrn("zero interval '%u'", j); *bptr = 1.0f; } bptr++; } break; } case METHOD::ZSCORE: { ssi_mean(_n_samples, params.n_features, matrix[0], params.mean); ssi_stdv(_n_samples, params.n_features, matrix[0], params.stdv); ssi_real_t *bptr = params.stdv; for (ssi_size_t j = 0; j < params.n_features; j++) { *bptr = sqrt(*bptr); if (*bptr == 0.0f) { ssi_wrn("zero stdv '%u'", j); *bptr = 1.0f; } bptr++; } break; } } ModelTools::ReleaseSampleMatrix(_n_samples, classes, matrix); } params.inialized = true; } return true; }