void ExperimentController::stop(const std::string &errorMessage)
{
    {
        Poco::RWLock::ScopedWriteLock lock(*_machineMutex);

        if (_machineState == IdleMachineState)
            return;

        LidInstance::getInstance()->setEnableMode(false);
        HeatBlockInstance::getInstance()->setEnableMode(false);
        OpticsInstance::getInstance()->setCollectData(false);

        _experiment.setCompletionStatus(Experiment::Failed);
        _experiment.setCompletionMessage(errorMessage);
        _experiment.setCompletedAt(boost::posix_time::microsec_clock::local_time());

        _dbControl->completeExperiment(_experiment);

        _machineState = IdleMachineState;
        _thermalState = IdleThermalState;
        _experiment = Experiment();
    }

    stopLogging();
    _holdStepTimer->stop();
    _meltCurveTimer->stop();
}
Exemple #2
0
void CQExperimentData::slotExperimentAdd()
{
  mShowError = false;

  CExperiment Experiment(mpDataModel);
  CExperiment * pExperiment = mpExperimentSetCopy->addExperiment(Experiment);

  size_t First, Last;
  mpFileInfo->getFirstUnusedSection(First, Last);
  pExperiment->setFirstRow((unsigned C_INT32) First);
  pExperiment->setLastRow((unsigned C_INT32) Last);
  pExperiment->setHeaderRow((unsigned C_INT32) First);
  pExperiment->setFileName(mpFileInfo->getFileName());

  pExperiment->setNumColumns((unsigned C_INT32) pExperiment->guessColumnNumber());
  mpFileInfo->sync();

  mpBoxExperiment->addItem(FROM_UTF8(pExperiment->getObjectName()));
  mpBoxExperiment->setCurrentRow(mpBoxExperiment->count() - 1);

  syncExperiments();
  mpBtnExperimentAdd->setEnabled(mpFileInfo->getFirstUnusedSection(First, Last));

  mShowError = true;
}
void ExperimentController::stop()
{
    MachineState state = IdleMachineState;

    {
        Poco::RWLock::ScopedWriteLock lock(*_machineMutex);

        if (_machineState == IdleMachineState)
            return;
        else if (_machineState == CompleteMachineState && _experiment.protocol()->currentStage()->type() != Stage::Meltcurve)
        {
            //Check if it was infinite hold step
            Stage *stage = _experiment.protocol()->currentStage();
            std::time_t holdTime = stage->currentStep()->holdTime();

            if (stage->autoDelta() && stage->currentCycle() > stage->autoDeltaStartCycle())
            {
                holdTime += stage->currentStep()->deltaDuration() * (stage->currentCycle() - stage->autoDeltaStartCycle());

                if (holdTime < 0)
                    holdTime = 0;
            }

            if (holdTime == 0)
                _dbControl->addFluorescenceData(_experiment, OpticsInstance::getInstance()->getFluorescenceData());
        }

        LidInstance::getInstance()->setEnableMode(false);
        HeatBlockInstance::getInstance()->setEnableMode(false);
        OpticsInstance::getInstance()->setCollectData(false);

        if (_machineState != CompleteMachineState)
        {
            _experiment.setCompletionStatus(Experiment::Aborted);
            _experiment.setCompletedAt(boost::posix_time::microsec_clock::local_time());

            _dbControl->completeExperiment(_experiment);
        }

        state = _machineState;

        _machineState = IdleMachineState;
        _thermalState = IdleThermalState;
        _experiment = Experiment();
    }

    if (state != CompleteMachineState)
    {
        stopLogging();
        _holdStepTimer->stop();
        _meltCurveTimer->stop();
    }
}
Exemple #4
0
#include <kroghmodel_std3param.h>

double KroghModel_std2param::r_cap = 1;
double KroghModel_std2param::r_t = 100;
double KroghModel_std2param::p_cap;
double KroghModel_std2param::m;

double KroghModel_std3param::r_cap = 1;
double KroghModel_std3param::r_t;
double KroghModel_std3param::p_cap;
double KroghModel_std3param::m;

TEST_CASE( "MyExperiment", "[myexperiment]" ) {
    SECTION("Read Data") {        
        string testfile = "271115_dataSetForTestingPurpose_r_t_100_a0_70_a1_0_001_N_33.dat";
        Experiment my = Experiment(testfile);
        REQUIRE(my.countElements("1 2 3") == 3);
        REQUIRE(my.get_n("1") == 1);
        REQUIRE(my.get_n("1 2 3") == 0);
        REQUIRE(my.check_sigma("1 2") == false);
        REQUIRE(my.check_sigma("1 2 3") == true);
    }
}

TEST_CASE( "MyFit2param", "[myfit2param]" ) {
    SECTION("parameters: a") {
        string testfile = "271115_dataSetForTestingPurpose_r_t_100_a0_70_a1_0_001_N_33.dat";
        Experiment myExp = Experiment(testfile);
        Fitsvd myFit = Fitsvd(&KroghModel_std2param::funcs, myExp.x, myExp.y, myExp.sigma, 1e-12);
        myFit.fit();
        double eps = 1e-10;