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(); }
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(); } }
#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;