qub_simulate.h.html mathcode2html   
 Source file:   qub_simulate.h
 Converted:   Sun Aug 7 2016 at 13:45:52
 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 QUB_SIMULATE_H
#define QUB_SIMULATE_H

#include "qubfast.h"

#ifdef __cplusplus
extern "C" {
#endif

QUBFAST_API int    qub_simulate2(double sampling, int nchannel, int nstate, int *start_states, double *P0,
				 double *K0, double *K1, int *L, int *V, 
				 double base_amp, double base_std, double *exc_amp, double *exc_std,
				 int *clazz, double *vRev,
				 int nsample, int nstimulus, int *stim_counts, float **stimuli,
				 int v_signal,
				 float *samples, int *states, int *counts,
				 int seed, StatusCallback pctCB, void *pctObj);

QUBFAST_API int    qub_simulate(double sampling, int nchannel, int nstate, int *start_states, double *P0,
				double *K0, double *K1, int *L, int *V, 
				double base_amp, double base_std, double *exc_amp, double *exc_std,
				int nsample, int nstimulus, int *stim_counts, float **stimuli,
				float *samples, int *states, int *counts,
				StatusCallback pctCB, void *pctObj);
/*
Simulates sampled and state-idealized HMM data and returns the number of dwells written into states and counts.

    @param sampling: interval between samples, in seconds
    @param nchannel: number of identical mechanisms' responses to sum together
    @param nstate: number of model states (vertices)
    @param start_states: array[nstate] of entry state indices, or -1 to pick fresh.  On output, contains exit states.
    @param P0: array[Nstate] of entry probabilities, or NULL
    @param K0: row-major matrix, nstate x nstate; element (i,j) is the pre-exponential rate constant between states i and j
    @param K1: row-major matrix, nstate x nstate; element (i,j) is the exponential rate constant between states i and j
    @param L:  row-major matrix, nstate x nstate; element (i,j) is the pre-exponential stimulus index, or 0
    @param V:  row-major matrix, nstate x nstate; element (i,j) is the exponential stimulus index, or 0
    @param base_amp: constant baseline offset, amplitude of closed (class 0, black)
    @param base_std: baseline std; instrument rather than channel noise
    @param exc_amp: array[Nstate] of (state amp) - base_amp
    @param exc_std: array[Nstate] of sqrt((state std)**2 - base_std**2)
    @param clazz: class index of each state
    @param vRev: reversal potential, in mV, of each state; or NULL if (! v_signal)
    @param nsample: number of data points to return in samples
    @param nstimulus: number of stimulus signals, plus signal 0 which is ignored (so at least 1)
    @param stim_counts: number of datapoints in each signal; -1 if it's constant
    @param stimuli: array[max(1,stim_counts[i])] of datapoints for each signal
    @param v_signal: index of Voltage signal, if exc_amp is to be scaled by 1e-3*(Voltage-vRev)
    @param samples: output array[nsample] for data points
    @param states: output array[nsample] for idealized state index of each dwell
    @param counts: output array[nsample] for number of samples in each dwell
    @param seed: random seed; should be different each invocation
    @param pctCB: callback pctCB(pctObj, complete), 0.0 <= complete <= 1.0; Return nonzero to stop the simulation.
    @param pctObj: data pointer for the callback function, or NULL
  
 */


#ifdef __cplusplus
}
#endif

#endif