Пример #1
0
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);
}
Пример #2
0
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);

}
Пример #3
0
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);
			}
		}
	}
}
Пример #4
0
bool ISNorm::setNorm (ssi_size_t index,
	Params &params) {

	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] = &params;	
	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;
}