| 605 | } |
| 606 | |
| 607 | void TOPPASScene::runPipeline() |
| 608 | { |
| 609 | error_occured_ = false; |
| 610 | resume_source_ = nullptr; // we are not resuming, so reset the resume node |
| 611 | |
| 612 | // reset all nodes |
| 613 | for (VertexIterator it = verticesBegin(); it != verticesEnd(); ++it) |
| 614 | { |
| 615 | (*it)->reset(true); |
| 616 | } |
| 617 | update(sceneRect()); |
| 618 | |
| 619 | // check if pipeline OK |
| 620 | if (!sanityCheck_(gui_)) |
| 621 | { |
| 622 | if (!gui_) |
| 623 | { |
| 624 | emit pipelineExecutionFailed(); // the user cannot interact. End processing. |
| 625 | } |
| 626 | return; |
| 627 | } |
| 628 | |
| 629 | // ask for output directory |
| 630 | if (!askForOutputDir(true)) |
| 631 | { |
| 632 | return; |
| 633 | } |
| 634 | |
| 635 | std::vector<bool> runs; |
| 636 | runs.push_back(true); // iterate through dry run and normal run |
| 637 | runs.push_back(false); |
| 638 | |
| 639 | foreach(bool dry_run_state, runs) |
| 640 | { |
| 641 | this->dry_run_ = dry_run_state; |
| 642 | setPipelineRunning(); |
| 643 | |
| 644 | std::cout << "current dry-run state: " << dry_run_state << "\n"; |
| 645 | |
| 646 | // reset all nodes |
| 647 | for (VertexIterator it = verticesBegin(); it != verticesEnd(); ++it) |
| 648 | { |
| 649 | (*it)->reset(true); |
| 650 | } |
| 651 | update(sceneRect()); |
| 652 | |
| 653 | // reset logfile |
| 654 | QFile logfile(out_dir_ + QDir::separator() + "TOPPAS.log"); |
| 655 | if (logfile.exists()) |
| 656 | logfile.remove(); |
| 657 | |
| 658 | // reset processes |
| 659 | topp_processes_queue_.clear(); |
| 660 | |
| 661 | // start at input nodes |
| 662 | for (VertexIterator it = verticesBegin(); it != verticesEnd(); ++it) |
| 663 | { |
| 664 | if (error_occured_) break; // someone raised an error |