示例#1
0
文件: main.c 项目: JuarezASF/Code
int main(){
	
	double dt = 0.1;
	double *time;
	double t_start, t_end;
	int time_steps, Nsamples;
	Matrix *xSaved, *zSaved;
	double z;

	t_start = 0;
	t_end = 10;
	time_steps =(int)((double)(t_end - t_start)/dt + 0.5);
	//arredonda para cima o resultado da divisão

	time = (double *)aloca(time_steps*sizeof(double));

	int i;
	for(i = 0; i < time_steps; i++){
		time[i] = i*dt;
	}

	Nsamples = time_steps;
	
	xSaved = new_M(Nsamples, 3);
	zSaved = new_M(Nsamples, 2);


	for(i = 0; i < Nsamples; i++)
	{
		z = getVel();
		Matrix *X = NULL;
		X = intKalman(z);
		xSaved->a[i][0] = time[i];
		xSaved->a[i][1] = X->a[0][0];
		xSaved->a[i][2] = X->a[1][0];

		zSaved->a[i][0] = time[i];
		zSaved->a[i][1] = z;
		kill_M(&X);
	}

	const char fileX[] = "../data/X.dat";
	const char fileZ[] = "../data/Z.dat";

	MatrixPrint2File(xSaved, fileX);
	MatrixPrint2File(zSaved, fileZ);

	kill_M(&xSaved);
	kill_M(&zSaved);
	libera(time);
	KalmanFilter_End();
	EndProgram();

	reportGood("O programa chegou ao fim!");


	return(0);
	
	}
