qubx_idealize.h.html mathcode2html   
 Source file:   qubx_idealize.h
 Converted:   Wed Mar 19 2014 at 13:51:29
 This documentation file will not reflect any later changes in the source file.

$$\phantom{******** If you see this on the webpage then the browser could not locate *********}$$
$$\phantom{******** jsMath/easy/load.js or the variable root is set wrong in this file *********}$$
$$\newcommand{\vector}[1]{\left[\begin{array}{c} #1 \end{array}\right]}$$ $$\newenvironment{matrix}{\left[\begin{array}{cccccccccc}} {\end{array}\right]}$$ $$\newcommand{\A}{{\cal A}}$$ $$\newcommand{\W}{{\cal W}}$$

/* Copyright 2008-2011 Research Foundation State University of New York   */

/* This file is part of QUB Express.                                      */

/* QUB Express is free software; you can redistribute it and/or modify    */
/* it under the terms of the GNU General Public License as published by   */
/* the Free Software Foundation, either version 3 of the License, or      */
/* (at your option) any later version.                                    */

/* QUB Express is distributed in the hope that it will be useful,         */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of         */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          */
/* GNU General Public License for more details.                           */

/* You should have received a copy of the GNU General Public License,     */
/* named LICENSE.txt, in the QUB Express program directory.  If not, see  */
/* <http://www.gnu.org/licenses/>.                                        */

#ifndef QUBX_IDEALIZE_H
#define QUBX_IDEALIZE_H

#include "maxill.h"
#include "../qubfast/qubx_model.h"
#include "callbk_reportfun.h"

#ifdef __cplusplus
extern "C" {
#endif

// opaque type qubx_idlz_data = (void *):
//   stores data (or excluded -- no data) and stimulus idealization
MAXILL_API void* qubx_idlz_data_create(double sampling, int Nstimsig, int data_cap);
MAXILL_API void qubx_idlz_data_reset(void *data, double sampling, int Nstimsig, int data_cap);
MAXILL_API void qubx_idlz_data_free(void *data);
MAXILL_API int qubx_idlz_data_append_segment(void *data, int first);
MAXILL_API void qubx_idlz_data_append_chunk(void *data, int seg_ix, int Nd, float *I,
					    int *dwellCounts, int **classeses, float **durationses, double **ampses);
MAXILL_API double* qubx_idlz_data_get_stimclasses(void *data, int *Nstimclass);
// returns double[Nstimclass * Nsignal], Nsignal = Nstimsig + 1;
MAXILL_API double* qubx_idlz_data_get_stimclass_frac(void *data); // after get_stimclasses
// returns double[Nstimclass]; weight of each stimclass; sums to 1.0; valid after calling get_stimclasses()

MAXILL_API int qubx_idlz_data_get_dwellcount(void *data, int iseg, int *ncls);
MAXILL_API void qubx_idlz_data_get_dwells(void *data, int iseg, int *ff, int *ll, int *cc, double *aa, double *ss);

MAXILL_API int qubx_idlz_data_get_baseline(void *data, int iseg, int offset, int count, float *baseline);


MAXILL_API int qubx_idlz_halfamp(qubx_model *model, void *data, qubx_stim_amps *ampm);
MAXILL_API int qubx_idlz_skm(qubx_model *model, void *data,
			     qubx_stim_amps *ampm, qubx_stim_rates *ratesm, double resolution, int method,
			     int reest_amps, int reest_rates, int track_baseline, double baseline_std,
			     double *ll);


#ifdef __cplusplus
}
#endif

#endif