示例#2
0
文件: widget.cpp 项目: JuarezASF/Code
void Widget::on_pushButton_2_clicked()
{
    CONTROL_RECORDING = true;

    toRecord_instantDetectionToRecord.clear();
    toRecord_instantKalmandEstimation.clear();

    for(unsigned int i = 0; i < number_of_objects; i++){
        toRecord_instantDetectionToRecord.push_back(vector<QVector3D>());
        toRecord_instantKalmandEstimation.push_back(vector<QVector3D>());
    }

    reportGood("Vamos começar a gravar!");
}
示例#3
0
void doGoodBad(struct cdnaInfo *ciList)
{
struct cdnaInfo *ci;
int goodCount = 0;
int badCount = 0;
int poorCount = 0;
struct fineAli *fa;
int bestScore;

for (ci=ciList; ci!=NULL; ci = ci->next)
    {
    if (ci->isDupe)
        continue;
    if (ci->fineAli == NULL)
        {
        reportBad("%s score %d\n", ci->name, 0);
        if (ci->roughScore > 32 && ci->roughScore >  ci->baseCount/8)
            addRedoHash(ci, "dropped");
        ++badCount;
        continue;
        }
    bestScore = ci->fineScore;
    if (bestScore < ci->baseCount/2)
        {
        fa = ci->fineAli;
        reportBad("%s score %f at chromosome %s:%ld-%ld gene %s\n", ci->name, (double)bestScore / (double)ci->baseCount,
            chromNames[fa->chromIx], fa->hStart, fa->hEnd, fa->geneName);
        addRedoHash(ci, "poor");
        ++poorCount;
        continue;
        }
    reportGood("cDNA %s size %d %s\n", 
        ci->name, ci->baseCount, (ci->isEmbryonic ? "embryo" : "unknown"));
    for(fa = ci->fineAli;fa!=NULL; fa = fa->next)
        {
        if (fa->isDupe)
            continue;
        if (fa->score >= bestScore)
            {
            char *chromName = chromNames[fa->chromIx];
            struct ffAli *ali, *lastAli = NULL;

            fa->isGood = TRUE;
            reportGood("\tscore %f chromosome %s strand %c %c gene %s\n",
                (double)fa->score / (double)ci->baseCount, chromName, 
                (fa->isRc ? '-' : '+'), (fa->isBackwards ? '-' : '+'), fa->geneName);
            for (ali=fa->blocks; ali != NULL; ali = ali->right)
                {
                reportGood("\t\t%3d %3d | %d %d size %3d goodEnds %2d %2d", 
                    ali->nStart - fa->virtNeedle, ali->nEnd - fa->virtNeedle,
                    ali->hStart - fa->virtHaystack, ali->hEnd - fa->virtHaystack,
                    ali->nEnd - ali->nStart, ali->startGood, ali->endGood);
                if (lastAli != NULL)
                    reportGood(" gap %d | %d", 
                        ali->nStart - lastAli->nEnd, ali->hStart - lastAli->hEnd);
                reportGood("\n");
                lastAli = ali;
                }
            }
        }
    ++goodCount;
    }
printf("%d Good %d Poor %d Bad\n", goodCount, poorCount, badCount);
}
示例#4
0
文件: widget.cpp 项目: JuarezASF/Code
void Widget::recordEnd(){
    CONTROL_RECORDING = false;
    frames_imprimidos = 0;
    frame_control = 0;
    imageCounter = 0;
    iteration_recording = 0; //reseta para a próxima gravação

    //salva dados dos futuros instantêneos

    //arruma os dados: temos para cada instante i, os pontos do futuro para as n partículas
    //queremos ter para cada uma das n partículas, todos os futuros

    vector<vector<QVector3D> > instantFuturePorObjeto;
    unsigned int n_de_objetos = instantFutureToRecord[0].size();

    //instantFutureToRecord[0].size() = n de objetos no instante 0 = n de objetos em qualquer instante
    for(unsigned int n = 0; n < n_de_objetos; n++)
        {//para todas as partículas, ler todos os instantes
        vector<QVector3D> objeto;
        for(unsigned int i = 0; i < instantFutureToRecord.size(); i++)//para cada instante
            for(unsigned int j = 0; j < instantFutureToRecord[i][n].size(); j++)//para cada instante previsto do futuro de um instante
                objeto.push_back(instantFutureToRecord[i][n][j]);
        instantFuturePorObjeto.push_back(objeto);
        }

    for(unsigned int n = 0; n < instantFuturePorObjeto.size(); n++){
        //para cada objeto
        QString file_name = QString(file_instanteFutureRecorded.c_str()) + "_" + QString::number(n) + ".data";
        QFile file(file_name);
        file.open(QIODevice::WriteOnly | QIODevice::Text);
        QTextStream out(&file);
        out << "# Dados do futuro instantaneo para o objeto " << n << "\n";
        out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n";
        out << "#data: " << QDate::currentDate().toString() << "\n";
        for(unsigned int i = 0; i < instantFuturePorObjeto[n].size(); i++){
            out << instantFuturePorObjeto[n][i].x() << "\t";
            out << instantFuturePorObjeto[n][i].y() << "\t";
            out << instantFuturePorObjeto[n][i].z() << "\n";
        }

        file.close();
    }

    //salva centros detectados
    for(unsigned int n = 0; n < number_of_objects; n++){
        //para cada objeto
        QString file_name = QString(file_centers.c_str()) + QString::number(n) + ".data";
        QFile file(file_name);
        file.open(QIODevice::WriteOnly | QIODevice::Text);
        QTextStream out(&file);
        out << "# Dados do instante tomado e centro detectado(x,y) para o objeto " << n << "\n";
        out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n";
        out << "#data: " << QDate::currentDate().toString() << "\n";
        for(unsigned int i = 0; i < toRecord_instantDetectionToRecord[n].size(); i++){
            out << toRecord_instantDetectionToRecord[n][i].x() << "\t";
            out << toRecord_instantDetectionToRecord[n][i].y() << "\t";
            out << toRecord_instantDetectionToRecord[n][i].z() << "\n";
        }

        file.close();
    }


    //salva centros estimados
    for(unsigned int n = 0; n < number_of_objects; n++){
        //para cada objeto
        QString file_name = QString(file_centers.c_str()) + "_kalman_" + QString::number(n) + ".data";
        QFile file(file_name);
        file.open(QIODevice::WriteOnly | QIODevice::Text);
        QTextStream out(&file);
        out << "# Dados do instante tomado e centro kalman estimado (x,y) para o objeto " << n << "\n";
        out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n";
        out << "#data: " << QDate::currentDate().toString() << "\n";
        for(unsigned int i = 0; i < toRecord_instantKalmandEstimation[n].size(); i++){
            out << toRecord_instantKalmandEstimation[n][i].x() << "\t";
            out << toRecord_instantKalmandEstimation[n][i].y() << "\t";
            out << toRecord_instantKalmandEstimation[n][i].z() << "\n";
        }

        file.close();
    }

    //salva centro de colisões
    {
        //para cada objeto
        QString file_name = QString(file_colisions.c_str());
        QFile file(file_name);
        file.open(QIODevice::WriteOnly | QIODevice::Text);
        QTextStream out(&file);
        out << "# Dados do instante tomado e pontos de colisões " <<"\n";
        out << "#Gerado por OracleKalman by JuarezASF UnB110032829 \n";
        out << "#data: " << QDate::currentDate().toString() << "\n";
        for(unsigned int i = 0; i < toRecord_colisionsPoints.size(); i++){
            out << toRecord_colisionsPoints[i].x() << "\t";
            out << toRecord_colisionsPoints[i].y() << "\t";
            out << toRecord_colisionsPoints[i].z() << "\n";

         }
        file.close();
    }


    //reseta para a próxima gravação
    instantFutureToRecord.clear();
    toRecord_colisionsPoints.clear();

    reportGood("Terminamos de Gravar");
}