diff --git a/BUILDING.md b/BUILDING.md index 341b8fa..11ebda4 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -4,6 +4,8 @@ Assuming: - You have no previous dependency installed + +This guide will go through each of these dependencies: - ActiveHarmony [4.6.0](http://www.dyninst.org/sites/default/files/downloads/harmony/ah-4.6.0.tar.gz) - OpenCV [2.4.9](http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download) - InsightToolkit [4.11.0](https://sourceforge.net/projects/itk/files/itk/4.11/InsightToolkit-4.11.0.tar.gz/download) @@ -67,7 +69,7 @@ inside `/opencv` folder unzip opencv-2.4.9.zip cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ../opencv-2.4.9/ -make +make -j$(nproc) sudo make install ``` @@ -89,12 +91,13 @@ on the interface - press `t` to toggle advanced mode - turn on `BUILD_SHARED_LIBS` - turn on `MODULE_ITKVideoBridgeOpenCV` +- turn on `Module_ITKReview` - press `c` to configure - press `g` to generate then build ``` -make +make -j$(nproc) ``` ## Installing Nscale @@ -121,13 +124,18 @@ on the interface then build ``` -make +make -j$(nproc) ``` NOTE: it may give errors of vars `NSCALE_VERSION_MAJOR` and `NSCALE_VERSION_MINOR`, press `e` to continue and ignore. ## Installing Yi's library +prerequisite +``` +sudo apt install libopenslide-dev +sudo ln -s /usr/lib/x86_64-linux-gnu/libopenslide.so /usr/lib/libopenslide.so +``` inside `/workspace` folder ``` cp project/region-templates/runtime/regiontemplates/external-src/yi-src-multi.tar.gz ./libs/yi/ @@ -147,15 +155,16 @@ on the interface - press `c` to configure - press `e` to ignore errors and continue - fill `ITK_DIR` to your `ITK` installation -- turn off `build_mainTileAndSegmentWSINuclei` +- turn on `build_mainTileAndSegmentWSINuclei` - press `c` to configure +- fill `OpenSlide_INSTALLATION_PATH` with only `/usr` - turn on `build_mainSegmentSmallImage` - press `c` to configure - press `g` to generate then build ``` -make +make -j$(nproc) ``` ## Installing Active Harmony @@ -232,5 +241,5 @@ on the interface then build ``` -make +make -j$(nproc) ``` diff --git a/runtime/Argument.cpp b/runtime/Argument.cpp index 5f4488e..251b163 100644 --- a/runtime/Argument.cpp +++ b/runtime/Argument.cpp @@ -8,25 +8,126 @@ #include "Argument.h" #include -ArgumentBase::ArgumentBase(int type) { +ArgumentBase::ArgumentBase(int type) : io(ArgumentBase::input), parent(0) { this->type=type; } +void ArgumentBase::setName(std::string name) { + this->name = name; +} + +std::string ArgumentBase::getName(void) const { + return name; +} + +int ArgumentBase::getId() { + return id; +} + +void ArgumentBase::setId(int id) { + this->id = id; +} + +ArgumentBase::io_type ArgumentBase::getIo() { + return io; +} + +void ArgumentBase::setIo(io_type io) { + this->io = io; +} + +int ArgumentBase::getParent() { + return parent; +} + +void ArgumentBase::setParent(int parent) { + this->parent = parent; +} + int ArgumentBase::size() -{ - return (sizeof(int)); +{ + // starts with the size of the type + int arg_size = sizeof(int); + + // used to store the id + arg_size+=sizeof(int); + + // used to store the io type + arg_size+=sizeof(io_type); + + // used to store the size of the name stored + arg_size+=sizeof(int); + + // the actual size of the name + arg_size+=sizeof(char) * this->name.size(); + + return arg_size; } int ArgumentBase::serialize(char *buff) { + // add type value + int serialized_bytes = sizeof(int); ((int*)buff)[0] = this->getType(); - return ArgumentBase::size(); + + // add id value + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes += sizeof(int); + + // add io value + io_type io = this->getIo(); + memcpy(buff+serialized_bytes, &io, sizeof(io_type)); + serialized_bytes += sizeof(io_type); + + // pack the size of the name + int string_size = this->name.size(); + memcpy(buff+serialized_bytes, &string_size, sizeof(int)); + serialized_bytes+=sizeof(int); + + // serialize the name itself + memcpy(buff+serialized_bytes, this->name.c_str(), this->name.size()*sizeof(char)); + serialized_bytes+=this->name.size()*sizeof(char); + + return serialized_bytes; } int ArgumentBase::deserialize(char *buff) { + // get type this->setType(((int*)buff)[0]); - return ArgumentBase::size(); + int deserialized_bytes = sizeof(int); + + // get id + int id; + memcpy(&id, buff+deserialized_bytes, sizeof(int)); + deserialized_bytes+= sizeof(int); + this->setId(id); + + // get io + io_type io; + memcpy(&io, buff+deserialized_bytes, sizeof(io_type)); + deserialized_bytes+= sizeof(io_type); + this->setIo(io); + + // get Size of the name + int string_size; + memcpy(&string_size, buff+deserialized_bytes, sizeof(int)); + deserialized_bytes+= sizeof(int); + + // create string to extract data from memory buffer + char string_value[string_size+1]; + string_value[string_size] = '\0'; + + // copy name string from message buffer to local variable holding string terminator + memcpy(string_value, buff+deserialized_bytes, sizeof(char)*string_size); + deserialized_bytes+=sizeof(char)*string_size; + + // init argument value from string extracted + this->setName(string_value); + + // return total number of bytes extracted from message + return deserialized_bytes; } void ArgumentBase::setType(int type) @@ -108,7 +209,7 @@ ArgumentBase* ArgumentString::clone() { char *buff = new char[size]; this->serialize(buff); retValue->deserialize(buff); - delete buff; + delete[] buff; return retValue; } @@ -193,7 +294,7 @@ ArgumentBase* ArgumentInt::clone() { char *buff = new char[size]; this->serialize(buff); retValue->deserialize(buff); - delete buff; + delete[] buff; return retValue; } @@ -262,7 +363,7 @@ ArgumentBase* ArgumentFloat::clone() { char *buff = new char[size]; this->serialize(buff); retValue->deserialize(buff); - delete buff; + delete[] buff; return retValue; } @@ -368,7 +469,7 @@ ArgumentBase* ArgumentFloatArray::clone() { char *buff = new char[size]; this->serialize(buff); retValue->deserialize(buff); - delete buff; + delete[] buff; return retValue; } @@ -386,21 +487,19 @@ std::string ArgumentFloatArray::toString() { return out; } -ArgumentRT::ArgumentRT() : path(""), ArgumentBase(ArgumentBase::RT){} +ArgumentRT::ArgumentRT() : path(""), isFileInput(false), ArgumentBase(ArgumentBase::RT){} -ArgumentRT::ArgumentRT(std::string path) : ArgumentBase(ArgumentBase::RT) { - this->setArgValue(path); -} +ArgumentRT::ArgumentRT(std::string path) : path(path), isFileInput(false), ArgumentBase(ArgumentBase::RT){} ArgumentRT::~ArgumentRT() {} std::string ArgumentRT::getArgValue() const { - return path; + return name; } -void ArgumentRT::setArgValue(std::string path) { - this->path = path; +void ArgumentRT::setArgValue(std::string name) { + this->name = name; } int ArgumentRT::serialize(char *buff) { @@ -418,6 +517,10 @@ int ArgumentRT::serialize(char *buff) { memcpy(buff+serialized_bytes, this->getArgValue().c_str(), this->getArgValue().size()*sizeof(char)); serialized_bytes+=this->getArgValue().size()*sizeof(char); + // pack the isFileInput var + memcpy(buff+serialized_bytes, &isFileInput, sizeof(bool)); + serialized_bytes+=sizeof(bool); + return serialized_bytes; } @@ -431,6 +534,9 @@ int ArgumentRT::size() { // the actual size of the string arg_size+=sizeof(char) * this->getArgValue().size(); + // the size of the bool + arg_size+=sizeof(bool); + return arg_size; } @@ -440,7 +546,7 @@ ArgumentBase* ArgumentRT::clone() { char *buff = new char[size]; this->serialize(buff); retValue->deserialize(buff); - delete buff; + delete[] buff; return retValue; } @@ -462,6 +568,10 @@ int ArgumentRT::deserialize(char *buff) { memcpy(string_value, buff+deserialized_bytes, sizeof(char)*string_size); deserialized_bytes+=sizeof(char)*string_size; + // get the isFileInput variable + memcpy(&isFileInput, buff+deserialized_bytes, sizeof(bool)); + deserialized_bytes+=sizeof(bool); + // init argument value from string extracted this->setArgValue(string_value); diff --git a/runtime/Argument.h b/runtime/Argument.h index 42dcfc7..02ad031 100644 --- a/runtime/Argument.h +++ b/runtime/Argument.h @@ -18,12 +18,15 @@ class ArgumentBase { protected: int type; std::string name; - - // this field is used only on workflow generation int id; + // this fields are used only on workflow generation + int parent; + public: - ArgumentBase(){}; + enum io_type {input, output}; + + ArgumentBase() : io(ArgumentBase::input) {}; ArgumentBase(int type); virtual ~ArgumentBase(); @@ -36,11 +39,17 @@ class ArgumentBase { int getType() const; void setType(int type); - void setName(std::string name) {this->name = name;}; - std::string getName(void) const {return name;}; + void setName(std::string name); + std::string getName(void) const; + + int getId(); + void setId(int id); + + io_type getIo(); + void setIo(io_type io); - int getId() {return id;}; - void setId(int id) {this->id = id;}; + int getParent(); + void setParent(int parent); virtual std::string toString() = 0; @@ -55,6 +64,13 @@ class ArgumentBase { static const int RT = 5; static const int FLOAT_ARRAY = 8; + +private: + // this field is here only because forward enum declaraion isn't allowed before c++0x + // otherwise, it would be below id. + // this is necessary since io_type must be a public type + io_type io; + }; class ArgumentString: public ArgumentBase{ @@ -146,6 +162,8 @@ class ArgumentRT: public ArgumentBase{ std::string toString() {return path;}; + bool isFileInput; + int size(); int serialize(char *buff); int deserialize(char *buff); diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index 5aea54e..4cf236d 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -1,10 +1,13 @@ cmake_minimum_required(VERSION 2.6) project(Runtime) + # The version number set(Runtime_VERSION_MAJOR 1) set(Runtime_VERSION_MINOR 0) +add_definitions( -ggdb -gdwarf-2 ) + IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." @@ -40,7 +43,7 @@ else(USE_CUDA) endif(USE_CUDA) # Source files used by the Runtime System -set( libsyssrcs SysEnv.cpp Worker.cpp Manager.cpp Argument.cpp PipelineComponentBase.cpp CallBackComponentExecution.cpp ./util/Util.cpp ./util/DataPack.cpp ) +set( libsyssrcs SysEnv.cpp Worker.cpp Manager.cpp Argument.cpp PipelineComponentBase.cpp CallBackComponentExecution.cpp ./util/Util.cpp ./util/DataPack.cpp ReusableTask.cpp ) set( libname runtimesystem ) diff --git a/runtime/Manager.cpp b/runtime/Manager.cpp index 02d4baa..d8e32cf 100644 --- a/runtime/Manager.cpp +++ b/runtime/Manager.cpp @@ -228,7 +228,13 @@ void Manager::manager_process() std::cout << __FILE__ << ":" << __LINE__ << ". TasksToExecute="<getSize() != 0 || this->componentDependencies->getCountTasksPending() != 0 || this->getActiveComponentsSize()) { + while (true) { + + long long t_0 = Util::ClockGetTime(); + + if (componentsToExecute->getSize() != 0 || this->componentDependencies->getCountTasksPending() != 0 || this->getActiveComponentsSize()){} + else + break; if (comm_world.Iprobe(MPI_ANY_SOURCE, MessageTag::TAG_CONTROL, status)) { @@ -242,11 +248,15 @@ void Manager::manager_process() char *msg = new char[input_message_size]; + long long t_probe = Util::ClockGetTime(); + // Read the comm_world.Recv(msg, input_message_size, MPI::CHAR, worker_id, MessageTag::TAG_CONTROL); // printf("manager received request from worker %d\n",worker_id); msg_type = msg[0]; + long long t_recv = Util::ClockGetTime(); + switch(msg_type){ case MessageTag::WORKER_READY: { @@ -266,11 +276,17 @@ void Manager::manager_process() } } } + + long long t_data_aware = Util::ClockGetTime(); + // if data reuse is not enabled or did not find a component to reuse data, try to get any. if(compToExecute == NULL){ // select next component instantiation should be dispatched for execution compToExecute = (PipelineComponentBase*)componentsToExecute->getTask(); } + + long long t_get_task = Util::ClockGetTime(); + // tell worker that manager is ready comm_world.Send(&MessageTag::MANAGER_READY, 1, MPI::CHAR, worker_id, MessageTag::TAG_CONTROL); @@ -279,6 +295,24 @@ void Manager::manager_process() this->insertActiveComponent(compToExecute); + long long t_end = Util::ClockGetTime(); + + std::stringstream t_0_ss; + t_0_ss << t_0; + std::stringstream t_probe_ss; + t_probe_ss << t_probe; + std::stringstream t_recv_ss; + t_recv_ss << t_recv; + std::stringstream t_data_aware_ss; + t_data_aware_ss << t_data_aware; + std::stringstream t_get_task_ss; + t_get_task_ss << t_get_task; + std::stringstream t_end_ss; + t_end_ss << t_end; + + // std::cout << "[MANAGER_PROFILER] " << t_0_ss.str() << " " << t_probe_ss.str() << " " << t_recv_ss.str() << " " + // << t_data_aware_ss.str() << " " << t_get_task_ss.str() << " " << t_end_ss.str() << std::endl; + }else{ // tell worker that manager queue is empty. Nothing else to do at this moment. Should ask again. comm_world.Send(&MessageTag::MANAGER_WORK_QUEUE_EMPTY, 1, MPI::CHAR, worker_id, MessageTag::TAG_CONTROL); @@ -286,7 +320,10 @@ void Manager::manager_process() break; } case MessageTag::WORKER_TASKS_COMPLETED: - { + { + + long long t_switch = Util::ClockGetTime(); + std::vector components; // Pointer to the message area where the information about the tasks is stored @@ -317,6 +354,8 @@ void Manager::manager_process() #endif extracted_size_bytes += sizeof(int); + long long t_extract = Util::ClockGetTime(); + //int extracted_size_bytes = sizeof(char) + sizeof(int) + number_components_completed * sizeof(int) + sizeof(int); //#ifdef WITH_RT @@ -339,6 +378,8 @@ void Manager::manager_process() components.push_back(rtComp); } + long long t_rt = Util::ClockGetTime(); + // Do the magic and update the region templates // for each component received for(int i = 0; i < components.size(); i++){ @@ -358,6 +399,8 @@ void Manager::manager_process() delete rtComp; } // END RT components only code section + + long long t_delete = Util::ClockGetTime(); //#endif extracted_size_bytes = sizeof(char) + sizeof(int); @@ -428,6 +471,29 @@ void Manager::manager_process() } } + long long t_end = Util::ClockGetTime(); + + std::stringstream t_0_ss; + t_0_ss << t_0; + std::stringstream t_probe_ss; + t_probe_ss << t_probe; + std::stringstream t_recv_ss; + t_recv_ss << t_recv; + std::stringstream t_switch_ss; + t_switch_ss << t_switch; + std::stringstream t_extract_ss; + t_extract_ss << t_extract; + std::stringstream t_rt_ss; + t_rt_ss << t_rt; + std::stringstream t_delete_ss; + t_delete_ss << t_delete; + std::stringstream t_end_ss; + t_end_ss << t_end; + + std::cout << "[MANAGER_PROFILER] " << t_0_ss.str() << " " << t_probe_ss.str() << " " << t_recv_ss.str() << " " + << t_switch_ss.str() << " " << t_extract_ss.str() << " " << t_rt_ss.str() << " " << t_delete_ss.str() << " " + << t_end_ss.str() << std::endl; + break; } default: diff --git a/runtime/Manager.h b/runtime/Manager.h index 6cdf723..5a3a8e1 100644 --- a/runtime/Manager.h +++ b/runtime/Manager.h @@ -14,10 +14,14 @@ #include #include +#include +#include + #include "MessageTag.h" #include "DataPack.h" #include "PipelineComponentBase.h" #include "./regiontemplates/RTPipelineComponentBase.h" +#include "Util.h" //class RTPipelineComponentBase; class PipelineComponentBase; diff --git a/runtime/PipelineComponentBase.cpp b/runtime/PipelineComponentBase.cpp index 56d98dd..2ea689c 100644 --- a/runtime/PipelineComponentBase.cpp +++ b/runtime/PipelineComponentBase.cpp @@ -20,6 +20,9 @@ PipelineComponentBase::PipelineComponentBase(){ this->setLocation(PipelineComponentBase::MANAGER_SIDE); this->resultDataSize = 0; this->resultData = NULL; + + this->reused = NULL; + this->remove_outputs = false; // this->input_arguments = new std::list(); // this->output_arguments = new std::list(); } @@ -35,9 +38,22 @@ PipelineComponentBase::~PipelineComponentBase() { while(this->arguments.size()> 0){ ArgumentBase *aux = this->arguments.back(); this->arguments.pop_back(); - delete aux; + if (remove_outputs || aux->getIo() == ArgumentBase::input) { + delete aux; + } } if(resultData != NULL) free(resultData); + + for (std::map >::iterator p=tasksDesc.begin(); p!=tasksDesc.end(); p++) { + for (std::list::iterator a=p->second.begin(); a!=p->second.end(); a++) { + delete *a; + } + } + + for (std::list::iterator t=tasks.begin(); t!=tasks.end(); t++) { + if (*t) + delete *t; + } } void PipelineComponentBase::addArgument(ArgumentBase *arg) @@ -56,7 +72,25 @@ ArgumentBase *PipelineComponentBase::getArgument(int index) return retArg; } +ArgumentBase *PipelineComponentBase::getArgumentById(int id) +{ + for (vector::iterator i = this->arguments.begin(); i != this->arguments.end(); i++) { + if ((*i)->getId() == id) { + return *i; + } + } + return NULL; +} +ArgumentBase *PipelineComponentBase::getArgumentByName(std::string name) +{ + for (vector::iterator i = this->arguments.begin(); i != this->arguments.end(); i++) { + if ((*i)->getName().compare(name) == 0) { + return *i; + } + } + return NULL; +} std::string PipelineComponentBase::getComponentName() const { @@ -132,6 +166,24 @@ int PipelineComponentBase::size() for(int i = 0; i < this->getArgumentsSize(); i++){ size_bytes+=this->getArgument(i)->size(); } + + // add the number of tasks + size_bytes += sizeof(int); + + for(list::iterator t=this->tasks.begin(); t!=this->tasks.end(); t++){ + // add the task id + size_bytes += sizeof(int); + + // add the task name size + size_bytes += sizeof(int); + + // add the task size + size_bytes += (*t)->size(); + + // add the task name + size_bytes += (*t)->getTaskName().size() * sizeof(char); + } + return size_bytes; } @@ -172,6 +224,31 @@ int PipelineComponentBase::serialize(char *buff) serialized_bytes += this->getArgument(i)->serialize(buff+serialized_bytes); } + // Copy the number of tasks + int number_tasks = this->tasks.size(); + memcpy(buff+serialized_bytes, &number_tasks, sizeof(int)); + serialized_bytes+=sizeof(int); + + // serialize each of the tasks + for(list::iterator t=this->tasks.begin(); t!=this->tasks.end(); t++){ + // Copy the task id + int id = (*t)->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy the task name size + int task_name_size = (*t)->getTaskName().size(); + memcpy(buff+serialized_bytes, &task_name_size, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy the task name + memcpy(buff+serialized_bytes, (*t)->getTaskName().c_str(), task_name_size*sizeof(char) ); + serialized_bytes+=task_name_size*sizeof(char); + + // copy the task + serialized_bytes += (*t)->serialize(buff+serialized_bytes); + } + // std::cout << "PipelineComponentBase::serialize" << std::endl; return serialized_bytes; } @@ -252,6 +329,9 @@ int PipelineComponentBase::deserialize(char *buff) case ArgumentBase::FLOAT_ARRAY: arg = new ArgumentFloatArray(); break; + case ArgumentBase::RT: + arg = new ArgumentRT(); + break; default: std::cout << "Argument type not known: " << arg_type << std::endl; exit(1); @@ -263,6 +343,37 @@ int PipelineComponentBase::deserialize(char *buff) this->addArgument(arg); } + + // deserialize the number of tasks + int number_tasks = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes+=sizeof(int); + + // deserialize the tasks + for (int i=0; isetTaskName(task_name_s); + task->setId(id); + deserialized_bytes += task->deserialize(buff+deserialized_bytes); + this->tasks.push_back(task); + } + // std::cout << "PipelineComponentBase::deserialize" << std::endl; return deserialized_bytes; @@ -278,6 +389,33 @@ PipelineComponentBase* PipelineComponentBase::clone() { return retValue; } +void PipelineComponentBase::replaceArgument(int old_id, ArgumentBase* new_a) { + for (std::vector::iterator i=arguments.begin(); i!=arguments.end(); i++) { + if ((*i)->getId() == old_id) { + arguments.erase(i); + arguments.push_back(new_a); + break; + } + } + if (std::find(input_arguments.begin(), input_arguments.end(), old_id) + != input_arguments.end()) { + input_arguments.remove(old_id); + input_arguments.push_back(new_a->getId()); + } + + if (std::find(output_arguments.begin(), output_arguments.end(), old_id) + != output_arguments.end()) { + output_arguments.remove(old_id); + output_arguments.push_back(new_a->getId()); + } +} + +void PipelineComponentBase::printTasks() { + for (std::list::iterator i = tasks.begin(); i!=tasks.end(); i++) { + (*i)->print(); + } +} + void PipelineComponentBase::executeTask(Task *task) { if(this->getResourceManager() != NULL){ diff --git a/runtime/PipelineComponentBase.h b/runtime/PipelineComponentBase.h index 8414420..51d8f0b 100644 --- a/runtime/PipelineComponentBase.h +++ b/runtime/PipelineComponentBase.h @@ -12,9 +12,11 @@ #include #include #include +#include #include "Argument.h" #include "Task.h" +#include "ReusableTask.hpp" //#include "Worker.h" //#include "Manager.h" @@ -25,6 +27,7 @@ class PipelineComponentBase; class Manager; +class ReusableTask; // Define factory function type that creates objects of type PipelineComponentBase and its subclasses @@ -32,8 +35,6 @@ typedef PipelineComponentBase* (componetFactory_t)(); class PipelineComponentBase: public Task { private: - // Contain pointers to all arguments associated to this pipeline component - std::vector arguments; // Holds the string name of the component, which should be the same used to register with the ComponentFactory std::string component_name; @@ -71,6 +72,9 @@ class PipelineComponentBase: public Task { std::list output_arguments; protected: + // Contain pointers to all arguments associated to this pipeline component + std::vector arguments; + // is this component at the worker or manager side? int location; // this is used to pass cache stored in the Worker to the Pipeline component @@ -107,6 +111,16 @@ class PipelineComponentBase: public Task { // Retrieve "index"th argument, if it exists, otherwise NULL is returned ArgumentBase *getArgument(int index); + // Retrieve an argument with 'id', if it exists, otherwise NULL is returned + // This is used by the pipeline generator and was added here as a new function + // instead of changing getArgument(int) for compatibility reasons + ArgumentBase *getArgumentById(int id); + + // Retrieve an argument with 'id', if it exists, otherwise NULL is returned + // This is used by the fine-grain merging and was added here as a new function + // instead of changing getArgument(int) for compatibility reasons + ArgumentBase *getArgumentByName(std::string name); + // Get current number of arguments associated to this component. int getArgumentsSize(); @@ -157,6 +171,27 @@ class PipelineComponentBase: public Task { void replaceInput(int old_a, int new_a); void replaceOutput(int old_a, int new_a); + // a map of all tasks ID used by the stage and the list of arguments for each task + std::map > tasksDesc; + + std::list tasks; + + PipelineComponentBase* reused; + + // used to fix a memory leak when merging the PCBs + bool remove_outputs; + + // needed for inter stage dependency verification on task merging + std::vector getArguments() const {return arguments;}; + + // needed to update an argument of a reused stage on fine-grain merging + void replaceArgument(int old_id, ArgumentBase* new_a); + + void printTasks(); + + // makespan cost + float getMksp() {return 1;}; + // Factory class is used to build "reflection", and instantiate objects of // PipelineComponentBase subclasses that register with it class ComponentFactory{ diff --git a/runtime/ResourceManager/Task.h b/runtime/ResourceManager/Task.h index 17c019f..8ffadbc 100644 --- a/runtime/ResourceManager/Task.h +++ b/runtime/ResourceManager/Task.h @@ -57,15 +57,15 @@ class Task { // Pointer to the Execution Engine that is responsible for this task. ExecutionEngine *curExecEngine; - // Simple setter for the task id - void setId(int id); - // This bool variable says whether the all dependencies that were to be associated to // this task have already being associated. It is only used by the CallBackTaskClass. // However, it has to be defined here because we can't typecast the Task pointer available // during the execution to an object of type CallBackTask. bool callBackDepsReady; + // used to get the task type on FGO + std::string taskName; + public: Task(); @@ -117,6 +117,9 @@ class Task { // Interface implemented by the end user virtual bool run(int procType=ExecEngineConstants::GPU, int tid=0); + // Simple setter for the task id + void setId(int id); + // Other simple getters and setters int getId() const; int getTaskType() const; @@ -132,6 +135,14 @@ class Task { this->status = status; } + std::string getTaskName () { + return taskName; + } + + void setTaskName (std::string taskName) { + this->taskName = taskName; + } + }; class CallBackTaskBase: public Task { diff --git a/runtime/ResourceManager/TrackDependencies.cpp b/runtime/ResourceManager/TrackDependencies.cpp index 3e9ee92..abab72e 100644 --- a/runtime/ResourceManager/TrackDependencies.cpp +++ b/runtime/ResourceManager/TrackDependencies.cpp @@ -61,8 +61,14 @@ void TrackDependencies::checkDependencies(Task* task, TasksQueue* tq) { if(task->getNumberDependencies() == task->getNumberDependenciesSolved()){ // It always starts empty, and tasks are added as they are dispatched for execution tq->insertTask(task); + // std::cout << "[dependency_test] stage " << task->getId() << " is solved: " + // << task->getNumberDependenciesSolved() << " out of " + // << task->getNumberDependencies() << std::endl; }else{ this->incrementCountTasksPending(); + // std::cout << "[dependency_test] stage " << task->getId() << " is pending with " + // << task->getNumberDependenciesSolved() << " out of " + // << task->getNumberDependencies() << " deps solved" << std::endl; } // Unlock dependency map diff --git a/runtime/ReusableTask.cpp b/runtime/ReusableTask.cpp new file mode 100644 index 0000000..dc1dfa9 --- /dev/null +++ b/runtime/ReusableTask.cpp @@ -0,0 +1,67 @@ +/* + * ReusableTask.cpp + * + * Created on: Aug 1, 2016 + * Author: willian + */ + +#include "ReusableTask.hpp" + +// Stuff related to the task factory +std::map ReusableTask::ReusableTaskFactory::factoryMap1; +std::map ReusableTask::ReusableTaskFactory::factoryMap2; + +bool ReusableTask::ReusableTaskFactory::taskRegister(std::string name, task_factory_t1 *filterFactory1, task_factory_t2 *filterFactory2) +{ + factoryMap1.insert(std::pair(name, filterFactory1) ); + factoryMap2.insert(std::pair(name, filterFactory2) ); + return true; +} + +task_factory_t1 *ReusableTask::ReusableTaskFactory::getTaskFactory1(std::string name) +{ + task_factory_t1* factoryRet = NULL; + std::map::iterator map_it; + map_it = factoryMap1.find(name); + + if(map_it!=factoryMap1.end()){ + factoryRet = map_it->second; + } +// std::cout << "factoryMap1.size()="<< factoryMap1.size() < args, RegionTemplate* inputRt) +{ + ReusableTask* t = NULL; + task_factory_t1* factoryFunction = ReusableTask::ReusableTaskFactory::getTaskFactory1(name); + if(factoryFunction != NULL){ + t = factoryFunction(args, inputRt); + } + return t; +} + +task_factory_t2 *ReusableTask::ReusableTaskFactory::getTaskFactory2(std::string name) +{ + task_factory_t2* factoryRet = NULL; + std::map::iterator map_it; + map_it = factoryMap2.find(name); + + if(map_it!=factoryMap2.end()){ + factoryRet = map_it->second; + } +// std::cout << "factoryMap2.size()="<< factoryMap2.size() < + +#include "Task.h" +#include "Argument.h" +#include "RegionTemplate.h" +#include "PipelineComponentBase.h" + + +// Define factory function type that creates objects of type ReusableTask and its subclasses +class ReusableTask; +class RegionTemplate; +class PipelineComponentBase; +typedef ReusableTask* (task_factory_t1)(list args, RegionTemplate* inputRt); +typedef ReusableTask* (task_factory_t2)(); + +class ReusableTask: public Task { +public: + // list of tasks' ids that are dependent on this task + int parentTask; + + // if the task isn't going to be executed then it's a mock + // used to enable corect arguments delete, preventing mem leaking + bool mock; + + ReusableTask() {parentTask = -1;mock = true;}; + virtual ~ReusableTask() {}; + + virtual bool reusable(ReusableTask* t) = 0; + virtual void updateDR(RegionTemplate* rt) = 0; + // sets the interstage arguments with the pointers of the task t + virtual void updateInterStageArgs(ReusableTask* t) = 0; + virtual void resolveDependencies(ReusableTask* t) = 0; + + // Write component data to a buffer + virtual int serialize(char *buff) = 0; + // Initialize component data from a buffer generated by serialize function + virtual int deserialize(char *buff) = 0; + virtual ReusableTask* clone() = 0; + virtual int size() = 0; + + virtual void print() = 0; + + + // Factory class is used to build "reflection", and instantiate objects of + // ReusableTask subclasses that register with it + class ReusableTaskFactory { + private: + // This maps name of task types to the function that creates instances of those components + static std::map factoryMap1; + static std::map factoryMap2; + + public: + // Used to register the task factory function with this factory class + static bool taskRegister(std::string name, task_factory_t1 *compFactory1, task_factory_t2 *compFactory2); + + // Retrieve pointer to function that creates task registered with name="name" + static task_factory_t1 *getTaskFactory1(std::string name); + static task_factory_t2 *getTaskFactory2(std::string name); + + // Retrieve instance of task registered as "name" + static ReusableTask *getTaskFromName(std::string name, list args, RegionTemplate* inputRt); + + // constructor used only on PipelineComponentBase clone method + static ReusableTask *getTaskFromName(std::string name); + // ExecutionEngine *getResourceManager() const; + }; + +}; + +#endif /* REUSABLE_TASK_H_ */ diff --git a/runtime/SysEnv.cpp b/runtime/SysEnv.cpp index 25d080a..22f9124 100644 --- a/runtime/SysEnv.cpp +++ b/runtime/SysEnv.cpp @@ -33,7 +33,10 @@ SysEnv::~SysEnv() { // initialize MPI MPI::Intracomm init_mpi(int argc, char **argv, int &size, int &rank, std::string &hostname) { - MPI::Init(argc, argv); + int initialized; + MPI_Initialized(&initialized); + if (!initialized) + MPI::Init(argc, argv); char *temp = new char[256]; gethostname(temp, 255); diff --git a/runtime/Worker.cpp b/runtime/Worker.cpp index 36e8f67..c07de58 100644 --- a/runtime/Worker.cpp +++ b/runtime/Worker.cpp @@ -242,7 +242,7 @@ int Worker::getRank() const void Worker::workerProcess() { - // Init data spaces + // Init data spaces1 // Number of DataSpaces clients equals to number of workers // Load Components implemented by the current application, and // check if all workers were correctly initialized. @@ -269,12 +269,16 @@ void Worker::workerProcess() char flag = MessageTag::MANAGER_READY; while (flag != MessageTag::MANAGER_FINISHED && flag != MessageTag::MANAGER_ERROR) { + long long t0 = Util::ClockGetTime(); + // tell the manager - ready this->comm_world.Send(&MessageTag::WORKER_READY, 1, MPI::CHAR, this->getManagerRank(), MessageTag::TAG_CONTROL); // get the manager status this->comm_world.Recv(&flag, 1, MPI::CHAR, this->getManagerRank(), MessageTag::TAG_CONTROL); + long long t_recv = Util::ClockGetTime(); + // std::cout << "Worker: "<< this->getRank()<<" flag: " <<(int)flag<getMaxActiveComponentInstances() << " activeComps: "<< this->getActiveComponentInstances() <<" #resTasks:"<< std::endl; #endif + long long t_isnull = Util::ClockGetTime(); if(pc != NULL){ // One more component instance was received and is being dispatched for execution @@ -303,6 +308,7 @@ void Worker::workerProcess() // subtasks have finished the call back is executed, destroyed and the component is destroyed int ioTaskId = pc->createIOTask(); + long long t_cache = Util::ClockGetTime(); CallBackComponentExecution *callBackTask = new CallBackComponentExecution(pc, this); if(ioTaskId != -1){ @@ -315,15 +321,40 @@ void Worker::workerProcess() // Start transaction. All tasks created within the execution engine will be associated to this one this->getResourceManager()->startTransaction(callBackTask); + long long t_callback = Util::ClockGetTime(); + // Execute component function that instantiates tasks within the execution engine pc->run(); + long long t_run = Util::ClockGetTime(); + // Stop transaction: defines the end of the transaction associated to the current component this->getResourceManager()->endTransaction(); // Dispatch transaction task for execution this->getResourceManager()->insertTask(callBackTask); + long long t_end = Util::ClockGetTime(); + + std::stringstream t0_ss; + t0_ss << t0; + std::stringstream t_recv_ss; + t_recv_ss << t_recv; + std::stringstream t_isnull_ss; + t_isnull_ss << t_isnull; + std::stringstream t_cache_ss; + t_cache_ss << t_cache; + std::stringstream t_callback_ss; + t_callback_ss << t_callback; + std::stringstream t_run_ss; + t_run_ss << t_run; + std::stringstream t_end_ss; + t_end_ss << t_end; + + std::cout << "[WORKER_PROFILER] " << t0_ss.str() << " " << t_recv_ss.str() << " " + << t_isnull_ss.str() << " " << t_cache_ss.str() << " " + << t_callback_ss.str() << " " << t_run_ss.str() << " " + << t_end_ss.str() << std::endl; }else{ std::cout << "Error: Failed to load PipelineComponent!"< #include +#include #include #include #include "MessageTag.h" #include "PipelineComponentBase.h" #include "CallBackComponentExecution.h" #include "DataPack.h" +#include "Util.h" #ifdef WITH_DATA_SPACES extern "C" { diff --git a/runtime/regiontemplates/CMakeLists.txt b/runtime/regiontemplates/CMakeLists.txt index ced0397..6dcc03d 100644 --- a/runtime/regiontemplates/CMakeLists.txt +++ b/runtime/regiontemplates/CMakeLists.txt @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 2.6) project(RegionTemplate) +add_definitions( -ggdb -gdwarf-2 ) + # The version number set(RegionTemplates_VERSION_MAJOR 1) set(RegionTemplates_VERSION_MINOR 0) diff --git a/runtime/regiontemplates/DenseDataRegion2D.cpp b/runtime/regiontemplates/DenseDataRegion2D.cpp index cbf68d1..56529f2 100644 --- a/runtime/regiontemplates/DenseDataRegion2D.cpp +++ b/runtime/regiontemplates/DenseDataRegion2D.cpp @@ -18,7 +18,7 @@ DenseDataRegion2D::~DenseDataRegion2D() { it->second.release(); } #ifdef DEBUG - std::cout << "DDR2D destructor:"<< this->getName() << ":"<< this->getId()<< std::endl; + // std::cout << "DDR2D destructor:"<< this->getName() << ":"<< this->getId()<< std::endl; #endif this->dataCPU.release(); } diff --git a/runtime/regiontemplates/RTPipelineComponentBase.cpp b/runtime/regiontemplates/RTPipelineComponentBase.cpp index f076271..49f7c68 100644 --- a/runtime/regiontemplates/RTPipelineComponentBase.cpp +++ b/runtime/regiontemplates/RTPipelineComponentBase.cpp @@ -7,6 +7,16 @@ #include "RTPipelineComponentBase.h" +#include + +void RTPipelineComponentBase::getRT() { + for (std::map::iterator i = regionTemplates.begin(); i!=regionTemplates.end();i++) { + i->second->printRT(); + std::cout << std::endl; + } + +}; + RTPipelineComponentBase::RTPipelineComponentBase() { this->setType(PipelineComponentBase::RT_COMPONENT_BASE); this->cache = NULL; @@ -17,7 +27,7 @@ RTPipelineComponentBase::~RTPipelineComponentBase() { // the same region templates if(this->getLocation() == PipelineComponentBase::WORKER_SIDE){ #ifdef DEBUG - std::cout << "~RTPipelineComponentBase: nRegionTemplates: " << this->regionTemplates.size() << std::endl; + // std::cout << "~RTPipelineComponentBase: nRegionTemplates: " << this->regionTemplates.size() << std::endl; #endif std::map::iterator rtIt = this->regionTemplates.begin(); for(; rtIt != this->regionTemplates.end(); rtIt++){ @@ -211,7 +221,7 @@ PipelineComponentBase* RTPipelineComponentBase::clone() { char *buff = new char[size]; this->serialize(buff); retValue->deserialize(buff); - delete buff; + delete[] buff; return retValue; } @@ -305,6 +315,9 @@ RegionTemplate* RTPipelineComponentBase::getRegionTemplateInstance(int index) { } void RTPipelineComponentBase::updateRegionTemplateInfo(RegionTemplate* rt) { + + long long t_0 = Util::ClockGetTime(); + // there are two cases: // 1) the data regions exist or not RegionTemplate* curRt = this->getRegionTemplateInstance(rt->getName()); @@ -313,6 +326,8 @@ void RTPipelineComponentBase::updateRegionTemplateInfo(RegionTemplate* rt) { if(curRt != NULL) curRt->print(); #endif + long long t_get_inst = Util::ClockGetTime(); + if(curRt != NULL){ #ifdef DEBUG std::cout << "NUMDR: " << rt->getNumDataRegions() << std::endl; @@ -360,6 +375,19 @@ void RTPipelineComponentBase::updateRegionTemplateInfo(RegionTemplate* rt) { std::cout << "#########" << std::endl; #endif + long long t_end = Util::ClockGetTime(); + long long n_data_regs = rt->getNumDataRegions(); + + std::stringstream t_0_ss; + t_0_ss << t_0; + std::stringstream t_get_inst_ss; + t_get_inst_ss << t_get_inst; + std::stringstream t_end_ss; + t_end_ss << t_end; + + std::cout << "[RTPCB_PROFILER] " << t_0_ss.str() << " " << t_get_inst << " " << t_end_ss.str() << " " + << n_data_regs << std::endl; + } // every time you change location, make sure region templates are updated diff --git a/runtime/regiontemplates/RTPipelineComponentBase.h b/runtime/regiontemplates/RTPipelineComponentBase.h index 602543c..f37ca84 100644 --- a/runtime/regiontemplates/RTPipelineComponentBase.h +++ b/runtime/regiontemplates/RTPipelineComponentBase.h @@ -39,6 +39,9 @@ class RTPipelineComponentBase : public PipelineComponentBase { void setLocation(int location); public: + + void getRT(); + RTPipelineComponentBase(); virtual ~RTPipelineComponentBase(); diff --git a/runtime/regiontemplates/RegionTemplate.cpp b/runtime/regiontemplates/RegionTemplate.cpp index 6e0b1fe..135610d 100644 --- a/runtime/regiontemplates/RegionTemplate.cpp +++ b/runtime/regiontemplates/RegionTemplate.cpp @@ -7,6 +7,16 @@ #include "RegionTemplate.h" +void RegionTemplate::printRT() { + for (std::map >::iterator r = templateRegions.begin(); r!=templateRegions.end(); r++) { + cout << "RT: " << r->first << endl; + for (std::list::iterator d = r->second.begin(); d!=r->second.end(); d++) { + cout << "\tDR: " << (*d)->getName() << endl; + } + } +} + + RegionTemplate::RegionTemplate() { // lazyRead = false; this->setLazyRead(false); @@ -264,7 +274,7 @@ int RegionTemplate::deserialize(char* buff) { // Extract number of data regions int regionSize = ((int*)(buff+deserialized_bytes))[0]; deserialized_bytes += sizeof(int); - std::cout << "\tnDataRegions deserialize:"<< regionSize << std::endl; + // std::cout << "\tnDataRegions deserialize:"<< regionSize << std::endl; // extract each of the data regions for(int i = 0; i < regionSize; i++){ // create data region: assuming that it is a 2D. Might not be the case. diff --git a/runtime/regiontemplates/RegionTemplate.h b/runtime/regiontemplates/RegionTemplate.h index d794f56..bba8473 100644 --- a/runtime/regiontemplates/RegionTemplate.h +++ b/runtime/regiontemplates/RegionTemplate.h @@ -92,6 +92,8 @@ class RegionTemplate { bool isLazyRead() const; void setLazyRead(bool lazyRead); + void printRT(); + }; #ifdef MATLAB_INTEGRATION diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/CMakeLists.txt b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/CMakeLists.txt index f9f11a1..dc5299b 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/CMakeLists.txt +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.6) project(PipelineRTFS-NS-Diff-FGO) -add_definitions( -std=c++11 -ggdb -gdwarf-2 ) +add_definitions( -std=c++11 -ggdb -gdwarf-2 -fopenmp) #add_definitions( -std=c++11 ) find_package( OpenCV REQUIRED ) @@ -20,6 +20,8 @@ find_path(NSCALE_BUILD_DIR REQUIRED) set(nscalesrcdir ${NSCALE_SRC_DIR}) set(nscalebuilddir ${NSCALE_BUILD_DIR}) +# dependencies for FGO +#add_subdirectory("fg_reuse") #includes include_directories(${nscalesrcdir}/segment) @@ -36,9 +38,17 @@ link_directories(${nscalebuilddir}/lib) # Create library with components implementation set(libname componentnsdifffgo) +# Json lib +set(libjson json/jsoncpp.cpp) + +# Stages lib - For some reason the subdirectory doesn't work (on PipelineManager.cpp:813 the ComponentFactory appear not to be linked with the stages lib) +#include_directories(${CMAKE_CURRENT_LIST_DIR}/stages) +#link_directories(${CMAKE_CURRENT_LIST_DIR}/stages) +#add_subdirectory("stages") +set(libstages stages/NormalizationComp.cpp stages/Segmentation.cpp stages/FeatureExtraction.cpp stages/TaskFeatures.cpp stages/DiffMaskComp.cpp) + # Source files used by the Runtime System -set(libcomponentssrcs NormalizationComp.cpp Segmentation.cpp FeatureExtraction.cpp - TaskFeatures.cpp DiffMaskComp.cpp jsoncpp.cpp) +set(libcomponentssrcs fg_reuse/graph/min_cut.cpp fg_reuse/graph/reuse_tree.cpp fg_reuse/merging.cpp fg_reuse/fgm.cpp fg_reuse/cutting_algorithms.cpp parsing.cpp parsing_helper.cpp) set(libcomparativeanalysis ../../comparativeanalysis/TaskDiffMask.cpp ../../comparativeanalysis/pixelcompare/PixelCompare.cpp) @@ -47,11 +57,12 @@ set(libcomparativeanalysis ../../comparativeanalysis/TaskDiffMask.cpp add_custom_target(copyCacheConfToPipelineRTFS-NS-Diff-FGO COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cache-conf/rtconf.xml ${CMAKE_CURRENT_BINARY_DIR}) # Add rule to generate the Runtime System, as a shared library (.so) -add_library("${libname}" SHARED ${libcomponentssrcs} ${libcomparativeanalysis}) +add_library("${libname}" SHARED ${libcomponentssrcs} ${libcomparativeanalysis} ${libjson} ${libstages}) #set_target_properties("${libname}" PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}") target_link_libraries("${libname}" runtimesystem) target_link_libraries(${libname} regiontemplates) +#target_link_libraries(${libname} componentnsdifffgostages) # nscale libs target_link_libraries("${libname}" segment normalization featuresAll ${OpenCV_LIBS}) @@ -63,3 +74,4 @@ add_dependencies(PipelineRTFS-NS-Diff-FGO copyCacheConfToPipelineRTFS-NS-Diff-FG # Link the executable to the runtime system library target_link_libraries(PipelineRTFS-NS-Diff-FGO runtimesystem "${libname}") target_link_libraries(PipelineRTFS-NS-Diff-FGO regiontemplates) +#target_link_libraries(PipelineRTFS-NS-Diff-FGO componentnsdifffgostages) diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/PipelineManager.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/PipelineManager.cpp index 3f652e4..8bde382 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/PipelineManager.cpp +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/PipelineManager.cpp @@ -1,1182 +1,706 @@ #include +#include +#include #include +#include +#include #include #include #include -#include +#include +#include +#include -#include "json/json.h" +#include #include "SysEnv.h" #include "Argument.h" #include "PipelineComponentBase.h" #include "RTPipelineComponentBase.h" #include "RegionTemplateCollection.h" +#include "ReusableTask.hpp" -using namespace std; - -namespace parsing { -enum port_type_t { - int_t, string_t, float_t, float_array_t, rt_t, error -}; -} - -// global uid for any local(this file) entity -int uid=1; -int new_uid() {return uid++;} - -// general xml field structure -typedef struct { - string type; - string data; -} general_field_t; - -void mapprint(map mapp) { - for (map::iterator it = mapp.begin(); it != mapp.end(); ++it) - // for (map::iterator i=map.begin(); i!=map.end();i++) - cout << it->first << ":" << it->second->getName() << endl; -} - -void mapprint(map> mapp) { - for (pair> p : mapp) { - // for (map::iterator i=map.begin(); i!=map.end();i++) - cout << p.first << ":" << endl; - for (ArgumentBase* a : p.second) - cout << "\t" << a->getName() << ":" << a->toString() << endl; - } -} - -void mapprint(map mapp) { - for (map::iterator i=mapp.begin(); i!=mapp.end();i++) - cout << i->first << ":" << i->second->getName() << endl; -} - -void listprint(list listt) { - for (list::iterator i=listt.begin(); i!=listt.end(); i++) - cout << (*i)->getName() << endl; -} +#include "parsing.hpp" -void listprint(list listt) { - for (list::iterator i=listt.begin(); i!=listt.end(); i++) - cout << (*i) << endl; -} +#include "fg_reuse/merging.hpp" +#include "fg_reuse/fgm.hpp" -// BUG??? g++4.9 bad??? -// -list::iterator beg(list l) {return l.begin();} -list::iterator endd(list l) {return l.end();} -list::iterator inc(list::iterator &i) {return i++;} -// -// for (map::iterator it = base_stages.begin(); it != base_stages.end(); ++it) { -// cout << "stage: " << it->second->getName() << endl; -// for (list::iterator i = it->second->getOutputs().begin(); i != (it->second->getOutputs().end()); ++i) { -// list l = it->second->getOutputs(); -// // works -// listprint(l); -// // also works -// listprint(it->second->getOutputs()); -// // this works too -// for (list::iterator i=l.begin(); i!=l.end(); i++) -// cout << (*i) << endl; -// // not this -// for (list::iterator i=it->second->getOutputs().begin(); i!=it->second->getOutputs().end(); i++) -// cout << (*i) << endl; -// // nor this -// for (list::iterator i=beg(it->second->getOutputs()); i!=endd(it->second->getOutputs()); inc(i)) -// cout << (*i) << endl; -// // this also works -// for (int i:it->second->getOutputs()) -// cout << i << endl; -// } -// } - - - -// Workflow parsing functions -void get_inputs_from_file(FILE* workflow_descriptor, map &workflow_inputs, - map> ¶meters_values); -void get_outputs_from_file(FILE* workflow_descriptor, map &workflow_outputs); -void get_stages_from_file(FILE* workflow_descriptor, map &base_stages, - map &interstage_arguments); -void connect_stages_from_file(FILE* workflow_descriptor, map &base_stages, - map &interstage_arguments, map &input_arguments, - map> &deps); -list> expand_parameters_combinations(map> parameters_values, - map workflow_inputs); -void expand_arguments(map &ref_arguments, int copies, - list> ©_arguments); -void expand_stages(map &base_stages, int copies, - list> &all_stages); -void iterative_full_merging(list> &all_inputs, list> &all_outputs, - list> &all_stages, list> &all_interstage_arguments, - map &interstage_arguments_ref, map &merged_arguments, - map &merged_outputs, map &merged_stages); -void add_arguments_to_stages(map &merged_stages, map &merged_arguments, - map> &deps, RegionTemplateCollection *rts); - -// Workflow parsing helper functions -list line_buffer; -int get_line(char** line, FILE* f); -string get_workflow_name(FILE* workflow); -string get_workflow_field(FILE* workflow, string field); -void get_workflow_arguments(FILE* workflow, list &output_arguments); -vector get_all_fields(FILE* workflow, string start, string end); -PipelineComponentBase* find_stage(map stages, string name); -ArgumentBase* find_argument(map arguments, string name); -ArgumentBase* new_typed_arg_base(string type); -parsing::port_type_t get_port_type(string s); -map cpy_ab_map(map &ref); -template -T map_pop(map &m); -int find_id_by_name(string name, map &ref); +#include "debug_funs.hpp" +using namespace std; -void expand_stages(const map &args, - map> args_values, - map &expanded_args, - map stages, - map &expanded_stages); +// Workflow generation functions +void generate_drs(RegionTemplate* rt, const map &expanded_args); +void generate_drs(RegionTemplate* rt, PipelineComponentBase* stage, + const std::map &expanded_args); +void add_arguments_to_stages(map &merged_stages, + map &merged_arguments, string name="tile"); +void generate_pre_defined_stages(FILE* parameters_values_file, map args, + map base_stages, map& workflow_outputs, + map& expanded_args, map& expanded_stages, + bool use_coarse_grain=true, bool clustered_generation=false); int main(int argc, char* argv[]) { - // Handler to the distributed execution system environment - SysEnv sysEnv; - - // Tell the system which libraries should be used - // sysEnv.startupSystem(argc, argv, "libcomponentnsdifffgo.so"); - - - FILE* workflow_descriptor = fopen("seg_example.t2flow", "r"); - - //------------------------------------------------------------ - // Parse pipeline file - //------------------------------------------------------------ - - // get all workflow inputs without their values, returning also the parameters - // values (i.e list values) on another map - map workflow_inputs; - map> parameters_values; - get_inputs_from_file(workflow_descriptor, workflow_inputs, parameters_values); - - cout << "workflow_inputs:" << endl; - for (pair p : workflow_inputs) - cout << p.first << ":" << p.second->getName() << endl; - - cout << endl << "parameters_values:" << endl; - for (pair> p : parameters_values) { - cout << "argument " << p.first << ":" << workflow_inputs[p.first]->getName() << ":" << endl; - for (ArgumentBase* a : p.second) - cout << "\t" << a->toString() << endl; + // verify arguments + if (argc > 1 && string(argv[1]).compare("-h") == 0) { + cout << "usage: ./PipelineRTFS-NS-Diff-FGO -b -dkt -ma [-s] [-ncg]" << endl; + cout << " -s - shuffle" << endl; + cout << " -ncg - don't do coarse grain merging" << endl; + cout << "avaiable algorithms:" << endl; + cout << "0 - No fine grain merging algorithm" << endl; + cout << "1 - naive fine grain merging algorithm" << endl; + cout << "2 - Smart recursive cut fine grain merging algorithm" << endl; + cout << "3 - Reuse-Tree fine grain merging algorithm" << endl; + cout << "4 - Double-prunning reuse-tree fine grain merging algorithm" << endl; + return 0; } - - // get all workflow outputs - map workflow_outputs; - get_outputs_from_file(workflow_descriptor, workflow_outputs); - cout << endl << "workflow_outputs " << endl; - for (pair p : workflow_outputs) - cout << p.first << ":" << p.second->getName() << endl; - - // get all stages, also setting the uid from this context to Task (i.e Task::setId()) - // also returns the list of arguments used - // the stages dependencies are also set here (i.e Task::addDependency()) - map base_stages; - map interstage_arguments; - get_stages_from_file(workflow_descriptor, base_stages, interstage_arguments); - cout << endl << "base_stages:" << endl; - for (pair p : base_stages) { - cout << p.first << ":" << p.second->getName() << ", outputs: " << p.second->getOutputs().size() << endl << endl; - for (int i : p.second->getOutputs()) - cout << "\t" << i << ":" << interstage_arguments[i]->getName() << endl; + if (argc < 7) { + cout << "usage: ./PipelineRTFS-NS-Diff-FGO -b -dkt -ma [-s] [-ncg]" << endl; + return 0; } - cout << endl << "interstage_arguments:" << endl; - for (pair p : interstage_arguments) - cout << p.first << ":" << p.second->getName() << endl; - - // this map is a dependency structure: stage -> dependency_list - map> deps; - - // connect the stages inputs/outputs - connect_stages_from_file(workflow_descriptor, base_stages, interstage_arguments, workflow_inputs, deps); - map all_argument(workflow_inputs); - for (pair a : interstage_arguments) - all_argument[a.first] = a.second; - - cout << endl << "all_arguments:" << endl; - mapprint(all_argument); - - cout << endl << "deps:" << endl; - for (pair> p : deps) - for (int d : p.second) - cout << "\t" << base_stages[p.first]->getName() << " depends on " << base_stages[d]->getName() << endl; - -// buggy buggggy -/*for (map::iterator it = base_stages.begin(); it != base_stages.end(); ++it) { - cout << "stage: " << it->second->getName() << endl; - for (list::iterator i = it->second->getOutputs().begin(); i != (it->second->getOutputs().end()); ++i) { - list l = it->second->getOutputs(); - // works - listprint(l); - // also works - listprint(it->second->getOutputs()); - // this works too - for (list::iterator i=l.begin(); i!=l.end(); i++) - cout << (*i) << endl; - // not this - for (list::iterator i=it->second->getOutputs().begin(); i!=it->second->getOutputs().end(); i++) - cout << (*i) << endl; - // nor this - for (list::iterator i=beg(it->second->getOutputs()); i!=endd(it->second->getOutputs()); inc(i)) - cout << (*i) << endl; - // this also works - for (int i:it->second->getOutputs()) - cout << i << endl; - } -}*/ - - - cout << endl << "connected base_stages:" << endl; - for (pair p : base_stages) { - cout << p.first << ":" << p.second->getName() << endl; - cout << "\tinputs: " << p.second->getInputs().size() << endl << endl; - for (int i : p.second->getInputs()) - cout << "\t\t" << i << ":" << all_argument[i]->getName() << endl; - cout << "\toutputs: " << p.second->getOutputs().size() << endl << endl; - for (int i : p.second->getOutputs()) - cout << "\t\t" << i << ":" << all_argument[i]->getName() << endl; - } + int mpi_rank; + int mpi_size; + int mpi_val; - //------------------------------------------------------------ - // Add create all combinarions of parameters - //------------------------------------------------------------ - - // expand parameter combinations returning a list of parameters sets each set contains - // exactly one value for every input parameter. the agrument objects are ready to be used - // on the workflow execution. - list> expanded_parameters; - expanded_parameters = expand_parameters_combinations(parameters_values, workflow_inputs); - int i = 0; - for (map parameter_set : expanded_parameters) { - cout << "Parameter set " << i++ << endl; - for (pair p : parameter_set) { - cout << "\t" << p.first << ":" << p.second->getName() << " = " << p.second->toString() << endl; - } - cout << endl; - } + MPI_Init(&argc, &argv); - // replicate outputs - list> all_outputs; - expand_arguments(workflow_outputs, expanded_parameters.size(), all_outputs); - i = 0; - for (map parameter_set : all_outputs) { - cout << "Output set " << i++ << endl; - for (pair p : parameter_set) { - cout << "\t" << p.first << ":" << p.second->getName() << endl; - } - cout << endl; - } + MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); + MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank); - // replicate interstage arguments - list> all_interstage_arguments; - expand_arguments(interstage_arguments, expanded_parameters.size(), all_interstage_arguments); - i = 0; - for (map parameter_set : all_interstage_arguments) { - cout << "Interstage arguments set " << i++ << endl; - for (pair p : parameter_set) { - cout << "\t" << p.first << ":" << p.second->getName() << endl; - } - cout << endl; - } + // Handler to the distributed execution system environment + SysEnv sysEnv; - // replicate stages - list> all_stages; - expand_stages(base_stages, expanded_parameters.size(), all_stages); - i = 0; - for (map stage_set : all_stages) { - cout << "Stage set " << i++ << endl; - for (pair p : stage_set) { - cout << "\t" << p.first << ":" << p.second->getName() << " with inputs:" << endl; - for (int inp : p.second->getInputs()) { - cout << "\t\t" << inp << ":" << all_argument[inp]->getName() << endl; + if (mpi_rank == mpi_size-1) { + // get arguments + int max_bucket_size; + if (find_arg_pos("-b", argc, argv) == -1) { + cout << "Missing max bucket size." << endl; + return 0; + } else + max_bucket_size = atoi(argv[find_arg_pos("-b", argc, argv)+1]); + + string dakota_file; + if (find_arg_pos("-dkt", argc, argv) == -1) { + cout << "Missing dakota file path." << endl; + return 0; + } else + dakota_file = argv[find_arg_pos("-dkt", argc, argv)+1]; + + int merging_algorithm; + if (find_arg_pos("-ma", argc, argv) == -1) { + cout << "Missing merging algorithm option." << endl; + return 0; + } else + merging_algorithm = atoi(argv[find_arg_pos("-ma", argc, argv)+1]); + + bool shuffle = find_arg_pos("-s", argc, argv) == -1 ? false : true; + + bool use_coarse_grain = find_arg_pos("-ncg", argc, argv) == -1 ? true : false; + + // workflow file + FILE* workflow_descriptor = fopen("seg_example.t2flow", "r"); + + //------------------------------------------------------------ + // Parse pipeline file + //------------------------------------------------------------ + + // get all workflow inputs without their values, returning also the parameters + // values (i.e list values) on another map + map workflow_inputs; + map> parameters_values; + get_inputs_from_file(workflow_descriptor, workflow_inputs, parameters_values); + + // get all workflow outputs + map workflow_outputs; + get_outputs_from_file(workflow_descriptor, workflow_outputs); + + // get all stages, also setting the uid from this context to Task (i.e Task::setId()) + // also returns the list of arguments used + // the stages dependencies are also set here (i.e Task::addDependency()) + map base_stages; + map interstage_arguments; + get_stages_from_file(workflow_descriptor, base_stages, interstage_arguments); + + // this map is a dependency structure: stage -> dependency_list + map> deps; + + // connect the stages inputs/outputs + connect_stages_from_file(workflow_descriptor, base_stages, + interstage_arguments, workflow_inputs, deps, workflow_outputs); + map all_argument(workflow_inputs); + for (pair a : interstage_arguments) + all_argument[a.first] = a.second; + + //------------------------------------------------------------ + // Iterative merging of stages + //------------------------------------------------------------ + + map args; + for (pair p : workflow_inputs) + args[p.first] = p.second; + for (pair p : interstage_arguments) + args[p.first] = p.second; + + map expanded_args; + map expanded_stages; + + // expand_stages(args, parameters_values, expanded_args, + // base_stages, expanded_stages, workflow_outputs); + FILE* parameters_values_file = fopen(dakota_file.c_str(), "r"); + generate_pre_defined_stages(parameters_values_file, args, base_stages, workflow_outputs, + expanded_args, expanded_stages, use_coarse_grain); + + // mapprint(expanded_stages, expanded_args); + // mapprint(expanded_args); + + // add arguments to each stage + add_arguments_to_stages(expanded_stages, expanded_args); + + map merged_stages; + + // mesure merging exec time + struct timeval start, end; + gettimeofday(&start, NULL); + + fgm::merge_stages_fine_grain(merging_algorithm, expanded_stages, base_stages, merged_stages, + expanded_args, max_bucket_size, shuffle, dakota_file); + + gettimeofday(&end, NULL); + + long merge_time = ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec)); + ofstream merge_time_f(dakota_file + "-b" + to_string(max_bucket_size) + "merge_time.log", ios::app); + merge_time_f << merge_time << "\t"; + merge_time_f.close(); + + // resolve dependencies of reused stages + for (pair p : merged_stages) { + // add correct stage dependencies + list deps_tmp; + for (int i=0; igetNumberDependencies(); i++) { + + // if the i-th dependency of p still exists and is reused, add the dependency of the + // reused stage to p + if (merged_stages.find(p.second->getDependency(i)) != merged_stages.end() && + merged_stages[p.second->getDependency(i)]->reused != NULL) { + + deps_tmp.emplace_back(merged_stages[p.second->getDependency(i)]->reused->getId()); + } } - cout << "\tand outputs: " << endl; - for (int out : p.second->getOutputs()) { - cout << "\t\t" << out << ":" << all_argument[out]->getName() << endl; + for (int d : deps_tmp) + p.second->addDependency(d); + + // connect correct output arguments + bool updated = true; + // cout << "Updating arguments of " << p.second->getId() << ":" << p.second->getName() << endl; + while (updated) { + updated = false; + for (ArgumentBase* a : p.second->getArguments()) { + if (a->getParent() != 0 && merged_stages[a->getParent()]->reused != NULL) { + // cout << "Replacing argument " << endl; + updated = true; + p.second->replaceArgument(a->getId(), + merged_stages[a->getParent()]->reused->getArgumentByName(a->getName())); + break; + } + } } } - cout << endl; - } - //------------------------------------------------------------ - // Iterative merging of stages - //------------------------------------------------------------ - - // maybe try to merge the inputs, and then merge stages iteratively - // again, updating the uids (Task and local id) - map merged_arguments; - map merged_outputs; - map merged_stages; - iterative_full_merging(expanded_parameters, all_outputs, all_stages, all_interstage_arguments, - interstage_arguments, merged_arguments, merged_outputs, merged_stages); - - cout << endl << "merged stages" << endl; - for (pair p : merged_stages) { - cout << "\t" << p.first << ":" << p.second->getName() << " with inputs:" << endl; - for (int inp : p.second->getInputs()) { - cout << "\t\t" << inp << ":" << merged_arguments[inp]->getName() << endl; + //------------------------------------------------------------ + // Add workflows to Manager to be executed + //------------------------------------------------------------ + + string inputFolderPath = "~/Desktop/images15"; + + for (int i=0; i s : merged_stages) { + if (s.second->reused == NULL) { + + // generate the data regions for each stage + generate_drs(((RTPipelineComponentBase*)s.second)-> + getRegionTemplateInstance("tile"), s.second, expanded_args); + + cout << "sent component " << s.second->getId() << ":" + << s.second->getName() << " sized " << s.second->size() << " to execute with args:" << endl; + cout << "\tall args: " << endl; + for (ArgumentBase* a : s.second->getArguments()) + cout << "\t\t" << a->getId() << ":" << a->getName() << " = " + << a->toString() << " parent " << a->getParent() << endl; + cout << "\tinputs: " << endl; + for (int i : s.second->getInputs()) + cout << "\t\t" << i << ":" << expanded_args[i]->getName() << " = " + << expanded_args[i]->toString() << " parent " << expanded_args[i]->getParent() << endl; + cout << "\toutputs: " << endl; + for (int i : s.second->getOutputs()) + cout << "\t\t" << i << ":" << expanded_args[i]->getName() << " = " + << expanded_args[i]->toString() << endl; + cout << "\tdependencies:" << endl; + for (int i=0; igetNumberDependencies(); i++) + cout << "\t\t" << merged_stages[s.second->getDependency(i)]->getId() << ":" + << merged_stages[s.second->getDependency(i)]->getName() << endl; + + // set task ID to enable dependency enforcement + ((Task*)s.second)->setId(s.second->getId()); + + // workaround to make sure that the RTs, if any, won't leak on this part of the algorithm + s.second->setLocation(PipelineComponentBase::MANAGER_SIDE); + sysEnv.executeComponent(s.second); + } } - cout << "\tand outputs: " << endl; - for (int out : p.second->getOutputs()) { - cout << "\t\t" << out << ":" << merged_arguments[out]->getName() << endl; + + // execute workflows + cout << endl << "startupExecution" << endl; + gettimeofday(&start, NULL); + + sysEnv.startupExecution(); + + gettimeofday(&end, NULL); + + long run_time = ((end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec)); + ofstream run_time_f(dakota_file + "-b" + to_string(max_bucket_size) + "run_time.log", ios::app); + run_time_f << run_time << "\t"; + run_time_f.close(); + + // get results + cout << endl << "Results: " << endl; + for (pair output : workflow_outputs) { + // cout << "\t" << output.second->getName() << ":" << output.second->getId() << " = " << + // sysEnv.getComponentResultData(output.second->getId()) << endl; + char *resultData = sysEnv.getComponentResultData(output.second->getId()); + std::cout << "Diff Id: " << output.second->getId() << " resultData - "; + if(resultData != NULL){ + std::cout << "size: " << ((int *) resultData)[0] << " Diff: " << ((float *) resultData)[1] << + " Secondary Metric: " << ((float *) resultData)[2] << std::endl; + }else{ + std::cout << "NULL" << std::endl; + } } - } - cout << endl; - - //------------------------------------------------------------ - // Add workflows to Manager to be executed - //------------------------------------------------------------ - - string inputFolderPath = "~/Desktop/images15"; - RegionTemplateCollection* rts; - // rts = RTFromFiles(inputFolderPath); - - // add arguments to each stage - add_arguments_to_stages(merged_stages, merged_arguments, deps, rts); - - // add all stages to manager - // for (pair s : merged_stages) - // sysEnv.executeComponent(s.second); - - // execute workflows - // sysEnv.startupExecution(); - - // get results - // for each ArgumentBase output of merged_outputs do - // cout << sysEnv.getComponentResultData(output.getId()) << endl; - // end - - map args; - for (pair p : workflow_inputs) - args[p.first] = p.second; - for (pair p : interstage_arguments) - args[p.first] = p.second; - - map expanded_args; - map expanded_stages; - - expand_stages(args, parameters_values, expanded_args, base_stages, expanded_stages); - - cout << endl<< "merged: " << endl; - for (pair p : expanded_stages) { - cout << "stage " << p.second->getId() << ":" << p.second->getName() << endl; - cout << "\tinputs: " << endl; - for (int i : p.second->getInputs()) - cout << "\t\t" << i << ":" << expanded_args[i]->getName() << endl; - cout << "\toutputs: " << endl; - for (int i : p.second->getOutputs()) - cout << "\t\t" << i << ":" << expanded_args[i]->getName() << endl; + } else { + int flag; + do { + MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, + &flag, MPI_STATUS_IGNORE); + usleep(200000); + } while (!flag); + MPI_Recv(&mpi_val, 1, MPI_INT, MPI_ANY_SOURCE, + MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); + sysEnv.startupSystem(argc, argv, "libcomponentnsdifffgo.so"); } - cout << endl << "merged args" << endl; - for (pair p : expanded_args) - cout << "\t" << p.first << ":" << p.second->getName() << " = " << p.second->toString() << endl; + sysEnv.finalizeSystem(); } /***************************************************************/ -/***************** Workflow parsing functions ******************/ +/**************** Workflow generation functions ****************/ /***************************************************************/ -// returns by reference a map of input arguments to an uid from 'workflow_descriptor' with the -// list if all possible values each argument can get on a separate map, linked with the same uid -void get_inputs_from_file(FILE* workflow_descriptor, - map &workflow_inputs, - map> ¶meters_values) { - - char *line = NULL; - size_t len = 0; - - // initial ports section beginning and end - string ip(""); - string ipe(""); - - // ports section beginning and end - string p(""); - string pe(""); - - // argument name, stored before to be consumed when the ArgumentBase type can be set - string name; - - // go to the initial ports beginning - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ip) == string::npos); - // cout << "port init begin: " << line << endl; - - // keep getting ports until it reaches the end of initial ports - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ipe) == string::npos) { - // consumes the port beginning - while (string(line).find(p) == string::npos && get_line(&line, workflow_descriptor) != -1); - // cout << "port begin: " << line << endl; - - // finds the name field - name = get_workflow_name(workflow_descriptor); - // cout << "name: " << name << endl; - - // finds the description field - string description = get_workflow_field(workflow_descriptor, "text"); - // cout << "description: " << description << endl; - - // parse the description to get the input value(s) - Json::Reader reader; - bool wellFormed; - Json::Value data; - - wellFormed = reader.parse(description, data, false); - if(!wellFormed) { - cout << "Failed to parse JSON: " << description << endl << reader.getFormattedErrorMessages() << endl; - exit(-3); - } - // create the propper Argument object for each type case also getting - // the parameters' values - ArgumentBase* inp_arg; - list inp_values; - switch (get_port_type(data["type"].asString())) { - case parsing::int_t: - // create the argument - inp_arg = new ArgumentInt(); - // cout << "int argument: " << name << ", values: " << endl; - // get all possible values for the argument - for (int i=0; itoString() << endl; - inp_values.emplace_back(val); - } - // cout << endl; - break; - case parsing::string_t: - // create the argument - inp_arg = new ArgumentString(); - // cout << "string argument: " << name << ", values: " << endl; - // get all possible values for the argument - for (int i=0; itoString() << endl; - inp_values.emplace_back(val); - } - // cout << endl; - break; - case parsing::float_t: - // create the argument - inp_arg = new ArgumentFloat(); - // cout << "float argument: " << name << ", values: " << endl; - // get all possible values for the argument - for (int i=0; itoString() << endl; - inp_values.emplace_back(val); - } - // cout << endl; - break; - case parsing::float_array_t: - // create the argument - inp_arg = new ArgumentFloatArray(); - // cout << "floatarray argument: " << name << ", values: " << endl; - // get all possible values for the argument - for (int i=0; iaddArgValue(temp); - // cout << temp.toString() << endl; - } - // cout << "]"; - inp_values.emplace_back(val); - } - // cout << endl; - break; - case parsing::rt_t: - // create the argument - inp_arg = new ArgumentRT(); - // cout << "string argument: " << name << ", values: " << endl; - // get all possible values for the argument - for (int i=0; itoString() << endl; - inp_values.emplace_back(val); - } - // cout << endl; - break; - default: - exit(-4); +void generate_drs(RegionTemplate* rt, + const std::map &expanded_args) { + + // verify every argument + for (pair p : expanded_args) { + // if an argument is a region template data region + if (p.second->getType() == ArgumentBase::RT) { + if (((ArgumentRT*)p.second)->isFileInput) { + // create the data region and add it to the input region template + DenseDataRegion2D *ddr2d = new DenseDataRegion2D(); + ddr2d->setName(p.second->getName()); + std::ostringstream oss; + oss << p.first; + ddr2d->setId(oss.str()); + ddr2d->setVersion(p.first); + ddr2d->setIsAppInput(true); + ddr2d->setInputType(DataSourceType::FILE_SYSTEM); + ddr2d->setOutputType(DataSourceType::FILE_SYSTEM); + ddr2d->setInputFileName(p.second->toString()); + rt->insertDataRegion(ddr2d); + } } - - // set inp_arg name and id - inp_arg->setName(name); - int arg_id = new_uid(); - inp_arg->setId(arg_id); - - // add input argument to map - workflow_inputs[arg_id] = inp_arg; - - // add list of argument values to map - parameters_values[arg_id] = inp_values; - - // consumes the port ending - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pe) == string::npos); - // cout << "not port end: " << line << endl; - // cout << "port end: " << line << endl; } } -// returns by reference a map of output arguments, mapped by an uid, 'workflow_outputs' -void get_outputs_from_file(FILE* workflow_descriptor, map &workflow_outputs) { - - char *line = NULL; - size_t len = 0; - - // initial ports section beginning and end - string ip(""); - string ipe(""); - - // ports section beginning and end - string p(""); - string pe(""); - - // go to the initial ports beginning - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ip) == string::npos); - // cout << "port init begin: " << line << endl; - - // keep getting ports until it reaches the end of initial ports - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ipe) == string::npos) { - // consumes the port beginning - while (string(line).find(p) == string::npos && get_line(&line, workflow_descriptor) != -1); - // cout << "port begin: " << line << endl; - - // finds the name field - string name = get_workflow_name(workflow_descriptor); - // cout << "name: " << name << endl; - - // finds the description field - string description = get_workflow_field(workflow_descriptor, "text"); - // cout << "description: " << description << endl; - - // parse the description to get the input value(s) - Json::Reader reader; - bool wellFormed; - Json::Value data; - - wellFormed = reader.parse(description, data, false); - if(!wellFormed) { - cout << "Failed to parse JSON: " << description << endl << reader.getFormattedErrorMessages() << endl; - exit(-3); - } - - // create the propper Argument object for each type case also getting - // the parameters' values - ArgumentBase* out_arg; - switch (get_port_type(data["type"].asString())) { - case parsing::int_t: - // create the argument - out_arg = new ArgumentInt(); - // cout << "int output: " << name << endl; - break; - case parsing::string_t: - // create the argument - out_arg = new ArgumentString(); - // cout << "string output: " << name << endl; - break; - case parsing::float_t: - // create the argument - out_arg = new ArgumentFloat(); - // cout << "float output: " << name << endl; - break; - case parsing::float_array_t: - // create the argument - out_arg = new ArgumentFloatArray(); - // cout << "floatarray output: " << name << endl; - break; - case parsing::rt_t: - // create the argument - out_arg = new ArgumentRT(); - // cout << "string output: " << name << endl; - break; - default: - exit(-4); +void generate_drs(RegionTemplate* rt, PipelineComponentBase* stage, + const std::map &expanded_args) { + + // verify every argument + for (int inp : stage->getInputs()) { + // if an argument is a region template data region + if (expanded_args.at(inp)->getType() == ArgumentBase::RT) { + // if (((ArgumentRT*)expanded_args.at(inp))->isFileInput) { + // create the data region and add it to the input region template + DenseDataRegion2D *ddr2d = new DenseDataRegion2D(); + ddr2d->setName(expanded_args.at(inp)->getName()); + std::ostringstream oss; + oss << inp; + ddr2d->setId(oss.str()); + ddr2d->setVersion(inp); + ddr2d->setIsAppInput(true); + ddr2d->setInputType(DataSourceType::FILE_SYSTEM); + ddr2d->setOutputType(DataSourceType::FILE_SYSTEM); + ddr2d->setInputFileName(expanded_args.at(inp)->toString()); + rt->insertDataRegion(ddr2d); + // } } - - out_arg->setName(name); - workflow_outputs[new_uid()] = out_arg; - - // consumes the port ending - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pe) == string::npos); - // get_line << "not port end: " << line << endl; - // cout << "port end: " << line << endl; } - // cout << "port init end: " << line << endl; } -// returns by reference the map of stages on its uid, 'base_stages', and also a map -// of all output arguments of all stages on its uid, 'interstage_arguments'. -void get_stages_from_file(FILE* workflow_descriptor, - map &base_stages, - map &interstage_arguments) { - - char *line = NULL; - size_t len = 0; - - string ps(""); - string pse(""); - - string p(""); - string pe(""); - - // go to the processors beginning - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ps) == string::npos); - // cout << "not processor init begin: " << line << endl; - // cout << "processor init begin: " << line << endl; - - // keep getting single processors until it reaches the end of all processors - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pse) == string::npos) { - // consumes the processor beginning - while (string(line).find(p) == string::npos && get_line(&line, workflow_descriptor) != -1); - // cout << "processor begin: " << line << endl; - - // get stage fields - string name = get_workflow_name(workflow_descriptor); - // cout << "name: " << name << endl; - - // get stage command - string command = get_workflow_field(workflow_descriptor, "command"); - // cout << "command: " << command << endl; - - PipelineComponentBase* stage = PipelineComponentBase::ComponentFactory::getComponentFactory(command)(); - stage->setName(name); - - // get outputs and add them to the map of arguments - // list inputs = get_workflow_ports(workflow_descriptor, "inputPorts"); - // cout << "outputs:" << endl; - list outputs; - get_workflow_arguments(workflow_descriptor, outputs); - for(list::iterator i=outputs.begin(); i!=outputs.end(); i++) { - // cout << "\t" << (*i)->getId() << ":" << (*i)->getName() << endl; - interstage_arguments[(*i)->getId()] = *i; - stage->addOutput((*i)->getId()); - } - - int stg_id = new_uid(); - // cout << "uid: " << stg_id << endl; - // setting task id - stage->setId(stg_id); - base_stages[stg_id] = stage; +void add_arguments_to_stages(std::map &merged_stages, + std::map &merged_arguments, string name) { - // consumes the processor ending - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pe) == string::npos); - // cout << "not processor end: " << line << endl; - // cout << "processor end: " << line << endl; - } -} - -// returns by reference the map of stages to its ids updated. each stage now has -// the list of input ids -void connect_stages_from_file(FILE* workflow_descriptor, - map &base_stages, - map &interstage_arguments, - map &input_arguments, - map> &deps) { - - char *line = NULL; - size_t len = 0; - - string ds(""); - string dse(""); - - string d(""); - string de(""); - - string sink(""); - - string source(""); - - // go to the datalinks beginning - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ds) == string::npos); - // cout << "not datalink init begin" << line << endl; - // cout << "datalink init begin" << line << endl; - - // keep getting single datalinks until it reaches the end of all datalinks - while (get_line(&line, workflow_descriptor) != -1 && string(line).find(dse) == string::npos) { - // consumes the datalink beginning - while (string(line).find(d) == string::npos && get_line(&line, workflow_descriptor) != -1); - // cout << "datalink begin" << line << endl; - - // get sink and source fields - vector all_sink_fields = get_all_fields(workflow_descriptor, sink, sinke); - vector all_source_fields = get_all_fields(workflow_descriptor, source, sourcee); - - // verify if it's a task sink instead of a workflow sink - if (all_sink_fields.size() != 1) { - // get the sink stage - PipelineComponentBase* sink_stg = find_stage(base_stages, all_sink_fields[0].data); - // cout << "stage " << sink_stg->getId() << ":" << sink_stg->getName() << " sink" << endl; + int i=0; + for (pair&& stage : merged_stages) { + // create the RT isntance + RegionTemplate *rt = new RegionTemplate(); + rt->setName(name); - ArgumentBase* arg; - // check whether the source is from the workflow arguments or another stage - if (all_source_fields.size() == 1) { - // if source is workflow argument: - arg = find_argument(input_arguments, all_source_fields[0].data); - // cout << "source from workflow is " << arg->getId() << ":" << arg->getName() << endl; - } else { - // if the source is another stage - deps[sink_stg->getId()].emplace_back(find_stage(base_stages, all_source_fields[0].data)->getId()); - arg = find_argument(interstage_arguments, all_source_fields[1].data); - // cout << "source from stage " << all_source_fields[0].data << " is " << arg->getId() << ":" << arg->getName() << endl; + // add input arguments to stage, adding them as RT as needed + for (int arg_id : stage.second->getInputs()) { + ArgumentBase* new_arg = merged_arguments[arg_id]->clone(); + new_arg->setParent(merged_arguments[arg_id]->getParent()); + stage.second->addArgument(new_arg); + if (new_arg->getType() == ArgumentBase::RT) { + // std::cout << "input RT : " << merged_arguments[arg_id]->getName() << std::endl; + // insert the region template on the parent stage if the argument is a DR and if the RT wasn't already added + if (((RTPipelineComponentBase*)stage.second)-> + getRegionTemplateInstance(rt->getName()) == NULL) { + ((RTPipelineComponentBase*)stage.second)->addRegionTemplateInstance(rt, rt->getName()); + } + ((RTPipelineComponentBase*)stage.second)->addInputOutputDataRegion( + rt->getName(), new_arg->getName(), RTPipelineComponentBase::INPUT); } + if (merged_arguments[arg_id]->getParent() != 0) { + // verify if the dependency stage was reused + int parent = merged_arguments[arg_id]->getParent(); + // std::cout << "[before]Dependency: " << stage.second->getId() << ":" << stage.second->getName() + // << " ->addDependency( " << parent << " )" << std::endl; + if (merged_stages[merged_arguments[arg_id]->getParent()]->reused != NULL) + parent = merged_stages[merged_arguments[arg_id]->getParent()]->reused->getId(); + // std::cout << "Dependency: " << stage.second->getId() << ":" << stage.second->getName() + // << " ->addDependency( " << parent << " )" << std::endl; + ((RTPipelineComponentBase*)stage.second)->addDependency(parent); + } + } - // add the link to the sink stage - sink_stg->addInput(arg->getId()); - } - // else { - // cout << "workflow argument sink: " << all_sink_fields[0].data << endl; - // } - - // consumes the datalink ending - while (string(line).find(de) == string::npos && get_line(&line, workflow_descriptor) != -1); - // cout << "datalink end" << line << endl; + // add output arguments to stage, adding them as RT as needed + for (int arg_id : stage.second->getOutputs()) { + ArgumentBase* new_arg = merged_arguments[arg_id]->clone(); + new_arg->setParent(merged_arguments[arg_id]->getParent()); + new_arg->setIo(ArgumentBase::output); + stage.second->addArgument(new_arg); + if (merged_arguments[arg_id]->getType() == ArgumentBase::RT) { + // std::cout << "output RT : " << merged_arguments[arg_id]->getName() << std::endl; + // insert the region template on the parent stage if the argument is a DR and if the RT wasn't already added + if (((RTPipelineComponentBase*)stage.second)->getRegionTemplateInstance(rt->getName()) == NULL) + ((RTPipelineComponentBase*)stage.second)->addRegionTemplateInstance(rt, rt->getName()); + ((RTPipelineComponentBase*)stage.second)->addInputOutputDataRegion(rt->getName(), + merged_arguments[arg_id]->getName(), RTPipelineComponentBase::OUTPUT); + } + } } } /***************************************************************/ -/**************** Argument expansion functions *****************/ +/********* Workflow merging and preparation functions **********/ /***************************************************************/ -// returns by value the list of expanded parameters sets. each parameter set -// an be sent to the workflow to be executed. a parameter set is a map of aguments with -// a possible value for that argument (parameter). -list> expand_parameters_combinations(map> parameters_values, - map workflow_inputs) { - - list> output; - - list values_head = map_pop(parameters_values); - ArgumentBase* input_head = map_pop(workflow_inputs); - - // halting condition - if (parameters_values.size() == 0) { - // cout << "halting on " << input_head->getName() << endl; - for (ArgumentBase* a : values_head) { - map inputs; - ArgumentBase* input = a->clone(); - input->setName(input_head->getName()); - input->setId(new_uid()); - inputs[input->getId()] = input; - output.emplace_back(inputs); - } - - return output; - } - - // cout << "recurring on " << endl; - // mapprint(parameters_values); - // cout << endl; - list> next = expand_parameters_combinations(parameters_values, workflow_inputs); - for (ArgumentBase* a : values_head) { - // list> next_copy = copt(next); - ArgumentBase* input_copy = a->clone(); - input_copy->setName(input_head->getName()); - input_copy->setId(new_uid()); - - for (map p : next) { - map updated_arguments = cpy_ab_map(p); - updated_arguments[input_copy->getId()] = input_copy; - output.emplace_back(updated_arguments); - } - - } - - return output; +double str2d (string s) { + istringstream os(s); + double d; + os >> d; + return d; } -// returns by reference a list of copied outputs. -void expand_arguments(map &ref_arguments, int copies, - list> ©_arguments) { - - for (int i=0; i cpy = cpy_ab_map(ref_arguments); - copy_arguments.emplace_back(cpy); +ArgumentBase* gen_arg(string value, string type) { + ArgumentBase* arg; + char* token2; + switch (get_port_type(type)) { + case parsing::int_t: + arg = new ArgumentInt((int)str2d(value)); + break; + case parsing::string_t: + arg = new ArgumentString(value); + break; + case parsing::float_t: + arg = new ArgumentFloat((float)str2d(value)); + break; + case parsing::float_array_t: + arg = new ArgumentFloatArray(); + token2 = strtok(const_cast(value.c_str()), "[],"); + while (token2 != NULL) { + // convert value + ArgumentFloat f((float)str2d(token2)); + ((ArgumentFloatArray*)arg)->addArgValue(f); + token2 = strtok(NULL, "[],"); + } + break; + case parsing::rt_t: + arg = new ArgumentRT(value); + break; + default: + exit(-4); } + return arg; } -void expand_stages(map &base_stages, int copies, - list> &all_stages) { - - for (int i=0; i cpy; - for (pair pcb : base_stages) { - // clone basic info - PipelineComponentBase* pcb_cpy = pcb.second->clone(); - - // set name and id - pcb_cpy->setName(pcb.second->getName()); - pcb_cpy->setId(new_uid()); - - // copy input list - for (int inp : pcb.second->getInputs()) - pcb_cpy->addInput(inp); +bool all_inps_in(const list& inps, const map& args, + const map>& input_arguments, + const list& args_values) { - // copy output list - for (int out : pcb.second->getOutputs()) - pcb_cpy->addOutput(out); - - cpy[pcb_cpy->getId()] = pcb_cpy; + for (int i : inps) { + // cout << "checking arg " << args.at(i)->getId() << ":" << args.at(i)->getName() << endl; + if (input_arguments.find(args.at(i)->getName()) == input_arguments.end() && + find_argument(args_values, args.at(i)->getName()) == NULL) { + // cout << "not here" << endl; + return false; } + } + return true; +} - all_stages.emplace_back(cpy); +bool all_inps_in(list inps, map> ref) { + for (int i : inps) { + if (ref.find(i) == ref.end()) + return false; } + return true; } -/***************************************************************/ -/********* Workflow merging and preparation functions **********/ -/***************************************************************/ +void generate_pre_defined_stages(FILE* parameters_values_file, map args, + map base_stages, map& workflow_outputs, + map& expanded_args, map& expanded_stages, + bool use_coarse_grain, bool clustered_generation) { -void iterative_full_merging(list> &all_inputs, - list> &all_outputs, - list> &all_stages, - list> &all_interstage_arguments, - map &interstage_arguments_ref, - map &merged_arguments, - map &merged_outputs, - map &merged_stages) { + cout << "[generate_pre_defined_stages]" << endl; - list>::iterator inputs_it = all_inputs.begin(); - list>::iterator outputs_it = all_outputs.begin(); - list>::iterator interstage_arguments_it = all_interstage_arguments.begin(); + string pe("Parameters for evaluation"); - RegionTemplate* rt; + char* line = NULL; + size_t length=0; - // assign the right arguments, inputs and outputs to each stage - int i=0; - for (map stages : all_stages) { - // cout << "starting stage " << i << endl; - int io_offset = inputs_it->begin()->first - 1; - int input_lim = inputs_it->size(); - int output_lim = inputs_it->size() + outputs_it->size(); - - rt = NULL; - - // cout << "io_offset " << io_offset << endl; - // cout << "input_lim " << input_lim << endl; - // cout << "output_lim " << output_lim << endl; - - // update all arguments ids - for (pair stage : stages) { - // cout << "\tstage " << stage.first << ":" << stage.second->getName() << endl; - // replace all inputs and outputs ids - for (int inp : stage.second->getInputs()) { - if (inp <= input_lim) { - // cout << "\t\treg_input" << endl; - stage.second->replaceInput(inp, inp+io_offset); - // cout << "\t\tinput " << inp << " swaped with " << inp+io_offset << endl; - } else { - // cout << "\t\targ_input" << endl; - int new_inp = find_id_by_name(interstage_arguments_ref[inp]->getName(), - *interstage_arguments_it); - stage.second->replaceInput(inp, new_inp); - // cout << "\t\tisa_input " << inp << new_inp << endl; - } - } - for (int out : stage.second->getOutputs()) { - if (out <= output_lim) { - stage.second->replaceOutput(out, out+io_offset); - } else { - int new_inp = find_id_by_name(interstage_arguments_ref[out]->getName(), - *interstage_arguments_it); - stage.second->replaceOutput(out, new_inp); - } - } - } - inputs_it++; - outputs_it++; - interstage_arguments_it++; - } + // map of arguments, ordered by name, containing all values of each argument + map> input_arguments; - // merge inputs + // list of the stages' arguments + map> stages_arguments; + // interstage args + list args_values; - // merge all inputs, outputs and interstage arguments into one - for (map m : all_inputs) - for (pair p : m) - merged_arguments[p.first] = p.second; - for (map m : all_outputs) { - for (pair p : m) { - merged_arguments[p.first] = p.second; - merged_outputs[p.first] = p.second; - } - } - for (map m : all_interstage_arguments) - for (pair p : m) - merged_arguments[p.first] = p.second; + // list of stages created here + list stages_iterative; - // merged_arguments + while(getline(&line, &length, parameters_values_file) != -1) { + // go to the first pe + int r = 0; + while (string(line).find(pe) == string::npos && r != -1) + r = getline(&line, &length, parameters_values_file); - // bool changes = true; - // while (changes) { - // changes = false; + // finishes loop when the eof is reached + if (r == -1) + break; - // // - // } + list current_args; - merged_stages = all_stages.front(); -} + // get all parameters of a workflow + while (true) { + getline(&line, &length, parameters_values_file); -void add_arguments_to_stages(map &merged_stages, - map &merged_arguments, - map> &deps, - RegionTemplateCollection *rts) { + // get parameter name, value and token + char* token = strtok(line, " \t"); + string value(token); - int i=0; - RegionTemplate* rt; - for (pair stage : merged_stages) { - // add arguments to stage, adding them as RT as needed - for (int arg_id : stage.second->getInputs()) { - stage.second->addArgument(merged_arguments[arg_id]); - if (merged_arguments[arg_id]->getType() == ArgumentBase::STRING) - cout << "RT : " << merged_arguments[arg_id]->getName() << endl; - // if (rt == NULL) - //------------------------------------------------------------------------------------------------------- if rt == NULL then make a new one - // stage.second->addRegionTemplateInstance(rts->getRT(i), rts->getRT(i++)->getName()); - } + // break loop if the line is empty with only a '\n' + if (value.compare("\n")==0) + break; - // add dependencies - for (int d : deps[stage.second->getId()]) - ((RTPipelineComponentBase*)stage.second)->addDependency(d); - } + token = strtok(NULL, " \t"); + string name(token); + token = strtok(NULL, " \t\n"); + string type(token); -} + ArgumentBase* arg; -/***************************************************************/ -/************* Workflow parsing helper functions ***************/ -/***************************************************************/ + // verify if the argument is on the map and if it contains the current value + bool found = false; + for (ArgumentBase* a : input_arguments[name]) { + ArgumentBase* aa = gen_arg(value, type); + + // cout << "[---] comparing " << a->getName() << ":" << a->toString() << " with " << name << ":" << aa->toString() << endl; + if (a->getName().compare(name)==0 && a->toString().compare(aa->toString())==0) { + found = true; + arg = a; + delete aa; + break; + } + delete aa; + } -int get_line(char** line, FILE* f) { - char* nline; - size_t length=0; - if (line_buffer.empty()) { - if (getline(&nline, &length, f) == -1) - return -1; - string sline(nline); - size_t pos=string::npos; - while ((pos = sline.find("><")) != string::npos) { - line_buffer.emplace_back(sline.substr(0,pos+1)); - sline = sline.substr(pos+1); - } - line_buffer.emplace_back(sline); - } + char* token2; + if (!found) { + arg = gen_arg(value, type); - char* cline = (char*)malloc((line_buffer.front().length()+1)*sizeof(char*)); - memcpy(cline, line_buffer.front().c_str(), line_buffer.front().length()+1); - *line = cline; - line_buffer.pop_front(); - return strlen(*line); -} + // set RT arguments as file inputs + if (arg->getType() == ArgumentBase::RT) + ((ArgumentRT*)arg)->isFileInput = true; -string get_workflow_name(FILE* workflow) { - return get_workflow_field(workflow, "name"); -} + // set remaining atributes + arg->setName(name); + arg->setId(new_uid()); + + input_arguments[name].emplace_back(arg); + } -string get_workflow_field(FILE* workflow, string field) { - char *line = NULL; - size_t len = 0; - - // create field regex - regex r ("<" + field + ">[\"\\:\\w {},.\\[\\]-]+<\\/" + field + ">"); - - // get a new line until name is found - while (get_line(&line, workflow) != -1) { - smatch match; - string s(line); - regex_search(s, match, r); - - // cout << "line: " << s << endl; - - // if got a name match - if (match.size() == 1) { - // cout << "field match: " << line << endl; - return s.substr(s.find("<" + field + ">")+field.length()+2, - s.find("")-s.find("<" + field + ">")-field.length()-2); + current_args.emplace_back(arg); } + + stages_arguments[new_uid()] = current_args; } - return nullptr; -} + // show all generated args + // for (pair> p : input_arguments) { + // cout << "Argument " << p.first << " with values:" << endl; + // for (ArgumentBase* a : p.second) { + // cout << "\t" << a->getId() << ": " << a->toString() << endl; + // } + // } -void get_workflow_arguments(FILE* workflow, - list &output_arguments) { - - char *line = NULL; - size_t len = 0; - - // initial ports section beginning and end - string ie(""); - string iee(""); - - // ports section beginning and end - string e(""); - string ee(""); - - // go to the initial entries beginning - while (get_line(&line, workflow) != -1 && string(line).find(ie) == string::npos); - // cout << "port init begin: " << line << endl; - - // keep getting ports until it reaches the end of initial ports - while (get_line(&line, workflow) != -1 && string(line).find(iee) == string::npos) { - // consumes the port beginning - while (string(line).find(e) == string::npos && get_line(&line, workflow) != -1); - // cout << "port begin: " << line << endl; - - // finds the name and field - string name = get_workflow_field(workflow, "string"); - - // generate an argument - string type = get_workflow_field(workflow, "path"); - ArgumentBase* arg = new_typed_arg_base(type); - arg->setName(name); - arg->setId(new_uid()); - output_arguments.emplace_back(arg); - - // consumes the port ending - while (get_line(&line, workflow) != -1 && string(line).find(ee) == string::npos); - // cout << "not port end: " << line << endl; - // cout << "port end: " << line << endl; - } - // cout << "port init end: " << line << endl; -} + // for (pair> p : stages_arguments) { + // cout << "Argument set " << p.first << " with parameters:" << endl; + // for (ArgumentBase* a : p.second) { + // cout << "\t" << a->getId() << ":" << a->getName() << " = " << a->toString() << endl; + // } + // } -vector get_all_fields(FILE* workflow, string start, string end) { - char *line = NULL; - size_t len = 0; - string type; - string field; - vector fields; - general_field_t general_field; - - // consumes the beginning - while (get_line(&line, workflow) != -1 && string(line).find(start) == string::npos); - - // create general field regex - regex r ("<[\\w]+>[\\w ]+<\\/[\\w]+>"); - - // keep fiding fields until the end - while (get_line(&line, workflow) != -1 && string(line).find(end) == string::npos) { - smatch match; - string s(line); - regex_search(s, match, r); - - // if got a general field match - if (match.size() == 1) { - // cout << "general field match: " << line << endl; - type = s.substr(s.find("<")+1, s.find(">")-s.find("<")-1); - field = s.substr(s.find("<" + type + ">")+type.length()+2, s.find("")-s.find("<" + type + ">")-type.length()-2); - // cout << "type: " << type << ", field: " << field << endl; - general_field.type = type; - general_field.data = field; - fields.push_back(general_field); - } - } - return fields; -} -PipelineComponentBase* find_stage(map stages, string name) { - for (pair p : stages) - if (p.second->getName().compare(name) == 0) - return p.second; - return NULL; -} + // keep expanding stages until there is no stage left + while (base_stages.size() != 0) { + // cout << "base_stages size: " << base_stages.size() << endl; + for (pair p : base_stages) { + // attempt to find a stage witch has all inputs expanded either on the workflow inputs or interstage ones + // cout << "checking stage " << p.second->getName() << endl; + if (all_inps_in(p.second->getInputs(), args, input_arguments, args_values)) { + // cout << "stage " << p.second->getName() << " has all inputs" << endl; -ArgumentBase* find_argument(map arguments, string name) { - for (pair p : arguments) - if (p.second->getName().compare(name) == 0) - return p.second; - return NULL; -} + // A list of concatenated arg values, used as a quick way to verify if a stage with + // the same args was already created. + map arg_values_list; + + // expands all input values of stage p + for (pair> as : stages_arguments) { + PipelineComponentBase* tmp = p.second->clone(); + string arg_values = ""; + // add all arguments from stages_arguments that belong to stage p.second + for (int inp_id : p.second->getInputs()) { + // cout << "checking input " << args[inp_id]->getName() << " of " << p.second->getName() << " with " << as.second.size() << " parameters" << endl; + for (ArgumentBase* a : as.second) { + // cout << "checking arg " << a->getName() << ":" << a->getId() << endl; + if (args.at(inp_id)->getName().compare(a->getName())==0) { + arg_values += to_string(a->getId()); + tmp->addInput(a->getId()); + // tmp->addArgument(a->clone()); + // cout << "added arg " << a->getName() << ":" << a->getId() << " = " << a->toString() << endl; + break; + } + } + } -// taken from: http://stackoverflow.com/questions/16388510/evaluate-a-string-with-a-switch-in-c -constexpr unsigned int str2int(const char* str, int h = 0) { - return !str[h] ? 5381 : (str2int(str, h+1) * 33) ^ str[h]; -} + // cout << "[arg_values] " << arg_values << endl; + map::iterator it = arg_values_list.find(arg_values); + // verify if there is no other stage with the same values + if (it == arg_values_list.end() || !use_coarse_grain) { + // add current stage and args values to be compared later + arg_values_list[arg_values] = tmp; + + // finishes to generate the stage + int id = new_uid(); + tmp->setId(id); + tmp->setName(p.second->getName()); + tmp->setLocation(PipelineComponentBase::WORKER_SIDE); + + // generate outputs + for (int out_id : p.second->getOutputs()) { + int new_id = new_uid(); + ArgumentBase* ab_cpy = args.at(out_id)->clone(); + ab_cpy->setName(args.at(out_id)->getName()); + ab_cpy->setId(new_id); + ab_cpy->setParent(tmp->getId()); + tmp->replaceOutput(out_id, new_id); + + // add stage's output arguments to current workflow's argument list + stages_arguments[as.first].emplace_back(ab_cpy); + + // add output to interstage args map + args_values.emplace_back(ab_cpy); + } + + // add stage to final stages list + expanded_stages[tmp->getId()] = tmp; + } else { + // if the stage already exists, reuse it + for (int out_id : it->second->getOutputs()) { + // add reused stage's output arguments to current workflow's argument list + // cout << "reusing stage " << out_id << " from workflow " + // << it->second->getId() << endl; + stages_arguments[as.first].emplace_back(find_argument(args_values, out_id)); + } -ArgumentBase* new_typed_arg_base(string type) { - switch (str2int(type.c_str())) { - case str2int("integer"): - return new ArgumentInt(); - case str2int("float"): - return new ArgumentFloat(); - case str2int("string"): - return new ArgumentString(); - case str2int("floatarray"): - return new ArgumentFloatArray(); - case str2int("rt"): - return new ArgumentRT(); - default: - return NULL; - } -} + // TODO: solve mem leaking + // delete tmp; + } + } -parsing::port_type_t get_port_type(string s) { - switch (str2int(s.c_str())) { - case str2int("integer"): - return parsing::int_t; - case str2int("float"): - return parsing::float_t; - case str2int("string"): - return parsing::string_t; - case str2int("floatarray"): - return parsing::float_array_t; - case str2int("rt"): - return parsing::rt_t; - default: - return parsing::error; + // remove stage descriptor since it was already solved and break the loop + base_stages.erase(p.first); + break; + } + } } -} -map cpy_ab_map(map &ref) { - map cpy; - for (pair p : ref) { - ArgumentBase* ab_cpy = p.second->clone(); - ab_cpy->setName(p.second->getName()); - ab_cpy->setId(new_uid()); - cpy[ab_cpy->getId()] = ab_cpy; + // add stages_arguments inputs to expanded_args + for (pair> p : stages_arguments) { + for (ArgumentBase* a : p.second) { + expanded_args[a->getId()] = a; + } } - return cpy; -} -template -T map_pop(map &m) { - typename map::iterator i = m.begin(); - T val = i->second; - m.erase(i); - return val; -} - -int find_id_by_name(string name, map &ref) { - for (pair p : ref) { - if (name.compare(p.second->getName()) == 0) - return p.first; + // update the output arguments + map workflow_outputs_cpy = workflow_outputs; + while (workflow_outputs_cpy.size() != 0) { + // get the first output argument + ArgumentBase* old_arg = (workflow_outputs_cpy.begin())->second; + + // remove the current, outdated, argument from final map + workflow_outputs.erase(old_arg->getId()); + workflow_outputs_cpy.erase(old_arg->getId()); + + // add a copy of the old arg with the correct id to the final map for each repeated output + // cout << "checking output " << old_arg->getId() << ":" << old_arg->getName() << endl; + for (ArgumentBase* a : args_values) { + // cout << "comparing with output " << a->getId() << ":" << a->getName() << endl; + if (a->getName().compare(old_arg->getName()) == 0) { + // cout << "output found" << endl; + ArgumentBase* temp = old_arg->clone(); + temp->setParent(old_arg->getParent()); + temp->setId(a->getId()); + workflow_outputs[temp->getId()] = temp; + } + } } - return 0; } -bool all_inps_in(list inps, map> ref) { - for (int i : inps) { - if (ref.find(i) == ref.end()) - return false; - } - return true; -} - // map args: all args, i.e inputs and interstate arguments. // map> args_values: the list of values for each argument. // this map will be changed inside and must start with all inputs @@ -1188,21 +712,22 @@ void expand_stages(const map &args, map> args_values, map &expanded_args, map stages, - map &expanded_stages) { + map &expanded_stages, + map &workflow_outputs) { // cout << endl << "args:" << endl; // mapprint(args); // cout << endl; - // cout << endl << "arg_values:" << endl; - for (pair> p : args_values) { - // cout << "base argument " << p.first << ":" << args.at(p.first)->getName() << endl; - for (ArgumentBase* a : p.second) { - a->setId(new_uid()); - a->setName(args.at(p.first)->getName()); - // cout << "\t" << a->getId() << ":" << a->getName() << " = " << a->toString() << endl; - } - } + // // cout << endl << "arg_values:" << endl; + // for (pair> p : args_values) { + // // cout << "base argument " << p.first << ":" << args.at(p.first)->getName() << endl; + // for (ArgumentBase* a : p.second) { + // a->setId(new_uid()); + // a->setName(args.at(p.first)->getName()); + // // cout << "\t" << a->getId() << ":" << a->getName() << " = " << a->toString() << endl; + // } + // } // cout << endl << "stages:" << endl; // mapprint(stages); @@ -1241,6 +766,7 @@ void expand_stages(const map &args, // cout << "updating stage " << pt->getId() << ":" << pt->getName() << endl; // clone pt basic infoinfoinfo PipelineComponentBase* pt_cpy = pt->clone(); + pt_cpy->setLocation(PipelineComponentBase::WORKER_SIDE); // set name and id pt_cpy->setName(pt->getName()); @@ -1281,6 +807,7 @@ void expand_stages(const map &args, ArgumentBase* ab_cpy = args.at(out_id)->clone(); ab_cpy->setName(args.at(out_id)->getName()); ab_cpy->setId(new_id); + ab_cpy->setParent(pt->getId()); pt->replaceOutput(out_id, new_id); temp.emplace_back(ab_cpy); } @@ -1309,12 +836,13 @@ void expand_stages(const map &args, // break loop of 'stages' since its content has changed break; } - else + // else // cout << "stage " << p.second->getName() << " have unmet dependencies " << endl; } } // flatten the arg values into expanded_args + // cout << endl << "arg_values" << endl; for (pair> p : args_values) { // cout << "base argument " << p.first << ":" << args.at(p.first)->getName() << endl; for (ArgumentBase* a : p.second) { @@ -1322,4 +850,27 @@ void expand_stages(const map &args, expanded_args[a->getId()] = a; } } -} \ No newline at end of file + + // update the output arguments + map workflow_outputs_cpy = workflow_outputs; + while (workflow_outputs_cpy.size() != 0) { + // get the first output argument + ArgumentBase* old_arg = (workflow_outputs_cpy.begin())->second; + + // get the list of parameters (i.e the number of copies and the final ids) of the outputs + list l = args_values[old_arg->getId()]; + + // remove the current, outdated, argument from final map + workflow_outputs.erase(old_arg->getId()); + workflow_outputs_cpy.erase(old_arg->getId()); + + // add a copy of the old arg with the correct id to the final map for each repeated output + for (ArgumentBase* a : l) { + ArgumentBase* temp = old_arg->clone(); + temp->setParent(old_arg->getParent()); + temp->setId(a->getId()); + workflow_outputs[temp->getId()] = temp; + } + } +} + diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/Segmentation.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/Segmentation.cpp deleted file mode 100644 index 39cbefd..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/Segmentation.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Segmentation.cpp - * - * GENERATED CODE - * DO NOT CHANGE IT MANUALLY!!!!! - */ - -#include "Segmentation.hpp" - -#include -#include - -/**************************************************************************************/ -/**************************** PipelineComponent functions *****************************/ -/**************************************************************************************/ - -Segmentation::Segmentation() { - this->setComponentName("Segmentation"); -} - -Segmentation::~Segmentation() {} - -int Segmentation::run() { - - // Print name and id of the component instance - std::cout << "Executing component: " << this->getComponentName() << " instance id: " << this->getId() <getRegionTemplateInstance("tile"); - - std::string inputImage_name; - std::string outMask_name; - unsigned char blue; - unsigned char green; - unsigned char red; - double T1; - double T2; - unsigned char G1; - int minSize; - int maxSize; - unsigned char G2; - int minSizePl; - int minSizeSeg; - int maxSizeSeg; - int fillHolesConnectivity; - int reconConnectivity; - int watershedConnectivity; - - int set_cout = 0; - for(int i=0; igetArgumentsSize(); i++){ - if (this->getArgument(i)->getName().compare("inputImage") == 0) { - inputImage_name = (std::string)((ArgumentString*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("outMask") == 0) { - outMask_name = (std::string)((ArgumentString*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("blue") == 0) { - blue = (unsigned char)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("green") == 0) { - green = (unsigned char)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("red") == 0) { - red = (unsigned char)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("T1") == 0) { - T1 = (double)((ArgumentFloat*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("T2") == 0) { - T2 = (double)((ArgumentFloat*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("G1") == 0) { - G1 = (unsigned char)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("minSize") == 0) { - minSize = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("maxSize") == 0) { - maxSize = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("G2") == 0) { - G2 = (unsigned char)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("minSizePl") == 0) { - minSizePl = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("minSizeSeg") == 0) { - minSizeSeg = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("maxSizeSeg") == 0) { - maxSizeSeg = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("fillHolesConnectivity") == 0) { - fillHolesConnectivity = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("reconConnectivity") == 0) { - reconConnectivity = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - if (this->getArgument(i)->getName().compare("watershedConnectivity") == 0) { - watershedConnectivity = (int)((ArgumentInt*)this->getArgument(i))->getArgValue(); - set_cout++; - } - - } - - if (set_cout < this->getArgumentsSize()) - std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation. got " << set_cout << " out of " << this->getArgumentsSize() << std::endl; - - this->addInputOutputDataRegion("tile", inputImage_name, RTPipelineComponentBase::INPUT); - - this->addInputOutputDataRegion("tile", outMask_name, RTPipelineComponentBase::OUTPUT); - - - if(inputRt != NULL){ - DenseDataRegion2D *inputImage = NULL; - - DenseDataRegion2D *outMask = NULL; - - try{ - inputImage = dynamic_cast(inputRt->getDataRegion(inputImage_name, "", 0, dr_id)); - - outMask = dynamic_cast(inputRt->getDataRegion(outMask_name, "", 0, dr_id)); - - std::cout << "Segmentation. paramenterId: "<< dr_id <executeTask(task); - - - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" RT == NULL" << std::endl; - } - - return 0; -} - -// Create the component factory -PipelineComponentBase* componentFactorySegmentation() { - return new Segmentation(); -} - -// register factory with the runtime system -bool registeredSegmentation = PipelineComponentBase::ComponentFactory::componentRegister("Segmentation", &componentFactorySegmentation); - - -/**************************************************************************************/ -/*********************************** Task functions ***********************************/ -/**************************************************************************************/ - -TaskSegmentation::TaskSegmentation(DenseDataRegion2D* inputImage_temp, DenseDataRegion2D* outMask_temp, unsigned char blue, unsigned char green, unsigned char red, double T1, double T2, unsigned char G1, int minSize, int maxSize, unsigned char G2, int minSizePl, int minSizeSeg, int maxSizeSeg, int fillHolesConnectivity, int reconConnectivity, int watershedConnectivity) { - - this->inputImage_temp = inputImage_temp; - this->outMask_temp = outMask_temp; - this->blue = blue; - this->green = green; - this->red = red; - this->T1 = T1; - this->T2 = T2; - this->G1 = G1; - this->minSize = minSize; - this->maxSize = maxSize; - this->G2 = G2; - this->minSizePl = minSizePl; - this->minSizeSeg = minSizeSeg; - this->maxSizeSeg = maxSizeSeg; - this->fillHolesConnectivity = fillHolesConnectivity; - this->reconConnectivity = reconConnectivity; - this->watershedConnectivity = watershedConnectivity; - - -} - -TaskSegmentation::~TaskSegmentation() { - if(inputImage_temp != NULL) delete inputImage_temp; - -} - -bool TaskSegmentation::run(int procType, int tid) { - - cv::Mat inputImage = this->inputImage_temp->getData(); - - cv::Mat outMask = this->outMask_temp->getData(); - - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "TaskSegmentation executing." << std::endl; - - ::nscale::HistologicalEntities::segmentNuclei(inputImage, outMask, blue, green, red, T1, T2, G1, minSize, maxSize, G2, minSizePl, minSizeSeg, maxSizeSeg, fillHolesConnectivity, reconConnectivity, watershedConnectivity); - - this->outMask_temp->setData(outMask); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/Segmentation.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/Segmentation.hpp deleted file mode 100644 index 05d5201..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/Segmentation.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Segmentation.h - * - * GENERATED CODE - * DO NOT CHANGE IT MANUALLY!!!!! - */ - -#ifndef Segmentation_H_ -#define Segmentation_H_ - -#include "RTPipelineComponentBase.h" -#include "Util.h" -#include "FileUtils.h" -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" - -// PipelineComponent header -class Segmentation : public RTPipelineComponentBase { - -private: - // data region id - // IMPORTANT: this need to be set during the creation of this object - int dr_id; - -public: - Segmentation(); - virtual ~Segmentation(); - - void set_dr_id(int id) {dr_id = id;}; - - int run(); -}; - -// Task header -class TaskSegmentation: public Task { -private: - - // data regions - DenseDataRegion2D* inputImage_temp; - DenseDataRegion2D* outMask_temp; - - - // all other variables - unsigned char blue; - unsigned char green; - unsigned char red; - double T1; - double T2; - unsigned char G1; - int minSize; - int maxSize; - unsigned char G2; - int minSizePl; - int minSizeSeg; - int maxSizeSeg; - int fillHolesConnectivity; - int reconConnectivity; - int watershedConnectivity; - - -public: - TaskSegmentation(DenseDataRegion2D* inputImage_temp, DenseDataRegion2D* outMask_temp, unsigned char blue, unsigned char green, unsigned char red, double T1, double T2, unsigned char G1, int minSize, int maxSize, unsigned char G2, int minSizePl, int minSizeSeg, int maxSizeSeg, int fillHolesConnectivity, int reconConnectivity, int watershedConnectivity); - - virtual ~TaskSegmentation(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* Segmentation_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/dakota_nscale_ps_moat_600_32nodes.out b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/dakota_nscale_ps_moat_600_32nodes.out new file mode 100644 index 0000000..6f6529d --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/dakota_nscale_ps_moat_600_32nodes.out @@ -0,0 +1,14718 @@ +Dakota version 6.3 released November 15 2015. +Subversion revision 3842 built Nov 6 2015 21:42:16. +Running MPI Dakota executable in serial mode. +Start time: Mon Jan 18 12:36:39 2016 + +------------------------ +Begin DAKOTA input file +dakota_nscale_ps_moat.in +------------------------ +# DAKOTA INPUT FILE - dakota_nscale_ps_moat.in +# This is a sample file for parameter study with the nscale segmentation pipeline +# using the PSUADE MOAT method + + +method + psuade_moat + samples = 630 + partitions = 20 + seed = 500 + +model + single + +variables + continuous_design = 15 + lower_bounds 210.0 210.0 210.0 2.5 2.5 5.0 2.0 2.0 900.0 5.0 2.0 900.0 4.0 4.0 4.0 + upper_bounds 240.0 240.0 240.0 7.5 7.5 80.0 40.0 40.0 1500.0 80.0 80.0 1500.0 8.0 8.0 8.0 + descriptors 'blue integer' 'green integer' 'red integer' 'T1 float' 'T2 float' 'G1 integer' 'G2 integer' 'minSize integer' 'maxSize integer' 'minSizePl integer' 'minSizeSeg integer' 'maxSizeSeg integer' 'fillHolesConnectivity integer' 'reconConnectivity integer' 'watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt' + +interface, + fork +# asynchronous + analysis_driver = 'simulator_script' + parameters_file = 'params.in' + results_file = 'results.out' + work_directory directory_tag +# uncomment to leave params.in and results.out files in work_dir subdirectories +# named 'workdir' file_save directory_save + + +responses + response_functions = 1 + no_gradients + no_hessians + +--------------------- +End DAKOTA input file +--------------------- + +Using Dakota input file 'dakota_nscale_ps_moat.in' +Writing new restart file dakota.rst + +>>>>> Executing environment. + +>>>>> Running psuade_moat iterator. + +Warning: PSUADE MOAT requires number of samples to be a multiple of num_cdv+1. + Resetting samples to 640. + +Warning: PSUADE MOAT partitions must be odd (even number of levels). + Setting to partitions = 21 (levels = 22). + +PSUADE DACE method = 2568 Samples = 640 Seed (user-specified) = 500 + Partitions = 21 (Levels = 22) + +--------------------- +Begin Evaluation 1 +--------------------- +Parameters for evaluation 1: + 2.2000000000e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.7333333333e+01 minSize integer + 9.0000000000e+02 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 6.6666666667e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 1: +Active set vector = { 1 } + 4.8351692300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 2 +--------------------- +Parameters for evaluation 2: + 2.2000000000e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.7333333333e+01 minSize integer + 9.0000000000e+02 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 6.6666666667e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 2: +Active set vector = { 1 } + 4.7958557100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 3 +--------------------- +Parameters for evaluation 3: + 2.2000000000e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 9.0000000000e+02 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 6.6666666667e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 3: +Active set vector = { 1 } + 3.7964769100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 4 +--------------------- +Parameters for evaluation 4: + 2.2000000000e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 9.0000000000e+02 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 4: +Active set vector = { 1 } + 3.3761642400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 5 +--------------------- +Parameters for evaluation 5: + 2.2000000000e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 9.0000000000e+02 maxSize integer + 5.5000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 5: +Active set vector = { 1 } + 3.4529314500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 6 +--------------------- +Parameters for evaluation 6: + 2.3571428571e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 9.0000000000e+02 maxSize integer + 5.5000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 6: +Active set vector = { 1 } + 3.4529314500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 7 +--------------------- +Parameters for evaluation 7: + 2.3571428571e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 9.0000000000e+02 maxSize integer + 5.5000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 7: +Active set vector = { 1 } + 3.0657114900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 8 +--------------------- +Parameters for evaluation 8: + 2.3571428571e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 5.5000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 8: +Active set vector = { 1 } + 3.0499782100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 9 +--------------------- +Parameters for evaluation 9: + 2.3571428571e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 5.5000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 9: +Active set vector = { 1 } + 3.0505543600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 10 +--------------------- +Parameters for evaluation 10: + 2.3571428571e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 5.5000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 10: +Active set vector = { 1 } + 3.0506628100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 11 +--------------------- +Parameters for evaluation 11: + 2.3571428571e+02 blue integer + 2.3714285714e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 11: +Active set vector = { 1 } + 2.9959738900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 12 +--------------------- +Parameters for evaluation 12: + 2.3571428571e+02 blue integer + 2.2142857143e+02 green integer + 2.3000000000e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 12: +Active set vector = { 1 } + 2.9959738900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 13 +--------------------- +Parameters for evaluation 13: + 2.3571428571e+02 blue integer + 2.2142857143e+02 green integer + 2.1428571429e+02 red integer + 5.1190476190e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 13: +Active set vector = { 1 } + 2.9959738900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 14 +--------------------- +Parameters for evaluation 14: + 2.3571428571e+02 blue integer + 2.2142857143e+02 green integer + 2.1428571429e+02 red integer + 2.5000000000e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 2.9142857143e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 14: +Active set vector = { 1 } + 2.9959738900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 15 +--------------------- +Parameters for evaluation 15: + 2.3571428571e+02 blue integer + 2.2142857143e+02 green integer + 2.1428571429e+02 red integer + 2.5000000000e+00 T1 float + 5.8333333333e+00 T2 float + 3.7142857143e+01 G1 integer + 9.2380952381e+00 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 15: +Active set vector = { 1 } + 3.9134950500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 16 +--------------------- +Parameters for evaluation 16: + 2.3571428571e+02 blue integer + 2.2142857143e+02 green integer + 2.1428571429e+02 red integer + 2.5000000000e+00 T1 float + 3.2142857143e+00 T2 float + 3.7142857143e+01 G1 integer + 9.2380952381e+00 G2 integer + 7.4285714286e+00 minSize integer + 1.2142857143e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.5714285714e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 16: +Active set vector = { 1 } + 3.7573355100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 17 +--------------------- +Parameters for evaluation 17: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 4.6428571429e+00 T1 float + 6.5476190476e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 1.8285714286e+01 minSize integer + 1.5000000000e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2428571429e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 17: +Active set vector = { 1 } + 3.6481518000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 18 +--------------------- +Parameters for evaluation 18: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 4.6428571429e+00 T1 float + 6.5476190476e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2428571429e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 18: +Active set vector = { 1 } + 3.6481518000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 19 +--------------------- +Parameters for evaluation 19: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 6.5476190476e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2428571429e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 19: +Active set vector = { 1 } + 3.6485548600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 20 +--------------------- +Parameters for evaluation 20: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 6.5476190476e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2428571429e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 20: +Active set vector = { 1 } + 3.6721923300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 21 +--------------------- +Parameters for evaluation 21: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 6.5476190476e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 21: +Active set vector = { 1 } + 3.6893387300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 22 +--------------------- +Parameters for evaluation 22: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 6.5476190476e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 22: +Active set vector = { 1 } + 3.5810104800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 23 +--------------------- +Parameters for evaluation 23: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 6.5476190476e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 23: +Active set vector = { 1 } + 5.0191888500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 24 +--------------------- +Parameters for evaluation 24: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 24: +Active set vector = { 1 } + 4.9958261200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 25 +--------------------- +Parameters for evaluation 25: + 2.1428571429e+02 blue integer + 2.1714285714e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 25: +Active set vector = { 1 } + 5.3772396400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 26 +--------------------- +Parameters for evaluation 26: + 2.1428571429e+02 blue integer + 2.3285714286e+02 green integer + 2.2142857143e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 26: +Active set vector = { 1 } + 5.3772428400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 27 +--------------------- +Parameters for evaluation 27: + 2.1428571429e+02 blue integer + 2.3285714286e+02 green integer + 2.3714285714e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 27: +Active set vector = { 1 } + 5.3772428400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 28 +--------------------- +Parameters for evaluation 28: + 2.3000000000e+02 blue integer + 2.3285714286e+02 green integer + 2.3714285714e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 28: +Active set vector = { 1 } + 5.3772428400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 29 +--------------------- +Parameters for evaluation 29: + 2.3000000000e+02 blue integer + 2.3285714286e+02 green integer + 2.3714285714e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 1.1047619048e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 29: +Active set vector = { 1 } + 5.3358350500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 30 +--------------------- +Parameters for evaluation 30: + 2.3000000000e+02 blue integer + 2.3285714286e+02 green integer + 2.3714285714e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 3.0952380952e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.5000000000e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 30: +Active set vector = { 1 } + 4.6312778500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 31 +--------------------- +Parameters for evaluation 31: + 2.3000000000e+02 blue integer + 2.3285714286e+02 green integer + 2.3714285714e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 8.5714285714e+00 G1 integer + 3.0952380952e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.1857142857e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 31: +Active set vector = { 1 } + 4.9642346000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 32 +--------------------- +Parameters for evaluation 32: + 2.3000000000e+02 blue integer + 2.3285714286e+02 green integer + 2.3714285714e+02 red integer + 7.2619047619e+00 T1 float + 3.9285714286e+00 T2 float + 4.7857142857e+01 G1 integer + 3.0952380952e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.1857142857e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 32: +Active set vector = { 1 } + 3.1293123600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 33 +--------------------- +Parameters for evaluation 33: + 2.1428571429e+02 blue integer + 2.2571428571e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 4.6428571429e+00 T2 float + 3.3571428571e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.0428571429e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 33: +Active set vector = { 1 } + 3.0668021500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 34 +--------------------- +Parameters for evaluation 34: + 2.1428571429e+02 blue integer + 2.2571428571e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 4.6428571429e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.0428571429e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 34: +Active set vector = { 1 } + 3.1146309200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 35 +--------------------- +Parameters for evaluation 35: + 2.1428571429e+02 blue integer + 2.2571428571e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 4.6428571429e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.0428571429e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 35: +Active set vector = { 1 } + 3.5105010800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 36 +--------------------- +Parameters for evaluation 36: + 2.1428571429e+02 blue integer + 2.2571428571e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.0428571429e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 36: +Active set vector = { 1 } + 3.5162975400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 37 +--------------------- +Parameters for evaluation 37: + 2.3000000000e+02 blue integer + 2.2571428571e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.0428571429e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 37: +Active set vector = { 1 } + 3.5162975400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 38 +--------------------- +Parameters for evaluation 38: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.0428571429e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 38: +Active set vector = { 1 } + 3.5162975400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 39 +--------------------- +Parameters for evaluation 39: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.0428571429e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 39: +Active set vector = { 1 } + 3.5168342600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 40 +--------------------- +Parameters for evaluation 40: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 6.5476190476e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 40: +Active set vector = { 1 } + 3.5184267200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 41 +--------------------- +Parameters for evaluation 41: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 6.5476190476e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 41: +Active set vector = { 1 } + 3.5184267200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 42 +--------------------- +Parameters for evaluation 42: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 6.5476190476e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 42: +Active set vector = { 1 } + 3.7982736400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 43 +--------------------- +Parameters for evaluation 43: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 3.9285714286e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 43: +Active set vector = { 1 } + 3.7982736400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 44 +--------------------- +Parameters for evaluation 44: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 3.9285714286e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 44: +Active set vector = { 1 } + 3.7220017000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 45 +--------------------- +Parameters for evaluation 45: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 3.9285714286e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 45: +Active set vector = { 1 } + 3.7219762500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 46 +--------------------- +Parameters for evaluation 46: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 3.9285714286e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 46: +Active set vector = { 1 } + 3.6727717300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 47 +--------------------- +Parameters for evaluation 47: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 3.9285714286e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 9.2380952381e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 47: +Active set vector = { 1 } + 2.9621689300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 48 +--------------------- +Parameters for evaluation 48: + 2.3000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 3.9285714286e+00 T1 float + 7.2619047619e+00 T2 float + 7.2857142857e+01 G1 integer + 9.2380952381e+00 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.3571428571e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 48: +Active set vector = { 1 } + 3.8433809500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 49 +--------------------- +Parameters for evaluation 49: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 5.1190476190e+00 T1 float + 4.1666666667e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 49: +Active set vector = { 1 } + 5.3603877000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 50 +--------------------- +Parameters for evaluation 50: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 5.1190476190e+00 T1 float + 4.1666666667e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 50: +Active set vector = { 1 } + 5.3454902600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 51 +--------------------- +Parameters for evaluation 51: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 5.1190476190e+00 T1 float + 4.1666666667e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.9047619048e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 51: +Active set vector = { 1 } + 4.9521069200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 52 +--------------------- +Parameters for evaluation 52: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 5.1190476190e+00 T1 float + 4.1666666667e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 52: +Active set vector = { 1 } + 4.7459727500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 53 +--------------------- +Parameters for evaluation 53: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 53: +Active set vector = { 1 } + 4.7462487000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 54 +--------------------- +Parameters for evaluation 54: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 54: +Active set vector = { 1 } + 4.7450943900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 55 +--------------------- +Parameters for evaluation 55: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 55: +Active set vector = { 1 } + 4.7451510100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 56 +--------------------- +Parameters for evaluation 56: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 56: +Active set vector = { 1 } + 4.7392140100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 57 +--------------------- +Parameters for evaluation 57: + 2.3142857143e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 57: +Active set vector = { 1 } + 4.8551825500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 58 +--------------------- +Parameters for evaluation 58: + 2.1571428571e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 58: +Active set vector = { 1 } + 4.8551825500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 59 +--------------------- +Parameters for evaluation 59: + 2.1571428571e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 59: +Active set vector = { 1 } + 4.8550122000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 60 +--------------------- +Parameters for evaluation 60: + 2.1571428571e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 6.7857142857e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 60: +Active set vector = { 1 } + 4.8582458600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 61 +--------------------- +Parameters for evaluation 61: + 2.1571428571e+02 blue integer + 2.3571428571e+02 green integer + 2.3714285714e+02 red integer + 2.5000000000e+00 T1 float + 6.7857142857e+00 T2 float + 1.9285714286e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 61: +Active set vector = { 1 } + 2.9564958400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 62 +--------------------- +Parameters for evaluation 62: + 2.1571428571e+02 blue integer + 2.3571428571e+02 green integer + 2.2142857143e+02 red integer + 2.5000000000e+00 T1 float + 6.7857142857e+00 T2 float + 1.9285714286e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 62: +Active set vector = { 1 } + 2.9564958400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 63 +--------------------- +Parameters for evaluation 63: + 2.1571428571e+02 blue integer + 2.2000000000e+02 green integer + 2.2142857143e+02 red integer + 2.5000000000e+00 T1 float + 6.7857142857e+00 T2 float + 1.9285714286e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 63: +Active set vector = { 1 } + 2.9564958400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 64 +--------------------- +Parameters for evaluation 64: + 2.1571428571e+02 blue integer + 2.2000000000e+02 green integer + 2.2142857143e+02 red integer + 2.5000000000e+00 T1 float + 6.7857142857e+00 T2 float + 1.9285714286e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 8.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 64: +Active set vector = { 1 } + 2.6490519300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 65 +--------------------- +Parameters for evaluation 65: + 2.2000000000e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 3.6904761905e+00 T1 float + 5.3571428571e+00 T2 float + 3.3571428571e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 65: +Active set vector = { 1 } + 2.8771799200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 66 +--------------------- +Parameters for evaluation 66: + 2.2000000000e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 5.3571428571e+00 T2 float + 3.3571428571e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 66: +Active set vector = { 1 } + 2.8780633100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 67 +--------------------- +Parameters for evaluation 67: + 2.2000000000e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 5.3571428571e+00 T2 float + 3.3571428571e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 67: +Active set vector = { 1 } + 3.2297567500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 68 +--------------------- +Parameters for evaluation 68: + 2.2000000000e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 5.3571428571e+00 T2 float + 3.3571428571e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 68: +Active set vector = { 1 } + 3.2300977700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 69 +--------------------- +Parameters for evaluation 69: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 5.3571428571e+00 T2 float + 3.3571428571e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 69: +Active set vector = { 1 } + 3.2306577800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 70 +--------------------- +Parameters for evaluation 70: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 3.3571428571e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 70: +Active set vector = { 1 } + 3.2352006100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 71 +--------------------- +Parameters for evaluation 71: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 3.3571428571e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 71: +Active set vector = { 1 } + 3.2227605100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 72 +--------------------- +Parameters for evaluation 72: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 3.3571428571e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 72: +Active set vector = { 1 } + 5.1738144700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 73 +--------------------- +Parameters for evaluation 73: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 3.3571428571e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 73: +Active set vector = { 1 } + 5.1081487700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 74 +--------------------- +Parameters for evaluation 74: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 7.2857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.7714285714e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 74: +Active set vector = { 1 } + 4.9005510200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 75 +--------------------- +Parameters for evaluation 75: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 7.2857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 9.8571428571e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 75: +Active set vector = { 1 } + 4.8936144400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 76 +--------------------- +Parameters for evaluation 76: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 7.2857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.3000000000e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 76: +Active set vector = { 1 } + 4.8936177300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 77 +--------------------- +Parameters for evaluation 77: + 2.3571428571e+02 blue integer + 2.1142857143e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 7.2857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.3000000000e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 77: +Active set vector = { 1 } + 4.8643666100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 78 +--------------------- +Parameters for evaluation 78: + 2.3571428571e+02 blue integer + 2.2714285714e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 7.2857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.3000000000e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 78: +Active set vector = { 1 } + 4.8643666100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 79 +--------------------- +Parameters for evaluation 79: + 2.3571428571e+02 blue integer + 2.2714285714e+02 green integer + 2.1000000000e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 7.2857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.3000000000e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 79: +Active set vector = { 1 } + 4.9518329000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 80 +--------------------- +Parameters for evaluation 80: + 2.3571428571e+02 blue integer + 2.2714285714e+02 green integer + 2.2571428571e+02 red integer + 6.3095238095e+00 T1 float + 2.7380952381e+00 T2 float + 7.2857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.3000000000e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 1.6857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 80: +Active set vector = { 1 } + 4.9518329000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 81 +--------------------- +Parameters for evaluation 81: + 2.2000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.5000000000e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 81: +Active set vector = { 1 } + 3.5943578000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 82 +--------------------- +Parameters for evaluation 82: + 2.2000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.5000000000e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 82: +Active set vector = { 1 } + 3.5160460400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 83 +--------------------- +Parameters for evaluation 83: + 2.2000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.5000000000e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 83: +Active set vector = { 1 } + 5.1077152900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 84 +--------------------- +Parameters for evaluation 84: + 2.2000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.5000000000e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 84: +Active set vector = { 1 } + 5.0671306900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 85 +--------------------- +Parameters for evaluation 85: + 2.2000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 85: +Active set vector = { 1 } + 4.6701720000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 86 +--------------------- +Parameters for evaluation 86: + 2.3571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 86: +Active set vector = { 1 } + 4.6701720000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 87 +--------------------- +Parameters for evaluation 87: + 2.3571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 87: +Active set vector = { 1 } + 4.6696380500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 88 +--------------------- +Parameters for evaluation 88: + 2.3571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 3.6904761905e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 88: +Active set vector = { 1 } + 5.5524489800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 89 +--------------------- +Parameters for evaluation 89: + 2.3571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 6.3095238095e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.1428571429e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 89: +Active set vector = { 1 } + 5.5537837800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 90 +--------------------- +Parameters for evaluation 90: + 2.3571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 6.3095238095e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 7.2380952381e+00 fillHolesConnectivity integer + 7.2380952381e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 90: +Active set vector = { 1 } + 5.5660317900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 91 +--------------------- +Parameters for evaluation 91: + 2.3571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 6.3095238095e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 7.2380952381e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 91: +Active set vector = { 1 } + 5.1643709300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 92 +--------------------- +Parameters for evaluation 92: + 2.3571428571e+02 blue integer + 2.2428571429e+02 green integer + 2.3857142857e+02 red integer + 2.5000000000e+00 T1 float + 6.3095238095e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 7.2380952381e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 92: +Active set vector = { 1 } + 5.1643709300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 93 +--------------------- +Parameters for evaluation 93: + 2.3571428571e+02 blue integer + 2.2428571429e+02 green integer + 2.3857142857e+02 red integer + 5.1190476190e+00 T1 float + 6.3095238095e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 7.2380952381e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 93: +Active set vector = { 1 } + 5.1643709300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 94 +--------------------- +Parameters for evaluation 94: + 2.3571428571e+02 blue integer + 2.2428571429e+02 green integer + 2.2285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.3095238095e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.5000000000e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 7.2380952381e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 94: +Active set vector = { 1 } + 5.1643709300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 95 +--------------------- +Parameters for evaluation 95: + 2.3571428571e+02 blue integer + 2.2428571429e+02 green integer + 2.2285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.3095238095e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.1857142857e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 7.2380952381e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 95: +Active set vector = { 1 } + 5.1643739700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 96 +--------------------- +Parameters for evaluation 96: + 2.3571428571e+02 blue integer + 2.2428571429e+02 green integer + 2.2285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.3095238095e+00 T2 float + 4.0714285714e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.1857142857e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 7.2380952381e+00 fillHolesConnectivity integer + 5.1428571429e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 96: +Active set vector = { 1 } + 3.9170473500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 97 +--------------------- +Parameters for evaluation 97: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 6.7857142857e+00 T1 float + 5.3571428571e+00 T2 float + 4.7857142857e+01 G1 integer + 1.2857142857e+01 G2 integer + 1.8285714286e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 97: +Active set vector = { 1 } + 2.9832012700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 98 +--------------------- +Parameters for evaluation 98: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 6.7857142857e+00 T1 float + 5.3571428571e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 1.8285714286e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 98: +Active set vector = { 1 } + 5.2569864100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 99 +--------------------- +Parameters for evaluation 99: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 4.1666666667e+00 T1 float + 5.3571428571e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 1.8285714286e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 99: +Active set vector = { 1 } + 5.2543794600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 100 +--------------------- +Parameters for evaluation 100: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 4.1666666667e+00 T1 float + 5.3571428571e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 1.8285714286e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 100: +Active set vector = { 1 } + 5.6897291700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 101 +--------------------- +Parameters for evaluation 101: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 1.8285714286e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 101: +Active set vector = { 1 } + 5.7210119400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 102 +--------------------- +Parameters for evaluation 102: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 1.8285714286e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 102: +Active set vector = { 1 } + 5.7603166200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 103 +--------------------- +Parameters for evaluation 103: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 1.8285714286e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 103: +Active set vector = { 1 } + 6.1018145800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 104 +--------------------- +Parameters for evaluation 104: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 9.5714285714e+02 maxSize integer + 6.5714285714e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 104: +Active set vector = { 1 } + 6.1018145800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 105 +--------------------- +Parameters for evaluation 105: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.2714285714e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 9.5714285714e+02 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 105: +Active set vector = { 1 } + 6.0880357800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 106 +--------------------- +Parameters for evaluation 106: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 9.5714285714e+02 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 106: +Active set vector = { 1 } + 6.0880357800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 107 +--------------------- +Parameters for evaluation 107: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 9.5714285714e+02 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 107: +Active set vector = { 1 } + 6.0880357800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 108 +--------------------- +Parameters for evaluation 108: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 9.5714285714e+02 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 108: +Active set vector = { 1 } + 5.9560317500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 109 +--------------------- +Parameters for evaluation 109: + 2.1142857143e+02 blue integer + 2.1000000000e+02 green integer + 2.1142857143e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 9.5714285714e+02 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 109: +Active set vector = { 1 } + 5.3681022900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 110 +--------------------- +Parameters for evaluation 110: + 2.1142857143e+02 blue integer + 2.2571428571e+02 green integer + 2.1142857143e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 9.5714285714e+02 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 110: +Active set vector = { 1 } + 5.3677878800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 111 +--------------------- +Parameters for evaluation 111: + 2.1142857143e+02 blue integer + 2.2571428571e+02 green integer + 2.1142857143e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.2714285714e+03 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 111: +Active set vector = { 1 } + 5.0488697300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 112 +--------------------- +Parameters for evaluation 112: + 2.2714285714e+02 blue integer + 2.2571428571e+02 green integer + 2.1142857143e+02 red integer + 4.1666666667e+00 T1 float + 2.7380952381e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.8190476190e+01 minSize integer + 1.2714285714e+03 maxSize integer + 2.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 112: +Active set vector = { 1 } + 5.0488697300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 113 +--------------------- +Parameters for evaluation 113: + 2.3857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.2571428571e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 4.0714285714e+01 G1 integer + 7.4285714286e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 113: +Active set vector = { 1 } + 3.3829197800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 114 +--------------------- +Parameters for evaluation 114: + 2.3857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 4.0714285714e+01 G1 integer + 7.4285714286e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 114: +Active set vector = { 1 } + 3.3829197800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 115 +--------------------- +Parameters for evaluation 115: + 2.3857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 4.0714285714e+01 G1 integer + 7.4285714286e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 115: +Active set vector = { 1 } + 3.4016108500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 116 +--------------------- +Parameters for evaluation 116: + 2.3857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 4.0714285714e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 116: +Active set vector = { 1 } + 3.3686984500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 117 +--------------------- +Parameters for evaluation 117: + 2.3857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 4.0714285714e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 117: +Active set vector = { 1 } + 3.3690968400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 118 +--------------------- +Parameters for evaluation 118: + 2.3857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 4.0714285714e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 118: +Active set vector = { 1 } + 3.3690968400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 119 +--------------------- +Parameters for evaluation 119: + 2.3857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 119: +Active set vector = { 1 } + 4.1127459300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 120 +--------------------- +Parameters for evaluation 120: + 2.3857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 120: +Active set vector = { 1 } + 4.1393919500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 121 +--------------------- +Parameters for evaluation 121: + 2.3857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 121: +Active set vector = { 1 } + 4.1354875200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 122 +--------------------- +Parameters for evaluation 122: + 2.3857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 4.4047619048e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 122: +Active set vector = { 1 } + 4.1354875200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 123 +--------------------- +Parameters for evaluation 123: + 2.3857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 123: +Active set vector = { 1 } + 4.1204586700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 124 +--------------------- +Parameters for evaluation 124: + 2.2285714286e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 124: +Active set vector = { 1 } + 4.1204586700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 125 +--------------------- +Parameters for evaluation 125: + 2.2285714286e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 7.4285714286e+00 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 125: +Active set vector = { 1 } + 5.3362801400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 126 +--------------------- +Parameters for evaluation 126: + 2.2285714286e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.7333333333e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.4714285714e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 126: +Active set vector = { 1 } + 3.6039575000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 127 +--------------------- +Parameters for evaluation 127: + 2.2285714286e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.7333333333e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.1571428571e+03 maxSize integer + 1.9285714286e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 127: +Active set vector = { 1 } + 3.6039575000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 128 +--------------------- +Parameters for evaluation 128: + 2.2285714286e+02 blue integer + 2.3428571429e+02 green integer + 2.1000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.7333333333e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.1571428571e+03 maxSize integer + 5.8571428571e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 128: +Active set vector = { 1 } + 3.6690664500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 129 +--------------------- +Parameters for evaluation 129: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.2428571429e+02 red integer + 5.1190476190e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 3.2761904762e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.3857142857e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 129: +Active set vector = { 1 } + 3.8276781700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 130 +--------------------- +Parameters for evaluation 130: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.4000000000e+02 red integer + 5.1190476190e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 3.2761904762e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.3857142857e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 130: +Active set vector = { 1 } + 3.8276781700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 131 +--------------------- +Parameters for evaluation 131: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 3.2761904762e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.3857142857e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 131: +Active set vector = { 1 } + 3.9916017500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 132 +--------------------- +Parameters for evaluation 132: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 3.2761904762e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.3857142857e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 132: +Active set vector = { 1 } + 3.9975138500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 133 +--------------------- +Parameters for evaluation 133: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 3.2761904762e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.3857142857e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 133: +Active set vector = { 1 } + 3.9975138500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 134 +--------------------- +Parameters for evaluation 134: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.3857142857e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 134: +Active set vector = { 1 } + 2.9866257200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 135 +--------------------- +Parameters for evaluation 135: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 135: +Active set vector = { 1 } + 3.0283128100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 136 +--------------------- +Parameters for evaluation 136: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.0428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 136: +Active set vector = { 1 } + 3.0283128100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 137 +--------------------- +Parameters for evaluation 137: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 137: +Active set vector = { 1 } + 3.0138198300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 138 +--------------------- +Parameters for evaluation 138: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 138: +Active set vector = { 1 } + 2.9641679600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 139 +--------------------- +Parameters for evaluation 139: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 2.6428571429e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 139: +Active set vector = { 1 } + 2.6403756900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 140 +--------------------- +Parameters for evaluation 140: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 6.5714285714e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 6.1428571429e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 140: +Active set vector = { 1 } + 3.5919452000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 141 +--------------------- +Parameters for evaluation 141: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 6.5714285714e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 2.0571428571e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 141: +Active set vector = { 1 } + 3.5421166100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 142 +--------------------- +Parameters for evaluation 142: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 6.5714285714e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 2.0571428571e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 142: +Active set vector = { 1 } + 3.5421166100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 143 +--------------------- +Parameters for evaluation 143: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 6.5714285714e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 2.0571428571e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 143: +Active set vector = { 1 } + 3.4400521800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 144 +--------------------- +Parameters for evaluation 144: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.4000000000e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 6.5714285714e+01 G1 integer + 1.2857142857e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3571428571e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 2.0571428571e+01 minSizeSeg integer + 1.0714285714e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.7619047619e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 144: +Active set vector = { 1 } + 3.4795266200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 145 +--------------------- +Parameters for evaluation 145: + 2.3428571429e+02 blue integer + 2.2428571429e+02 green integer + 2.2571428571e+02 red integer + 6.5476190476e+00 T1 float + 6.0714285714e+00 T2 float + 8.5714285714e+00 G1 integer + 2.0095238095e+01 G2 integer + 3.6380952381e+01 minSize integer + 1.1285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 145: +Active set vector = { 1 } + 3.6506545400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 146 +--------------------- +Parameters for evaluation 146: + 2.3428571429e+02 blue integer + 2.2428571429e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 6.0714285714e+00 T2 float + 8.5714285714e+00 G1 integer + 2.0095238095e+01 G2 integer + 3.6380952381e+01 minSize integer + 1.1285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 146: +Active set vector = { 1 } + 3.6506545400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 147 +--------------------- +Parameters for evaluation 147: + 2.3428571429e+02 blue integer + 2.2428571429e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 6.0714285714e+00 T2 float + 8.5714285714e+00 G1 integer + 4.0000000000e+01 G2 integer + 3.6380952381e+01 minSize integer + 1.1285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 147: +Active set vector = { 1 } + 5.1986914100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 148 +--------------------- +Parameters for evaluation 148: + 2.3428571429e+02 blue integer + 2.2428571429e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 6.0714285714e+00 T2 float + 8.5714285714e+00 G1 integer + 4.0000000000e+01 G2 integer + 3.6380952381e+01 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 148: +Active set vector = { 1 } + 5.0002955800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 149 +--------------------- +Parameters for evaluation 149: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 6.0714285714e+00 T2 float + 8.5714285714e+00 G1 integer + 4.0000000000e+01 G2 integer + 3.6380952381e+01 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 149: +Active set vector = { 1 } + 5.0002955800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 150 +--------------------- +Parameters for evaluation 150: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 6.0714285714e+00 T2 float + 8.5714285714e+00 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 150: +Active set vector = { 1 } + 5.0003225200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 151 +--------------------- +Parameters for evaluation 151: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 3.4523809524e+00 T2 float + 8.5714285714e+00 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 151: +Active set vector = { 1 } + 4.9915703400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 152 +--------------------- +Parameters for evaluation 152: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 3.4523809524e+00 T2 float + 8.5714285714e+00 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 152: +Active set vector = { 1 } + 4.7569806400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 153 +--------------------- +Parameters for evaluation 153: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 153: +Active set vector = { 1 } + 4.1372075800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 154 +--------------------- +Parameters for evaluation 154: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 154: +Active set vector = { 1 } + 4.1366673600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 155 +--------------------- +Parameters for evaluation 155: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 6.5476190476e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 155: +Active set vector = { 1 } + 4.1378473800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 156 +--------------------- +Parameters for evaluation 156: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 3.9285714286e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.5428571429e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 156: +Active set vector = { 1 } + 4.1349325200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 157 +--------------------- +Parameters for evaluation 157: + 2.3428571429e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 3.9285714286e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 157: +Active set vector = { 1 } + 4.9885811200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 158 +--------------------- +Parameters for evaluation 158: + 2.1857142857e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 3.9285714286e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 158: +Active set vector = { 1 } + 4.9885811200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 159 +--------------------- +Parameters for evaluation 159: + 2.1857142857e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 3.9285714286e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 159: +Active set vector = { 1 } + 5.2253646000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 160 +--------------------- +Parameters for evaluation 160: + 2.1857142857e+02 blue integer + 2.4000000000e+02 green integer + 2.1000000000e+02 red integer + 3.9285714286e+00 T1 float + 3.4523809524e+00 T2 float + 4.7857142857e+01 G1 integer + 4.0000000000e+01 G2 integer + 1.6476190476e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.6285714286e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 160: +Active set vector = { 1 } + 4.8327136000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 161 +--------------------- +Parameters for evaluation 161: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 5.3571428571e+00 T1 float + 4.4047619048e+00 T2 float + 8.5714285714e+00 G1 integer + 2.3714285714e+01 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 4.9523809524e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 161: +Active set vector = { 1 } + 5.3344151300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 162 +--------------------- +Parameters for evaluation 162: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 5.3571428571e+00 T1 float + 4.4047619048e+00 T2 float + 4.7857142857e+01 G1 integer + 2.3714285714e+01 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 4.9523809524e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 162: +Active set vector = { 1 } + 2.6714811500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 163 +--------------------- +Parameters for evaluation 163: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 5.3571428571e+00 T1 float + 4.4047619048e+00 T2 float + 4.7857142857e+01 G1 integer + 2.3714285714e+01 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 4.9523809524e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 163: +Active set vector = { 1 } + 2.6196304000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 164 +--------------------- +Parameters for evaluation 164: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 5.3571428571e+00 T1 float + 4.4047619048e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 4.9523809524e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 164: +Active set vector = { 1 } + 8.6468185500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 165 +--------------------- +Parameters for evaluation 165: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 5.3571428571e+00 T1 float + 4.4047619048e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 4.9523809524e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 165: +Active set vector = { 1 } + 8.4848379400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 166 +--------------------- +Parameters for evaluation 166: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 5.3571428571e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 4.9523809524e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 166: +Active set vector = { 1 } + 8.5221110600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 167 +--------------------- +Parameters for evaluation 167: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 4.9523809524e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 167: +Active set vector = { 1 } + 8.5221110600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 168 +--------------------- +Parameters for evaluation 168: + 2.1142857143e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 168: +Active set vector = { 1 } + 8.5201854700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 169 +--------------------- +Parameters for evaluation 169: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 169: +Active set vector = { 1 } + 8.5201854700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 170 +--------------------- +Parameters for evaluation 170: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.2857142857e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 170: +Active set vector = { 1 } + 8.5200682800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 171 +--------------------- +Parameters for evaluation 171: + 2.1142857143e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 1.2428571429e+03 maxSize integer + 3.3571428571e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 171: +Active set vector = { 1 } + 8.7889824700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 172 +--------------------- +Parameters for evaluation 172: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 1.6476190476e+01 minSize integer + 1.2428571429e+03 maxSize integer + 3.3571428571e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 172: +Active set vector = { 1 } + 8.7889824700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 173 +--------------------- +Parameters for evaluation 173: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 3.6380952381e+01 minSize integer + 1.2428571429e+03 maxSize integer + 3.3571428571e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 4.9523809524e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 173: +Active set vector = { 1 } + 8.6914699100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 174 +--------------------- +Parameters for evaluation 174: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 3.6380952381e+01 minSize integer + 1.2428571429e+03 maxSize integer + 3.3571428571e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 174: +Active set vector = { 1 } + 5.0895994300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 175 +--------------------- +Parameters for evaluation 175: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 3.6380952381e+01 minSize integer + 1.2428571429e+03 maxSize integer + 3.3571428571e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 175: +Active set vector = { 1 } + 5.0895994300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 176 +--------------------- +Parameters for evaluation 176: + 2.2714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 2.7380952381e+00 T1 float + 7.0238095238e+00 T2 float + 4.7857142857e+01 G1 integer + 3.8095238095e+00 G2 integer + 3.6380952381e+01 minSize integer + 1.2428571429e+03 maxSize integer + 3.3571428571e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.0476190476e+00 fillHolesConnectivity integer + 7.0476190476e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 176: +Active set vector = { 1 } + 5.0509651700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 177 +--------------------- +Parameters for evaluation 177: + 2.2142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.3571428571e+02 red integer + 6.5476190476e+00 T1 float + 5.1190476190e+00 T2 float + 8.0000000000e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.5523809524e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 177: +Active set vector = { 1 } + 5.7841261800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 178 +--------------------- +Parameters for evaluation 178: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.3571428571e+02 red integer + 6.5476190476e+00 T1 float + 5.1190476190e+00 T2 float + 8.0000000000e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.5523809524e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 178: +Active set vector = { 1 } + 5.7841261800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 179 +--------------------- +Parameters for evaluation 179: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 6.5476190476e+00 T1 float + 5.1190476190e+00 T2 float + 8.0000000000e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.5523809524e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 179: +Active set vector = { 1 } + 5.7841261800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 180 +--------------------- +Parameters for evaluation 180: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 6.5476190476e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.5523809524e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 180: +Active set vector = { 1 } + 5.7544039800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 181 +--------------------- +Parameters for evaluation 181: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 6.5476190476e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.5523809524e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 181: +Active set vector = { 1 } + 5.7616956500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 182 +--------------------- +Parameters for evaluation 182: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 6.5476190476e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 182: +Active set vector = { 1 } + 5.0427134900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 183 +--------------------- +Parameters for evaluation 183: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 6.5476190476e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 183: +Active set vector = { 1 } + 5.0355099900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 184 +--------------------- +Parameters for evaluation 184: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 6.5476190476e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 184: +Active set vector = { 1 } + 3.8913464100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 185 +--------------------- +Parameters for evaluation 185: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 6.5476190476e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 185: +Active set vector = { 1 } + 3.4774790500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 186 +--------------------- +Parameters for evaluation 186: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 3.9285714286e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 186: +Active set vector = { 1 } + 3.5402614400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 187 +--------------------- +Parameters for evaluation 187: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 3.9285714286e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 187: +Active set vector = { 1 } + 3.5402614400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 188 +--------------------- +Parameters for evaluation 188: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 3.9285714286e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 188: +Active set vector = { 1 } + 3.5402614400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 189 +--------------------- +Parameters for evaluation 189: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 3.9285714286e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 189: +Active set vector = { 1 } + 3.0819077000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 190 +--------------------- +Parameters for evaluation 190: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 3.9285714286e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.0142857143e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 190: +Active set vector = { 1 } + 3.0996758700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 191 +--------------------- +Parameters for evaluation 191: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 3.9285714286e+00 T1 float + 2.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.0142857143e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 191: +Active set vector = { 1 } + 3.0017912600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 192 +--------------------- +Parameters for evaluation 192: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.2000000000e+02 red integer + 3.9285714286e+00 T1 float + 2.5000000000e+00 T2 float + 4.0714285714e+01 G1 integer + 2.3714285714e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.0142857143e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 192: +Active set vector = { 1 } + 2.3814175400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 193 +--------------------- +Parameters for evaluation 193: + 2.3142857143e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 193: +Active set vector = { 1 } + 2.7932854400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 194 +--------------------- +Parameters for evaluation 194: + 2.3142857143e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 194: +Active set vector = { 1 } + 2.7672024800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 195 +--------------------- +Parameters for evaluation 195: + 2.3142857143e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 195: +Active set vector = { 1 } + 2.7661251100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 196 +--------------------- +Parameters for evaluation 196: + 2.3142857143e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 196: +Active set vector = { 1 } + 2.8382297200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 197 +--------------------- +Parameters for evaluation 197: + 2.3142857143e+02 blue integer + 2.1857142857e+02 green integer + 2.3571428571e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 197: +Active set vector = { 1 } + 2.8382297200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 198 +--------------------- +Parameters for evaluation 198: + 2.3142857143e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 198: +Active set vector = { 1 } + 2.8382297200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 199 +--------------------- +Parameters for evaluation 199: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 199: +Active set vector = { 1 } + 2.8382297200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 200 +--------------------- +Parameters for evaluation 200: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 1.4666666667e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 200: +Active set vector = { 1 } + 2.8428613800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 201 +--------------------- +Parameters for evaluation 201: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 201: +Active set vector = { 1 } + 4.2064054000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 202 +--------------------- +Parameters for evaluation 202: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 2.2857142857e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 202: +Active set vector = { 1 } + 4.2063871800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 203 +--------------------- +Parameters for evaluation 203: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 6.2142857143e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 203: +Active set vector = { 1 } + 4.3057480200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 204 +--------------------- +Parameters for evaluation 204: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 5.5952380952e+00 T1 float + 7.5000000000e+00 T2 float + 6.2142857143e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 204: +Active set vector = { 1 } + 4.3083959700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 205 +--------------------- +Parameters for evaluation 205: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 2.9761904762e+00 T1 float + 7.5000000000e+00 T2 float + 6.2142857143e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 205: +Active set vector = { 1 } + 4.3083959700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 206 +--------------------- +Parameters for evaluation 206: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 2.9761904762e+00 T1 float + 7.5000000000e+00 T2 float + 6.2142857143e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 206: +Active set vector = { 1 } + 4.7585063700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 207 +--------------------- +Parameters for evaluation 207: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 2.9761904762e+00 T1 float + 7.5000000000e+00 T2 float + 6.2142857143e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 4.0714285714e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 207: +Active set vector = { 1 } + 4.5589718500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 208 +--------------------- +Parameters for evaluation 208: + 2.1571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 2.9761904762e+00 T1 float + 4.8809523810e+00 T2 float + 6.2142857143e+01 G1 integer + 3.4571428571e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 4.0714285714e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 208: +Active set vector = { 1 } + 4.5563968000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 209 +--------------------- +Parameters for evaluation 209: + 2.1714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 4.6428571429e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 3.0952380952e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 2.8000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 209: +Active set vector = { 1 } + 3.4365978900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 210 +--------------------- +Parameters for evaluation 210: + 2.1714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 4.6428571429e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 3.0952380952e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 2.8000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 210: +Active set vector = { 1 } + 3.4377122000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 211 +--------------------- +Parameters for evaluation 211: + 2.1714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 4.6428571429e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 3.0952380952e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 2.8000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 211: +Active set vector = { 1 } + 3.2952618000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 212 +--------------------- +Parameters for evaluation 212: + 2.1714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 4.6428571429e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 3.0952380952e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 2.8000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 212: +Active set vector = { 1 } + 3.2946765200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 213 +--------------------- +Parameters for evaluation 213: + 2.3285714286e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 4.6428571429e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 3.0952380952e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 2.8000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 213: +Active set vector = { 1 } + 3.2946765200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 214 +--------------------- +Parameters for evaluation 214: + 2.3285714286e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 4.6428571429e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 2.8000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 214: +Active set vector = { 1 } + 2.6171067200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 215 +--------------------- +Parameters for evaluation 215: + 2.3285714286e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 7.2619047619e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 2.8000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 215: +Active set vector = { 1 } + 2.6520558500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 216 +--------------------- +Parameters for evaluation 216: + 2.3285714286e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 7.2619047619e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 216: +Active set vector = { 1 } + 2.8369218800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 217 +--------------------- +Parameters for evaluation 217: + 2.3285714286e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 7.2619047619e+00 T1 float + 2.9761904762e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 217: +Active set vector = { 1 } + 2.8369043500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 218 +--------------------- +Parameters for evaluation 218: + 2.3285714286e+02 blue integer + 2.3857142857e+02 green integer + 2.1142857143e+02 red integer + 7.2619047619e+00 T1 float + 5.5952380952e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 218: +Active set vector = { 1 } + 2.8786433700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 219 +--------------------- +Parameters for evaluation 219: + 2.3285714286e+02 blue integer + 2.3857142857e+02 green integer + 2.2714285714e+02 red integer + 7.2619047619e+00 T1 float + 5.5952380952e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 219: +Active set vector = { 1 } + 2.8786433700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 220 +--------------------- +Parameters for evaluation 220: + 2.3285714286e+02 blue integer + 2.2285714286e+02 green integer + 2.2714285714e+02 red integer + 7.2619047619e+00 T1 float + 5.5952380952e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 220: +Active set vector = { 1 } + 2.8786433700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 221 +--------------------- +Parameters for evaluation 221: + 2.3285714286e+02 blue integer + 2.2285714286e+02 green integer + 2.2714285714e+02 red integer + 7.2619047619e+00 T1 float + 5.5952380952e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 221: +Active set vector = { 1 } + 2.7406846600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 222 +--------------------- +Parameters for evaluation 222: + 2.3285714286e+02 blue integer + 2.2285714286e+02 green integer + 2.2714285714e+02 red integer + 7.2619047619e+00 T1 float + 5.5952380952e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 222: +Active set vector = { 1 } + 3.2232747900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 223 +--------------------- +Parameters for evaluation 223: + 2.3285714286e+02 blue integer + 2.2285714286e+02 green integer + 2.2714285714e+02 red integer + 7.2619047619e+00 T1 float + 5.5952380952e+00 T2 float + 6.2142857143e+01 G1 integer + 1.1047619048e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 223: +Active set vector = { 1 } + 3.5113664000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 224 +--------------------- +Parameters for evaluation 224: + 2.3285714286e+02 blue integer + 2.2285714286e+02 green integer + 2.2714285714e+02 red integer + 7.2619047619e+00 T1 float + 5.5952380952e+00 T2 float + 2.2857142857e+01 G1 integer + 1.1047619048e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.1285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 6.8857142857e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 224: +Active set vector = { 1 } + 3.3112655100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 225 +--------------------- +Parameters for evaluation 225: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 5.1190476190e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.2428571429e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 225: +Active set vector = { 1 } + 5.2612289900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 226 +--------------------- +Parameters for evaluation 226: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 5.1190476190e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.2428571429e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 226: +Active set vector = { 1 } + 5.2170119000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 227 +--------------------- +Parameters for evaluation 227: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 5.1190476190e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 227: +Active set vector = { 1 } + 5.2181224200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 228 +--------------------- +Parameters for evaluation 228: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 228: +Active set vector = { 1 } + 5.2932553000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 229 +--------------------- +Parameters for evaluation 229: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 229: +Active set vector = { 1 } + 5.1986012700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 230 +--------------------- +Parameters for evaluation 230: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 1.2857142857e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 230: +Active set vector = { 1 } + 5.1584248400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 231 +--------------------- +Parameters for evaluation 231: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 231: +Active set vector = { 1 } + 5.7432077500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 232 +--------------------- +Parameters for evaluation 232: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 2.5000000000e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 232: +Active set vector = { 1 } + 5.1634512200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 233 +--------------------- +Parameters for evaluation 233: + 2.2000000000e+02 blue integer + 2.3000000000e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 233: +Active set vector = { 1 } + 4.9710063500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 234 +--------------------- +Parameters for evaluation 234: + 2.2000000000e+02 blue integer + 2.1428571429e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 234: +Active set vector = { 1 } + 4.9710063500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 235 +--------------------- +Parameters for evaluation 235: + 2.2000000000e+02 blue integer + 2.1428571429e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.0714285714e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 235: +Active set vector = { 1 } + 4.9710063500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 236 +--------------------- +Parameters for evaluation 236: + 2.2000000000e+02 blue integer + 2.1428571429e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.0714285714e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 236: +Active set vector = { 1 } + 4.5311251200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 237 +--------------------- +Parameters for evaluation 237: + 2.3571428571e+02 blue integer + 2.1428571429e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.0714285714e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 237: +Active set vector = { 1 } + 4.5310198400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 238 +--------------------- +Parameters for evaluation 238: + 2.3571428571e+02 blue integer + 2.1428571429e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.0714285714e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 238: +Active set vector = { 1 } + 4.5310198400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 239 +--------------------- +Parameters for evaluation 239: + 2.3571428571e+02 blue integer + 2.1428571429e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 8.5714285714e+00 G1 integer + 3.2761904762e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.3857142857e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 239: +Active set vector = { 1 } + 4.2333764300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 240 +--------------------- +Parameters for evaluation 240: + 2.3571428571e+02 blue integer + 2.1428571429e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 5.1190476190e+00 T2 float + 4.7857142857e+01 G1 integer + 3.2761904762e+01 G2 integer + 2.0095238095e+01 minSize integer + 1.3857142857e+03 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.2857142857e+02 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 240: +Active set vector = { 1 } + 3.5174410400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 241 +--------------------- +Parameters for evaluation 241: + 2.2571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.1571428571e+02 red integer + 7.2619047619e+00 T1 float + 4.4047619048e+00 T2 float + 3.7142857143e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 241: +Active set vector = { 1 } + 8.7773918300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 242 +--------------------- +Parameters for evaluation 242: + 2.2571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 4.4047619048e+00 T2 float + 3.7142857143e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 242: +Active set vector = { 1 } + 8.7773918300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 243 +--------------------- +Parameters for evaluation 243: + 2.2571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 4.4047619048e+00 T2 float + 3.7142857143e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 243: +Active set vector = { 1 } + 8.8383628000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 244 +--------------------- +Parameters for evaluation 244: + 2.2571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 3.7142857143e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 5.5000000000e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 244: +Active set vector = { 1 } + 8.8544362600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 245 +--------------------- +Parameters for evaluation 245: + 2.2571428571e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 3.7142857143e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 245: +Active set vector = { 1 } + 9.1425444500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 246 +--------------------- +Parameters for evaluation 246: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 3.7142857143e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 246: +Active set vector = { 1 } + 9.1425444500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 247 +--------------------- +Parameters for evaluation 247: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 4.1904761905e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 247: +Active set vector = { 1 } + 8.9365752600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 248 +--------------------- +Parameters for evaluation 248: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.1857142857e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 248: +Active set vector = { 1 } + 6.4026058500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 249 +--------------------- +Parameters for evaluation 249: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.0000000000e+00 G2 integer + 3.0952380952e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 249: +Active set vector = { 1 } + 6.4026058500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 250 +--------------------- +Parameters for evaluation 250: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.1904761905e+01 G2 integer + 3.0952380952e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 250: +Active set vector = { 1 } + 4.5558357000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 251 +--------------------- +Parameters for evaluation 251: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.1904761905e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 251: +Active set vector = { 1 } + 3.5332217300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 252 +--------------------- +Parameters for evaluation 252: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.1904761905e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 252: +Active set vector = { 1 } + 3.5310550100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 253 +--------------------- +Parameters for evaluation 253: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 7.2619047619e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.1904761905e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 253: +Active set vector = { 1 } + 3.6736748100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 254 +--------------------- +Parameters for evaluation 254: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 4.6428571429e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.1904761905e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 254: +Active set vector = { 1 } + 3.6736468100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 255 +--------------------- +Parameters for evaluation 255: + 2.1000000000e+02 blue integer + 2.4000000000e+02 green integer + 2.3142857143e+02 red integer + 4.6428571429e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.1904761905e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 255: +Active set vector = { 1 } + 3.6753668000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 256 +--------------------- +Parameters for evaluation 256: + 2.1000000000e+02 blue integer + 2.2428571429e+02 green integer + 2.3142857143e+02 red integer + 4.6428571429e+00 T1 float + 7.0238095238e+00 T2 float + 7.6428571429e+01 G1 integer + 2.1904761905e+01 G2 integer + 1.1047619048e+01 minSize integer + 1.5000000000e+03 maxSize integer + 1.5714285714e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 6.2857142857e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 256: +Active set vector = { 1 } + 3.6753668000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 257 +--------------------- +Parameters for evaluation 257: + 2.2857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.2428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.3000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 257: +Active set vector = { 1 } + 6.9088727900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 258 +--------------------- +Parameters for evaluation 258: + 2.2857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.2428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.3000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 258: +Active set vector = { 1 } + 5.9761617100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 259 +--------------------- +Parameters for evaluation 259: + 2.2857142857e+02 blue integer + 2.3428571429e+02 green integer + 2.2428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 259: +Active set vector = { 1 } + 5.9761707200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 260 +--------------------- +Parameters for evaluation 260: + 2.2857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.2428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 260: +Active set vector = { 1 } + 5.9761707200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 261 +--------------------- +Parameters for evaluation 261: + 2.2857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.2428571429e+02 red integer + 3.4523809524e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 261: +Active set vector = { 1 } + 5.8752098500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 262 +--------------------- +Parameters for evaluation 262: + 2.2857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.2428571429e+02 red integer + 3.4523809524e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 262: +Active set vector = { 1 } + 6.1647566000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 263 +--------------------- +Parameters for evaluation 263: + 2.2857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.2428571429e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.2428571429e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 263: +Active set vector = { 1 } + 6.1645061300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 264 +--------------------- +Parameters for evaluation 264: + 2.2857142857e+02 blue integer + 2.1857142857e+02 green integer + 2.2428571429e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 264: +Active set vector = { 1 } + 6.4337835700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 265 +--------------------- +Parameters for evaluation 265: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.2428571429e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 265: +Active set vector = { 1 } + 6.4337835700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 266 +--------------------- +Parameters for evaluation 266: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.4000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8190476190e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 266: +Active set vector = { 1 } + 6.4337835700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 267 +--------------------- +Parameters for evaluation 267: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.4000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 1.8285714286e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 267: +Active set vector = { 1 } + 5.2257385800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 268 +--------------------- +Parameters for evaluation 268: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.4000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 5.0000000000e+00 G1 integer + 1.8285714286e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 268: +Active set vector = { 1 } + 5.2257385800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 269 +--------------------- +Parameters for evaluation 269: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.4000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 4.4285714286e+01 G1 integer + 1.8285714286e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.5714285714e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 269: +Active set vector = { 1 } + 3.0465046300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 270 +--------------------- +Parameters for evaluation 270: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.4000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 4.4285714286e+01 G1 integer + 1.8285714286e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 270: +Active set vector = { 1 } + 2.8038518600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 271 +--------------------- +Parameters for evaluation 271: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.4000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 4.4285714286e+01 G1 integer + 1.8285714286e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 271: +Active set vector = { 1 } + 2.8037471500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 272 +--------------------- +Parameters for evaluation 272: + 2.1285714286e+02 blue integer + 2.1857142857e+02 green integer + 2.4000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 4.4285714286e+01 G1 integer + 1.8285714286e+01 G2 integer + 2.0000000000e+00 minSize integer + 9.2857142857e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 9.8571428571e+02 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 6.6666666667e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 272: +Active set vector = { 1 } + 2.7793394900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 273 +--------------------- +Parameters for evaluation 273: + 2.3285714286e+02 blue integer + 2.1285714286e+02 green integer + 2.1142857143e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 2.5523809524e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 273: +Active set vector = { 1 } + 2.7713392500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 274 +--------------------- +Parameters for evaluation 274: + 2.3285714286e+02 blue integer + 2.1285714286e+02 green integer + 2.1142857143e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 2.5523809524e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 274: +Active set vector = { 1 } + 2.4905718900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 275 +--------------------- +Parameters for evaluation 275: + 2.3285714286e+02 blue integer + 2.1285714286e+02 green integer + 2.1142857143e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 275: +Active set vector = { 1 } + 2.9266479000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 276 +--------------------- +Parameters for evaluation 276: + 2.3285714286e+02 blue integer + 2.1285714286e+02 green integer + 2.1142857143e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 276: +Active set vector = { 1 } + 2.9225914700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 277 +--------------------- +Parameters for evaluation 277: + 2.3285714286e+02 blue integer + 2.1285714286e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 277: +Active set vector = { 1 } + 2.9225914700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 278 +--------------------- +Parameters for evaluation 278: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.0142857143e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 278: +Active set vector = { 1 } + 2.9225914700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 279 +--------------------- +Parameters for evaluation 279: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 279: +Active set vector = { 1 } + 2.9202293900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 280 +--------------------- +Parameters for evaluation 280: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 5.8571428571e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 280: +Active set vector = { 1 } + 7.6337672600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 281 +--------------------- +Parameters for evaluation 281: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 281: +Active set vector = { 1 } + 8.3482605900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 282 +--------------------- +Parameters for evaluation 282: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 282: +Active set vector = { 1 } + 7.5016556000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 283 +--------------------- +Parameters for evaluation 283: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.1000000000e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 283: +Active set vector = { 1 } + 7.0062592500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 284 +--------------------- +Parameters for evaluation 284: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.4142857143e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 284: +Active set vector = { 1 } + 7.0017629400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 285 +--------------------- +Parameters for evaluation 285: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.4142857143e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 285: +Active set vector = { 1 } + 6.9511865100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 286 +--------------------- +Parameters for evaluation 286: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.1142857143e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.4142857143e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 286: +Active set vector = { 1 } + 6.9118724900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 287 +--------------------- +Parameters for evaluation 287: + 2.3285714286e+02 blue integer + 2.2857142857e+02 green integer + 2.2714285714e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.4142857143e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 287: +Active set vector = { 1 } + 6.9118724900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 288 +--------------------- +Parameters for evaluation 288: + 2.1714285714e+02 blue integer + 2.2857142857e+02 green integer + 2.2714285714e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.3714285714e+01 minSize integer + 1.4142857143e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 1.3285714286e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 288: +Active set vector = { 1 } + 6.9118724900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 289 +--------------------- +Parameters for evaluation 289: + 2.1714285714e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 5.5952380952e+00 T2 float + 4.0714285714e+01 G1 integer + 3.6380952381e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.1000000000e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 289: +Active set vector = { 1 } + 4.3100835900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 290 +--------------------- +Parameters for evaluation 290: + 2.1714285714e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 5.5952380952e+00 T2 float + 4.0714285714e+01 G1 integer + 3.6380952381e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 290: +Active set vector = { 1 } + 4.3105935800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 291 +--------------------- +Parameters for evaluation 291: + 2.1714285714e+02 blue integer + 2.2714285714e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 5.5952380952e+00 T2 float + 4.0714285714e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 291: +Active set vector = { 1 } + 2.6430417700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 292 +--------------------- +Parameters for evaluation 292: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 5.5952380952e+00 T2 float + 4.0714285714e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 292: +Active set vector = { 1 } + 2.6430417700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 293 +--------------------- +Parameters for evaluation 293: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 5.5952380952e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 293: +Active set vector = { 1 } + 4.1405510300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 294 +--------------------- +Parameters for evaluation 294: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 294: +Active set vector = { 1 } + 4.1256099400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 295 +--------------------- +Parameters for evaluation 295: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 8.0000000000e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 295: +Active set vector = { 1 } + 4.1256099400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 296 +--------------------- +Parameters for evaluation 296: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 296: +Active set vector = { 1 } + 4.0677227900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 297 +--------------------- +Parameters for evaluation 297: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 297: +Active set vector = { 1 } + 4.4823963200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 298 +--------------------- +Parameters for evaluation 298: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.3857142857e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 298: +Active set vector = { 1 } + 4.4194383500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 299 +--------------------- +Parameters for evaluation 299: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 299: +Active set vector = { 1 } + 4.4194383500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 300 +--------------------- +Parameters for evaluation 300: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 300: +Active set vector = { 1 } + 4.4351110000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 301 +--------------------- +Parameters for evaluation 301: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 2.5523809524e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 301: +Active set vector = { 1 } + 4.4915808100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 302 +--------------------- +Parameters for evaluation 302: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 7.5000000000e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.4428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 302: +Active set vector = { 1 } + 3.0723845000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 303 +--------------------- +Parameters for evaluation 303: + 2.1714285714e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 4.8809523810e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.4428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 303: +Active set vector = { 1 } + 3.0674428600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 304 +--------------------- +Parameters for evaluation 304: + 2.3285714286e+02 blue integer + 2.1142857143e+02 green integer + 2.2285714286e+02 red integer + 4.8809523810e+00 T1 float + 2.9761904762e+00 T2 float + 8.0000000000e+01 G1 integer + 1.6476190476e+01 G2 integer + 5.6190476190e+00 minSize integer + 1.4428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 3.9142857143e+01 minSizeSeg integer + 1.4142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 304: +Active set vector = { 1 } + 3.0668980100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 305 +--------------------- +Parameters for evaluation 305: + 2.3285714286e+02 blue integer + 2.4000000000e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 1.9285714286e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 305: +Active set vector = { 1 } + 3.0119996000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 306 +--------------------- +Parameters for evaluation 306: + 2.3285714286e+02 blue integer + 2.4000000000e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 306: +Active set vector = { 1 } + 4.1477711800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 307 +--------------------- +Parameters for evaluation 307: + 2.3285714286e+02 blue integer + 2.4000000000e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 5.9047619048e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 307: +Active set vector = { 1 } + 4.0089450800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 308 +--------------------- +Parameters for evaluation 308: + 2.3285714286e+02 blue integer + 2.4000000000e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 1.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 308: +Active set vector = { 1 } + 3.9985509500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 309 +--------------------- +Parameters for evaluation 309: + 2.3285714286e+02 blue integer + 2.4000000000e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 309: +Active set vector = { 1 } + 3.6413893000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 310 +--------------------- +Parameters for evaluation 310: + 2.3285714286e+02 blue integer + 2.2428571429e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.0142857143e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 310: +Active set vector = { 1 } + 3.6413893000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 311 +--------------------- +Parameters for evaluation 311: + 2.3285714286e+02 blue integer + 2.2428571429e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 311: +Active set vector = { 1 } + 3.6413154900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 312 +--------------------- +Parameters for evaluation 312: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 312: +Active set vector = { 1 } + 3.6413154900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 313 +--------------------- +Parameters for evaluation 313: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.1428571429e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 313: +Active set vector = { 1 } + 3.6410148400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 314 +--------------------- +Parameters for evaluation 314: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.3000000000e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 314: +Active set vector = { 1 } + 3.6410148400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 315 +--------------------- +Parameters for evaluation 315: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.3000000000e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 315: +Active set vector = { 1 } + 3.7270759600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 316 +--------------------- +Parameters for evaluation 316: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.3000000000e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 316: +Active set vector = { 1 } + 4.1815079500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 317 +--------------------- +Parameters for evaluation 317: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.3000000000e+02 red integer + 2.9761904762e+00 T1 float + 6.3095238095e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 317: +Active set vector = { 1 } + 4.2836768600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 318 +--------------------- +Parameters for evaluation 318: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.3000000000e+02 red integer + 2.9761904762e+00 T1 float + 3.6904761905e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 318: +Active set vector = { 1 } + 4.2760747900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 319 +--------------------- +Parameters for evaluation 319: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.3000000000e+02 red integer + 5.5952380952e+00 T1 float + 3.6904761905e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 319: +Active set vector = { 1 } + 4.2753739700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 320 +--------------------- +Parameters for evaluation 320: + 2.1714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.3000000000e+02 red integer + 5.5952380952e+00 T1 float + 3.6904761905e+00 T2 float + 5.8571428571e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 8.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 320: +Active set vector = { 1 } + 4.3079139700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 321 +--------------------- +Parameters for evaluation 321: + 2.3142857143e+02 blue integer + 2.2571428571e+02 green integer + 2.2000000000e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 4.4285714286e+01 G1 integer + 1.2857142857e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.2428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 6.6666666667e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 321: +Active set vector = { 1 } + 2.8257418100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 322 +--------------------- +Parameters for evaluation 322: + 2.3142857143e+02 blue integer + 2.2571428571e+02 green integer + 2.2000000000e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 4.4285714286e+01 G1 integer + 1.2857142857e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.2428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 322: +Active set vector = { 1 } + 2.8262401300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 323 +--------------------- +Parameters for evaluation 323: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.2000000000e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 4.4285714286e+01 G1 integer + 1.2857142857e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.2428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 323: +Active set vector = { 1 } + 2.8262401300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 324 +--------------------- +Parameters for evaluation 324: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 4.4285714286e+01 G1 integer + 1.2857142857e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.2428571429e+03 maxSize integer + 4.0714285714e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 324: +Active set vector = { 1 } + 2.8262401300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 325 +--------------------- +Parameters for evaluation 325: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 4.4285714286e+01 G1 integer + 1.2857142857e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 325: +Active set vector = { 1 } + 2.9158815800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 326 +--------------------- +Parameters for evaluation 326: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 4.4285714286e+01 G1 integer + 1.2857142857e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 326: +Active set vector = { 1 } + 2.9137630500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 327 +--------------------- +Parameters for evaluation 327: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 327: +Active set vector = { 1 } + 6.4439797800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 328 +--------------------- +Parameters for evaluation 328: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 6.0952380952e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 328: +Active set vector = { 1 } + 6.4439797800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 329 +--------------------- +Parameters for evaluation 329: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 329: +Active set vector = { 1 } + 6.4769420700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 330 +--------------------- +Parameters for evaluation 330: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 7.0238095238e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 330: +Active set vector = { 1 } + 4.4953658400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 331 +--------------------- +Parameters for evaluation 331: + 2.1571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.3571428571e+02 red integer + 4.4047619048e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 331: +Active set vector = { 1 } + 4.4949953400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 332 +--------------------- +Parameters for evaluation 332: + 2.1571428571e+02 blue integer + 2.1000000000e+02 green integer + 2.3571428571e+02 red integer + 4.4047619048e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 1.2428571429e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 332: +Active set vector = { 1 } + 4.4949953400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 333 +--------------------- +Parameters for evaluation 333: + 2.1571428571e+02 blue integer + 2.1000000000e+02 green integer + 2.3571428571e+02 red integer + 4.4047619048e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 9.2857142857e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 333: +Active set vector = { 1 } + 4.9681512600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 334 +--------------------- +Parameters for evaluation 334: + 2.1571428571e+02 blue integer + 2.1000000000e+02 green integer + 2.3571428571e+02 red integer + 4.4047619048e+00 T1 float + 6.3095238095e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 9.2857142857e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 334: +Active set vector = { 1 } + 4.9681512600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 335 +--------------------- +Parameters for evaluation 335: + 2.1571428571e+02 blue integer + 2.1000000000e+02 green integer + 2.3571428571e+02 red integer + 4.4047619048e+00 T1 float + 3.6904761905e+00 T2 float + 5.0000000000e+00 G1 integer + 1.2857142857e+01 G2 integer + 3.4571428571e+01 minSize integer + 9.2857142857e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 335: +Active set vector = { 1 } + 4.9488750500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 336 +--------------------- +Parameters for evaluation 336: + 2.1571428571e+02 blue integer + 2.1000000000e+02 green integer + 2.3571428571e+02 red integer + 4.4047619048e+00 T1 float + 3.6904761905e+00 T2 float + 5.0000000000e+00 G1 integer + 3.2761904762e+01 G2 integer + 3.4571428571e+01 minSize integer + 9.2857142857e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 4.5714285714e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 4.0000000000e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 336: +Active set vector = { 1 } + 5.9182041500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 337 +--------------------- +Parameters for evaluation 337: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 2.0095238095e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.3000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.4714285714e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 337: +Active set vector = { 1 } + 2.5777724000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 338 +--------------------- +Parameters for evaluation 338: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.3000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.4714285714e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 338: +Active set vector = { 1 } + 3.0296327800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 339 +--------------------- +Parameters for evaluation 339: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.3000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.4714285714e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 339: +Active set vector = { 1 } + 2.9159345300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 340 +--------------------- +Parameters for evaluation 340: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 3.8095238095e+00 minSize integer + 1.3000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 340: +Active set vector = { 1 } + 2.9146113500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 341 +--------------------- +Parameters for evaluation 341: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.3714285714e+01 minSize integer + 1.3000000000e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 341: +Active set vector = { 1 } + 4.4671751600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 342 +--------------------- +Parameters for evaluation 342: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.2571428571e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 342: +Active set vector = { 1 } + 4.4671884000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 343 +--------------------- +Parameters for evaluation 343: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 343: +Active set vector = { 1 } + 4.4671884000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 344 +--------------------- +Parameters for evaluation 344: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.6571428571e+01 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 344: +Active set vector = { 1 } + 5.4421404300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 345 +--------------------- +Parameters for evaluation 345: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 345: +Active set vector = { 1 } + 5.3979836800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 346 +--------------------- +Parameters for evaluation 346: + 2.3714285714e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 346: +Active set vector = { 1 } + 5.3989739300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 347 +--------------------- +Parameters for evaluation 347: + 2.2142857143e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 8.0000000000e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 347: +Active set vector = { 1 } + 5.3989739300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 348 +--------------------- +Parameters for evaluation 348: + 2.2142857143e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 2.5000000000e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 348: +Active set vector = { 1 } + 4.9932445100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 349 +--------------------- +Parameters for evaluation 349: + 2.2142857143e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 5.1190476190e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 349: +Active set vector = { 1 } + 4.9932445100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 350 +--------------------- +Parameters for evaluation 350: + 2.2142857143e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 5.1190476190e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 8.5714285714e+00 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 350: +Active set vector = { 1 } + 4.9842680700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 351 +--------------------- +Parameters for evaluation 351: + 2.2142857143e+02 blue integer + 2.3285714286e+02 green integer + 2.1000000000e+02 red integer + 5.1190476190e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 351: +Active set vector = { 1 } + 5.0210730100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 352 +--------------------- +Parameters for evaluation 352: + 2.2142857143e+02 blue integer + 2.1714285714e+02 green integer + 2.1000000000e+02 red integer + 5.1190476190e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.3714285714e+01 minSize integer + 9.8571428571e+02 maxSize integer + 4.7857142857e+01 minSizePl integer + 5.7142857143e+00 minSizeSeg integer + 1.1571428571e+03 maxSizeSeg integer + 4.0000000000e+00 fillHolesConnectivity integer + 5.9047619048e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 352: +Active set vector = { 1 } + 5.0210730100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 353 +--------------------- +Parameters for evaluation 353: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.2428571429e+02 red integer + 5.5952380952e+00 T1 float + 2.7380952381e+00 T2 float + 4.4285714286e+01 G1 integer + 2.3714285714e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 353: +Active set vector = { 1 } + 2.9716293700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 354 +--------------------- +Parameters for evaluation 354: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 2.7380952381e+00 T2 float + 4.4285714286e+01 G1 integer + 2.3714285714e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 354: +Active set vector = { 1 } + 2.9704404100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 355 +--------------------- +Parameters for evaluation 355: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 2.7380952381e+00 T2 float + 4.4285714286e+01 G1 integer + 2.3714285714e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 355: +Active set vector = { 1 } + 2.6069279900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 356 +--------------------- +Parameters for evaluation 356: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 5.3571428571e+00 T2 float + 4.4285714286e+01 G1 integer + 2.3714285714e+01 G2 integer + 4.0000000000e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 356: +Active set vector = { 1 } + 2.6244674600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 357 +--------------------- +Parameters for evaluation 357: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 5.3571428571e+00 T2 float + 4.4285714286e+01 G1 integer + 2.3714285714e+01 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 357: +Active set vector = { 1 } + 2.3909605600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 358 +--------------------- +Parameters for evaluation 358: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 5.3571428571e+00 T2 float + 4.4285714286e+01 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 358: +Active set vector = { 1 } + 8.9535575300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 359 +--------------------- +Parameters for evaluation 359: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.3333333333e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 359: +Active set vector = { 1 } + 9.7389100200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 360 +--------------------- +Parameters for evaluation 360: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 360: +Active set vector = { 1 } + 9.7390170600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 361 +--------------------- +Parameters for evaluation 361: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.2857142857e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 361: +Active set vector = { 1 } + 9.2524695000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 362 +--------------------- +Parameters for evaluation 362: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 5.5952380952e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 362: +Active set vector = { 1 } + 9.1336021700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 363 +--------------------- +Parameters for evaluation 363: + 2.1000000000e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 2.9761904762e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 363: +Active set vector = { 1 } + 9.1329809600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 364 +--------------------- +Parameters for evaluation 364: + 2.2571428571e+02 blue integer + 2.1000000000e+02 green integer + 2.4000000000e+02 red integer + 2.9761904762e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 364: +Active set vector = { 1 } + 9.1329809600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 365 +--------------------- +Parameters for evaluation 365: + 2.2571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.4000000000e+02 red integer + 2.9761904762e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 365: +Active set vector = { 1 } + 9.1329809600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 366 +--------------------- +Parameters for evaluation 366: + 2.2571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.4000000000e+02 red integer + 2.9761904762e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.2857142857e+02 maxSize integer + 3.0000000000e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 366: +Active set vector = { 1 } + 8.9622553400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 367 +--------------------- +Parameters for evaluation 367: + 2.2571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.4000000000e+02 red integer + 2.9761904762e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 1.2428571429e+03 maxSize integer + 3.0000000000e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 367: +Active set vector = { 1 } + 8.9627653600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 368 +--------------------- +Parameters for evaluation 368: + 2.2571428571e+02 blue integer + 2.2571428571e+02 green integer + 2.4000000000e+02 red integer + 2.9761904762e+00 T1 float + 5.3571428571e+00 T2 float + 5.0000000000e+00 G1 integer + 3.8095238095e+00 G2 integer + 2.0095238095e+01 minSize integer + 1.2428571429e+03 maxSize integer + 6.9285714286e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 7.4285714286e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 4.1904761905e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 368: +Active set vector = { 1 } + 8.8617962500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 369 +--------------------- +Parameters for evaluation 369: + 2.1142857143e+02 blue integer + 2.2285714286e+02 green integer + 2.3000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 3.0000000000e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 369: +Active set vector = { 1 } + 2.4418842800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 370 +--------------------- +Parameters for evaluation 370: + 2.1142857143e+02 blue integer + 2.2285714286e+02 green integer + 2.3000000000e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 6.9285714286e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 370: +Active set vector = { 1 } + 2.5706278300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 371 +--------------------- +Parameters for evaluation 371: + 2.1142857143e+02 blue integer + 2.2285714286e+02 green integer + 2.1428571429e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 6.9285714286e+01 G1 integer + 2.0095238095e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 371: +Active set vector = { 1 } + 2.5706278300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 372 +--------------------- +Parameters for evaluation 372: + 2.1142857143e+02 blue integer + 2.2285714286e+02 green integer + 2.1428571429e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 372: +Active set vector = { 1 } + 4.4402506400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 373 +--------------------- +Parameters for evaluation 373: + 2.1142857143e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 6.0714285714e+00 T1 float + 5.1190476190e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 373: +Active set vector = { 1 } + 4.4402506400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 374 +--------------------- +Parameters for evaluation 374: + 2.1142857143e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 5.1190476190e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 374: +Active set vector = { 1 } + 4.4403340600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 375 +--------------------- +Parameters for evaluation 375: + 2.1142857143e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.0000000000e+00 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 375: +Active set vector = { 1 } + 4.5670206500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 376 +--------------------- +Parameters for evaluation 376: + 2.1142857143e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.1285714286e+03 maxSize integer + 4.7857142857e+01 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 376: +Active set vector = { 1 } + 4.9491014900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 377 +--------------------- +Parameters for evaluation 377: + 2.1142857143e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 377: +Active set vector = { 1 } + 4.8973536100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 378 +--------------------- +Parameters for evaluation 378: + 2.2714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 378: +Active set vector = { 1 } + 4.8973536100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 379 +--------------------- +Parameters for evaluation 379: + 2.2714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 4.2857142857e+01 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 379: +Active set vector = { 1 } + 4.9018781300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 380 +--------------------- +Parameters for evaluation 380: + 2.2714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 7.4285714286e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 380: +Active set vector = { 1 } + 4.8177728200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 381 +--------------------- +Parameters for evaluation 381: + 2.2714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 9.5714285714e+02 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.3333333333e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 381: +Active set vector = { 1 } + 4.4200257700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 382 +--------------------- +Parameters for evaluation 382: + 2.2714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.1285714286e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.3333333333e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 382: +Active set vector = { 1 } + 4.4201190400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 383 +--------------------- +Parameters for evaluation 383: + 2.2714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.3333333333e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 383: +Active set vector = { 1 } + 4.4201040400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 384 +--------------------- +Parameters for evaluation 384: + 2.2714285714e+02 blue integer + 2.3857142857e+02 green integer + 2.1428571429e+02 red integer + 3.4523809524e+00 T1 float + 2.5000000000e+00 T2 float + 6.9285714286e+01 G1 integer + 4.0000000000e+01 G2 integer + 2.1904761905e+01 minSize integer + 1.4428571429e+03 maxSize integer + 8.5714285714e+00 minSizePl integer + 2.0000000000e+00 minSizeSeg integer + 1.2714285714e+03 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.3333333333e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 384: +Active set vector = { 1 } + 4.4714467500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 385 +--------------------- +Parameters for evaluation 385: + 2.2000000000e+02 blue integer + 2.2857142857e+02 green integer + 2.3714285714e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 2.5523809524e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.1285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 385: +Active set vector = { 1 } + 3.1023251500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 386 +--------------------- +Parameters for evaluation 386: + 2.2000000000e+02 blue integer + 2.2857142857e+02 green integer + 2.3714285714e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 2.5523809524e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 386: +Active set vector = { 1 } + 3.0014810700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 387 +--------------------- +Parameters for evaluation 387: + 2.2000000000e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 2.5523809524e+01 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 387: +Active set vector = { 1 } + 3.0014810700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 388 +--------------------- +Parameters for evaluation 388: + 2.2000000000e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 388: +Active set vector = { 1 } + 4.0008985800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 389 +--------------------- +Parameters for evaluation 389: + 2.2000000000e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 5.8333333333e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 389: +Active set vector = { 1 } + 4.2305082600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 390 +--------------------- +Parameters for evaluation 390: + 2.2000000000e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.4428571429e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 390: +Active set vector = { 1 } + 4.2305082600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 391 +--------------------- +Parameters for evaluation 391: + 2.2000000000e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 6.0952380952e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 391: +Active set vector = { 1 } + 4.2509965700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 392 +--------------------- +Parameters for evaluation 392: + 2.2000000000e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 392: +Active set vector = { 1 } + 7.4303807500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 393 +--------------------- +Parameters for evaluation 393: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 7.5000000000e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 393: +Active set vector = { 1 } + 7.4303807500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 394 +--------------------- +Parameters for evaluation 394: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 1.9285714286e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 394: +Active set vector = { 1 } + 7.4007218400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 395 +--------------------- +Parameters for evaluation 395: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 5.8571428571e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 395: +Active set vector = { 1 } + 7.0793900500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 396 +--------------------- +Parameters for evaluation 396: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 5.8571428571e+01 G1 integer + 5.6190476190e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 396: +Active set vector = { 1 } + 6.6826896600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 397 +--------------------- +Parameters for evaluation 397: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.3714285714e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 5.8571428571e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0095238095e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 397: +Active set vector = { 1 } + 6.6866889000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 398 +--------------------- +Parameters for evaluation 398: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.2142857143e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 5.8571428571e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0095238095e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 5.5238095238e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 398: +Active set vector = { 1 } + 6.6866889000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 399 +--------------------- +Parameters for evaluation 399: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.2142857143e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 5.8571428571e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0095238095e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 7.6190476190e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 399: +Active set vector = { 1 } + 6.7822762400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 400 +--------------------- +Parameters for evaluation 400: + 2.3571428571e+02 blue integer + 2.1285714286e+02 green integer + 2.2142857143e+02 red integer + 3.2142857143e+00 T1 float + 4.8809523810e+00 T2 float + 5.8571428571e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0095238095e+01 minSize integer + 1.4428571429e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 1.1285714286e+03 maxSizeSeg integer + 5.5238095238e+00 fillHolesConnectivity integer + 4.0000000000e+00 reconConnectivity integer + 7.6190476190e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 400: +Active set vector = { 1 } + 6.7858097300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 401 +--------------------- +Parameters for evaluation 401: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.3142857143e+02 red integer + 3.9285714286e+00 T1 float + 7.5000000000e+00 T2 float + 8.0000000000e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 401: +Active set vector = { 1 } + 4.1568211000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 402 +--------------------- +Parameters for evaluation 402: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.3142857143e+02 red integer + 3.9285714286e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 402: +Active set vector = { 1 } + 4.1300918700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 403 +--------------------- +Parameters for evaluation 403: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 3.9285714286e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 5.3333333333e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 403: +Active set vector = { 1 } + 4.1300918700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 404 +--------------------- +Parameters for evaluation 404: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 3.9285714286e+00 T1 float + 4.8809523810e+00 T2 float + 8.0000000000e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 404: +Active set vector = { 1 } + 4.1007095400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 405 +--------------------- +Parameters for evaluation 405: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 3.9285714286e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 405: +Active set vector = { 1 } + 4.1073716000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 406 +--------------------- +Parameters for evaluation 406: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.0000000000e+00 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 406: +Active set vector = { 1 } + 4.1162365700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 407 +--------------------- +Parameters for evaluation 407: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.1904761905e+01 minSize integer + 1.2142857143e+03 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 407: +Active set vector = { 1 } + 4.0191013200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 408 +--------------------- +Parameters for evaluation 408: + 2.1142857143e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 408: +Active set vector = { 1 } + 4.0196373100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 409 +--------------------- +Parameters for evaluation 409: + 2.2714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 5.0285714286e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 409: +Active set vector = { 1 } + 4.0196373100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 410 +--------------------- +Parameters for evaluation 410: + 2.2714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 410: +Active set vector = { 1 } + 4.0340857400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 411 +--------------------- +Parameters for evaluation 411: + 2.2714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 5.6190476190e+00 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 411: +Active set vector = { 1 } + 3.9171219800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 412 +--------------------- +Parameters for evaluation 412: + 2.2714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 8.0000000000e+01 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 412: +Active set vector = { 1 } + 3.2588011700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 413 +--------------------- +Parameters for evaluation 413: + 2.2714285714e+02 blue integer + 2.2428571429e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 4.0714285714e+01 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 413: +Active set vector = { 1 } + 2.8211113500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 414 +--------------------- +Parameters for evaluation 414: + 2.2714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 4.0714285714e+01 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 7.6190476190e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 414: +Active set vector = { 1 } + 2.8211113500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 415 +--------------------- +Parameters for evaluation 415: + 2.2714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 4.0714285714e+01 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 4.3809523810e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 415: +Active set vector = { 1 } + 2.4774654900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 416 +--------------------- +Parameters for evaluation 416: + 2.2714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.1571428571e+02 red integer + 6.5476190476e+00 T1 float + 4.8809523810e+00 T2 float + 4.0714285714e+01 G1 integer + 2.5523809524e+01 G2 integer + 2.1904761905e+01 minSize integer + 9.0000000000e+02 maxSize integer + 4.0714285714e+01 minSizePl integer + 9.4285714286e+00 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 6.4761904762e+00 fillHolesConnectivity integer + 5.5238095238e+00 reconConnectivity integer + 7.4285714286e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 416: +Active set vector = { 1 } + 2.4775430100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 417 +--------------------- +Parameters for evaluation 417: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 3.6904761905e+00 T1 float + 6.0714285714e+00 T2 float + 4.4285714286e+01 G1 integer + 1.4666666667e+01 G2 integer + 7.4285714286e+00 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 417: +Active set vector = { 1 } + 2.6030777500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 418 +--------------------- +Parameters for evaluation 418: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 3.6904761905e+00 T1 float + 6.0714285714e+00 T2 float + 4.4285714286e+01 G1 integer + 1.4666666667e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 418: +Active set vector = { 1 } + 2.6681873400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 419 +--------------------- +Parameters for evaluation 419: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 6.0714285714e+00 T2 float + 4.4285714286e+01 G1 integer + 1.4666666667e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 7.8095238095e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 419: +Active set vector = { 1 } + 2.6683727000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 420 +--------------------- +Parameters for evaluation 420: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 6.0714285714e+00 T2 float + 4.4285714286e+01 G1 integer + 1.4666666667e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 420: +Active set vector = { 1 } + 2.7718064100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 421 +--------------------- +Parameters for evaluation 421: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 6.0714285714e+00 T2 float + 4.4285714286e+01 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 421: +Active set vector = { 1 } + 3.7053749500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 422 +--------------------- +Parameters for evaluation 422: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 4.4285714286e+01 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 5.0000000000e+00 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 422: +Active set vector = { 1 } + 3.6951324600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 423 +--------------------- +Parameters for evaluation 423: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 4.4285714286e+01 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 423: +Active set vector = { 1 } + 3.7268812200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 424 +--------------------- +Parameters for evaluation 424: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 5.4000000000e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 424: +Active set vector = { 1 } + 6.5946209100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 425 +--------------------- +Parameters for evaluation 425: + 2.3571428571e+02 blue integer + 2.3428571429e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 425: +Active set vector = { 1 } + 6.4716330300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 426 +--------------------- +Parameters for evaluation 426: + 2.3571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.3571428571e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 426: +Active set vector = { 1 } + 6.4716330300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 427 +--------------------- +Parameters for evaluation 427: + 2.3571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 7.8095238095e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 427: +Active set vector = { 1 } + 6.4716330300e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 428 +--------------------- +Parameters for evaluation 428: + 2.3571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 428: +Active set vector = { 1 } + 6.5228017400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 429 +--------------------- +Parameters for evaluation 429: + 2.3571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.3285714286e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 429: +Active set vector = { 1 } + 6.5227897000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 430 +--------------------- +Parameters for evaluation 430: + 2.3571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.0142857143e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 430: +Active set vector = { 1 } + 6.7527172800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 431 +--------------------- +Parameters for evaluation 431: + 2.3571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.0142857143e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 431: +Active set vector = { 1 } + 5.5105730600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 432 +--------------------- +Parameters for evaluation 432: + 2.2000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.2000000000e+02 red integer + 6.3095238095e+00 T1 float + 3.4523809524e+00 T2 float + 5.0000000000e+00 G1 integer + 3.4571428571e+01 G2 integer + 2.7333333333e+01 minSize integer + 1.0142857143e+03 maxSize integer + 4.4285714286e+01 minSizePl integer + 1.3142857143e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 5.7142857143e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 5.7142857143e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 432: +Active set vector = { 1 } + 5.5105730600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 433 +--------------------- +Parameters for evaluation 433: + 2.1000000000e+02 blue integer + 2.3428571429e+02 green integer + 2.2857142857e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 3.7142857143e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 1.2142857143e+03 maxSize integer + 7.6428571429e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 433: +Active set vector = { 1 } + 3.8243541100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 434 +--------------------- +Parameters for evaluation 434: + 2.1000000000e+02 blue integer + 2.3428571429e+02 green integer + 2.2857142857e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 3.7142857143e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 7.6428571429e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 434: +Active set vector = { 1 } + 3.8264836200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 435 +--------------------- +Parameters for evaluation 435: + 2.1000000000e+02 blue integer + 2.3428571429e+02 green integer + 2.2857142857e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 3.7142857143e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 4.3809523810e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 435: +Active set vector = { 1 } + 3.8557743900e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 436 +--------------------- +Parameters for evaluation 436: + 2.1000000000e+02 blue integer + 2.3428571429e+02 green integer + 2.2857142857e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 3.7142857143e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 436: +Active set vector = { 1 } + 3.0572359100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 437 +--------------------- +Parameters for evaluation 437: + 2.1000000000e+02 blue integer + 2.3428571429e+02 green integer + 2.2857142857e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 437: +Active set vector = { 1 } + 4.9039805400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 438 +--------------------- +Parameters for evaluation 438: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.2857142857e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 7.2571428571e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 438: +Active set vector = { 1 } + 4.9039805400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 439 +--------------------- +Parameters for evaluation 439: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.2857142857e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 439: +Active set vector = { 1 } + 4.8845807600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 440 +--------------------- +Parameters for evaluation 440: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 2.5000000000e+00 T1 float + 4.1666666667e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 440: +Active set vector = { 1 } + 4.8845807600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 441 +--------------------- +Parameters for evaluation 441: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 4.1666666667e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 4.1904761905e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 441: +Active set vector = { 1 } + 4.8866651800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 442 +--------------------- +Parameters for evaluation 442: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 4.1666666667e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 442: +Active set vector = { 1 } + 4.9182293000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 443 +--------------------- +Parameters for evaluation 443: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.7857142857e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 4.0000000000e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 443: +Active set vector = { 1 } + 4.9349151600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 444 +--------------------- +Parameters for evaluation 444: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.7857142857e+00 T2 float + 7.6428571429e+01 G1 integer + 9.2380952381e+00 G2 integer + 2.0095238095e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 444: +Active set vector = { 1 } + 4.1092018600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 445 +--------------------- +Parameters for evaluation 445: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.7857142857e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0095238095e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 6.8571428571e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 445: +Active set vector = { 1 } + 4.4639432100e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 446 +--------------------- +Parameters for evaluation 446: + 2.1000000000e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.7857142857e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0095238095e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.7619047619e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 446: +Active set vector = { 1 } + 4.5254373500e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 447 +--------------------- +Parameters for evaluation 447: + 2.2571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.7857142857e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0095238095e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 9.0000000000e+02 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.7619047619e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 447: +Active set vector = { 1 } + 4.5252138000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 448 +--------------------- +Parameters for evaluation 448: + 2.2571428571e+02 blue integer + 2.1857142857e+02 green integer + 2.1285714286e+02 red integer + 5.1190476190e+00 T1 float + 6.7857142857e+00 T2 float + 7.6428571429e+01 G1 integer + 2.9142857143e+01 G2 integer + 2.0095238095e+01 minSize integer + 9.0000000000e+02 maxSize integer + 3.7142857143e+01 minSizePl integer + 3.1714285714e+01 minSizeSeg integer + 1.2142857143e+03 maxSizeSeg integer + 6.2857142857e+00 fillHolesConnectivity integer + 6.4761904762e+00 reconConnectivity integer + 4.7619047619e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 448: +Active set vector = { 1 } + 4.5238173700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 449 +--------------------- +Parameters for evaluation 449: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.2428571429e+02 red integer + 4.4047619048e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.1000000000e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 2.4285714286e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 449: +Active set vector = { 1 } + 4.6843312600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 450 +--------------------- +Parameters for evaluation 450: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.1000000000e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 2.4285714286e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 450: +Active set vector = { 1 } + 4.6843312600e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 451 +--------------------- +Parameters for evaluation 451: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 2.4285714286e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 7.8095238095e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 451: +Active set vector = { 1 } + 4.6029766200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 452 +--------------------- +Parameters for evaluation 452: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 2.4285714286e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 452: +Active set vector = { 1 } + 4.2922540200e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 453 +--------------------- +Parameters for evaluation 453: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 6.5142857143e+01 minSizeSeg integer + 1.1857142857e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 453: +Active set vector = { 1 } + 4.5654752700e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 454 +--------------------- +Parameters for evaluation 454: + 2.2142857143e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 6.5142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 454: +Active set vector = { 1 } + 4.5655233800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 455 +--------------------- +Parameters for evaluation 455: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 4.4047619048e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 6.5142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 455: +Active set vector = { 1 } + 4.5655233800e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 456 +--------------------- +Parameters for evaluation 456: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 7.0238095238e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 6.5142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 4.3809523810e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 456: +Active set vector = { 1 } + 4.5654004400e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 457 +--------------------- +Parameters for evaluation 457: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 7.0238095238e+00 T1 float + 4.4047619048e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 6.5142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out + +Active response data for evaluation 457: +Active set vector = { 1 } + 4.3782187000e+08 response_fn_1 + + + +--------------------- +Begin Evaluation 458 +--------------------- +Parameters for evaluation 458: + 2.3714285714e+02 blue integer + 2.4000000000e+02 green integer + 2.4000000000e+02 red integer + 7.0238095238e+00 T1 float + 7.0238095238e+00 T2 float + 1.9285714286e+01 G1 integer + 3.8190476190e+01 G2 integer + 1.4666666667e+01 minSize integer + 1.4142857143e+03 maxSize integer + 6.5714285714e+01 minSizePl integer + 6.5142857143e+01 minSizeSeg integer + 1.5000000000e+03 maxSizeSeg integer + 6.0952380952e+00 fillHolesConnectivity integer + 5.7142857143e+00 reconConnectivity integer + 6.4761904762e+00 watershedConnectivity integer + [0.26235,0.0514831,0.0114217] target_std floatarray + [-0.632356,-0.0516004,0.0376543] target_mean floatarray + /home/will/Desktop/images15/image3.tiff input_img rt + /home/will/Desktop/images15/image3.mask.png input_ref_img rt + +blocking fork: simulator_script params.in results.out end diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/debug_funs.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/debug_funs.hpp new file mode 100644 index 0000000..f82f3ae --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/debug_funs.hpp @@ -0,0 +1,65 @@ +#ifndef DEBUGF_HPP_ +#define DEBUGF_HPP_ + +void mapprint(map mapp) { + for (pair p : mapp) + cout << p.first << ":" << p.second->getName() << endl; +} + +void mapprint(map> mapp) { + for (pair> p : mapp) { + // for (map::iterator i=map.begin(); i!=map.end();i++) + cout << p.first << ":" << endl; + for (ArgumentBase* a : p.second) + cout << "\t" << a->getName() << ":" << a->toString() << endl; + } +} + +void mapprint(map mapp) { + for (map::iterator i=mapp.begin(); i!=mapp.end();i++) + cout << i->first << ":" << i->second->getName() << endl; +} + +void mapprint(map mapp, map args) { + cout << endl<< "merged: " << endl; + for (pair p : mapp) { + cout << "stage " << p.second->getId() << ":" << p.second->getName() << endl; + cout << "\tinputs: " << endl; + for (int i : p.second->getInputs()) + cout << "\t\t" << i << ":" << args[i]->getName() << " = " + << args[i]->toString() << endl; + cout << "\toutputs: " << endl; + for (int i : p.second->getOutputs()) + cout << "\t\t" << i << ":" << args[i]->getName() << endl; + } +} + +void listprint(list mapp) { + for (list::iterator i=mapp.begin(); i!=mapp.end();i++) + cout << (*i)->getId() << ":" << (*i)->getName() << endl; +} + +void adj_mat_print(mincut::weight_t** adjMat, size_t n) { + for (int i=0; i id2task, size_t n) { + cout << "x\t"; + for (int i=0; i id2task, + std::map current_stages, std::map &args, + std::map> ref) { + + // get the first stage as a base stage + mincut::subgraph_t::iterator s1_it = s1.begin(); + PipelineComponentBase* current1 = current_stages[id2task[*s1_it]]->clone(); + current1->setLocation(PipelineComponentBase::WORKER_SIDE); + s1_it++; + for (; s1_it!=s1.end(); s1_it++) { + PipelineComponentBase* clone1 = current_stages[id2task[*s1_it]]->clone(); + clone1->setLocation(PipelineComponentBase::WORKER_SIDE); + if (merging_condition(current1, clone1, args, ref)) + merge_stages(current1, clone1, ref); + else { + for (ReusableTask* t : clone1->tasks) { + current1->tasks.emplace_back(t->clone()); + } + } + clone1->remove_outputs = true; + delete clone1; + } + + // get the first stage as a base stage + mincut::subgraph_t::iterator s2_it = s2.begin(); + PipelineComponentBase* current2 = current_stages[id2task[(*s2_it)]]->clone(); + current2->setLocation(PipelineComponentBase::WORKER_SIDE); + for (s2_it++; s2_it!=s2.end(); s2_it++) { + PipelineComponentBase* clone2 = current_stages[id2task[*s2_it]]->clone(); + clone2->setLocation(PipelineComponentBase::WORKER_SIDE); + if (merging_condition(current2, clone2, args, ref)) + merge_stages(current2, clone2, ref); + else { + for (ReusableTask* t : clone2->tasks) { + current2->tasks.emplace_back(t->clone()); + } + } + clone2->remove_outputs = true; + delete clone2; + } + + int ret = current1->tasks.size()>current2->tasks.size()?current1->tasks.size():current2->tasks.size(); + + // clear memory + current1->remove_outputs = true; + delete current1; + current2->remove_outputs = true; + delete current2; + + return ret; +} + +bool cutting_condition(std::list current, float nrS_mksp, float max_mem, + std::map &args, std::map> ref) { + + if (calc_stage_proc(current, args, ref) > nrS_mksp || calc_stage_mem(current, args, ref) > max_mem) + return true; + else + return false; +} + +pair, std::list> get_cut(std::list current_stages, + const std::map &all_stages, std::map &args, std::map> ref) { + + // generate the reuse matrix and the std::map real-task to min-cut id + size_t id = 0; + size_t n = current_stages.size(); + + // dynamic allocation of adjMat is needed because if n is waaay too big the stack will overflow + mincut::weight_t** adjMat = new mincut::weight_t *[n]; + for (size_t i=0; i id2task; + for (std::list::iterator s1=current_stages.begin(); s1!= current_stages.end(); s1++, id++) { + id2task[id] = (*s1)->getId(); + // std::cout << "std::map: " << id << ":" << (*s1)->getId() << std::endl; + size_t id_j = id; + for (std::list::iterator s2=s1; s2!= current_stages.end(); s2++, id_j++) { + if (id == id_j) + adjMat[id][id] = 0; + else { + adjMat[id][id_j] = get_reuse_factor(*s1, *s2, args, ref); + adjMat[id_j][id] = adjMat[id][id_j]; + } + } + } + + // std::cout << std::endl; + // adj_mat_print(adjMat, id2task, n); + // std::cout << std::endl; + + // send adjMat to mincut algorithm + std::list cuts = mincut::min_cut(n, adjMat); + + // get the cut with the minimal weight, using the number of merged tasks as a tiebreaker + mincut::cut_t best_cut = cuts.front(); + mincut::weight_t best_weight = mincut::_cut_w(best_cut); + int best_num_tasks = get_reuse_factor(mincut::_cut_s1(best_cut), mincut::_cut_s2(best_cut), + id2task, all_stages, args, ref); + mincut::weight_t r; + + for (mincut::cut_t c : cuts) { + // std::cout << "cut: " << mincut::_cut_w(c) << ":" << std::endl; + // std::cout << "\tS1:" << std::endl; + // for (mincut::_id_t id : mincut::_cut_s1(c)) + // std::cout << "\t\t" << id2task[id] << std::endl; + // std::cout << "\tS2:" << std::endl; + // for (mincut::_id_t id : mincut::_cut_s2(c)) + // std::cout << "\t\t" << id2task[id] << std::endl; + // std::cout << std::endl; + + // updates min cut if the weight is less that the best so far + if (mincut::_cut_w(c) < best_weight) { + best_cut = c; + best_weight = mincut::_cut_w(c); + best_num_tasks = get_reuse_factor(mincut::_cut_s1(c), mincut::_cut_s2(c), + id2task, all_stages, args, ref); + } + // updates min cut if the weight are the same but this cut is more balanced + else if (mincut::_cut_w(c) == best_weight && (r = get_reuse_factor(mincut::_cut_s1(c), + mincut::_cut_s2(c), id2task, all_stages, args, ref)) < best_num_tasks) { + best_cut = c; + best_num_tasks = r; + } + } + + // convert cut to PCB std::lists for return + pair, std::list> best_cut_pcb; + for (mincut::_id_t i : mincut::_cut_s1(best_cut)) + best_cut_pcb.first.emplace_back(all_stages.at(id2task[i])); + for (mincut::_id_t i : mincut::_cut_s2(best_cut)) + best_cut_pcb.second.emplace_back(all_stages.at(id2task[i])); + + // clean adjMat + for (size_t i=0; i> recursive_cut(std::list rem, const std::map &all_stages, + int max_bucket_size, int max_cuts, std::map &args, std::map> ref) { + + std::list> last_solution; + + // finishes if we can't make any more cuts (i.e size=1) or if we shouldn't (i.e max_cuts == 1) + if (rem.size() == 1) { + last_solution.emplace_back(rem); + // std::cout << "retuned n=" << n << ", size=" << rem.size() << std::endl; + return last_solution; + } + + float last_mksp = FLT_MAX; + float current_mksp = FLT_MAX/10; + std::list rest; + std::list> buckets; + bool not_evaluated = true; + + // execute while there is improvement + while(current_mksp < last_mksp || not_evaluated) { + last_mksp = current_mksp; + not_evaluated = true; + + // make a copy of this solution in case the next isn't better + last_solution = buckets; + + if (rem.size() == 1) { + // std::cout << "retuned state for size=1, n=" << n << ":" << std::endl; + // for (std::list b : last_solution) { + // std::cout << "\tbucket with cost " << calc_stage_proc(b, ref) << ":" << std::endl; + // for (PipelineComponentBase* s : b) { + // std::cout << "\t\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + // } + // } + return last_solution; + } + + // std::cout << "rem:" << std::endl; + // for (PipelineComponentBase* s : rem) { + // std::cout << "\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + // } + // std::cout << "rest:" << std::endl; + // for (PipelineComponentBase* s : rest) { + // std::cout << "\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + // } + + // cut the current bucket + pair, std::list> c; + c = get_cut(rem, all_stages, args, ref); + + float w1 = calc_stage_proc(c.first, args, ref); + float w2 = calc_stage_proc(c.second, args, ref); + + std::list c1 = w1>=w2?c.first:c.second; + std::list c2 = w1>=w2?c.second:c.first; + + // std::cout << "cut: " << std::endl; + // std::cout << "\tc1" << std::endl; + // for (PipelineComponentBase* s : c1) + // std::cout << "\t\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + // std::cout << "\tc2" << std::endl; + // for (PipelineComponentBase* s : c2) + // std::cout << "\t\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + + // join c2 with the remaining of rem + c2.insert(c2.begin(), rest.begin(), rest.end()); + + // verify if the max_bucket_size constraint was satisfied + std::cout << "[" << max_cuts << "]" << "c1.size=" << c1.size() << std::endl; + if (c1.size() <= max_bucket_size) { + buckets = recursive_cut(c2, all_stages, max_bucket_size, max_cuts-1, args, ref); + buckets.emplace_back(c1); + + // recalculate current max makespan and set rem backup on last_rem + float mksp; + current_mksp = 0; + for (std::list b : buckets) { + mksp = calc_stage_proc(b, args, ref); + if (mksp > current_mksp) { + current_mksp = mksp; + } + } + std::cout << "mksp: " << current_mksp << std::endl; + + not_evaluated = false; + + return buckets; + + // std::cout << "merged state n=" << n << ":" << std::endl; + // for (std::list b : buckets) { + // std::cout << "\tbucket with cost " << calc_stage_proc(b, args, ref) << ":" << std::endl; + // for (PipelineComponentBase* s : b) { + // std::cout << "\t\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + // } + // } + } + + // set next iteration PCB lists + rem = c1; + rest = c2; + } + + return last_solution; +} + +std::list> montecarlo_cut(std::list rem, const std::map &all_stages, + int n, std::map &args, std::map> ref) { + + std::list> ret; + + std::cout << "[montecarlo_cut] n=" << n << std::endl; + + if (n == 1 || rem.size() == 1) { + ret.emplace_back(rem); + std::cout << "[montecarlo_cut] n=" << n << std::endl; + return ret; + } + + // perform cuts until there is no more tasks to cut, or, there is no more need for another cut + for (int i=0; i, std::list> c; + c = get_cut(rem, all_stages, args, ref); + + float w1 = calc_stage_proc(c.first, args, ref); + float w2 = calc_stage_proc(c.second, args, ref); + + std::list c1 = w1>=w2?c.first:c.second; + std::list c2 = w1>=w2?c.second:c.first; + + rem = c1; + ret.emplace_back(c2); + + if (rem.size() == 1) { + break; + } + } + + // add last bucket + ret.emplace_back(rem); + + // std::cout << "[montecarlo_cut] n=" << n << "ret:" << std::endl; + // int i=0; + // for (std::list bucket : ret) { + // std::cout << "\tb:" << i++ << std::endl; + // for (PipelineComponentBase* s : bucket) + // std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + // } + + return ret; +} + +void montecarlo_dep(int n, std::list c1, std::list c2, + const std::map &all_stages, std::map &args, + std::map> ref, float &best_mksp, float &best_var, + pair, std::list> &best_cut) { + + std::cout << "[montecarlo_recursive_cut] n=" << n << " running cut" << std::endl; + std::cout << "\tc1 - cost=" << calc_stage_proc(c1, args, ref) << ":" << std::endl; + for (PipelineComponentBase* s : c1) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + std::cout << "\tc2 - cost=" << calc_stage_proc(c2, args, ref) << ":" << std::endl; + for (PipelineComponentBase* s : c2) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + + std::list> c = montecarlo_cut(c2, all_stages, n-1, args, ref); + + // calculates i cut cost with rest c + std::cout << "[montecarlo_cut] n=" << n << "ret:" << std::endl; + int ii=0; + // mksp selection metric + float mksp; + float max_mksp = calc_stage_proc(c1, args, ref); + float avg = calc_stage_proc(c1, args, ref); + for (std::list bucket : c) { + mksp = calc_stage_proc(bucket, args, ref); + avg += mksp; + if (mksp > max_mksp) + max_mksp = mksp; + std::cout << "\tb" << ii++ << " - mksp=" << mksp<< std::endl; + for (PipelineComponentBase* s : bucket) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + } + + // standard deviation selection metric + avg /= (c.size()+1); + float var = (calc_stage_proc(c1, args, ref)-avg)*(calc_stage_proc(c1, args, ref)-avg); + for (std::list bucket : c) { + mksp = calc_stage_proc(bucket, args, ref); + var += (mksp-avg)*(mksp-avg); + } + var /= (c.size()+1); + + std::cout << "with mksp=" << max_mksp << std::endl; + std::cout << "with var=" << var << std::endl; + + // // maybe double if? + if (max_mksp < best_mksp || (max_mksp == best_mksp && var < best_var)) { + #pragma omp critical + { + // updates best cut, if this is the case + if (max_mksp < best_mksp || (max_mksp == best_mksp && var < best_var)) { + best_mksp = max_mksp; + best_var = var; + std::list flat_c; + for (std::list bucket : c) + flat_c.insert(flat_c.begin(), bucket.begin(), bucket.end()); + best_cut = pair, std::list>(c1, flat_c); + } + } + } +} + +std::list> montecarlo_recursive_cut(std::list rem, + const std::map &all_stages, int n, std::map &args, std::map> ref) { + + // std::list, std::list>> current_cuts; + pair, std::list> best_cut; + std::list> final_cut; + float best_mksp = FLT_MAX; + float best_var = FLT_MAX; + int r_size = rem.size(); + + std::cout << "[montecarlo_recursive_cut] n=" << n << std::endl; + + // stoping condition + if (n == 1 || rem.size() == 1) { + final_cut.emplace_back(rem); + std::cout << "[montecarlo_recursive_cut] n=" << n << " retuned1" << std::endl; + std::cout << "\tb0" << std::endl; + for (PipelineComponentBase* s : rem) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + return final_cut; + } + + #pragma omp parallel + { + #pragma omp single + { + // attempt all possible cuts on this level + std::list rest; + while (rem.size() > 1) { + // attempt a cut + pair, std::list> c; + c = get_cut(rem, all_stages, args, ref); + + // store the cut for the rest to be calculated later + float w1 = calc_stage_proc(c.first, args, ref); + float w2 = calc_stage_proc(c.second, args, ref); + + std::list c1 = w1>=w2?c.first:c.second; + std::list c2 = w1>=w2?c.second:c.first; + + // add rest to c2 + c2.insert(c2.begin(), rest.begin(), rest.end()); + + #pragma omp task + montecarlo_dep(n, c1, c2, all_stages, args, ref, best_mksp, best_var, best_cut); + + std::cout << "[montecarlo_recursive_cut] n=" << n << " adding cut" << std::endl; + std::cout << "\tc1:" << std::endl; + for (PipelineComponentBase* s : c1) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + std::cout << "\tc2:" << std::endl; + for (PipelineComponentBase* s : c2) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + + // update rem to get a new cut + rem = c1; + rest = c2; + } + } + #pragma barrier + } + + // std::cout << "---------------------------------------------------" << std::endl; + + // #pragma omp parallel + // { + // #pragma omp single + // { + // // runs all dependencies a la montecarlo + // for (std::list, std::list>>::iterator i=current_cuts.begin(); + // i!=current_cuts.end(); i++) { + // // WARNING: best cut is shared between all montecarlo_dep runs + // #pragma omp task + // montecarlo_dep(n, i->first, i->second, all_stages, args, ref, best_mksp, best_var, best_cut); + // } + // } + + std::cout << "[montecarlo_recursive_cut] n=" << n << " best cut of the stage with mksp=" << best_mksp << std::endl; + std::cout << "\tc1:" << std::endl; + for (PipelineComponentBase* s : best_cut.first) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + std::cout << "\tc2:" << std::endl; + for (PipelineComponentBase* s : best_cut.second) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + + // recursive call on the best rest + final_cut = montecarlo_recursive_cut(best_cut.second, all_stages, n-1, args, ref); + final_cut.emplace_back(best_cut.first); + + std::cout << "[montecarlo_recursive_cut] n=" << n << " final cut:" << std::endl; + int i=0; + for (std::list bucket : final_cut) { + std::cout << "\tb:" << i++ << std::endl; + for (PipelineComponentBase* s : bucket) + std::cout << "\t\t" << s->getId() << ":" << s->getName() << std::endl; + } + + return final_cut; +} \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/cutting_algorithms.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/cutting_algorithms.hpp new file mode 100644 index 0000000..acd60a4 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/cutting_algorithms.hpp @@ -0,0 +1,15 @@ +#ifndef CUTTING_ALGORITHMS_HPP +#define CUTTING_ALGORITHMS_HPP + +#include +#include + +#include "PipelineComponentBase.h" + +#include "merging.hpp" +#include "graph/min_cut.hpp" + +std::list> recursive_cut(std::list rem, const std::map &all_stages, + int max_bucket_size, int max_cuts, std::map &args, std::map> ref); + +#endif \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/fgm.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/fgm.cpp new file mode 100644 index 0000000..46a6241 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/fgm.cpp @@ -0,0 +1,135 @@ +#include "fgm.hpp" + +void fgm::merge_stages_fine_grain(int algorithm, const std::map &all_stages, + const std::map &stages_ref, std::map &merged_stages, + std::map expanded_args, int max_bucket_size, bool shuffle, string dakota_filename) { + + // attempt merging for each stage type + for (std::map::const_iterator ref=stages_ref.cbegin(); ref!=stages_ref.cend(); ref++) { + // get only the stages from the current stage_ref + std::list current_stages; + filter_stages(all_stages, ref->second->getName(), current_stages, shuffle); + + std::cout << "[merge_stages_fine_grain] Generating tasks..." << std::endl; + + // generate all tasks + int nrS = 0; + double max_nrS_mksp = 0; + for (list::iterator s=current_stages.begin(); s!=current_stages.end(); ) { + // if the stage isn't composed of reusable tasks then + (*s)->tasks = task_generator(ref->second->tasksDesc, *s, expanded_args); + if ((*s)->tasks.size() == 0) { + merged_stages[(*s)->getId()] = *s; + + // makespan calculations + nrS++; + if ((*s)->getMksp() > max_nrS_mksp) + max_nrS_mksp = (*s)->getMksp(); + + s = current_stages.erase(s); + } else + s++; + } + + // if there are no stages left to attempt to merge, or only one stage, don't perform any merging + if (current_stages.size() == 1) { + merged_stages[(*current_stages.begin())->getId()] = *current_stages.begin(); + continue; + } else if (current_stages.size() == 0) { + continue; + } + + std::list> solution; + int max_cuts = ceil(current_stages.size()/max_bucket_size); + + switch (algorithm) { + case 0: + // no fine grain merging - ok + for (PipelineComponentBase* p : current_stages) { + std::list single_stage_bucket; + single_stage_bucket.emplace_back(p); + solution.emplace_back(single_stage_bucket); + } + break; + + case 1: + // naive merging - ok + for (std::list::iterator s=current_stages.begin(); s!=current_stages.end(); s++) { + int i; + std::list bucket; + bucket.emplace_back(*s); + for (i=1; igetId() << " to the bucket" << std::endl; + } + solution.emplace_back(bucket); + if (s==current_stages.end()) + break; + } + break; + + case 2: + // smart recursive cut - ok + solution = recursive_cut(current_stages, all_stages, + max_bucket_size, max_cuts, expanded_args, ref->second->tasksDesc); + break; + + case 3: + // reuse-tree merging - ok + solution = reuse_tree_merging(current_stages, all_stages, + max_bucket_size, expanded_args, ref->second->tasksDesc, false); + break; + + case 4: + // reuse-tree merging with double prunning + solution = reuse_tree_merging(current_stages, all_stages, + max_bucket_size, expanded_args, ref->second->tasksDesc, true); + break; + } + + // write merging solution + ofstream solution_file; + solution_file.open(dakota_filename + "-b" + std::to_string(max_bucket_size) + "merging_solution.log", ios::trunc); + + std::cout << std::endl << "solution:" << std::endl; + solution_file << "solution:" << std::endl; + int total_tasks=0; + for (std::list b : solution) { + std::cout << "\tbucket with " << b.size() << " stages and cost " + << calc_stage_proc(b, expanded_args, ref->second->tasksDesc) << ":" << std::endl; + solution_file << "\tbucket with " << b.size() << " stages and cost " + << calc_stage_proc(b, expanded_args, ref->second->tasksDesc) << ":" << std::endl; + total_tasks += calc_stage_proc(b, expanded_args, ref->second->tasksDesc); + for (PipelineComponentBase* s : b) { + std::cout << "\t\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + // solution_file << "\t\tstage " << s->getId() << ":" << s->getName() << ":" << std::endl; + } + } + solution_file.close(); + + // write some statistics abou the solution + ofstream statistics_file; + statistics_file.open(dakota_filename + "-b" + std::to_string(max_bucket_size) + "merging_statistics.log", ios::trunc); + + statistics_file << current_stages.size() << "\t"; + statistics_file << current_stages.size()*ref->second->tasksDesc.size() << "\t"; + statistics_file << total_tasks << "\t"; + statistics_file << solution.size() << "\t"; + statistics_file << total_tasks/solution.size() << "\t"; + + statistics_file.close(); + + // merge all stages in each bucket, given that they are mergable + for (std::list bucket : solution) { + // std::cout << "bucket merging" << std::endl; + std::list curr = merge_stages_full(bucket, expanded_args, ref->second->tasksDesc); + // send rem stages to merged_stages + for (PipelineComponentBase* s : curr) { + // std::cout << "\tadding stage " << s->getId() << std::endl; + merged_stages[s->getId()] = s; + } + } + } +} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/fgm.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/fgm.hpp new file mode 100644 index 0000000..86a7cdb --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/fgm.hpp @@ -0,0 +1,24 @@ +#ifndef FGM_HPP_ +#define FGM_HPP_ + +#include +#include +#include +#include + +#include "PipelineComponentBase.h" +#include "RTPipelineComponentBase.h" + +#include "merging.hpp" +#include "cutting_algorithms.hpp" +#include "graph/reuse_tree.hpp" + +namespace fgm { + +void merge_stages_fine_grain(int merging_algorithm, const std::map &all_stages, + const std::map &stages_ref, std::map &merged_stages, + std::map expanded_args, int max_bucket_size, bool shuffle, string dakota_filename); + +} + +#endif \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/min_cut.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/min_cut.cpp new file mode 100644 index 0000000..e3ca3d1 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/min_cut.cpp @@ -0,0 +1,244 @@ +#include +#include + +#include "min_cut.hpp" + +using namespace mincut; + +/**************************************************/ +/** Internal Funs Prototypes **/ +/**************************************************/ + +cut_t min_cut_phase(size_t n, weight_t** adjMat, + std::map<_id_t,std::list<_id_t>> &vertices, _id_t a); + +weight_t sum(size_t n, weight_t* A); + +/**************************************************/ +/** Main code **/ +/**************************************************/ + +// this is a test code for min_cut +int main() { + size_t n=8; + // weight_t _adjMat[n][n]={{0,2,2,1,1}, + // {2,0,2,1,1}, + // {2,2,0,1,1}, + // {1,1,1,0,3}, + // {1,1,1,3,0}}; + weight_t _adjMat[n][n]={{0,2,0,0,3,0,0,0}, + {2,0,3,0,2,2,0,0}, + {0,3,0,4,0,0,2,0}, + {0,0,4,0,0,0,2,2}, + {3,2,0,0,0,3,0,0}, + {0,2,0,0,3,0,1,0}, + {0,0,2,2,0,1,0,3}, + {0,0,0,2,0,0,3,0}}; + + // my compiler won't do VLA, so we need this workaround + weight_t** adjMat = new weight_t *[n]; + for (size_t i=0; i mincut::min_cut(size_t n, weight_t** adjMat) { + + _id_t a=0; + cut_t cut; + std::list cuts; + + // initialize vertices + std::map<_id_t, std::list<_id_t>> vertices; + for (int i=0; i(1,i); + + // keep finding cuts until there are no more find + while (vertices.size() > 1) { + // get the first 'a' vertex as the most connected vertex + weight_t max = 0; + weight_t m; + for (int i=0; i max) { + a = i; + max = m; + } + } + + // run a phase of cut + cuts.emplace_back(min_cut_phase(n, adjMat, vertices, a)); + } + + return cuts; +} + +cut_t min_cut_phase(size_t n_max, weight_t** adjMat, + std::map<_id_t,std::list<_id_t>> &vertices, _id_t a) { + + _id_t s; + _id_t t; + weight_t cut; + size_t n = vertices.size(); + + // generate priority queue + fibonacci q; + for (std::pair<_id_t, std::list<_id_t>> v : vertices) { + if (v.first != a) { + q.push(_node(adjMat[v.first][a], v.first)); + } + } + + // array of vertices ids A + _id_t A[n]; + A[0] = a; + t = a; + + // std::cout << "a=" << a << std::endl; + // greedy insertion loop + for (size_t i=1; ifirst+adjMat[A[i]][it->second], it->second); + // std::cout << "updated: " << fibonacci_updated[j].second << ":" + // << fibonacci_updated[j].first << std::endl; + j++; + } + + // 2 - actually updates the heap + for (j=0; j s2 = vertices.at(t); + std::list<_id_t> s1; + + // get all vertices of the first sub-graph + for (_id_t i=0; i 0) + for (_id_t j : vertices.at(i)) + s1.emplace_back(j); + + // merge s and t + for (std::pair<_id_t,std::list<_id_t>> _t : vertices) { + if (_t.first == t) { + // add all of t's merged vertices to s + vertices.at(s).insert(vertices.at(s).begin(), + _t.second.begin(), _t.second.end()); + // remove t + vertices.erase(_t.first); + break; + } + } + + // update adjMat by merging the edges of t to s + for (size_t i=0; i> vertices) { + for (std::pair<_id_t,std::list<_id_t>> v : vertices) { + std::cout << v.first << std::endl; + for (_id_t id : v.second) + std::cout << "\t" << id << std::endl; + } +} + +void pf(fibonacci q) { + for (fibonacci::ordered_iterator i=q.ordered_begin(); i!=q.ordered_end(); i++) { + std::cout << i->second << ":" << i->first << std::endl; + } +} \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/min_cut.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/min_cut.hpp new file mode 100644 index 0000000..9311798 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/min_cut.hpp @@ -0,0 +1,54 @@ +#ifndef MIN_CUT_HPP +#define MIN_CUT_HPP + +#include +#include + +/**************************************************/ +/** Basic Entities **/ +/**************************************************/ + +namespace mincut { + + // basic types + typedef int _id_t; + typedef int weight_t; + + typedef std::pair node_t; + inline node_t _node(weight_t w,_id_t id) {return std::make_pair(w,id);} + + typedef std::list<_id_t> subgraph_t; + typedef std::pair> cut_t; + inline cut_t _cut(weight_t w, subgraph_t s1, subgraph_t s2) {return std::make_pair(w,std::make_pair(s1,s2));} + inline weight_t _cut_w(cut_t c) {return c.first;} + inline subgraph_t _cut_s1(cut_t c) {return c.second.first;} + inline subgraph_t _cut_s2(cut_t c) {return c.second.second;} + + /**************************************************/ + /** Fibonacci Comparator **/ + /**************************************************/ + /** This is needed to enforce that the weight is **/ + /** ordered in a descending manner, and id is **/ + /** ordered in a ascending manner on the **/ + /** fibonacci heap. **/ + /**************************************************/ + + struct my_comparator { + bool operator() (const node_t& x, const node_t& y) const { + if (x.first != y.first) + return x.first < y.first; + else + return x.second > y.second; + } + typedef node_t first_argument_type; + typedef node_t second_argument_type; + typedef bool result_type; + }; + + typedef boost::heap::fibonacci_heap> fibonacci; + + std::list min_cut(size_t n, weight_t** adjMat); + +} +#endif \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/reuse_tree.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/reuse_tree.cpp new file mode 100644 index 0000000..e41bf13 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/reuse_tree.cpp @@ -0,0 +1,475 @@ +#include "reuse_tree.hpp" + +#include +#include + +void print_reuse_node(const reuse_node_t* n, int tt) { + for (int i=0; iparent==NULL ? " no parent" : to_string(n->parent->stage_ref->getId()); + std::cout << n->stage_ref->getId() << ", parent: " << p << std::endl; + for (reuse_node_t* nn : n->children) + print_reuse_node(nn, tt+1); +} + +void print_reuse_tree(const reuse_tree_t& t) { + std::cout << "tree of height " << t.height << ":" << std::endl; + for (reuse_node_t* n : t.parents) + print_reuse_node(n, 1); +} + +void print_leafs_parent_list(const list& l) { + for (reuse_node_t* n : l) + std::cout << n->stage_ref->getId() << std::endl; +} + +void recursive_insert_stage(list& node_list, PipelineComponentBase* s, + reuse_node_t* parent, int height, int curr_level, const map& args, + const map>& ref) { + + // stopping condition + if (curr_level >= height) { + // std::cout << "[recursive_insert_stage][" << curr_level << "] stop for " + // << s->getId() << std::endl; + return; + } + + // attempt to find if there is a reuse oportunity on this level + reuse_node_t* reusable_node = NULL; + for (reuse_node_t* n : node_list) { + // check if the reuse factor matches the minimum required for this level + // std::cout << "[recursive_insert_stage][" << curr_level << "] checking " + // << s->getId() << " with " << n->stage_ref->getId() << std::endl; + if (get_reuse_factor(s, n->stage_ref, args, ref) > curr_level) { + // std::cout << "[recursive_insert_stage][" << curr_level << "] " << s->getId() + // << " is reusable with " << n->stage_ref->getId() << std::endl; + reusable_node = n; + break; + } + } + + // if there isn't a reusable node then create a new node for s + if (reusable_node == NULL) { + // std::cout << "[recursive_insert_stage][" << curr_level + // << "] no reusable node for " << s->getId() << std::endl; + reuse_node_t* new_node = new reuse_node_t; + node_list.emplace_back(new_node); + new_node->parent = parent; + new_node->stage_ref = s; + recursive_insert_stage(new_node->children, s, + new_node, height, curr_level+1, args, ref); + } + // if there is a reusable stage then continue the recursive traverse on this node + else { + // std::cout << "[recursive_insert_stage][" << curr_level + // << "] recurring" << std::endl; + recursive_insert_stage(reusable_node->children, s, + reusable_node, height, curr_level+1, args, ref); + } +} + +// Generates the reuse tree based on the reuse level of the stages +reuse_tree_t generate_reuse_tree(const list& stages, + const map& args, const map>& ref) { + reuse_tree_t reuse_tree; + + // set the height based on the number of tasks every stage has + reuse_tree.height = ref.size(); + + // add every stage to the reuse tree + for (PipelineComponentBase* s : stages) { + // find the reuse level (i.e reuse tree height) node of the stage + recursive_insert_stage(reuse_tree.parents, s, NULL, + reuse_tree.height, 0, args, ref); + } + + return reuse_tree; +} + +// Traverse the tree, getting the leafs' parents' references +list generate_leafs_parent_list(reuse_node_t* reuse_node, int height) { + list leafs_parent_list; + + // check stoping condition: is a leaf node parent? + if (height == 1) { + // if it is a leaf node parent, add the reference to itself + leafs_parent_list.emplace_back(reuse_node); + } else { + // if it's another mid node, perform the recursive for all its children + for (reuse_node_t* n : reuse_node->children) { + list current_leafs_parent_list = + generate_leafs_parent_list(n, height-1); + leafs_parent_list.insert(leafs_parent_list.begin(), + current_leafs_parent_list.begin(), current_leafs_parent_list.end()); + } + } + + return leafs_parent_list; +} + +// Generate the leafs' parents' references list from the root node +list generate_leafs_parent_list(reuse_tree_t& reuse_tree) { + list leafs_parent_list; + + for (reuse_node_t* n : reuse_tree.parents) { + list current_leafs_parent_list = generate_leafs_parent_list(n, reuse_tree.height-1); + leafs_parent_list.insert(leafs_parent_list.begin(), + current_leafs_parent_list.begin(), current_leafs_parent_list.end()); + } + + return leafs_parent_list; +} + +// Remove the node from its parent and keep recurring until there is +// a parent with at least one still usable node +void recursive_remove_parent(reuse_tree_t& t, reuse_node_t* n) { + if (n->parent == NULL) { + t.parents.remove(n); + } else { + n->parent->children.remove(n); + + if (n->parent->children.size() == 0) + recursive_remove_parent(t, n->parent); + } +} + +void cluster_merging(reuse_tree_t& reuse_tree, + list& leafs_parent_list, + list>& new_buckets, + int max_bucket_size) { + + // std::cout << "starting merging with " << leafs_parent_list.size() + // << " parents" << std::endl; + // cluster the parents nodes of leafs_parent_list by their parents + multimap parents_clusters; + set parents_clusters_keys; + for (reuse_node_t* n : leafs_parent_list) { + parents_clusters.emplace(n->parent, n); + parents_clusters_keys.emplace(n->parent); + } + + // performs the merging for each one of the clusters + for (set::iterator p=parents_clusters_keys.begin(); + p!=parents_clusters_keys.end(); p++) { + + // std::cout << "\titerating on cluster of parent node " + // << (*p)->stage_ref->getId() << std::endl; + + multimap::iterator c_it = + parents_clusters.lower_bound(*p); + multimap::iterator c_end = + parents_clusters.upper_bound(*p); + + // makes the parents multimap, grouped by number of children + multimap parents_by_children_count; + set parents_by_children_count_ids; + for (; c_it!=c_end; c_it++) { + parents_by_children_count.emplace(c_it->second->children.size(), c_it->second); + parents_by_children_count_ids.emplace(c_it->second->children.size()); + } + + // keeps attempting to merge the yet unmerged parents' children + for (set::reverse_iterator c_count=parents_by_children_count_ids.rbegin(); + c_count!=parents_by_children_count_ids.rend(); c_count++) { + + // std::cout << "\t\ttrying to merge the parents of c_count " << + // *c_count << std::endl; + + multimap::iterator n_it = + parents_by_children_count.lower_bound(*c_count); + multimap::iterator n_end = + parents_by_children_count.upper_bound(*c_count); + + // Attempts to find a matching parent to make a perfect merge + // with each current cluster parent + for (; n_it!=n_end; n_it++) { + int current_bucket_size = n_it->first; + + //the new bucket search stack + stack bucket_stack; + bucket_stack.push(n_it->second); + + // std::cout << "\t\t\tstarting a stack with parent " << + // n_it->second->stage_ref->getId() << " and b_size " + // << current_bucket_size << std::endl; + + // starts the merge attempts with the nodes on the current cluster + multimap::iterator n_it2 = next(n_it, 1); + for (; n_it2!=n_end; n_it2++) { + if (current_bucket_size + n_it->first <= max_bucket_size) { + bucket_stack.push(n_it2->second); + current_bucket_size += n_it2->first; + // std::cout << "\t\t\t\tfrom the same " << n_it2->first + // << " c_count, added " << n_it2->second->stage_ref->getId() + // << " to the stack" << std::endl; + } else + break; + } + + // keeps attempting the merging process with other clusters + set::reverse_iterator c_count2 = next(c_count, 1); + + // A new parent will be added to the stack if possible. If the perfect + // match isn't found at the end of an insert iteration then the stack + // is popped and the search continues from the stages with children_count + // next to the popped parent. If any merging is impossible than the + // stack will become empty, with current_bucket_size=0. + while (current_bucket_size != max_bucket_size + && current_bucket_size != 0) { + + // std::cout << "\t\t\t\tsearching other c_counts with b_size " + // << current_bucket_size << std::endl; + + // starts the search on the current c_count2 + for (; c_count2!=parents_by_children_count_ids.rend(); c_count2++) { + n_it2 = parents_by_children_count.lower_bound(*c_count2); + multimap::iterator n_end2 = + parents_by_children_count.upper_bound(*c_count2); + + // std::cout << "\t\t\t\t\tsearching c_count " + // << *c_count2 << std::endl; + + // goes through current c_count2 cluster + for (; n_it2!=n_end2; n_it2++) { + if (current_bucket_size + n_it2->first <= max_bucket_size) { + bucket_stack.push(n_it2->second); + current_bucket_size += n_it2->first; + // std::cout << "\t\t\t\t\t\tadded " + // << n_it2->second->stage_ref->getId() + // << " to the stack with size " + // << n_it2->first << std::endl; + } else + break; + } + } + + // if it isn't a perfect sized bucket then pop the last added parent + if (current_bucket_size != max_bucket_size) { + // std::cout << "\t\t\t\tbad bucket size: " + // << current_bucket_size << std::endl; + c_count2 = find(parents_by_children_count_ids.rbegin(), + parents_by_children_count_ids.rend(), + bucket_stack.top()->children.size()); + current_bucket_size -= *c_count2; + c_count2 = next(c_count2, 1); + bucket_stack.pop(); + // std::cout << "\t\t\t\tremoving " << *c_count2 + // << " from the stack" << std::endl; + } + } + + // checks if a viable bucket was found + if (current_bucket_size == max_bucket_size) { + + // std::cout << "\t\t\tnew solution found:" << std::endl; + + // adds the new bucket to the solution + list new_bucket; + while (!bucket_stack.empty()) { + reuse_node_t* n = bucket_stack.top(); + bucket_stack.pop(); + // adds all of the parent's children + for (list::iterator nn=n->children.begin(); + nn!=n->children.end(); ) { + + // std::cout << "\t\t\t\t" << (*nn)->stage_ref->getId() << std::endl; + new_bucket.emplace_back((*nn)->stage_ref); + nn = n->children.erase(nn); + } + + // performs the recursive parent removal if necessary + if (n->children.size() == 0) + recursive_remove_parent(reuse_tree, n); + + // removes the merged nodes from the leafs_parent_list + leafs_parent_list.remove(n); + } + new_buckets.emplace_back(new_bucket); + + // breaks the search since the nodes removal messes the iterators up + return; + } + } + } + + // std::cout << "\tcluster of parent node " << (*p)->stage_ref->getId() + // << " don't have any more reuse oportunities" << std::endl; + + // If this point was reached it means that the current cluster don't have any more + // reuse oportunities to be taken, so we remove the cluster's parents from the + // leafs_parent_list + c_it = parents_clusters.lower_bound(*p); + c_end = parents_clusters.upper_bound(*p); + for (; c_it!=c_end; c_it++) { + leafs_parent_list.remove(c_it->second); + } + } +} + +// Prunes the reuse tree based on the leafs_parent_list, returning a list of new buckets +// to be merged, and updates the tree internal structure +list> prune_leaf_level(reuse_tree_t& reuse_tree, + list leafs_parent_list, int max_bucket_size, bool double_prunning) { + + list> new_buckets; + + // pruning first pass ------------------- + // attempt to make buckets of every children's leaf list + for (list::iterator n=leafs_parent_list.begin(); + n!=leafs_parent_list.end(); ) { + // std::cout << "[prune_leaf_level] parent " << (*n)->stage_ref->getId() + // << " has " << (*n)->children.size() << " children and mbs " + // << max_bucket_size << std::endl; + + // finishes the loop if we can't perform any more simple merging operations + if ((*n)->children.size() < max_bucket_size) { + n++; + continue; + } + + // std::cout << "[prune_leaf_level] parent " << (*n)->stage_ref->getId() + // << " has reuse" << std::endl; + + // Keeps making buckets until the remaining stages number + // is less than max_bucket_size + for (list::iterator c=(*n)->children.begin(); + c!=(*n)->children.end() && (*n)->children.size() >= max_bucket_size;) { + + while ((*n)->children.size() >= max_bucket_size) { + list new_bucket; + int count = 0; + // std::cout << "[prune_leaf_level] starting bucket of " + // << (*n)->stage_ref->getId() << " with size 0" << std::endl; + while (count < max_bucket_size) { + // std::cout << "[prune_leaf_level]\tadding " + // << (*c)->stage_ref->getId() << " to the bucket" << std::endl; + new_bucket.emplace_back((*c)->stage_ref); + c = (*n)->children.erase(c); + count++; + } + new_buckets.emplace_back(new_bucket); + } + } + + // removes the parent node from its parent if there is no more leafs + // also, keeps performing this recursively + if ((*n)->children.size() == 0) { + // std::cout << "[prune_leaf_level] performing recursive update on " + // << (*n)->stage_ref->getId() << std::endl; + recursive_remove_parent(reuse_tree, *n); + + // removes the parent from the list if there are no more children to merge + n = leafs_parent_list.erase(n); + } else + n++; + } + + // pruning second pass ------------------- + if (double_prunning) + while (leafs_parent_list.size() > 0) + cluster_merging(reuse_tree, leafs_parent_list, new_buckets, max_bucket_size); + + return new_buckets; +} + +// Sends the leaf nodes of the reuse tree one level up, to their parents +void move_reuse_tree_up(reuse_tree_t& reuse_tree, + const list& leafs_parent_list) { + + // performs the move up operation for every leafs' parent node n + for (reuse_node_t* n : leafs_parent_list) { + // adds the node children to its parent + for (reuse_node_t* nn : n->children) { + nn->parent = n->parent; + n->parent->children.emplace_back(nn); + } + + // removes itself from the parent node + n->parent->children.remove(n); + } + + // update the tree height + reuse_tree.height--; +} + +// Performs the stage mearging using the reuse tree algorithm +list> reuse_tree_merging( + const list& stages_to_merge, + const map &all_stages, int max_bucket_size, + const map &args, const map>& ref, + bool double_prunning) { + + list> solution; + + reuse_tree_t reuse_tree = generate_reuse_tree(stages_to_merge, args, ref); + + + // keep prunning and rising the tree until the root height + while (reuse_tree.height > 2) { + // std::cout << "before:" << std::endl; + // print_reuse_tree(reuse_tree); + // perform current height merging iteration + list leafs_parent_list = generate_leafs_parent_list(reuse_tree); + // print_leafs_parent_list(leafs_parent_list); + list> new_buckets = prune_leaf_level( + reuse_tree, leafs_parent_list, max_bucket_size, double_prunning); + // std::cout << "after:" << std::endl; + // print_reuse_tree(reuse_tree); + move_reuse_tree_up(reuse_tree, leafs_parent_list); + + // add new_buckets to final solution + solution.insert(solution.begin(), new_buckets.begin(), new_buckets.end()); + } + + // print_reuse_tree(reuse_tree); + + // add the remaining unmerged stages to the final solution as single stage buckets + if (reuse_tree.parents.size() > 0) { + // go through all parent nodes + for (reuse_node_t* n : reuse_tree.parents) { + // go though all parent child nodes + for (list::iterator nn=n->children.begin(); + nn!=n->children.end() && n->children.size() >= max_bucket_size;) { + + // keep creating buckets if possible + while (n->children.size() >= max_bucket_size) { + list new_bucket; + int count = 0; + // std::cout << "starting empty bucket:" << std::endl; + while (count < max_bucket_size) { + // std::cout << "adding to bucket " + // << (*nn)->stage_ref->getId() << std::endl; + new_bucket.emplace_back((*nn)->stage_ref); + nn = n->children.erase(nn); + count++; + } + solution.emplace_back(new_bucket); + } + } + + // create a final bucket with all remaining stages, if there are any + if (n->children.size() > 0) { + list final_stage; + // std::cout << "starting final empty bucket:" << std::endl; + for (reuse_node_t* nn : n->children) { + final_stage.emplace_back(nn->stage_ref); + // std::cout << "adding to bucket " + // << nn->stage_ref->getId() << std::endl; + } + solution.emplace_back(final_stage); + } + } + } + + // std::cout << "FINAL SOLUTION" << std::endl; + // for (list b : solution) { + // for (PipelineComponentBase* s : b) { + // std::cout << "\t" << s->getId() << std::endl; + // } + // std::cout << "bucket of size " << b.size() << " with cost " + // << calc_stage_proc(b, args, ref) << std::endl; + // } + // std::cout << std::endl << std::endl << std::endl; + + return solution; +} \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/reuse_tree.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/reuse_tree.hpp new file mode 100644 index 0000000..464b70d --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/graph/reuse_tree.hpp @@ -0,0 +1,30 @@ +#ifndef REUSE_TREE_HPP +#define REUSE_TREE_HPP + +#include +#include +#include +#include +#include + +#include "../merging.hpp" + +typedef struct reuse_node_t { + reuse_node_t* parent; + std::list children; + PipelineComponentBase* stage_ref; +} reuse_node_t; + +typedef struct { + std::list parents; + int height; +} reuse_tree_t; + +// Performs the stage mearging using the reuse tree algorithm +list> reuse_tree_merging(const list& stages_to_merge, + const map &all_stages, int max_bucket_size, + const map &args, const map>& ref, + bool double_prunning); + + +#endif \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/merging.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/merging.cpp new file mode 100644 index 0000000..7b7fdfe --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/merging.cpp @@ -0,0 +1,339 @@ +#include "merging.hpp" + +int new_uid() { + return uid++; +} + +ArgumentBase* find_argument(PipelineComponentBase* p, string name, map expanded_args) { + for(int i : p->getInputs()){ + if (expanded_args[i]->getName().compare(name) == 0) { + return expanded_args[i]; + } + } + for(int i : p->getOutputs()){ + if (expanded_args[i]->getName().compare(name) == 0) { + return expanded_args[i]; + } + } + + return NULL; +} + +// This function assumes that the merged PCB has at least, but not limited to one ReusableTask on tasks +// of type task_name. Also, to_merge must have exactly one ReusableTask of type task_name. These +// conditions are not checked. +bool exists_reusable_task(const PipelineComponentBase* merged, const PipelineComponentBase* to_merge, string task_name) { + // get the only task of to_merge that has the type task_name + ReusableTask* to_merge_task = NULL; + for (ReusableTask* t : to_merge->tasks) + if (t->getTaskName().compare(task_name) == 0) + to_merge_task = t; + + // attempt to find the same task on merged + for (ReusableTask* t : merged->tasks) + if (t->getTaskName().compare(task_name) == 0 && + to_merge_task->reusable(t)) + return true; + + return false; +} + +// for the meantime the mearging will happen whenever at least the first task is reusable +bool merging_condition(const PipelineComponentBase* merged, const PipelineComponentBase* to_merge, + const map &args, const map>& ref) { + + // compatibility with stages that dont implement task reuse + if (ref.size() == 0) + return false; + + // if any of the stages were already reused they can't be merged + if (to_merge->reused != NULL) + return false; + + // verify if the first task is reusable + if (!exists_reusable_task(merged, to_merge, ref.begin()->first)) + return false; + + // verify if the stage dependecy is the same + for (ArgumentBase* a1 : merged->getArguments()) { + ArgumentBase* arg1 = args.at(a1->getId()); + if (arg1->getParent() != 0) { + for (ArgumentBase* a2 : to_merge->getArguments()) { + ArgumentBase* arg2 = args.at(a2->getId()); + if (arg1->getParent() == arg2->getParent()) { + return true; + } + } + } + } + + return false; +} + +// filters all the stages from an input map by the stage's name +void filter_stages(const map &all_stages, + string stage_name, list &filtered_stages, bool shuffle) { + + vector temp; + + for (pair p : all_stages) + if (p.second->getName().compare(stage_name) == 0) + temp.emplace_back(p.second); + + if (shuffle) { + srand(945); + while (temp.size() > 1) { + int r = rand()%(temp.size()-1); + filtered_stages.emplace_back(temp[r]); + temp.erase(find(temp.begin(), temp.end(), temp[r])); + } + filtered_stages.emplace_back(temp.front()); + } else { + for (PipelineComponentBase* s : temp) + filtered_stages.emplace_back(s); + } +} + +list task_generator(map> &tasks_desc, PipelineComponentBase* p, + map expanded_args) { + + list tasks; + ReusableTask* prev_task = NULL; + + // traverse the map on reverse order to set dependencies + for (map>::reverse_iterator t=tasks_desc.rbegin(); t!=tasks_desc.rend(); t++) { + // get task args + list args; + for (ArgumentBase* a : t->second) { + ArgumentBase* aa = find_argument(p, a->getName(), expanded_args); + if (aa != NULL) + args.emplace_back(aa); + } + + // call constructor + int uid = new_uid(); + ReusableTask* n_task = ReusableTask::ReusableTaskFactory::getTaskFromName(t->first, args, NULL); + n_task->setId(uid); + n_task->setTaskName(t->first); + // set prevoius task dependency if this isn't the first task generated + if (t != tasks_desc.rbegin()) { + prev_task->parentTask = n_task->getId(); + } + prev_task = n_task; + tasks.emplace_back(n_task); + // cout << "[task_generator] new task " << uid << ":" << t->first << " from stage " << p->getId() << endl; + // cout << "[task_generator] \targs:" << endl; + // n_task->print(); + + } + + return tasks; +} + +ReusableTask* find_task(list l, string name) { + for (ReusableTask* t : l) + if (t->getTaskName().compare(name) == 0) + return t; + return NULL; +} + +list find_tasks(list l, string name) { + list tasks; + for (ReusableTask* t : l) + if (t->getTaskName().compare(name) == 0) + tasks.emplace_back(t); + return tasks; +} + +void merge_stages(PipelineComponentBase* current, PipelineComponentBase* s, map> ref) { + + s->reused = current; + + if (s->tasks.size() != ref.size()) { + (s+134)->tasks.size(); + // exit(-10); + } + + ReusableTask* current_frontier_reusable_tasks; + map>::iterator p=ref.begin(); + ReusableTask* prev_reusable_task = NULL; + for (; p!=ref.end(); p++) { + // verify if this is the first reusable task + ReusableTask* t_s = find_task(s->tasks, p->first); + list t_cur = find_tasks(current->tasks, p->first); + + // check all of the same tasks of current + bool reusable = false; + for (ReusableTask* t : t_cur) { + // verify if t_s is reusable by checking if it's compatible with a task t and + // if the prev_reusable_task is also the predecessor of t. + if (t->reusable(t_s) && (prev_reusable_task == NULL || + prev_reusable_task->getId() == t->parentTask)) { + reusable = true; + prev_reusable_task = t; + current_frontier_reusable_tasks = t; + break; + } + } + if (!reusable) { + break; + } + + // free t_s since it was reused + delete t_s; + } + + // updates the first non-reusable task dependency + ReusableTask* frontier = find_task(s->tasks, p->first); + frontier->parentTask = current_frontier_reusable_tasks->getId(); + current->tasks.emplace_front(frontier); + p++; + + // adds the remaining non-reusable tasks to current + for (; p!=ref.end(); p++) { + current->tasks.emplace_front(find_task(s->tasks, p->first)); + } + + // remove all tasks references since they were either deleted above or have been sent to current + s->tasks.clear(); +} + +// attempt to merge a list of PCB, returning the new list with only the merged PCBs +list merge_stages(list stages, + map &args, map> ref) { + + if (stages.size() == 1) + return stages; + + list::iterator i = stages.begin(); + + for (; i!=stages.end(); i++) { + for (list::iterator j = next(i); j!=stages.end();) { + if (merging_condition(*i, *j, args, ref)) { + merge_stages(*i, *j, ref); + j = stages.erase(j); + } else + j++; + } + } + + return stages; +} + +// Attempt to merge a list of PCB, returning a list of PCBs with the same size. +// The new list will have the merged PCBs without any tasks and with the reuse +// atribute set as true. +list merge_stages_full(list stages, + map &args, map> ref) { + + if (stages.size() == 1) + return stages; + + list::iterator i = stages.begin(); + + for (; i!=stages.end(); i++) { + for (list::iterator j = next(i); j!=stages.end(); j++) { + if (merging_condition(*i, *j, args, ref)) { + merge_stages(*i, *j, ref); + (*j)->reused = *i; + } + } + } + + return stages; +} + +int get_reuse_factor(PipelineComponentBase* s1, PipelineComponentBase* s2, + const map &args, const map>& ref) { + + if (!merging_condition(s1, s2, args, ref)) + return 0; + + PipelineComponentBase* s1_clone = s1->clone(); + s1_clone->setLocation(PipelineComponentBase::WORKER_SIDE); + PipelineComponentBase* s2_clone = s2->clone(); + s2_clone->setLocation(PipelineComponentBase::WORKER_SIDE); + + merge_stages(s1_clone, s2_clone, ref); + + int ret = s1->tasks.size() + s2->tasks.size() - s1_clone->tasks.size(); + + // clean memory + s1_clone->remove_outputs = true; + delete s1_clone; + s2_clone->remove_outputs = true; + delete s2_clone; + + return ret; +} + +float calc_stage_proc(list s, const map &args, const map>& ref) { + list::iterator i = s.begin(); + + + for (; i!=s.end(); i++) { + PipelineComponentBase* current = (*i)->clone(); + current->setLocation(PipelineComponentBase::WORKER_SIDE); + for (list::iterator j = next(i); j!=s.end();) { + if (merging_condition(*i, *j, args, ref)) { + PipelineComponentBase* j_clone = (*j)->clone(); + j_clone->setLocation(PipelineComponentBase::WORKER_SIDE); + merge_stages(current, j_clone, ref); + j_clone->remove_outputs = true; + delete j_clone; + j = s.erase(j); + } else + j++; + } + (*i) = current; + } + + float proc_cost = 0; + for (PipelineComponentBase* p : s) { + for (ReusableTask* t : p->tasks) + // proc_cost += t->getProcCost(); + proc_cost++; + p->remove_outputs = true; + delete p; + } + + return proc_cost; +} + +// just add PCB s symbolicaly and calc the cost with stages +float calc_stage_proc(list stages, PipelineComponentBase* s, map &args, + map> ref) { + stages.emplace_back(s); + return calc_stage_proc(stages, args, ref); +} + +float calc_stage_mem(list s, map &args, map> ref) { + list::iterator i = s.begin(); + + for (; i!=s.end(); i++) { + PipelineComponentBase* current = (*i)->clone(); + current->setLocation(PipelineComponentBase::WORKER_SIDE); + for (list::iterator j = next(i); j!=s.end();) { + if (merging_condition(*i, *j, args, ref)) { + PipelineComponentBase* j_clone = (*j)->clone(); + j_clone->setLocation(PipelineComponentBase::WORKER_SIDE); + merge_stages(current, j_clone, ref); + j = s.erase(j); + j_clone->remove_outputs = true; + delete j_clone; + } else + j++; + } + } + + float mem_cost = 0; + for (PipelineComponentBase* p : s) { + for (ReusableTask* t : p->tasks) + // mem_cost += t->getMemCost(); + mem_cost+=0; + p->remove_outputs = true; + delete p; + } + + return mem_cost; +} \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/merging.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/merging.hpp new file mode 100644 index 0000000..d5724c3 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/fg_reuse/merging.hpp @@ -0,0 +1,54 @@ +#ifndef MERGING_HPP +#define MERGING_HPP + +#include + +#include "Argument.h" +#include "PipelineComponentBase.h" + +// global uid for any local(this file and PipelineManager) entity +static int uid=1; +int new_uid(); + +ArgumentBase* find_argument(PipelineComponentBase* p, string name, map expanded_args); + +// This function assumes that the merged PCB has at least, but not limited to one ReusableTask on tasks +// of type task_name. Also, to_merge must have exactly one ReusableTask of type task_name. These +// conditions are not checked. +bool exists_reusable_task(const PipelineComponentBase* merged, const PipelineComponentBase* to_merge, string task_name); + +// for the meantime the mearging will happen whenever at least the first task is reusable +bool merging_condition(const PipelineComponentBase* merged, const PipelineComponentBase* to_merge, + const map &args, const map>& ref); + +// filters all the stages from an input map by the stage's name +void filter_stages(const map &all_stages, + string stage_name, list &filtered_stages, bool shuffle); + +list task_generator(map> &tasks_desc, PipelineComponentBase* p, + map expanded_args); + +ReusableTask* find_task(list l, string name); + +list find_tasks(list l, string name); + +void merge_stages(PipelineComponentBase* current, PipelineComponentBase* s, map> ref); + +// Attempt to merge a list of PCB, returning a list of PCBs with the same size. +// The new list will have the merged PCBs without any tasks and with the reuse +// atribute set as true. +list merge_stages_full(list stages, + map &args, map> ref); + +int get_reuse_factor(PipelineComponentBase* s1, PipelineComponentBase* s2, + const map &args, const map>& ref); + +float calc_stage_proc(list s, const map &args, const map>& ref); + +// just add PCB s symbolicaly and calc the cost with stages +float calc_stage_proc(list stages, PipelineComponentBase* s, map &args, + map> ref); + +float calc_stage_mem(list s, map &args, map> ref); + +#endif diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen.cpp deleted file mode 100644 index aade618..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen.cpp +++ /dev/null @@ -1,354 +0,0 @@ -#include -#include -#include -#include - -#include "json/json.h" - -using namespace std; - -string generate_header(Json::Value data); -string generate_source(Json::Value data); -string getTypeCast(string type); -string getArgumentTypeCast(string type); -void replace_multiple_string(string& str, string to_find, string to_replace); -string uppercase(string s); - -int main(int argc, char** argv) { - - if (argc != 3) { - cout << "usage: gen -d " << endl; - return 0; - } - - string filename = ""; - for (int i = 0; i < argc-1; i++) { - if (argv[i][0] == '-' && argv[i][1] == 'd') { - filename = argv[i+1]; - } - } - if (filename.length() == 0) { - cout << "usage: gen -d " << endl; - return 0; - } - - // open descriptor - FILE* desc_file = fopen(filename.c_str(), "r"); - - // concat all descriptors lines - string description; - char* line; - size_t length=0; - while(getline(&line, &length, desc_file) != -1) - description += " " + string(line); - - Json::Reader reader; - bool wellFormed; - Json::Value data; - - wellFormed = reader.parse(description, data, false); - if(!wellFormed) { - cout << "Failed to parse JSON: " << description << endl << reader.getFormattedErrorMessages() << endl; - exit(-3); - } - - fclose(desc_file); - - string name = data["name"].asString(); - - string header = generate_header(data); - std::ofstream header_file(string(name + ".hpp")); - header_file << header; - header_file.close(); - - string source = generate_source(data); - std::ofstream source_file(string(name + ".cpp")); - source_file << source; - source_file.close(); - - // TODO: get descriptor from argv - - // cout << source << endl; -} - -string generate_header(Json::Value data) { - // get name - string name = data["name"].asString(); - - // get includes string - string includes = data["includes"].asString(); - - // generate DataRegion variables string - string dataRegionVariables; - string dataRegionVariablesNames; - for (int i=0; igetArgumentsSize(); i++){\n"; - string pcb_task_params; // $PCB_TASK_PARAMS$ - string task_params; // $TASK_PARAMS$ - string task_args; // $TASK_ARGS$ - string dr_delete; // $INPUT_DR_DELETE$ - string input_mat_dr; // $INPUT_MAT_DR$ - string output_mat_dr; // $OUTPUT_MAT_DR$ - string output_assign; // $OUTPUT_DR_ASSIGN$ - - // generate DataRegion strings - for (int i=0; i(inputRt->getDataRegion(\"" + - dr_name + "\", \"\", 0, dr_id));\n"; - - // generate DR cleaning for the destructor - $INPUT_DR_DELETE$ - dr_delete += "\tif(" + dr_name + "_temp != NULL) delete " + dr_name + "_temp;\n"; - - // generate cv::Mat variables to hold input DR - $INPUT_MAT_DR$ - input_mat_dr += "\tcv::Mat " + dr_name + " = this->" + - dr_name + "_temp->getData();"; - } - // generate output string - else if (data["args"][i]["io"].asString().compare("output") == 0) { - // generate DataRegion output - $OUTPUT_DR$ - dataRegionOutput += "DenseDataRegion2D *" + dr_name + " = new " + - "DenseDataRegion2D();\n\t\t" + dr_name + "->setName(\"" + dr_name + - "\");\n\t\t" + dr_name + "->setId(dr_id_c);\n\t\t" + dr_name + - "->setVersion(0);\n\t\tinputRt->insertDataRegion(" + dr_name + ");"; - - // generate cv::Mat variables to hold input DR - $OUTPUT_MAT_DR$ - output_mat_dr += "\tcv::Mat " + dr_name + " = this->" + - dr_name + "_temp->getData();"; - - // generate mat assignment to output DR string - $OUTPUT_DR_ASSIGN$ - output_assign += "\tthis->" + dr_name + "_temp->setData(" + dr_name + ");"; - - } else { - cout << "Malformed descriptor." << endl; - exit(-1); - } - - // generate DR args $PCB_TASK_PARAMS$ - pcb_task_params += dr_name + ", "; - - // generate DR args $TASK_PARAMS$ - task_params += "DenseDataRegion2D* " + dr_name + "_temp, "; - - // generate DR args $TASK_ARGS$ - task_args += "\tthis->" + dr_name + "_temp = " + dr_name + "_temp;\n"; - } - } - - // generate all common args string - for (int i=0; igetArgument(i))->getArgValue();\n" + - "\t\t\tset_cout++;\n\t\t}\n\n"; - - // generate common args $PCB_TASK_PARAMS$ - pcb_task_params += arg_name + ", "; - - // generate common args $TASK_PARAMS$ - task_params += getTypeCast(arg_type) + " " + arg_name + ", "; - - // generate DR args $TASK_ARGS$ - task_args += "\tthis->" + arg_name + " = " + arg_name + ";\n"; - } - } - - // finish generating $PCB_ARGS$ - string commonArgs = commonArgsDec + "\n" + commonArgsLoop + "\t}\n\n" + - "\tif (set_cout < this->getArgumentsSize())\n\t\tstd::cout " + - "<< __FILE__ << \":\" << __LINE__ <<\" Missing common arguments on " + - name + "\" << std::endl;"; - - // remove final comma from pcb_task_params - pcb_task_params.erase(pcb_task_params.length()-2, 2); - - // remove final comma from task_params - task_params.erase(task_params.length()-2, 2); - - // generate the command invocation string - string cmd = data["call"].asString(); - - /*******************************************************/ - /*******************************************************/ - /*******************************************************/ - - // open source_template file - char* line; - size_t length=0; - FILE* source_template = fopen("source_template", "r"); - - // concat all source_template lines - string source; - while(getline(&line, &length, source_template) != -1) - source += string(line); - - size_t pos; - - - // $NAME$ - replace_multiple_string(source, "$NAME$", name); - - // $IO_DR$ - replace_multiple_string(source, "$IO_DR$", dataRegionIOs); - - // $PCB_ARGS$ - replace_multiple_string(source, "$PCB_ARGS$", commonArgs); - - // $INPUT_CAST_DR$ - replace_multiple_string(source, "$INPUT_CAST_DR$", dataRegionInputCast); - - // $INPUT_DECL_DR$ - replace_multiple_string(source, "$INPUT_DECL_DR$", dataRegionInputDecl); - - // $OUTPUT_DR$ - replace_multiple_string(source, "$OUTPUT_DR$", dataRegionOutput); - - // $PCB_TASK_PARAMS$ - replace_multiple_string(source, "$PCB_TASK_PARAMS$", pcb_task_params); - - // $TASK_PARAMS$ - replace_multiple_string(source, "$TASK_PARAMS$", task_params); - - // $TASK_ARGS$ - replace_multiple_string(source, "$TASK_ARGS$", task_args); - - // $INPUT_DR_DELETE$ - replace_multiple_string(source, "$INPUT_DR_DELETE$", dr_delete); - - // $INPUT_MAT_DR$ - replace_multiple_string(source, "$INPUT_MAT_DR$", input_mat_dr); - - // $OUTPUT_MAT_DR$ - replace_multiple_string(source, "$OUTPUT_MAT_DR$", output_mat_dr); - - // $CMD$ - replace_multiple_string(source, "$CMD$", cmd); - - // $OUTPUT_DR_ASSIGN$ - replace_multiple_string(source, "$OUTPUT_DR_ASSIGN$", output_assign); - - return source; -} - -string getTypeCast(string type) { - if (type.compare("uchar") == 0) - return "unsigned char"; - else if (type.compare("int") == 0) - return "int"; - else if (type.compare("double") == 0) - return "double"; - else - return nullptr; -} - -string getArgumentTypeCast(string type) { - if (type.compare("uchar") == 0) - return "(ArgumentInt*)"; - else if (type.compare("int") == 0) - return "(ArgumentInt*)"; - else if (type.compare("double") == 0) - return "(ArgumentFloat*)"; - else - return nullptr; -} - -void replace_multiple_string(string& str, string to_find, string to_replace) { - size_t pos; - while ((pos = str.find(to_find)) != string::npos) { - str.erase(pos, to_find.length()); - str.insert(pos, to_replace); - } -} - -string uppercase(string s) { - for(int i=0;s[i]!='\0';i++){ - s[i]=toupper(s[i]); - } - return s; -} \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/Makefile b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/Makefile new file mode 100644 index 0000000..a90d15b --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/Makefile @@ -0,0 +1,15 @@ +all: + @cd json + @g++ -c json/jsoncpp.cpp -std=c++11 -o jsoncpp + @g++ gen.cpp jsoncpp -std=c++11 -o gen.out + @./gen.out -d segmentation_desc + # @./gen.out -d normalization_desc + @mv Segmentation.* ../stages + # @mv NormalizationComp.* .. +debug: + g++ -g -ggdb -gdwarf-2 gen.cpp jsoncpp -std=c++11 -o gen.out +gen: + @./gen.out -d segmentation_desc + # @./gen.out -d normalization_desc + @mv Segmentation.* ../stages + # @mv NormalizationComp.* .. \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/gen b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/gen deleted file mode 100755 index f59210f..0000000 Binary files a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/gen and /dev/null differ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/gen.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/gen.cpp index 5e82a62..24d7566 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/gen.cpp +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/gen.cpp @@ -9,8 +9,10 @@ using namespace std; string generate_header(Json::Value data); string generate_source(Json::Value data); +string generate_tasks(Json::Value data, string &desc_decl, string &desc_def); string getTypeCast(string type); string getArgumentTypeCast(string type); +string getMatDRType(string type); void replace_multiple_string(string& str, string to_find, string to_replace); string uppercase(string s); @@ -66,8 +68,6 @@ int main(int argc, char** argv) { source_file << source; source_file.close(); - // TODO: get descriptor from argv - // cout << source << endl; } @@ -78,31 +78,59 @@ string generate_header(Json::Value data) { // get includes string string includes = data["includes"].asString(); - // generate DataRegion variables string - string dataRegionVariables; - string dataRegionVariablesNames; - for (int i=0; i " + data["tasks"][i]["interstage_args"][j]["name"].asString() + "_fw;\n"; + } else { + intertask_args += "\tstd::shared_ptr<" + + getMatDRType(data["tasks"][i]["interstage_args"][j]["type"].asString()) + + "> " + data["tasks"][i]["interstage_args"][j]["name"].asString() + ";\n"; + } } - // remove last comma from commonVariablesNames - size_t pos; - commonVariablesNames.erase(commonVariablesNames.length()-2, 2); + // open task_header_template file + char* line; + size_t length=0; + FILE* task_header_template = fopen("header_task_template", "r"); + + // concat all task_header_template lines + string task_header; + while(getline(&line, &length, task_header_template) != -1) + task_header += string(line); + + replace_multiple_string(task_header, "$NAME$", name+to_string(i)); + replace_multiple_string(task_header, "$FRIEND_TASK$", task_friend); + replace_multiple_string(task_header, "$ARGS$", args); + replace_multiple_string(task_header, "$INTERTASK_ARGS$", intertask_args); + replace_multiple_string(task_header, "$DR_ARGS$", dr_args); + + tasks += task_header; + + } // open header file char* line; @@ -116,20 +144,13 @@ string generate_header(Json::Value data) { // add includes - pos = header.find("$INCLUDES$"); - header.erase(pos, 10); - header.insert(pos, includes); + replace_multiple_string(header, "$INCLUDES$", includes); // add filename replace_multiple_string(header, "$NAME$", name); // add DataRegions - replace_multiple_string(header, "$DR_VARS$", dataRegionVariables); - replace_multiple_string(header, "$DR_VARS_NAMES$", dataRegionVariablesNames); - - // add other variables - replace_multiple_string(header, "$COMMON_VARS$", commonVariables); - replace_multiple_string(header, "$COMMON_VARS_NAMES$", commonVariablesNames); + replace_multiple_string(header, "$TASKS$", tasks); return header; @@ -138,147 +159,24 @@ string generate_header(Json::Value data) { string generate_source(Json::Value data) { // get name string name = data["name"].asString(); - - string dataRegionOutputCreate; // $OUTPUT_DR_CREATE$ - string dataRegionInputCreate; // $INPUT_DR_CREATE$ - string dataRegionOutputCast; // $OUTPUT_CAST_DR$ - string dataRegionInputCast; // $INPUT_CAST_DR$ - string dataRegionOutputDecl; // $OUTPUT_DECL_DR$ - string dataRegionInputDecl; // $INPUT_DECL_DR$ - string commonArgsDec; // $PCB_ARGS$ - string commonArgsLoop = // $PCB_ARGS$ - "\tint set_cout = 0;\n\tfor(int i=0; igetArgumentsSize(); i++){\n"; - string pcb_task_params; // $PCB_TASK_PARAMS$ - string task_params; // $TASK_PARAMS$ - string task_args; // $TASK_ARGS$ - string dr_delete; // $INPUT_DR_DELETE$ - string input_mat_dr; // $INPUT_MAT_DR$ - string output_mat_dr; // $OUTPUT_MAT_DR$ - string output_return; // $OUTPUT_DR_RETURN$ - - // generate DataRegion strings - for (int i=0; igetArgument(i))->getArgValue();\n" + - "\t\t\tset_cout++;\n\t\t}\n\n"; - - // generate DataRegion IOs - $INPUT_DR_CREATE$ - dataRegionInputCreate += "\tthis->addInputOutputDataRegion(\"tile\", " + - dr_name + "_name, RTPipelineComponentBase::INPUT);\n"; - - // generate DataRegion input declaration - $INPUT_DECL_DR$ - dataRegionInputDecl += "\t\tDenseDataRegion2D *" + - dr_name + " = NULL;\n"; - - // generate DataRegion input cast - $INPUT_CAST_DR$ - dataRegionInputCast += "\t\t\t" + dr_name + - " = dynamic_cast(inputRt->getDataRegion(" + - dr_name + "_name, \"\", 0, workflow_id));\n"; - - // generate DR cleaning for the destructor - $INPUT_DR_DELETE$ - dr_delete += "\tif(" + dr_name + "_temp != NULL) delete " + dr_name + "_temp;\n"; - - // generate cv::Mat variables to hold input DR - $INPUT_MAT_DR$ - input_mat_dr += "\tcv::Mat " + dr_name + " = this->" + - dr_name + "_temp->getData();"; - } - // generate output string - else if (data["args"][i]["io"].asString().compare("output") == 0) { - // generate input dr name declaration - $PCB_ARGS$ - commonArgsDec += "\tstd::string " + dr_name + "_name;\n"; - - // generate input dr name conditional assignment - $PCB_ARGS$ - commonArgsLoop += "\t\tif (this->getArgument(i)->getName().compare(\"" + - dr_name + "\") == 0) {\n\t\t\t" + dr_name + "_name = (std::string)" + - "((ArgumentString*)this->getArgument(i))->getArgValue();\n" + - "\t\t\tset_cout++;\n\t\t}\n\n"; - - // generate DataRegion IOs - $OUTPUT_DR_CREATE$ - dataRegionOutputCreate += "\tthis->addInputOutputDataRegion(\"tile\", " + - dr_name + "_name, RTPipelineComponentBase::OUTPUT);\n"; - - // generate DataRegion output declaration - $OUTPUT_DECL_DR$ - dataRegionOutputDecl += "\t\tDenseDataRegion2D *" + - dr_name + " = NULL;\n"; - - // generate DataRegion output cast - $OUTPUT_CAST_DR$ - dataRegionOutputCast += "\t\t\t" + dr_name + - " = dynamic_cast(inputRt->getDataRegion(" + - dr_name + "_name, \"\", 0, workflow_id));\n"; - - // generate cv::Mat variables to hold input DR - $OUTPUT_MAT_DR$ - output_mat_dr += "\tcv::Mat " + dr_name + " = this->" + - dr_name + "_temp->getData();"; - - // generate mat assignment to output DR string - $OUTPUT_DR_RETURN$ - output_return += "\tthis->" + dr_name + "_temp->setData(" + dr_name + ");"; - - } else { - cout << "Malformed descriptor." << endl; - exit(-1); - } - - // generate DR args $PCB_TASK_PARAMS$ - pcb_task_params += dr_name + ", "; - - // generate DR args $TASK_PARAMS$ - task_params += "DenseDataRegion2D* " + dr_name + "_temp, "; - - // generate DR args $TASK_ARGS$ - task_args += "\tthis->" + dr_name + "_temp = " + dr_name + "_temp;\n"; - } - } - - // generate all common args string - for (int i=0; igetArgument(i))->getArgValue();\n" + - "\t\t\tset_cout++;\n\t\t}\n\n"; - - // generate common args $PCB_TASK_PARAMS$ - pcb_task_params += arg_name + ", "; - - // generate common args $TASK_PARAMS$ - task_params += getTypeCast(arg_type) + " " + arg_name + ", "; - - // generate DR args $TASK_ARGS$ - task_args += "\tthis->" + arg_name + " = " + arg_name + ";\n"; + string stage_desc_decl; + string stage_desc_def; + string stage_input_dr; + string stage_output_dr; + + // generate DataRegion io strings + for (int i=0; igetArgumentsSize())\n\t\tstd::cout " + - "<< __FILE__ << \":\" << __LINE__ <<\" Missing common arguments on " + - name + "\" << std::endl;"; - - // remove final comma from pcb_task_params - pcb_task_params.erase(pcb_task_params.length()-2, 2); - - // remove final comma from task_params - task_params.erase(task_params.length()-2, 2); - - // generate the command invocation string - string cmd = data["call"].asString(); + // generate the tasks + string tasks = generate_tasks(data, stage_desc_decl, stage_desc_def); /********************************************************/ /***************** Generate File String *****************/ @@ -294,58 +192,308 @@ string generate_source(Json::Value data) { while(getline(&line, &length, source_template) != -1) source += string(line); - size_t pos; - // $NAME$ replace_multiple_string(source, "$NAME$", name); - // $OUTPUT_DR_CREATE$ - replace_multiple_string(source, "$OUTPUT_DR_CREATE$", dataRegionOutputCreate); + // $STAGE_DESC_DECL$ + replace_multiple_string(source, "$STAGE_DESC_DECL$", stage_desc_decl); - // $INPUT_DR_CREATE$ - replace_multiple_string(source, "$INPUT_DR_CREATE$", dataRegionInputCreate); + // $STAGE_DESC_DEF$ + replace_multiple_string(source, "$STAGE_DESC_DEF$", stage_desc_def); - // $PCB_ARGS$ - replace_multiple_string(source, "$PCB_ARGS$", commonArgs); + // $STAGE_INPUT_DR$ + replace_multiple_string(source, "$STAGE_INPUT_DR$", stage_input_dr); - // $OUTPUT_CAST_DR$ - replace_multiple_string(source, "$OUTPUT_CAST_DR$", dataRegionOutputCast); + // $STAGE_OUTPUT_DR$ + replace_multiple_string(source, "$STAGE_OUTPUT_DR$", stage_output_dr); - // $INPUT_CAST_DR$ - replace_multiple_string(source, "$INPUT_CAST_DR$", dataRegionInputCast); + // $TASKS$ + replace_multiple_string(source, "$TASKS$", tasks); - // $OUTPUT_DECL_DR$ - replace_multiple_string(source, "$OUTPUT_DECL_DR$", dataRegionOutputDecl); + return source; +} - // $INPUT_DECL_DR$ - replace_multiple_string(source, "$INPUT_DECL_DR$", dataRegionInputDecl); +string generate_tasks(Json::Value data, string &desc_decl, string &desc_def) { + + string final_source; + map fisrt_forward; + + // go through all tasks + for (int i=0; i(t) == NULL) {\n\t\tstd::cout << \"[Task" + + data["name"].asString() + to_string(i) + + "] \" << __FILE__ << \":\" << __LINE__ <<\" incompatible tasks: " + + "needed \" << typeid(this).name() << \" and got \" << " + + "typeid(t).name() << std::endl;\n\t\treturn;\n\t}\n"; + } - // $PCB_TASK_PARAMS$ - replace_multiple_string(source, "$PCB_TASK_PARAMS$", pcb_task_params); + desc_decl += "\tlist task_" + name + "_args;\n"; + + // go through all args + for (int j=0; jsetName(\"" + + arg + "\");\n\ttask_" + + name + "_args.emplace_back(" + + arg + to_string(i) + ");\n"; + + if (arg_t.compare("dr") == 0) { + task_args += "\t\tif (a->getName().compare(\"" + arg + + "\") == 0) {\n\t\t\tArgumentRT* " + arg + "_arg;\n\t\t\t" + + arg + "_arg = (ArgumentRT*)a;\n\t\t\tthis->" + arg + + "_temp = std::make_shared" + + "(new DenseDataRegion2D());\n\t\t\t(*this->" + arg + + "_temp)->setName(" + arg + "_arg->getName());\n\t\t\t(*this->" + + arg + "_temp)->setId(std::to_string(" + arg + + "_arg->getId()));\n\t\t\t(*this->" + arg + "_temp)->setVersion(" + + arg + "_arg->getId());\n\t\t\tset_cout++;\n\t\t}\n\n"; + + reusable_cond += "\t\t(*this->" + arg + "_temp)->getName() == (*t->" + + arg + "_temp)->getName() &&\n"; + + task_size += "\t\tsizeof(int) + (*this->" + arg + + "_temp)->getName().length()*sizeof(char) + sizeof(int) +\n"; + + task_serialize += "\t// copy " + arg + " id\n\tint " + arg + + "_id = stoi((*" + arg + "_temp)->getId());\n\tmemcpy(" + + "buff+serialized_bytes, &" + arg + "_id, sizeof(int));" + + "\n\tserialized_bytes+=sizeof(int);\n\n\t// copy " + arg + + " name size\n\tint " + arg + "_name_size = (*" + arg + + "_temp)->getName().length();\n\tmemcpy(buff+serialized_bytes, &" + + arg + "_name_size, sizeof(int));\n\tserialized_bytes+=sizeof(int);" + + "\n\n\t// copy " + arg + " name\n\tmemcpy(buff+serialized_bytes, (*" + + arg + "_temp)->getName().c_str(), " + arg + + "_name_size*sizeof(char));\n\tserialized_bytes+=" + arg + + "_name_size*sizeof(char);\n\n"; + + task_deserialize += "\t// create the " + arg + "\n\tthis->" + + arg + + "_temp = std::make_shared" + + "(new DenseDataRegion2D());\n\n\t// extract " + arg + " id\n\tint " + + arg + "_id = ((int*)(buff+deserialized_bytes))[0];\n\t(*this->" + + arg + "_temp)->setId(to_string(" + arg + "_id));\n\t(*this->" + + arg + "_temp)->setVersion(" + arg + "_id);\n\t" + + "deserialized_bytes += sizeof(int);\n\n\t// extract " + arg + + " name size\n\tint " + arg + "_name_size = ((int*)" + + "(buff+deserialized_bytes))[0];\n\tdeserialized_bytes" + + " += sizeof(int);\n\n\t// copy " + arg + " name\n\tchar " + + arg + "_name[" + arg + "_name_size+1];\n\t" + arg + "_name[" + + arg + "_name_size] = \'\\0\';\n\tmemcpy(" + arg + + "_name, buff+deserialized_bytes, sizeof(char)*" + arg + + "_name_size);\n\tdeserialized_bytes += sizeof(char)*" + + arg + "_name_size;\n\t(*this->" + arg + "_temp)->setName(" + + arg + "_name);\n\n"; + + task_destr += "\tif (" + arg + "_temp.unique() && mock)\n\t\tdelete *" + + arg + "_temp;"; + + if (data["tasks"][i]["args"][j]["io"].asString().compare("input") == 0) { + call_args += arg + ", "; + + input_mat_dr += "\tcv::Mat " + arg + " = (*this->" + + arg + "_temp)->getData();\n"; + + update_mat_dr += "\tstring name_" + arg + "_temp = (*this->" + arg + + "_temp)->getName();\n\tstring sid_" + arg + "_temp = (*this->" + + arg + "_temp)->getId();\n\tint id_" + arg + "_temp = " + + "stoi((*this->" + arg + "_temp)->getId());\n\tif (" + arg + + "_temp != NULL)\n\t\tdelete *" + arg + "_temp;\n\t" + arg + + "_temp = std::make_shared(" + + "dynamic_cast(rt->getDataRegion(name_" + + arg + "_temp, sid_" + arg + "_temp, 0, id_" + arg + + "_temp)));"; + + } else { + call_args += "&" + arg + ", "; + + output_mat_dr += "\tcv::Mat " + arg + ";\n"; + + output_dr_return += "\t(*this->" + arg + + "_temp)->setData(" + arg + ");\n"; + + update_mat_dr += "rt->insertDataRegion(*this->" + + arg + "_temp);\n"; + } + } else { + call_args += arg + ", "; + + task_args += "\t\tif (a->getName().compare(\"" + + arg + "\") == 0) {\n\t\t\tthis->" + + arg + " = (" + + getTypeCast(arg_t) + ")((" + + getArgumentTypeCast(arg_t) + + "*)a)->getArgValue();\n\t\t\tset_cout++;\n\t\t}\n\n"; + + reusable_cond += "\t\tthis->" + arg + " == t->" + + arg + " &&\n"; + + task_size += "\t\tsizeof(" + getTypeCast(arg_t) + + ") +\n"; + + task_serialize += "\t// copy field " + arg + + "\n\tmemcpy(buff+serialized_bytes, &" + + arg + ", sizeof(" + + getTypeCast(arg_t) + "));\n\tserialized_bytes+=sizeof(" + + getTypeCast(arg_t) + ");\n\n"; + + task_deserialize += "\t// extract field " + arg + + "\n\tthis->" + arg + " = ((" + + getTypeCast(arg_t) + + "*)(buff+deserialized_bytes))[0];\n\tdeserialized_bytes += sizeof(" + + getTypeCast(arg_t) + ");\n\n"; + + task_print += "\tcout << \"" + arg + ": \" << " + + arg + " << endl;\n"; + } + } - // $TASK_PARAMS$ - replace_multiple_string(source, "$TASK_PARAMS$", task_params); + // go through all interstage args + for (int j=0; j" + data["tasks"][i]["interstage_args"][j]["name"].asString() + ";\n"; - // $INPUT_DR_DELETE$ - replace_multiple_string(source, "$INPUT_DR_DELETE$", dr_delete); + // check if this is the a forwarded argument + if (fisrt_forward[data["tasks"][i]["interstage_args"][j]["name"].asString()] == true) { + resolve_deps += "\tthis->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + + " = ((Task" + name_prev + "*)t)->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + "_fw;\n"; + } else { + resolve_deps += "\tthis->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + + " = ((Task" + name_prev + "*)t)->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + ";\n"; + } - // $INPUT_MAT_DR$ - replace_multiple_string(source, "$INPUT_MAT_DR$", input_mat_dr); + call_args += "&*" + data["tasks"][i]["interstage_args"][j]["name"].asString() + ", "; + } else if (data["tasks"][i]["interstage_args"][j]["io"].asString().compare("output") == 0) { + call_args += "&*" + data["tasks"][i]["interstage_args"][j]["name"].asString() + ", "; + fisrt_forward[data["tasks"][i]["interstage_args"][j]["name"].asString()] = false; - // $OUTPUT_MAT_DR$ - replace_multiple_string(source, "$OUTPUT_MAT_DR$", output_mat_dr); + intertask_mat += "\t" + getMatDRType(data["tasks"][i]["interstage_args"][j]["type"].asString()) + " " + + data["tasks"][i]["interstage_args"][j]["name"].asString() + "_temp;\n"; - // $CMD$ - replace_multiple_string(source, "$CMD$", cmd); + intertask_inst += "\t" + data["tasks"][i]["interstage_args"][j]["name"].asString() + + " = std::shared_ptr<" + getMatDRType(data["tasks"][i]["interstage_args"][j]["type"].asString()) + + ">(new " + getMatDRType(data["tasks"][i]["interstage_args"][j]["type"].asString()) + ");\n"; - // $OUTPUT_DR_RETURN$ - replace_multiple_string(source, "$OUTPUT_DR_RETURN$", output_return); + } else { + update_ints_args += "\tthis->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + + "_fw = ((Task$NAME$*)t)->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + "_fw;\n"; + + // check if this is the first forward + if (fisrt_forward[data["tasks"][i]["interstage_args"][j]["name"].asString()] == false) { + fisrt_forward[data["tasks"][i]["interstage_args"][j]["name"].asString()] = true; + resolve_deps += "\tthis->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + + "_fw = ((Task" + name_prev + "*)t)->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + ";\n"; + } else { + resolve_deps += "\tthis->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + + "_fw = ((Task" + name_prev + "*)t)->" + data["tasks"][i]["interstage_args"][j]["name"].asString() + "_fw;\n"; + } + } + } - return source; + // remove cmd last comma and add a parentesis + call_args.erase(call_args.length()-2, 2); + cmd += call_args; + cmd += ");"; + + // open source_template file + char* line; + size_t length=0; + FILE* source_template = fopen("source_task_template", "r"); + + // concat all source_template lines + string source; + while(getline(&line, &length, source_template) != -1) + source += string(line); + + // $TASK_ARGS$ + replace_multiple_string(source, "$TASK_ARGS$", task_args); + + // $INPUT_MAT_DR$ + replace_multiple_string(source, "$INPUT_MAT_DR$", input_mat_dr); + + // $OUTPUT_MAT_DR$ + replace_multiple_string(source, "$OUTPUT_MAT_DR$", output_mat_dr); + + // $INTERTASK_MAT$ + replace_multiple_string(source, "$INTERTASK_MAT$", intertask_mat); + + // $INTERTASK_INST$ + replace_multiple_string(source, "$INTERTASK_INST$", intertask_inst); + + // $CMD$ + replace_multiple_string(source, "$CMD$", cmd); + + // $OUTPUT_DR_RETURN$ + replace_multiple_string(source, "$OUTPUT_DR_RETURN$", output_dr_return); + + // $UPDATE_MAT_DR$ + replace_multiple_string(source, "$UPDATE_MAT_DR$", update_mat_dr); + + // $UPDATE_INTS_ARGS$ + replace_multiple_string(source, "$UPDATE_INTS_ARGS$", update_ints_args); + + // $RESOLVE_DEPS$ + replace_multiple_string(source, "$RESOLVE_DEPS$", resolve_deps); + + // $REUSABLE_COND$ + replace_multiple_string(source, "$REUSABLE_COND$", reusable_cond); + + // $TASK_SIZE$ + replace_multiple_string(source, "$TASK_SIZE$", task_size); + + // $TASK_SERIALIZE$ + replace_multiple_string(source, "$TASK_SERIALIZE$", task_serialize); + + // $TASK_DESERIALIZE$ + replace_multiple_string(source, "$TASK_DESERIALIZE$", task_deserialize); + + // $TASK_DESTR$ + replace_multiple_string(source, "$TASK_DESTR$", task_destr); + + // $TASK_PRINT$ + replace_multiple_string(source, "$TASK_PRINT$", task_print); + + // $NAME$ + replace_multiple_string(source, "$NAME$", name); + + // $TYPE_CHECK$ + replace_multiple_string(source, "$TYPE_CHECK$", type_check); + + final_source += source; + + desc_def += "\tthis->tasksDesc[\"Task" + name + "\"] = task_" + name + "_args;\n\n"; + } + + return final_source; } string getTypeCast(string type) { @@ -357,19 +505,32 @@ string getTypeCast(string type) { return "double"; else if (type.compare("float_array") == 0) return "float*"; + else if (type.compare("dr") == 0) + return "ArgumentRT"; else return nullptr; } string getArgumentTypeCast(string type) { if (type.compare("uchar") == 0) - return "(ArgumentInt*)"; + return "ArgumentInt"; else if (type.compare("int") == 0) - return "(ArgumentInt*)"; + return "ArgumentInt"; else if (type.compare("double") == 0) - return "(ArgumentFloat*)"; + return "ArgumentFloat"; else if (type.compare("float_array") == 0) - return "(ArgumentFloatArray*)"; + return "ArgumentFloatArray"; + else if (type.compare("dr") == 0) + return "ArgumentRT"; + else + return nullptr; +} + +string getMatDRType(string type) { + if (type.compare("mat") == 0) + return "cv::Mat"; + else if (type.compare("mat_vect") == 0) + return "std::vector"; else return nullptr; } diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/header_task_template b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/header_task_template new file mode 100644 index 0000000..e8d1036 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/header_task_template @@ -0,0 +1,32 @@ +// Task$NAME$ header +class Task$NAME$: public ReusableTask { +$FRIEND_TASK$ + +private: + + // all parameters +$ARGS$ + // intertask arguments +$INTERTASK_ARGS$ +public: + // data regions +$DR_ARGS$ + Task$NAME$(); + Task$NAME$(list args, RegionTemplate* inputRt); + + virtual ~Task$NAME$(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/header_template b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/header_template index 7bdb1d2..f21d37c 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/header_template +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/header_template @@ -13,6 +13,7 @@ #include "FileUtils.h" #include "Task.h" #include "DenseDataRegion2D.h" +#include "ReusableTask.hpp" $INCLUDES$ @@ -30,25 +31,15 @@ public: void set_workflow_id(int id) {workflow_id = id;}; + void print(); + int run(); }; -// Task header -class Task$NAME$: public Task { -private: - - // data regions -$DR_VARS$ - - // all other variables -$COMMON_VARS$ +/**************************************************************************************/ +/*********************************** Task functions ***********************************/ +/**************************************************************************************/ -public: - Task$NAME$($DR_VARS_NAMES$$COMMON_VARS_NAMES$); - - virtual ~Task$NAME$(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; +$TASKS$ #endif /* $NAME$_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/jsoncpp.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/json/jsoncpp.cpp similarity index 99% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/jsoncpp.cpp rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/json/jsoncpp.cpp index c8c948f..61ce71c 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/jsoncpp.cpp +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/json/jsoncpp.cpp @@ -73,7 +73,7 @@ license you like. -#include "json/json.h" +#include "json.h" #ifndef JSON_IS_AMALGAMATION #error "Compile with -I PATH_TO_JSON_DIRECTORY" diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/jsoncpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/jsoncpp index e9f209d..166b201 100644 Binary files a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/jsoncpp and b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/jsoncpp differ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/normalization_desc b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/normalization_desc index 24c02cf..4b80cad 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/normalization_desc +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/normalization_desc @@ -1,10 +1,10 @@ {"name":"NormalizationComp", "includes":"#include \"opencv2/opencv.hpp\"\n#include \"opencv2/gpu/gpu.hpp\"\n#include \"Normalization.h\"", -"call":"normalizedImg = ::nscale::Normalization::normalization(inputImage, targetMean, targetStd)", +"call":"normalized_rt = ::nscale::Normalization::normalization(input_img, target_mean, target_std)", "args":[ - {"name":"inputImage", "type":"dr", "io":"input"}, - {"name":"normalizedImg", "type":"dr", "io":"output"}, - {"name":"targetMean", "type":"float_array"}, - {"name":"targetStd", "type":"float_array"} + {"name":"input_img", "type":"dr", "io":"input"}, + {"name":"normalized_rt", "type":"dr", "io":"output"}, + {"name":"target_mean", "type":"float_array"}, + {"name":"target_std", "type":"float_array"} ] } \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/segmentation_desc b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/segmentation_desc index 5babbee..fe9f7df 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/segmentation_desc +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/segmentation_desc @@ -1,22 +1,94 @@ {"name":"Segmentation", "includes":"#include \"opencv2/opencv.hpp\"\n#include \"opencv2/gpu/gpu.hpp\"\n#include \"HistologicalEntities.h\"", -"call":"::nscale::HistologicalEntities::segmentNuclei(inputImage, outMask, blue, green, red, T1, T2, G1, minSize, maxSize, G2, minSizePl, minSizeSeg, maxSizeSeg, fillHolesConnectivity, reconConnectivity, watershedConnectivity)", -"args":[ - {"name":"inputImage", "type":"dr", "io":"input"}, - {"name":"outMask", "type":"dr", "io":"output"}, - {"name":"blue", "type":"uchar"}, - {"name":"green", "type":"uchar"}, - {"name":"red", "type":"uchar"}, - {"name":"T1", "type":"double"}, - {"name":"T2", "type":"double"}, - {"name":"G1", "type":"uchar"}, - {"name":"minSize", "type":"int"}, - {"name":"maxSize", "type":"int"}, - {"name":"G2", "type":"uchar"}, - {"name":"minSizePl", "type":"int"}, - {"name":"minSizeSeg", "type":"int"}, - {"name":"maxSizeSeg", "type":"int"}, - {"name":"fillHolesConnectivity", "type":"int"}, - {"name":"reconConnectivity", "type":"int"}, - {"name":"watershedConnectivity", "type":"int"} - ]} \ No newline at end of file +"dr_args":[ + {"name":"normalized_rt", "type":"dr", "io":"input"}, + {"name":"segmented_rt", "type":"dr", "io":"output"} + ], +"tasks":[ + {"call":"::nscale::HistologicalEntities::segmentNucleiStg1", + "args":[ + {"name":"normalized_rt", "type":"dr", "io":"input"}, + {"name":"blue", "type":"uchar"}, + {"name":"green", "type":"uchar"}, + {"name":"red", "type":"uchar"}, + {"name":"T1", "type":"double"}, + {"name":"T2", "type":"double"} + ], + "interstage_args":[ + {"name":"bgr", "type":"mat_vect", "io":"output"}, + {"name":"rbc", "type":"mat", "io":"output"} + ] + }, + {"call":"::nscale::HistologicalEntities::segmentNucleiStg2", + "args":[ + {"name":"reconConnectivity", "type":"int"} + ], + "interstage_args":[ + {"name":"bgr", "type":"mat_vect", "io":"input"}, + {"name":"rbc", "type":"mat", "io":"forward"}, + {"name":"rc", "type":"mat", "io":"output"}, + {"name":"rc_recon", "type":"mat", "io":"output"}, + {"name":"rc_open", "type":"mat", "io":"output"} + ] + }, + {"call":"::nscale::HistologicalEntities::segmentNucleiStg3", + "args":[ + {"name":"fillHolesConnectivity", "type":"int"}, + {"name":"G1", "type":"int"} + ], + "interstage_args":[ + {"name":"rc", "type":"mat", "io":"input"}, + {"name":"rc_recon", "type":"mat", "io":"input"}, + {"name":"rc_open", "type":"mat", "io":"input"}, + {"name":"rbc", "type":"mat", "io":"forward"}, + {"name":"bw1", "type":"mat", "io":"output"}, + {"name":"diffIm", "type":"mat", "io":"output"} + ] + }, + {"call":"::nscale::HistologicalEntities::segmentNucleiStg4", + "args":[ + {"name":"minSize", "type":"int"}, + {"name":"maxSize", "type":"int"} + ], + "interstage_args":[ + {"name":"bw1", "type":"mat", "io":"input"}, + {"name":"rbc", "type":"mat", "io":"forward"}, + {"name":"diffIm", "type":"mat", "io":"forward"}, + {"name":"bw1_t", "type":"mat", "io":"output"} + ] + }, + {"call":"::nscale::HistologicalEntities::segmentNucleiStg5", + "args":[ + {"name":"G2", "type":"int"} + ], + "interstage_args":[ + {"name":"diffIm", "type":"mat", "io":"input"}, + {"name":"bw1_t", "type":"mat", "io":"input"}, + {"name":"rbc", "type":"mat", "io":"input"}, + {"name":"seg_open", "type":"mat", "io":"output"} + ] + }, + {"call":"::nscale::HistologicalEntities::segmentNucleiStg6", + "args":[ + {"name":"normalized_rt", "type":"dr", "io":"input"}, + {"name":"minSizePl", "type":"int"}, + {"name":"watershedConnectivity", "type":"int"} + ], + "interstage_args":[ + {"name":"seg_open", "type":"mat", "io":"input"}, + {"name":"seg_nonoverlap", "type":"mat", "io":"output"} + ] + }, + {"call":"::nscale::HistologicalEntities::segmentNucleiStg7", + "args":[ + {"name":"segmented_rt", "type":"dr", "io":"output"}, + {"name":"minSizeSeg", "type":"int"}, + {"name":"maxSizeSeg", "type":"int"}, + {"name":"fillHolesConnectivity", "type":"int"} + ], + "interstage_args":[ + {"name":"seg_nonoverlap", "type":"mat", "io":"input"} + ] + } + ] +} \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/source_task_template b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/source_task_template new file mode 100644 index 0000000..6de5e5d --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/source_task_template @@ -0,0 +1,136 @@ +Task$NAME$::Task$NAME$() { +$INTERTASK_INST$ +} + +Task$NAME$::Task$NAME$(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ +$TASK_ARGS$ + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + +$INTERTASK_INST$ +} + +Task$NAME$::~Task$NAME$() { +$TASK_DESTR$ +} + +bool Task$NAME$::run(int procType, int tid) { +$INPUT_MAT_DR$ +$OUTPUT_MAT_DR$ +$INTERTASK_MAT$ + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "Task$NAME$ executing." << std::endl; + + $CMD$ + + uint64_t t2 = Util::ClockGetTimeProfile(); + +$OUTPUT_DR_RETURN$ + std::cout << "Task $NAME$ time elapsed: "<< t2-t1 << std::endl; +} + +void Task$NAME$::updateDR(RegionTemplate* rt) { +$UPDATE_MAT_DR$ +} + +void Task$NAME$::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[Task$NAME$] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + +$UPDATE_INTS_ARGS$ +} + +void Task$NAME$::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible +$TYPE_CHECK$ + +$RESOLVE_DEPS$ +} + +bool Task$NAME$::reusable(ReusableTask* rt) { + Task$NAME$* t = (Task$NAME$*)(rt); + if ( +$REUSABLE_COND$ + true) { + + return true; + } else { + return false; + } + return true; +} + +int Task$NAME$::size() { + return +$TASK_SIZE$ + 0; +} + +int Task$NAME$::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + +$TASK_SERIALIZE$ + return serialized_bytes; +} + +int Task$NAME$::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + +$TASK_DESERIALIZE$ + return deserialized_bytes; +} + +ReusableTask* Task$NAME$::clone() { + ReusableTask* retValue = new Task$NAME$(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void Task$NAME$::print() { +$TASK_PRINT$ +} + +// Create the task factory +ReusableTask* $NAME$Factory1(list args, RegionTemplate* inputRt) { + return new Task$NAME$(args, inputRt); +} + +// Create the task factory +ReusableTask* $NAME$Factory2() { + return new Task$NAME$(); +} + +// register factory with the runtime system +bool registeredTask$NAME$2 = ReusableTask::ReusableTaskFactory::taskRegister("Task$NAME$", + &$NAME$Factory1, &$NAME$Factory2); + diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/source_template b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/source_template index fd51de9..3bddb17 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/source_template +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/gen/source_template @@ -9,6 +9,8 @@ #include #include +#include +#include /**************************************************************************************/ /**************************** PipelineComponent functions *****************************/ @@ -16,6 +18,10 @@ $NAME$::$NAME$() { this->setComponentName("$NAME$"); + + // generate task descriptors +$STAGE_DESC_DECL$ +$STAGE_DESC_DEF$ } $NAME$::~$NAME$() {} @@ -26,30 +32,34 @@ int $NAME$::run() { std::cout << "Executing component: " << this->getComponentName() << " instance id: " << this->getId() <getRegionTemplateInstance("tile"); -$PCB_ARGS$ - -$INPUT_DR_CREATE$ -$OUTPUT_DR_CREATE$ - - if(inputRt != NULL){ -$INPUT_DECL_DR$ -$OUTPUT_DECL_DR$ - try{ -$INPUT_CAST_DR$ -$OUTPUT_CAST_DR$ - std::cout << "$NAME$. paramenterId: "<< workflow_id < prev_map; + list ordered_tasks; + for (list::reverse_iterator task=tasks.rbegin(); task!=tasks.rend(); task++) { + // cout << "[Segmentation] sending task " << (*task)->getId() << endl; + // generate a task copy and update the DR, getting the actual data + ReusableTask* t = (*task)->clone(); + t->updateDR(inputRt); + + // solve dependency if it isn't the first task + if (t->parentTask != -1) { + // cout << "\t\t\t[Segmentation] setting dep of " << t->getId() << " to " << prev_map[t->parentTask]->getId() << endl; + t->addDependency(prev_map[t->parentTask]->getId()); + t->resolveDependencies(prev_map[t->parentTask]); } - // Create processing task - Task$NAME$ * task = new Task$NAME$($PCB_TASK_PARAMS$); - - this->executeTask(task); - + // add this task to parent list for future dependency resolution + prev_map[t->getId()] = t; + ordered_tasks.emplace_back(t); + } - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" RT == NULL" << std::endl; + // send all tasks to be executed + for (ReusableTask* t : ordered_tasks) { + cout << "\t\t\t[Segmentation] sending task " << t->getId() << endl; + t->mock = false; + this->executeTask(t); } return 0; @@ -68,31 +78,4 @@ bool registered$NAME$ = PipelineComponentBase::ComponentFactory::componentRegist /*********************************** Task functions ***********************************/ /**************************************************************************************/ -Task$NAME$::Task$NAME$($TASK_PARAMS$) { - -$TASK_ARGS$ - -} - -Task$NAME$::~Task$NAME$() { -$INPUT_DR_DELETE$ -} - -bool Task$NAME$::run(int procType, int tid) { - -$INPUT_MAT_DR$ - -$OUTPUT_MAT_DR$ - - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "Task$NAME$ executing." << std::endl; - - $CMD$; - -$OUTPUT_DR_RETURN$ - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task $NAME$ time elapsed: "<< t2-t1 << std::endl; -} +$TASKS$ \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/jsoncpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/json/jsoncpp similarity index 100% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/jsoncpp rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/json/jsoncpp diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/json/jsoncpp.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/json/jsoncpp.cpp new file mode 100644 index 0000000..61ce71c --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/json/jsoncpp.cpp @@ -0,0 +1,5247 @@ +/// Json-cpp amalgated source (http://jsoncpp.sourceforge.net/). +/// It is intended to be used with #include "json/json.h" + +// ////////////////////////////////////////////////////////////////////// +// Beginning of content of file: LICENSE +// ////////////////////////////////////////////////////////////////////// + +/* +The JsonCpp library's source code, including accompanying documentation, +tests and demonstration applications, are licensed under the following +conditions... + +The author (Baptiste Lepilleur) explicitly disclaims copyright in all +jurisdictions which recognize such a disclaimer. In such jurisdictions, +this software is released into the Public Domain. + +In jurisdictions which do not recognize Public Domain property (e.g. Germany as of +2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is +released under the terms of the MIT License (see below). + +In jurisdictions which recognize Public Domain property, the user of this +software may choose to accept it either as 1) Public Domain, 2) under the +conditions of the MIT License (see below), or 3) under the terms of dual +Public Domain/MIT License conditions described here, as they choose. + +The MIT License is about as close to Public Domain as a license can get, and is +described in clear, concise terms at: + + http://en.wikipedia.org/wiki/MIT_License + +The full text of the MIT License follows: + +======================================================================== +Copyright (c) 2007-2010 Baptiste Lepilleur + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +======================================================================== +(END LICENSE TEXT) + +The MIT license is compatible with both the GPL and commercial +software, affording one all of the rights of Public Domain with the +minor nuisance of being required to keep the above copyright notice +and license text in the source code. Note also that by accepting the +Public Domain "license" you can re-license your copy using whatever +license you like. + +*/ + +// ////////////////////////////////////////////////////////////////////// +// End of content of file: LICENSE +// ////////////////////////////////////////////////////////////////////// + + + + + + +#include "json.h" + +#ifndef JSON_IS_AMALGAMATION +#error "Compile with -I PATH_TO_JSON_DIRECTORY" +#endif + + +// ////////////////////////////////////////////////////////////////////// +// Beginning of content of file: src/lib_json/json_tool.h +// ////////////////////////////////////////////////////////////////////// + +// Copyright 2007-2010 Baptiste Lepilleur +// Distributed under MIT license, or public domain if desired and +// recognized in your jurisdiction. +// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE + +#ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED +#define LIB_JSONCPP_JSON_TOOL_H_INCLUDED + +/* This header provides common string manipulation support, such as UTF-8, + * portable conversion from/to string... + * + * It is an internal header that must not be exposed. + */ + +namespace Json { + +/// Converts a unicode code-point to UTF-8. +static inline JSONCPP_STRING codePointToUTF8(unsigned int cp) { + JSONCPP_STRING result; + + // based on description from http://en.wikipedia.org/wiki/UTF-8 + + if (cp <= 0x7f) { + result.resize(1); + result[0] = static_cast(cp); + } else if (cp <= 0x7FF) { + result.resize(2); + result[1] = static_cast(0x80 | (0x3f & cp)); + result[0] = static_cast(0xC0 | (0x1f & (cp >> 6))); + } else if (cp <= 0xFFFF) { + result.resize(3); + result[2] = static_cast(0x80 | (0x3f & cp)); + result[1] = static_cast(0x80 | (0x3f & (cp >> 6))); + result[0] = static_cast(0xE0 | (0xf & (cp >> 12))); + } else if (cp <= 0x10FFFF) { + result.resize(4); + result[3] = static_cast(0x80 | (0x3f & cp)); + result[2] = static_cast(0x80 | (0x3f & (cp >> 6))); + result[1] = static_cast(0x80 | (0x3f & (cp >> 12))); + result[0] = static_cast(0xF0 | (0x7 & (cp >> 18))); + } + + return result; +} + +/// Returns true if ch is a control character (in range [1,31]). +static inline bool isControlCharacter(char ch) { return ch > 0 && ch <= 0x1F; } + +enum { + /// Constant that specify the size of the buffer that must be passed to + /// uintToString. + uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1 +}; + +// Defines a char buffer for use with uintToString(). +typedef char UIntToStringBuffer[uintToStringBufferSize]; + +/** Converts an unsigned integer to string. + * @param value Unsigned interger to convert to string + * @param current Input/Output string buffer. + * Must have at least uintToStringBufferSize chars free. + */ +static inline void uintToString(LargestUInt value, char*& current) { + *--current = 0; + do { + *--current = static_cast(value % 10U + static_cast('0')); + value /= 10; + } while (value != 0); +} + +/** Change ',' to '.' everywhere in buffer. + * + * We had a sophisticated way, but it did not work in WinCE. + * @see https://github.com/open-source-parsers/jsoncpp/pull/9 + */ +static inline void fixNumericLocale(char* begin, char* end) { + while (begin < end) { + if (*begin == ',') { + *begin = '.'; + } + ++begin; + } +} + +} // namespace Json { + +#endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED + +// ////////////////////////////////////////////////////////////////////// +// End of content of file: src/lib_json/json_tool.h +// ////////////////////////////////////////////////////////////////////// + + + + + + +// ////////////////////////////////////////////////////////////////////// +// Beginning of content of file: src/lib_json/json_reader.cpp +// ////////////////////////////////////////////////////////////////////// + +// Copyright 2007-2011 Baptiste Lepilleur +// Distributed under MIT license, or public domain if desired and +// recognized in your jurisdiction. +// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE + +#if !defined(JSON_IS_AMALGAMATION) +#include +#include +#include +#include "json_tool.h" +#endif // if !defined(JSON_IS_AMALGAMATION) +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) +#if !defined(WINCE) && defined(__STDC_SECURE_LIB__) && _MSC_VER >= 1500 // VC++ 9.0 and above +#define snprintf sprintf_s +#elif _MSC_VER >= 1900 // VC++ 14.0 and above +#define snprintf std::snprintf +#else +#define snprintf _snprintf +#endif +#elif defined(__ANDROID__) || defined(__QNXNTO__) +#define snprintf snprintf +#elif __cplusplus >= 201103L +#if !defined(__MINGW32__) && !defined(__CYGWIN__) +#define snprintf std::snprintf +#endif +#endif + +#if defined(__QNXNTO__) +#define sscanf std::sscanf +#endif + +#if defined(_MSC_VER) && _MSC_VER >= 1400 // VC++ 8.0 +// Disable warning about strdup being deprecated. +#pragma warning(disable : 4996) +#endif + +static int const stackLimit_g = 1000; +static int stackDepth_g = 0; // see readValue() + +namespace Json { + +#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520) +typedef std::unique_ptr CharReaderPtr; +#else +typedef std::auto_ptr CharReaderPtr; +#endif + +// Implementation of class Features +// //////////////////////////////// + +Features::Features() + : allowComments_(true), strictRoot_(false), + allowDroppedNullPlaceholders_(false), allowNumericKeys_(false) {} + +Features Features::all() { return Features(); } + +Features Features::strictMode() { + Features features; + features.allowComments_ = false; + features.strictRoot_ = true; + features.allowDroppedNullPlaceholders_ = false; + features.allowNumericKeys_ = false; + return features; +} + +// Implementation of class Reader +// //////////////////////////////// + +static bool containsNewLine(Reader::Location begin, Reader::Location end) { + for (; begin < end; ++begin) + if (*begin == '\n' || *begin == '\r') + return true; + return false; +} + +// Class Reader +// ////////////////////////////////////////////////////////////////// + +Reader::Reader() + : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(), + lastValue_(), commentsBefore_(), features_(Features::all()), + collectComments_() {} + +Reader::Reader(const Features& features) + : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(), + lastValue_(), commentsBefore_(), features_(features), collectComments_() { +} + +bool +Reader::parse(const std::string& document, Value& root, bool collectComments) { + JSONCPP_STRING documentCopy(document.data(), document.data() + document.capacity()); + std::swap(documentCopy, document_); + const char* begin = document_.c_str(); + const char* end = begin + document_.length(); + return parse(begin, end, root, collectComments); +} + +bool Reader::parse(std::istream& sin, Value& root, bool collectComments) { + // std::istream_iterator begin(sin); + // std::istream_iterator end; + // Those would allow streamed input from a file, if parse() were a + // template function. + + // Since JSONCPP_STRING is reference-counted, this at least does not + // create an extra copy. + JSONCPP_STRING doc; + std::getline(sin, doc, (char)EOF); + return parse(doc.data(), doc.data() + doc.size(), root, collectComments); +} + +bool Reader::parse(const char* beginDoc, + const char* endDoc, + Value& root, + bool collectComments) { + if (!features_.allowComments_) { + collectComments = false; + } + + begin_ = beginDoc; + end_ = endDoc; + collectComments_ = collectComments; + current_ = begin_; + lastValueEnd_ = 0; + lastValue_ = 0; + commentsBefore_ = ""; + errors_.clear(); + while (!nodes_.empty()) + nodes_.pop(); + nodes_.push(&root); + + stackDepth_g = 0; // Yes, this is bad coding, but options are limited. + bool successful = readValue(); + Token token; + skipCommentTokens(token); + if (collectComments_ && !commentsBefore_.empty()) + root.setComment(commentsBefore_, commentAfter); + if (features_.strictRoot_) { + if (!root.isArray() && !root.isObject()) { + // Set error location to start of doc, ideally should be first token found + // in doc + token.type_ = tokenError; + token.start_ = beginDoc; + token.end_ = endDoc; + addError( + "A valid JSON document must be either an array or an object value.", + token); + return false; + } + } + return successful; +} + +bool Reader::readValue() { + // This is a non-reentrant way to support a stackLimit. Terrible! + // But this deprecated class has a security problem: Bad input can + // cause a seg-fault. This seems like a fair, binary-compatible way + // to prevent the problem. + if (stackDepth_g >= stackLimit_g) throwRuntimeError("Exceeded stackLimit in readValue()."); + ++stackDepth_g; + + Token token; + skipCommentTokens(token); + bool successful = true; + + if (collectComments_ && !commentsBefore_.empty()) { + currentValue().setComment(commentsBefore_, commentBefore); + commentsBefore_ = ""; + } + + switch (token.type_) { + case tokenObjectBegin: + successful = readObject(token); + currentValue().setOffsetLimit(current_ - begin_); + break; + case tokenArrayBegin: + successful = readArray(token); + currentValue().setOffsetLimit(current_ - begin_); + break; + case tokenNumber: + successful = decodeNumber(token); + break; + case tokenString: + successful = decodeString(token); + break; + case tokenTrue: + { + Value v(true); + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenFalse: + { + Value v(false); + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenNull: + { + Value v; + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenArraySeparator: + case tokenObjectEnd: + case tokenArrayEnd: + if (features_.allowDroppedNullPlaceholders_) { + // "Un-read" the current token and mark the current value as a null + // token. + current_--; + Value v; + currentValue().swapPayload(v); + currentValue().setOffsetStart(current_ - begin_ - 1); + currentValue().setOffsetLimit(current_ - begin_); + break; + } // Else, fall through... + default: + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return addError("Syntax error: value, object or array expected.", token); + } + + if (collectComments_) { + lastValueEnd_ = current_; + lastValue_ = ¤tValue(); + } + + --stackDepth_g; + return successful; +} + +void Reader::skipCommentTokens(Token& token) { + if (features_.allowComments_) { + do { + readToken(token); + } while (token.type_ == tokenComment); + } else { + readToken(token); + } +} + +bool Reader::readToken(Token& token) { + skipSpaces(); + token.start_ = current_; + Char c = getNextChar(); + bool ok = true; + switch (c) { + case '{': + token.type_ = tokenObjectBegin; + break; + case '}': + token.type_ = tokenObjectEnd; + break; + case '[': + token.type_ = tokenArrayBegin; + break; + case ']': + token.type_ = tokenArrayEnd; + break; + case '"': + token.type_ = tokenString; + ok = readString(); + break; + case '/': + token.type_ = tokenComment; + ok = readComment(); + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '-': + token.type_ = tokenNumber; + readNumber(); + break; + case 't': + token.type_ = tokenTrue; + ok = match("rue", 3); + break; + case 'f': + token.type_ = tokenFalse; + ok = match("alse", 4); + break; + case 'n': + token.type_ = tokenNull; + ok = match("ull", 3); + break; + case ',': + token.type_ = tokenArraySeparator; + break; + case ':': + token.type_ = tokenMemberSeparator; + break; + case 0: + token.type_ = tokenEndOfStream; + break; + default: + ok = false; + break; + } + if (!ok) + token.type_ = tokenError; + token.end_ = current_; + return true; +} + +void Reader::skipSpaces() { + while (current_ != end_) { + Char c = *current_; + if (c == ' ' || c == '\t' || c == '\r' || c == '\n') + ++current_; + else + break; + } +} + +bool Reader::match(Location pattern, int patternLength) { + if (end_ - current_ < patternLength) + return false; + int index = patternLength; + while (index--) + if (current_[index] != pattern[index]) + return false; + current_ += patternLength; + return true; +} + +bool Reader::readComment() { + Location commentBegin = current_ - 1; + Char c = getNextChar(); + bool successful = false; + if (c == '*') + successful = readCStyleComment(); + else if (c == '/') + successful = readCppStyleComment(); + if (!successful) + return false; + + if (collectComments_) { + CommentPlacement placement = commentBefore; + if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) { + if (c != '*' || !containsNewLine(commentBegin, current_)) + placement = commentAfterOnSameLine; + } + + addComment(commentBegin, current_, placement); + } + return true; +} + +static JSONCPP_STRING normalizeEOL(Reader::Location begin, Reader::Location end) { + JSONCPP_STRING normalized; + normalized.reserve(static_cast(end - begin)); + Reader::Location current = begin; + while (current != end) { + char c = *current++; + if (c == '\r') { + if (current != end && *current == '\n') + // convert dos EOL + ++current; + // convert Mac EOL + normalized += '\n'; + } else { + normalized += c; + } + } + return normalized; +} + +void +Reader::addComment(Location begin, Location end, CommentPlacement placement) { + assert(collectComments_); + const JSONCPP_STRING& normalized = normalizeEOL(begin, end); + if (placement == commentAfterOnSameLine) { + assert(lastValue_ != 0); + lastValue_->setComment(normalized, placement); + } else { + commentsBefore_ += normalized; + } +} + +bool Reader::readCStyleComment() { + while (current_ != end_) { + Char c = getNextChar(); + if (c == '*' && *current_ == '/') + break; + } + return getNextChar() == '/'; +} + +bool Reader::readCppStyleComment() { + while (current_ != end_) { + Char c = getNextChar(); + if (c == '\n') + break; + if (c == '\r') { + // Consume DOS EOL. It will be normalized in addComment. + if (current_ != end_ && *current_ == '\n') + getNextChar(); + // Break on Moc OS 9 EOL. + break; + } + } + return true; +} + +void Reader::readNumber() { + const char *p = current_; + char c = '0'; // stopgap for already consumed character + // integral part + while (c >= '0' && c <= '9') + c = (current_ = p) < end_ ? *p++ : 0; + // fractional part + if (c == '.') { + c = (current_ = p) < end_ ? *p++ : 0; + while (c >= '0' && c <= '9') + c = (current_ = p) < end_ ? *p++ : 0; + } + // exponential part + if (c == 'e' || c == 'E') { + c = (current_ = p) < end_ ? *p++ : 0; + if (c == '+' || c == '-') + c = (current_ = p) < end_ ? *p++ : 0; + while (c >= '0' && c <= '9') + c = (current_ = p) < end_ ? *p++ : 0; + } +} + +bool Reader::readString() { + Char c = 0; + while (current_ != end_) { + c = getNextChar(); + if (c == '\\') + getNextChar(); + else if (c == '"') + break; + } + return c == '"'; +} + +bool Reader::readObject(Token& tokenStart) { + Token tokenName; + JSONCPP_STRING name; + Value init(objectValue); + currentValue().swapPayload(init); + currentValue().setOffsetStart(tokenStart.start_ - begin_); + while (readToken(tokenName)) { + bool initialTokenOk = true; + while (tokenName.type_ == tokenComment && initialTokenOk) + initialTokenOk = readToken(tokenName); + if (!initialTokenOk) + break; + if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object + return true; + name = ""; + if (tokenName.type_ == tokenString) { + if (!decodeString(tokenName, name)) + return recoverFromError(tokenObjectEnd); + } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) { + Value numberName; + if (!decodeNumber(tokenName, numberName)) + return recoverFromError(tokenObjectEnd); + name = JSONCPP_STRING(numberName.asCString()); + } else { + break; + } + + Token colon; + if (!readToken(colon) || colon.type_ != tokenMemberSeparator) { + return addErrorAndRecover( + "Missing ':' after object member name", colon, tokenObjectEnd); + } + Value& value = currentValue()[name]; + nodes_.push(&value); + bool ok = readValue(); + nodes_.pop(); + if (!ok) // error already set + return recoverFromError(tokenObjectEnd); + + Token comma; + if (!readToken(comma) || + (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator && + comma.type_ != tokenComment)) { + return addErrorAndRecover( + "Missing ',' or '}' in object declaration", comma, tokenObjectEnd); + } + bool finalizeTokenOk = true; + while (comma.type_ == tokenComment && finalizeTokenOk) + finalizeTokenOk = readToken(comma); + if (comma.type_ == tokenObjectEnd) + return true; + } + return addErrorAndRecover( + "Missing '}' or object member name", tokenName, tokenObjectEnd); +} + +bool Reader::readArray(Token& tokenStart) { + Value init(arrayValue); + currentValue().swapPayload(init); + currentValue().setOffsetStart(tokenStart.start_ - begin_); + skipSpaces(); + if (*current_ == ']') // empty array + { + Token endArray; + readToken(endArray); + return true; + } + int index = 0; + for (;;) { + Value& value = currentValue()[index++]; + nodes_.push(&value); + bool ok = readValue(); + nodes_.pop(); + if (!ok) // error already set + return recoverFromError(tokenArrayEnd); + + Token token; + // Accept Comment after last item in the array. + ok = readToken(token); + while (token.type_ == tokenComment && ok) { + ok = readToken(token); + } + bool badTokenType = + (token.type_ != tokenArraySeparator && token.type_ != tokenArrayEnd); + if (!ok || badTokenType) { + return addErrorAndRecover( + "Missing ',' or ']' in array declaration", token, tokenArrayEnd); + } + if (token.type_ == tokenArrayEnd) + break; + } + return true; +} + +bool Reader::decodeNumber(Token& token) { + Value decoded; + if (!decodeNumber(token, decoded)) + return false; + currentValue().swapPayload(decoded); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return true; +} + +bool Reader::decodeNumber(Token& token, Value& decoded) { + // Attempts to parse the number as an integer. If the number is + // larger than the maximum supported value of an integer then + // we decode the number as a double. + Location current = token.start_; + bool isNegative = *current == '-'; + if (isNegative) + ++current; + // TODO: Help the compiler do the div and mod at compile time or get rid of them. + Value::LargestUInt maxIntegerValue = + isNegative ? Value::LargestUInt(Value::maxLargestInt) + 1 + : Value::maxLargestUInt; + Value::LargestUInt threshold = maxIntegerValue / 10; + Value::LargestUInt value = 0; + while (current < token.end_) { + Char c = *current++; + if (c < '0' || c > '9') + return decodeDouble(token, decoded); + Value::UInt digit(static_cast(c - '0')); + if (value >= threshold) { + // We've hit or exceeded the max value divided by 10 (rounded down). If + // a) we've only just touched the limit, b) this is the last digit, and + // c) it's small enough to fit in that rounding delta, we're okay. + // Otherwise treat this number as a double to avoid overflow. + if (value > threshold || current != token.end_ || + digit > maxIntegerValue % 10) { + return decodeDouble(token, decoded); + } + } + value = value * 10 + digit; + } + if (isNegative && value == maxIntegerValue) + decoded = Value::minLargestInt; + else if (isNegative) + decoded = -Value::LargestInt(value); + else if (value <= Value::LargestUInt(Value::maxInt)) + decoded = Value::LargestInt(value); + else + decoded = value; + return true; +} + +bool Reader::decodeDouble(Token& token) { + Value decoded; + if (!decodeDouble(token, decoded)) + return false; + currentValue().swapPayload(decoded); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return true; +} + +bool Reader::decodeDouble(Token& token, Value& decoded) { + double value = 0; + JSONCPP_STRING buffer(token.start_, token.end_); + JSONCPP_ISTRINGSTREAM is(buffer); + if (!(is >> value)) + return addError("'" + JSONCPP_STRING(token.start_, token.end_) + + "' is not a number.", + token); + decoded = value; + return true; +} + +bool Reader::decodeString(Token& token) { + JSONCPP_STRING decoded_string; + if (!decodeString(token, decoded_string)) + return false; + Value decoded(decoded_string); + currentValue().swapPayload(decoded); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return true; +} + +bool Reader::decodeString(Token& token, JSONCPP_STRING& decoded) { + decoded.reserve(static_cast(token.end_ - token.start_ - 2)); + Location current = token.start_ + 1; // skip '"' + Location end = token.end_ - 1; // do not include '"' + while (current != end) { + Char c = *current++; + if (c == '"') + break; + else if (c == '\\') { + if (current == end) + return addError("Empty escape sequence in string", token, current); + Char escape = *current++; + switch (escape) { + case '"': + decoded += '"'; + break; + case '/': + decoded += '/'; + break; + case '\\': + decoded += '\\'; + break; + case 'b': + decoded += '\b'; + break; + case 'f': + decoded += '\f'; + break; + case 'n': + decoded += '\n'; + break; + case 'r': + decoded += '\r'; + break; + case 't': + decoded += '\t'; + break; + case 'u': { + unsigned int unicode; + if (!decodeUnicodeCodePoint(token, current, end, unicode)) + return false; + decoded += codePointToUTF8(unicode); + } break; + default: + return addError("Bad escape sequence in string", token, current); + } + } else { + decoded += c; + } + } + return true; +} + +bool Reader::decodeUnicodeCodePoint(Token& token, + Location& current, + Location end, + unsigned int& unicode) { + + if (!decodeUnicodeEscapeSequence(token, current, end, unicode)) + return false; + if (unicode >= 0xD800 && unicode <= 0xDBFF) { + // surrogate pairs + if (end - current < 6) + return addError( + "additional six characters expected to parse unicode surrogate pair.", + token, + current); + unsigned int surrogatePair; + if (*(current++) == '\\' && *(current++) == 'u') { + if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) { + unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF); + } else + return false; + } else + return addError("expecting another \\u token to begin the second half of " + "a unicode surrogate pair", + token, + current); + } + return true; +} + +bool Reader::decodeUnicodeEscapeSequence(Token& token, + Location& current, + Location end, + unsigned int& ret_unicode) { + if (end - current < 4) + return addError( + "Bad unicode escape sequence in string: four digits expected.", + token, + current); + int unicode = 0; + for (int index = 0; index < 4; ++index) { + Char c = *current++; + unicode *= 16; + if (c >= '0' && c <= '9') + unicode += c - '0'; + else if (c >= 'a' && c <= 'f') + unicode += c - 'a' + 10; + else if (c >= 'A' && c <= 'F') + unicode += c - 'A' + 10; + else + return addError( + "Bad unicode escape sequence in string: hexadecimal digit expected.", + token, + current); + } + ret_unicode = static_cast(unicode); + return true; +} + +bool +Reader::addError(const JSONCPP_STRING& message, Token& token, Location extra) { + ErrorInfo info; + info.token_ = token; + info.message_ = message; + info.extra_ = extra; + errors_.push_back(info); + return false; +} + +bool Reader::recoverFromError(TokenType skipUntilToken) { + size_t const errorCount = errors_.size(); + Token skip; + for (;;) { + if (!readToken(skip)) + errors_.resize(errorCount); // discard errors caused by recovery + if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream) + break; + } + errors_.resize(errorCount); + return false; +} + +bool Reader::addErrorAndRecover(const JSONCPP_STRING& message, + Token& token, + TokenType skipUntilToken) { + addError(message, token); + return recoverFromError(skipUntilToken); +} + +Value& Reader::currentValue() { return *(nodes_.top()); } + +Reader::Char Reader::getNextChar() { + if (current_ == end_) + return 0; + return *current_++; +} + +void Reader::getLocationLineAndColumn(Location location, + int& line, + int& column) const { + Location current = begin_; + Location lastLineStart = current; + line = 0; + while (current < location && current != end_) { + Char c = *current++; + if (c == '\r') { + if (*current == '\n') + ++current; + lastLineStart = current; + ++line; + } else if (c == '\n') { + lastLineStart = current; + ++line; + } + } + // column & line start at 1 + column = int(location - lastLineStart) + 1; + ++line; +} + +JSONCPP_STRING Reader::getLocationLineAndColumn(Location location) const { + int line, column; + getLocationLineAndColumn(location, line, column); + char buffer[18 + 16 + 16 + 1]; + snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column); + return buffer; +} + +// Deprecated. Preserved for backward compatibility +JSONCPP_STRING Reader::getFormatedErrorMessages() const { + return getFormattedErrorMessages(); +} + +JSONCPP_STRING Reader::getFormattedErrorMessages() const { + JSONCPP_STRING formattedMessage; + for (Errors::const_iterator itError = errors_.begin(); + itError != errors_.end(); + ++itError) { + const ErrorInfo& error = *itError; + formattedMessage += + "* " + getLocationLineAndColumn(error.token_.start_) + "\n"; + formattedMessage += " " + error.message_ + "\n"; + if (error.extra_) + formattedMessage += + "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n"; + } + return formattedMessage; +} + +std::vector Reader::getStructuredErrors() const { + std::vector allErrors; + for (Errors::const_iterator itError = errors_.begin(); + itError != errors_.end(); + ++itError) { + const ErrorInfo& error = *itError; + Reader::StructuredError structured; + structured.offset_start = error.token_.start_ - begin_; + structured.offset_limit = error.token_.end_ - begin_; + structured.message = error.message_; + allErrors.push_back(structured); + } + return allErrors; +} + +bool Reader::pushError(const Value& value, const JSONCPP_STRING& message) { + ptrdiff_t const length = end_ - begin_; + if(value.getOffsetStart() > length + || value.getOffsetLimit() > length) + return false; + Token token; + token.type_ = tokenError; + token.start_ = begin_ + value.getOffsetStart(); + token.end_ = end_ + value.getOffsetLimit(); + ErrorInfo info; + info.token_ = token; + info.message_ = message; + info.extra_ = 0; + errors_.push_back(info); + return true; +} + +bool Reader::pushError(const Value& value, const JSONCPP_STRING& message, const Value& extra) { + ptrdiff_t const length = end_ - begin_; + if(value.getOffsetStart() > length + || value.getOffsetLimit() > length + || extra.getOffsetLimit() > length) + return false; + Token token; + token.type_ = tokenError; + token.start_ = begin_ + value.getOffsetStart(); + token.end_ = begin_ + value.getOffsetLimit(); + ErrorInfo info; + info.token_ = token; + info.message_ = message; + info.extra_ = begin_ + extra.getOffsetStart(); + errors_.push_back(info); + return true; +} + +bool Reader::good() const { + return !errors_.size(); +} + +// exact copy of Features +class OurFeatures { +public: + static OurFeatures all(); + bool allowComments_; + bool strictRoot_; + bool allowDroppedNullPlaceholders_; + bool allowNumericKeys_; + bool allowSingleQuotes_; + bool failIfExtra_; + bool rejectDupKeys_; + bool allowSpecialFloats_; + int stackLimit_; +}; // OurFeatures + +// exact copy of Implementation of class Features +// //////////////////////////////// + +OurFeatures OurFeatures::all() { return OurFeatures(); } + +// Implementation of class Reader +// //////////////////////////////// + +// exact copy of Reader, renamed to OurReader +class OurReader { +public: + typedef char Char; + typedef const Char* Location; + struct StructuredError { + ptrdiff_t offset_start; + ptrdiff_t offset_limit; + JSONCPP_STRING message; + }; + + OurReader(OurFeatures const& features); + bool parse(const char* beginDoc, + const char* endDoc, + Value& root, + bool collectComments = true); + JSONCPP_STRING getFormattedErrorMessages() const; + std::vector getStructuredErrors() const; + bool pushError(const Value& value, const JSONCPP_STRING& message); + bool pushError(const Value& value, const JSONCPP_STRING& message, const Value& extra); + bool good() const; + +private: + OurReader(OurReader const&); // no impl + void operator=(OurReader const&); // no impl + + enum TokenType { + tokenEndOfStream = 0, + tokenObjectBegin, + tokenObjectEnd, + tokenArrayBegin, + tokenArrayEnd, + tokenString, + tokenNumber, + tokenTrue, + tokenFalse, + tokenNull, + tokenNaN, + tokenPosInf, + tokenNegInf, + tokenArraySeparator, + tokenMemberSeparator, + tokenComment, + tokenError + }; + + class Token { + public: + TokenType type_; + Location start_; + Location end_; + }; + + class ErrorInfo { + public: + Token token_; + JSONCPP_STRING message_; + Location extra_; + }; + + typedef std::deque Errors; + + bool readToken(Token& token); + void skipSpaces(); + bool match(Location pattern, int patternLength); + bool readComment(); + bool readCStyleComment(); + bool readCppStyleComment(); + bool readString(); + bool readStringSingleQuote(); + bool readNumber(bool checkInf); + bool readValue(); + bool readObject(Token& token); + bool readArray(Token& token); + bool decodeNumber(Token& token); + bool decodeNumber(Token& token, Value& decoded); + bool decodeString(Token& token); + bool decodeString(Token& token, JSONCPP_STRING& decoded); + bool decodeDouble(Token& token); + bool decodeDouble(Token& token, Value& decoded); + bool decodeUnicodeCodePoint(Token& token, + Location& current, + Location end, + unsigned int& unicode); + bool decodeUnicodeEscapeSequence(Token& token, + Location& current, + Location end, + unsigned int& unicode); + bool addError(const JSONCPP_STRING& message, Token& token, Location extra = 0); + bool recoverFromError(TokenType skipUntilToken); + bool addErrorAndRecover(const JSONCPP_STRING& message, + Token& token, + TokenType skipUntilToken); + void skipUntilSpace(); + Value& currentValue(); + Char getNextChar(); + void + getLocationLineAndColumn(Location location, int& line, int& column) const; + JSONCPP_STRING getLocationLineAndColumn(Location location) const; + void addComment(Location begin, Location end, CommentPlacement placement); + void skipCommentTokens(Token& token); + + typedef std::stack Nodes; + Nodes nodes_; + Errors errors_; + JSONCPP_STRING document_; + Location begin_; + Location end_; + Location current_; + Location lastValueEnd_; + Value* lastValue_; + JSONCPP_STRING commentsBefore_; + int stackDepth_; + + OurFeatures const features_; + bool collectComments_; +}; // OurReader + +// complete copy of Read impl, for OurReader + +OurReader::OurReader(OurFeatures const& features) + : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(), + lastValue_(), commentsBefore_(), + stackDepth_(0), + features_(features), collectComments_() { +} + +bool OurReader::parse(const char* beginDoc, + const char* endDoc, + Value& root, + bool collectComments) { + if (!features_.allowComments_) { + collectComments = false; + } + + begin_ = beginDoc; + end_ = endDoc; + collectComments_ = collectComments; + current_ = begin_; + lastValueEnd_ = 0; + lastValue_ = 0; + commentsBefore_ = ""; + errors_.clear(); + while (!nodes_.empty()) + nodes_.pop(); + nodes_.push(&root); + + stackDepth_ = 0; + bool successful = readValue(); + Token token; + skipCommentTokens(token); + if (features_.failIfExtra_) { + if (token.type_ != tokenError && token.type_ != tokenEndOfStream) { + addError("Extra non-whitespace after JSON value.", token); + return false; + } + } + if (collectComments_ && !commentsBefore_.empty()) + root.setComment(commentsBefore_, commentAfter); + if (features_.strictRoot_) { + if (!root.isArray() && !root.isObject()) { + // Set error location to start of doc, ideally should be first token found + // in doc + token.type_ = tokenError; + token.start_ = beginDoc; + token.end_ = endDoc; + addError( + "A valid JSON document must be either an array or an object value.", + token); + return false; + } + } + return successful; +} + +bool OurReader::readValue() { + if (stackDepth_ >= features_.stackLimit_) throwRuntimeError("Exceeded stackLimit in readValue()."); + ++stackDepth_; + Token token; + skipCommentTokens(token); + bool successful = true; + + if (collectComments_ && !commentsBefore_.empty()) { + currentValue().setComment(commentsBefore_, commentBefore); + commentsBefore_ = ""; + } + + switch (token.type_) { + case tokenObjectBegin: + successful = readObject(token); + currentValue().setOffsetLimit(current_ - begin_); + break; + case tokenArrayBegin: + successful = readArray(token); + currentValue().setOffsetLimit(current_ - begin_); + break; + case tokenNumber: + successful = decodeNumber(token); + break; + case tokenString: + successful = decodeString(token); + break; + case tokenTrue: + { + Value v(true); + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenFalse: + { + Value v(false); + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenNull: + { + Value v; + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenNaN: + { + Value v(std::numeric_limits::quiet_NaN()); + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenPosInf: + { + Value v(std::numeric_limits::infinity()); + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenNegInf: + { + Value v(-std::numeric_limits::infinity()); + currentValue().swapPayload(v); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + } + break; + case tokenArraySeparator: + case tokenObjectEnd: + case tokenArrayEnd: + if (features_.allowDroppedNullPlaceholders_) { + // "Un-read" the current token and mark the current value as a null + // token. + current_--; + Value v; + currentValue().swapPayload(v); + currentValue().setOffsetStart(current_ - begin_ - 1); + currentValue().setOffsetLimit(current_ - begin_); + break; + } // else, fall through ... + default: + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return addError("Syntax error: value, object or array expected.", token); + } + + if (collectComments_) { + lastValueEnd_ = current_; + lastValue_ = ¤tValue(); + } + + --stackDepth_; + return successful; +} + +void OurReader::skipCommentTokens(Token& token) { + if (features_.allowComments_) { + do { + readToken(token); + } while (token.type_ == tokenComment); + } else { + readToken(token); + } +} + +bool OurReader::readToken(Token& token) { + skipSpaces(); + token.start_ = current_; + Char c = getNextChar(); + bool ok = true; + switch (c) { + case '{': + token.type_ = tokenObjectBegin; + break; + case '}': + token.type_ = tokenObjectEnd; + break; + case '[': + token.type_ = tokenArrayBegin; + break; + case ']': + token.type_ = tokenArrayEnd; + break; + case '"': + token.type_ = tokenString; + ok = readString(); + break; + case '\'': + if (features_.allowSingleQuotes_) { + token.type_ = tokenString; + ok = readStringSingleQuote(); + break; + } // else continue + case '/': + token.type_ = tokenComment; + ok = readComment(); + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + token.type_ = tokenNumber; + readNumber(false); + break; + case '-': + if (readNumber(true)) { + token.type_ = tokenNumber; + } else { + token.type_ = tokenNegInf; + ok = features_.allowSpecialFloats_ && match("nfinity", 7); + } + break; + case 't': + token.type_ = tokenTrue; + ok = match("rue", 3); + break; + case 'f': + token.type_ = tokenFalse; + ok = match("alse", 4); + break; + case 'n': + token.type_ = tokenNull; + ok = match("ull", 3); + break; + case 'N': + if (features_.allowSpecialFloats_) { + token.type_ = tokenNaN; + ok = match("aN", 2); + } else { + ok = false; + } + break; + case 'I': + if (features_.allowSpecialFloats_) { + token.type_ = tokenPosInf; + ok = match("nfinity", 7); + } else { + ok = false; + } + break; + case ',': + token.type_ = tokenArraySeparator; + break; + case ':': + token.type_ = tokenMemberSeparator; + break; + case 0: + token.type_ = tokenEndOfStream; + break; + default: + ok = false; + break; + } + if (!ok) + token.type_ = tokenError; + token.end_ = current_; + return true; +} + +void OurReader::skipSpaces() { + while (current_ != end_) { + Char c = *current_; + if (c == ' ' || c == '\t' || c == '\r' || c == '\n') + ++current_; + else + break; + } +} + +bool OurReader::match(Location pattern, int patternLength) { + if (end_ - current_ < patternLength) + return false; + int index = patternLength; + while (index--) + if (current_[index] != pattern[index]) + return false; + current_ += patternLength; + return true; +} + +bool OurReader::readComment() { + Location commentBegin = current_ - 1; + Char c = getNextChar(); + bool successful = false; + if (c == '*') + successful = readCStyleComment(); + else if (c == '/') + successful = readCppStyleComment(); + if (!successful) + return false; + + if (collectComments_) { + CommentPlacement placement = commentBefore; + if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) { + if (c != '*' || !containsNewLine(commentBegin, current_)) + placement = commentAfterOnSameLine; + } + + addComment(commentBegin, current_, placement); + } + return true; +} + +void +OurReader::addComment(Location begin, Location end, CommentPlacement placement) { + assert(collectComments_); + const JSONCPP_STRING& normalized = normalizeEOL(begin, end); + if (placement == commentAfterOnSameLine) { + assert(lastValue_ != 0); + lastValue_->setComment(normalized, placement); + } else { + commentsBefore_ += normalized; + } +} + +bool OurReader::readCStyleComment() { + while (current_ != end_) { + Char c = getNextChar(); + if (c == '*' && *current_ == '/') + break; + } + return getNextChar() == '/'; +} + +bool OurReader::readCppStyleComment() { + while (current_ != end_) { + Char c = getNextChar(); + if (c == '\n') + break; + if (c == '\r') { + // Consume DOS EOL. It will be normalized in addComment. + if (current_ != end_ && *current_ == '\n') + getNextChar(); + // Break on Moc OS 9 EOL. + break; + } + } + return true; +} + +bool OurReader::readNumber(bool checkInf) { + const char *p = current_; + if (checkInf && p != end_ && *p == 'I') { + current_ = ++p; + return false; + } + char c = '0'; // stopgap for already consumed character + // integral part + while (c >= '0' && c <= '9') + c = (current_ = p) < end_ ? *p++ : 0; + // fractional part + if (c == '.') { + c = (current_ = p) < end_ ? *p++ : 0; + while (c >= '0' && c <= '9') + c = (current_ = p) < end_ ? *p++ : 0; + } + // exponential part + if (c == 'e' || c == 'E') { + c = (current_ = p) < end_ ? *p++ : 0; + if (c == '+' || c == '-') + c = (current_ = p) < end_ ? *p++ : 0; + while (c >= '0' && c <= '9') + c = (current_ = p) < end_ ? *p++ : 0; + } + return true; +} +bool OurReader::readString() { + Char c = 0; + while (current_ != end_) { + c = getNextChar(); + if (c == '\\') + getNextChar(); + else if (c == '"') + break; + } + return c == '"'; +} + + +bool OurReader::readStringSingleQuote() { + Char c = 0; + while (current_ != end_) { + c = getNextChar(); + if (c == '\\') + getNextChar(); + else if (c == '\'') + break; + } + return c == '\''; +} + +bool OurReader::readObject(Token& tokenStart) { + Token tokenName; + JSONCPP_STRING name; + Value init(objectValue); + currentValue().swapPayload(init); + currentValue().setOffsetStart(tokenStart.start_ - begin_); + while (readToken(tokenName)) { + bool initialTokenOk = true; + while (tokenName.type_ == tokenComment && initialTokenOk) + initialTokenOk = readToken(tokenName); + if (!initialTokenOk) + break; + if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object + return true; + name = ""; + if (tokenName.type_ == tokenString) { + if (!decodeString(tokenName, name)) + return recoverFromError(tokenObjectEnd); + } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) { + Value numberName; + if (!decodeNumber(tokenName, numberName)) + return recoverFromError(tokenObjectEnd); + name = numberName.asString(); + } else { + break; + } + + Token colon; + if (!readToken(colon) || colon.type_ != tokenMemberSeparator) { + return addErrorAndRecover( + "Missing ':' after object member name", colon, tokenObjectEnd); + } + if (name.length() >= (1U<<30)) throwRuntimeError("keylength >= 2^30"); + if (features_.rejectDupKeys_ && currentValue().isMember(name)) { + JSONCPP_STRING msg = "Duplicate key: '" + name + "'"; + return addErrorAndRecover( + msg, tokenName, tokenObjectEnd); + } + Value& value = currentValue()[name]; + nodes_.push(&value); + bool ok = readValue(); + nodes_.pop(); + if (!ok) // error already set + return recoverFromError(tokenObjectEnd); + + Token comma; + if (!readToken(comma) || + (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator && + comma.type_ != tokenComment)) { + return addErrorAndRecover( + "Missing ',' or '}' in object declaration", comma, tokenObjectEnd); + } + bool finalizeTokenOk = true; + while (comma.type_ == tokenComment && finalizeTokenOk) + finalizeTokenOk = readToken(comma); + if (comma.type_ == tokenObjectEnd) + return true; + } + return addErrorAndRecover( + "Missing '}' or object member name", tokenName, tokenObjectEnd); +} + +bool OurReader::readArray(Token& tokenStart) { + Value init(arrayValue); + currentValue().swapPayload(init); + currentValue().setOffsetStart(tokenStart.start_ - begin_); + skipSpaces(); + if (*current_ == ']') // empty array + { + Token endArray; + readToken(endArray); + return true; + } + int index = 0; + for (;;) { + Value& value = currentValue()[index++]; + nodes_.push(&value); + bool ok = readValue(); + nodes_.pop(); + if (!ok) // error already set + return recoverFromError(tokenArrayEnd); + + Token token; + // Accept Comment after last item in the array. + ok = readToken(token); + while (token.type_ == tokenComment && ok) { + ok = readToken(token); + } + bool badTokenType = + (token.type_ != tokenArraySeparator && token.type_ != tokenArrayEnd); + if (!ok || badTokenType) { + return addErrorAndRecover( + "Missing ',' or ']' in array declaration", token, tokenArrayEnd); + } + if (token.type_ == tokenArrayEnd) + break; + } + return true; +} + +bool OurReader::decodeNumber(Token& token) { + Value decoded; + if (!decodeNumber(token, decoded)) + return false; + currentValue().swapPayload(decoded); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return true; +} + +bool OurReader::decodeNumber(Token& token, Value& decoded) { + // Attempts to parse the number as an integer. If the number is + // larger than the maximum supported value of an integer then + // we decode the number as a double. + Location current = token.start_; + bool isNegative = *current == '-'; + if (isNegative) + ++current; + // TODO: Help the compiler do the div and mod at compile time or get rid of them. + Value::LargestUInt maxIntegerValue = + isNegative ? Value::LargestUInt(-Value::minLargestInt) + : Value::maxLargestUInt; + Value::LargestUInt threshold = maxIntegerValue / 10; + Value::LargestUInt value = 0; + while (current < token.end_) { + Char c = *current++; + if (c < '0' || c > '9') + return decodeDouble(token, decoded); + Value::UInt digit(static_cast(c - '0')); + if (value >= threshold) { + // We've hit or exceeded the max value divided by 10 (rounded down). If + // a) we've only just touched the limit, b) this is the last digit, and + // c) it's small enough to fit in that rounding delta, we're okay. + // Otherwise treat this number as a double to avoid overflow. + if (value > threshold || current != token.end_ || + digit > maxIntegerValue % 10) { + return decodeDouble(token, decoded); + } + } + value = value * 10 + digit; + } + if (isNegative) + decoded = -Value::LargestInt(value); + else if (value <= Value::LargestUInt(Value::maxInt)) + decoded = Value::LargestInt(value); + else + decoded = value; + return true; +} + +bool OurReader::decodeDouble(Token& token) { + Value decoded; + if (!decodeDouble(token, decoded)) + return false; + currentValue().swapPayload(decoded); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return true; +} + +bool OurReader::decodeDouble(Token& token, Value& decoded) { + double value = 0; + const int bufferSize = 32; + int count; + ptrdiff_t const length = token.end_ - token.start_; + + // Sanity check to avoid buffer overflow exploits. + if (length < 0) { + return addError("Unable to parse token length", token); + } + size_t const ulength = static_cast(length); + + // Avoid using a string constant for the format control string given to + // sscanf, as this can cause hard to debug crashes on OS X. See here for more + // info: + // + // http://developer.apple.com/library/mac/#DOCUMENTATION/DeveloperTools/gcc-4.0.1/gcc/Incompatibilities.html + char format[] = "%lf"; + + if (length <= bufferSize) { + Char buffer[bufferSize + 1]; + memcpy(buffer, token.start_, ulength); + buffer[length] = 0; + count = sscanf(buffer, format, &value); + } else { + JSONCPP_STRING buffer(token.start_, token.end_); + count = sscanf(buffer.c_str(), format, &value); + } + + if (count != 1) + return addError("'" + JSONCPP_STRING(token.start_, token.end_) + + "' is not a number.", + token); + decoded = value; + return true; +} + +bool OurReader::decodeString(Token& token) { + JSONCPP_STRING decoded_string; + if (!decodeString(token, decoded_string)) + return false; + Value decoded(decoded_string); + currentValue().swapPayload(decoded); + currentValue().setOffsetStart(token.start_ - begin_); + currentValue().setOffsetLimit(token.end_ - begin_); + return true; +} + +bool OurReader::decodeString(Token& token, JSONCPP_STRING& decoded) { + decoded.reserve(static_cast(token.end_ - token.start_ - 2)); + Location current = token.start_ + 1; // skip '"' + Location end = token.end_ - 1; // do not include '"' + while (current != end) { + Char c = *current++; + if (c == '"') + break; + else if (c == '\\') { + if (current == end) + return addError("Empty escape sequence in string", token, current); + Char escape = *current++; + switch (escape) { + case '"': + decoded += '"'; + break; + case '/': + decoded += '/'; + break; + case '\\': + decoded += '\\'; + break; + case 'b': + decoded += '\b'; + break; + case 'f': + decoded += '\f'; + break; + case 'n': + decoded += '\n'; + break; + case 'r': + decoded += '\r'; + break; + case 't': + decoded += '\t'; + break; + case 'u': { + unsigned int unicode; + if (!decodeUnicodeCodePoint(token, current, end, unicode)) + return false; + decoded += codePointToUTF8(unicode); + } break; + default: + return addError("Bad escape sequence in string", token, current); + } + } else { + decoded += c; + } + } + return true; +} + +bool OurReader::decodeUnicodeCodePoint(Token& token, + Location& current, + Location end, + unsigned int& unicode) { + + if (!decodeUnicodeEscapeSequence(token, current, end, unicode)) + return false; + if (unicode >= 0xD800 && unicode <= 0xDBFF) { + // surrogate pairs + if (end - current < 6) + return addError( + "additional six characters expected to parse unicode surrogate pair.", + token, + current); + unsigned int surrogatePair; + if (*(current++) == '\\' && *(current++) == 'u') { + if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) { + unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF); + } else + return false; + } else + return addError("expecting another \\u token to begin the second half of " + "a unicode surrogate pair", + token, + current); + } + return true; +} + +bool OurReader::decodeUnicodeEscapeSequence(Token& token, + Location& current, + Location end, + unsigned int& ret_unicode) { + if (end - current < 4) + return addError( + "Bad unicode escape sequence in string: four digits expected.", + token, + current); + int unicode = 0; + for (int index = 0; index < 4; ++index) { + Char c = *current++; + unicode *= 16; + if (c >= '0' && c <= '9') + unicode += c - '0'; + else if (c >= 'a' && c <= 'f') + unicode += c - 'a' + 10; + else if (c >= 'A' && c <= 'F') + unicode += c - 'A' + 10; + else + return addError( + "Bad unicode escape sequence in string: hexadecimal digit expected.", + token, + current); + } + ret_unicode = static_cast(unicode); + return true; +} + +bool +OurReader::addError(const JSONCPP_STRING& message, Token& token, Location extra) { + ErrorInfo info; + info.token_ = token; + info.message_ = message; + info.extra_ = extra; + errors_.push_back(info); + return false; +} + +bool OurReader::recoverFromError(TokenType skipUntilToken) { + size_t errorCount = errors_.size(); + Token skip; + for (;;) { + if (!readToken(skip)) + errors_.resize(errorCount); // discard errors caused by recovery + if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream) + break; + } + errors_.resize(errorCount); + return false; +} + +bool OurReader::addErrorAndRecover(const JSONCPP_STRING& message, + Token& token, + TokenType skipUntilToken) { + addError(message, token); + return recoverFromError(skipUntilToken); +} + +Value& OurReader::currentValue() { return *(nodes_.top()); } + +OurReader::Char OurReader::getNextChar() { + if (current_ == end_) + return 0; + return *current_++; +} + +void OurReader::getLocationLineAndColumn(Location location, + int& line, + int& column) const { + Location current = begin_; + Location lastLineStart = current; + line = 0; + while (current < location && current != end_) { + Char c = *current++; + if (c == '\r') { + if (*current == '\n') + ++current; + lastLineStart = current; + ++line; + } else if (c == '\n') { + lastLineStart = current; + ++line; + } + } + // column & line start at 1 + column = int(location - lastLineStart) + 1; + ++line; +} + +JSONCPP_STRING OurReader::getLocationLineAndColumn(Location location) const { + int line, column; + getLocationLineAndColumn(location, line, column); + char buffer[18 + 16 + 16 + 1]; + snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column); + return buffer; +} + +JSONCPP_STRING OurReader::getFormattedErrorMessages() const { + JSONCPP_STRING formattedMessage; + for (Errors::const_iterator itError = errors_.begin(); + itError != errors_.end(); + ++itError) { + const ErrorInfo& error = *itError; + formattedMessage += + "* " + getLocationLineAndColumn(error.token_.start_) + "\n"; + formattedMessage += " " + error.message_ + "\n"; + if (error.extra_) + formattedMessage += + "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n"; + } + return formattedMessage; +} + +std::vector OurReader::getStructuredErrors() const { + std::vector allErrors; + for (Errors::const_iterator itError = errors_.begin(); + itError != errors_.end(); + ++itError) { + const ErrorInfo& error = *itError; + OurReader::StructuredError structured; + structured.offset_start = error.token_.start_ - begin_; + structured.offset_limit = error.token_.end_ - begin_; + structured.message = error.message_; + allErrors.push_back(structured); + } + return allErrors; +} + +bool OurReader::pushError(const Value& value, const JSONCPP_STRING& message) { + ptrdiff_t length = end_ - begin_; + if(value.getOffsetStart() > length + || value.getOffsetLimit() > length) + return false; + Token token; + token.type_ = tokenError; + token.start_ = begin_ + value.getOffsetStart(); + token.end_ = end_ + value.getOffsetLimit(); + ErrorInfo info; + info.token_ = token; + info.message_ = message; + info.extra_ = 0; + errors_.push_back(info); + return true; +} + +bool OurReader::pushError(const Value& value, const JSONCPP_STRING& message, const Value& extra) { + ptrdiff_t length = end_ - begin_; + if(value.getOffsetStart() > length + || value.getOffsetLimit() > length + || extra.getOffsetLimit() > length) + return false; + Token token; + token.type_ = tokenError; + token.start_ = begin_ + value.getOffsetStart(); + token.end_ = begin_ + value.getOffsetLimit(); + ErrorInfo info; + info.token_ = token; + info.message_ = message; + info.extra_ = begin_ + extra.getOffsetStart(); + errors_.push_back(info); + return true; +} + +bool OurReader::good() const { + return !errors_.size(); +} + + +class OurCharReader : public CharReader { + bool const collectComments_; + OurReader reader_; +public: + OurCharReader( + bool collectComments, + OurFeatures const& features) + : collectComments_(collectComments) + , reader_(features) + {} + bool parse( + char const* beginDoc, char const* endDoc, + Value* root, JSONCPP_STRING* errs) JSONCPP_OVERRIDE { + bool ok = reader_.parse(beginDoc, endDoc, *root, collectComments_); + if (errs) { + *errs = reader_.getFormattedErrorMessages(); + } + return ok; + } +}; + +CharReaderBuilder::CharReaderBuilder() +{ + setDefaults(&settings_); +} +CharReaderBuilder::~CharReaderBuilder() +{} +CharReader* CharReaderBuilder::newCharReader() const +{ + bool collectComments = settings_["collectComments"].asBool(); + OurFeatures features = OurFeatures::all(); + features.allowComments_ = settings_["allowComments"].asBool(); + features.strictRoot_ = settings_["strictRoot"].asBool(); + features.allowDroppedNullPlaceholders_ = settings_["allowDroppedNullPlaceholders"].asBool(); + features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool(); + features.allowSingleQuotes_ = settings_["allowSingleQuotes"].asBool(); + features.stackLimit_ = settings_["stackLimit"].asInt(); + features.failIfExtra_ = settings_["failIfExtra"].asBool(); + features.rejectDupKeys_ = settings_["rejectDupKeys"].asBool(); + features.allowSpecialFloats_ = settings_["allowSpecialFloats"].asBool(); + return new OurCharReader(collectComments, features); +} +static void getValidReaderKeys(std::set* valid_keys) +{ + valid_keys->clear(); + valid_keys->insert("collectComments"); + valid_keys->insert("allowComments"); + valid_keys->insert("strictRoot"); + valid_keys->insert("allowDroppedNullPlaceholders"); + valid_keys->insert("allowNumericKeys"); + valid_keys->insert("allowSingleQuotes"); + valid_keys->insert("stackLimit"); + valid_keys->insert("failIfExtra"); + valid_keys->insert("rejectDupKeys"); + valid_keys->insert("allowSpecialFloats"); +} +bool CharReaderBuilder::validate(Json::Value* invalid) const +{ + Json::Value my_invalid; + if (!invalid) invalid = &my_invalid; // so we do not need to test for NULL + Json::Value& inv = *invalid; + std::set valid_keys; + getValidReaderKeys(&valid_keys); + Value::Members keys = settings_.getMemberNames(); + size_t n = keys.size(); + for (size_t i = 0; i < n; ++i) { + JSONCPP_STRING const& key = keys[i]; + if (valid_keys.find(key) == valid_keys.end()) { + inv[key] = settings_[key]; + } + } + return 0u == inv.size(); +} +Value& CharReaderBuilder::operator[](JSONCPP_STRING key) +{ + return settings_[key]; +} +// static +void CharReaderBuilder::strictMode(Json::Value* settings) +{ +//! [CharReaderBuilderStrictMode] + (*settings)["allowComments"] = false; + (*settings)["strictRoot"] = true; + (*settings)["allowDroppedNullPlaceholders"] = false; + (*settings)["allowNumericKeys"] = false; + (*settings)["allowSingleQuotes"] = false; + (*settings)["stackLimit"] = 1000; + (*settings)["failIfExtra"] = true; + (*settings)["rejectDupKeys"] = true; + (*settings)["allowSpecialFloats"] = false; +//! [CharReaderBuilderStrictMode] +} +// static +void CharReaderBuilder::setDefaults(Json::Value* settings) +{ +//! [CharReaderBuilderDefaults] + (*settings)["collectComments"] = true; + (*settings)["allowComments"] = true; + (*settings)["strictRoot"] = false; + (*settings)["allowDroppedNullPlaceholders"] = false; + (*settings)["allowNumericKeys"] = false; + (*settings)["allowSingleQuotes"] = false; + (*settings)["stackLimit"] = 1000; + (*settings)["failIfExtra"] = false; + (*settings)["rejectDupKeys"] = false; + (*settings)["allowSpecialFloats"] = false; +//! [CharReaderBuilderDefaults] +} + +////////////////////////////////// +// global functions + +bool parseFromStream( + CharReader::Factory const& fact, JSONCPP_ISTREAM& sin, + Value* root, JSONCPP_STRING* errs) +{ + JSONCPP_OSTRINGSTREAM ssin; + ssin << sin.rdbuf(); + JSONCPP_STRING doc = ssin.str(); + char const* begin = doc.data(); + char const* end = begin + doc.size(); + // Note that we do not actually need a null-terminator. + CharReaderPtr const reader(fact.newCharReader()); + return reader->parse(begin, end, root, errs); +} + +JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM& sin, Value& root) { + CharReaderBuilder b; + JSONCPP_STRING errs; + bool ok = parseFromStream(b, sin, &root, &errs); + if (!ok) { + fprintf(stderr, + "Error from reader: %s", + errs.c_str()); + + throwRuntimeError(errs); + } + return sin; +} + +} // namespace Json + +// ////////////////////////////////////////////////////////////////////// +// End of content of file: src/lib_json/json_reader.cpp +// ////////////////////////////////////////////////////////////////////// + + + + + + +// ////////////////////////////////////////////////////////////////////// +// Beginning of content of file: src/lib_json/json_valueiterator.inl +// ////////////////////////////////////////////////////////////////////// + +// Copyright 2007-2010 Baptiste Lepilleur +// Distributed under MIT license, or public domain if desired and +// recognized in your jurisdiction. +// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE + +// included by json_value.cpp + +namespace Json { + +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// class ValueIteratorBase +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// + +ValueIteratorBase::ValueIteratorBase() + : current_(), isNull_(true) { +} + +ValueIteratorBase::ValueIteratorBase( + const Value::ObjectValues::iterator& current) + : current_(current), isNull_(false) {} + +Value& ValueIteratorBase::deref() const { + return current_->second; +} + +void ValueIteratorBase::increment() { + ++current_; +} + +void ValueIteratorBase::decrement() { + --current_; +} + +ValueIteratorBase::difference_type +ValueIteratorBase::computeDistance(const SelfType& other) const { +#ifdef JSON_USE_CPPTL_SMALLMAP + return other.current_ - current_; +#else + // Iterator for null value are initialized using the default + // constructor, which initialize current_ to the default + // std::map::iterator. As begin() and end() are two instance + // of the default std::map::iterator, they can not be compared. + // To allow this, we handle this comparison specifically. + if (isNull_ && other.isNull_) { + return 0; + } + + // Usage of std::distance is not portable (does not compile with Sun Studio 12 + // RogueWave STL, + // which is the one used by default). + // Using a portable hand-made version for non random iterator instead: + // return difference_type( std::distance( current_, other.current_ ) ); + difference_type myDistance = 0; + for (Value::ObjectValues::iterator it = current_; it != other.current_; + ++it) { + ++myDistance; + } + return myDistance; +#endif +} + +bool ValueIteratorBase::isEqual(const SelfType& other) const { + if (isNull_) { + return other.isNull_; + } + return current_ == other.current_; +} + +void ValueIteratorBase::copy(const SelfType& other) { + current_ = other.current_; + isNull_ = other.isNull_; +} + +Value ValueIteratorBase::key() const { + const Value::CZString czstring = (*current_).first; + if (czstring.data()) { + if (czstring.isStaticString()) + return Value(StaticString(czstring.data())); + return Value(czstring.data(), czstring.data() + czstring.length()); + } + return Value(czstring.index()); +} + +UInt ValueIteratorBase::index() const { + const Value::CZString czstring = (*current_).first; + if (!czstring.data()) + return czstring.index(); + return Value::UInt(-1); +} + +JSONCPP_STRING ValueIteratorBase::name() const { + char const* keey; + char const* end; + keey = memberName(&end); + if (!keey) return JSONCPP_STRING(); + return JSONCPP_STRING(keey, end); +} + +char const* ValueIteratorBase::memberName() const { + const char* cname = (*current_).first.data(); + return cname ? cname : ""; +} + +char const* ValueIteratorBase::memberName(char const** end) const { + const char* cname = (*current_).first.data(); + if (!cname) { + *end = NULL; + return NULL; + } + *end = cname + (*current_).first.length(); + return cname; +} + +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// class ValueConstIterator +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// + +ValueConstIterator::ValueConstIterator() {} + +ValueConstIterator::ValueConstIterator( + const Value::ObjectValues::iterator& current) + : ValueIteratorBase(current) {} + +ValueConstIterator::ValueConstIterator(ValueIterator const& other) + : ValueIteratorBase(other) {} + +ValueConstIterator& ValueConstIterator:: +operator=(const ValueIteratorBase& other) { + copy(other); + return *this; +} + +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// class ValueIterator +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// + +ValueIterator::ValueIterator() {} + +ValueIterator::ValueIterator(const Value::ObjectValues::iterator& current) + : ValueIteratorBase(current) {} + +ValueIterator::ValueIterator(const ValueConstIterator& other) + : ValueIteratorBase(other) { + throwRuntimeError("ConstIterator to Iterator should never be allowed."); +} + +ValueIterator::ValueIterator(const ValueIterator& other) + : ValueIteratorBase(other) {} + +ValueIterator& ValueIterator::operator=(const SelfType& other) { + copy(other); + return *this; +} + +} // namespace Json + +// ////////////////////////////////////////////////////////////////////// +// End of content of file: src/lib_json/json_valueiterator.inl +// ////////////////////////////////////////////////////////////////////// + + + + + + +// ////////////////////////////////////////////////////////////////////// +// Beginning of content of file: src/lib_json/json_value.cpp +// ////////////////////////////////////////////////////////////////////// + +// Copyright 2011 Baptiste Lepilleur +// Distributed under MIT license, or public domain if desired and +// recognized in your jurisdiction. +// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE + +#if !defined(JSON_IS_AMALGAMATION) +#include +#include +#include +#endif // if !defined(JSON_IS_AMALGAMATION) +#include +#include +#include +#include +#include +#ifdef JSON_USE_CPPTL +#include +#endif +#include // size_t +#include // min() + +#define JSON_ASSERT_UNREACHABLE assert(false) + +namespace Json { + +// This is a walkaround to avoid the static initialization of Value::null. +// kNull must be word-aligned to avoid crashing on ARM. We use an alignment of +// 8 (instead of 4) as a bit of future-proofing. +#if defined(__ARMEL__) +#define ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment))) +#else +#define ALIGNAS(byte_alignment) +#endif +static const unsigned char ALIGNAS(8) kNull[sizeof(Value)] = { 0 }; +const unsigned char& kNullRef = kNull[0]; +const Value& Value::null = reinterpret_cast(kNullRef); +const Value& Value::nullRef = null; + +const Int Value::minInt = Int(~(UInt(-1) / 2)); +const Int Value::maxInt = Int(UInt(-1) / 2); +const UInt Value::maxUInt = UInt(-1); +#if defined(JSON_HAS_INT64) +const Int64 Value::minInt64 = Int64(~(UInt64(-1) / 2)); +const Int64 Value::maxInt64 = Int64(UInt64(-1) / 2); +const UInt64 Value::maxUInt64 = UInt64(-1); +// The constant is hard-coded because some compiler have trouble +// converting Value::maxUInt64 to a double correctly (AIX/xlC). +// Assumes that UInt64 is a 64 bits integer. +static const double maxUInt64AsDouble = 18446744073709551615.0; +#endif // defined(JSON_HAS_INT64) +const LargestInt Value::minLargestInt = LargestInt(~(LargestUInt(-1) / 2)); +const LargestInt Value::maxLargestInt = LargestInt(LargestUInt(-1) / 2); +const LargestUInt Value::maxLargestUInt = LargestUInt(-1); + +#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) +template +static inline bool InRange(double d, T min, U max) { + // The casts can lose precision, but we are looking only for + // an approximate range. Might fail on edge cases though. ~cdunn + //return d >= static_cast(min) && d <= static_cast(max); + return d >= min && d <= max; +} +#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) +static inline double integerToDouble(Json::UInt64 value) { + return static_cast(Int64(value / 2)) * 2.0 + static_cast(Int64(value & 1)); +} + +template static inline double integerToDouble(T value) { + return static_cast(value); +} + +template +static inline bool InRange(double d, T min, U max) { + return d >= integerToDouble(min) && d <= integerToDouble(max); +} +#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) + +/** Duplicates the specified string value. + * @param value Pointer to the string to duplicate. Must be zero-terminated if + * length is "unknown". + * @param length Length of the value. if equals to unknown, then it will be + * computed using strlen(value). + * @return Pointer on the duplicate instance of string. + */ +static inline char* duplicateStringValue(const char* value, + size_t length) +{ + // Avoid an integer overflow in the call to malloc below by limiting length + // to a sane value. + if (length >= static_cast(Value::maxInt)) + length = Value::maxInt - 1; + + char* newString = static_cast(malloc(length + 1)); + if (newString == NULL) { + throwRuntimeError( + "in Json::Value::duplicateStringValue(): " + "Failed to allocate string value buffer"); + } + memcpy(newString, value, length); + newString[length] = 0; + return newString; +} + +/* Record the length as a prefix. + */ +static inline char* duplicateAndPrefixStringValue( + const char* value, + unsigned int length) +{ + // Avoid an integer overflow in the call to malloc below by limiting length + // to a sane value. + JSON_ASSERT_MESSAGE(length <= static_cast(Value::maxInt) - sizeof(unsigned) - 1U, + "in Json::Value::duplicateAndPrefixStringValue(): " + "length too big for prefixing"); + unsigned actualLength = length + static_cast(sizeof(unsigned)) + 1U; + char* newString = static_cast(malloc(actualLength)); + if (newString == 0) { + throwRuntimeError( + "in Json::Value::duplicateAndPrefixStringValue(): " + "Failed to allocate string value buffer"); + } + *reinterpret_cast(newString) = length; + memcpy(newString + sizeof(unsigned), value, length); + newString[actualLength - 1U] = 0; // to avoid buffer over-run accidents by users later + return newString; +} +inline static void decodePrefixedString( + bool isPrefixed, char const* prefixed, + unsigned* length, char const** value) +{ + if (!isPrefixed) { + *length = static_cast(strlen(prefixed)); + *value = prefixed; + } else { + *length = *reinterpret_cast(prefixed); + *value = prefixed + sizeof(unsigned); + } +} +/** Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue(). + */ +#if JSONCPP_USING_SECURE_MEMORY +static inline void releasePrefixedStringValue(char* value) { + unsigned length = 0; + char const* valueDecoded; + decodePrefixedString(true, value, &length, &valueDecoded); + size_t const size = sizeof(unsigned) + length + 1U; + memset(value, 0, size); + free(value); +} +static inline void releaseStringValue(char* value, unsigned length) { + // length==0 => we allocated the strings memory + size_t size = (length==0) ? strlen(value) : length; + memset(value, 0, size); + free(value); +} +#else // !JSONCPP_USING_SECURE_MEMORY +static inline void releasePrefixedStringValue(char* value) { + free(value); +} +static inline void releaseStringValue(char* value, unsigned length) { + free(value); +} +#endif // JSONCPP_USING_SECURE_MEMORY + +} // namespace Json + +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ValueInternals... +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +#if !defined(JSON_IS_AMALGAMATION) + +#include "json_valueiterator.inl" +#endif // if !defined(JSON_IS_AMALGAMATION) + +namespace Json { + +Exception::Exception(JSONCPP_STRING const& msg) + : msg_(msg) +{} +Exception::~Exception() throw() +{} +char const* Exception::what() const throw() +{ + return msg_.c_str(); +} +RuntimeError::RuntimeError(JSONCPP_STRING const& msg) + : Exception(msg) +{} +LogicError::LogicError(JSONCPP_STRING const& msg) + : Exception(msg) +{} +JSONCPP_NORETURN void throwRuntimeError(JSONCPP_STRING const& msg) +{ + throw RuntimeError(msg); +} +JSONCPP_NORETURN void throwLogicError(JSONCPP_STRING const& msg) +{ + throw LogicError(msg); +} + +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// class Value::CommentInfo +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// + +Value::CommentInfo::CommentInfo() : comment_(0) +{} + +Value::CommentInfo::~CommentInfo() { + if (comment_) + releaseStringValue(comment_, 0u); +} + +void Value::CommentInfo::setComment(const char* text, size_t len) { + if (comment_) { + releaseStringValue(comment_, 0u); + comment_ = 0; + } + JSON_ASSERT(text != 0); + JSON_ASSERT_MESSAGE( + text[0] == '\0' || text[0] == '/', + "in Json::Value::setComment(): Comments must start with /"); + // It seems that /**/ style comments are acceptable as well. + comment_ = duplicateStringValue(text, len); +} + +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// class Value::CZString +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// + +// Notes: policy_ indicates if the string was allocated when +// a string is stored. + +Value::CZString::CZString(ArrayIndex aindex) : cstr_(0), index_(aindex) {} + +Value::CZString::CZString(char const* str, unsigned ulength, DuplicationPolicy allocate) + : cstr_(str) { + // allocate != duplicate + storage_.policy_ = allocate & 0x3; + storage_.length_ = ulength & 0x3FFFFFFF; +} + +Value::CZString::CZString(const CZString& other) { + cstr_ = (other.storage_.policy_ != noDuplication && other.cstr_ != 0 + ? duplicateStringValue(other.cstr_, other.storage_.length_) + : other.cstr_); + storage_.policy_ = static_cast(other.cstr_ + ? (static_cast(other.storage_.policy_) == noDuplication + ? noDuplication : duplicate) + : static_cast(other.storage_.policy_)) & 3U; + storage_.length_ = other.storage_.length_; +} + +#if JSON_HAS_RVALUE_REFERENCES +Value::CZString::CZString(CZString&& other) + : cstr_(other.cstr_), index_(other.index_) { + other.cstr_ = nullptr; +} +#endif + +Value::CZString::~CZString() { + if (cstr_ && storage_.policy_ == duplicate) { + releaseStringValue(const_cast(cstr_), storage_.length_ + 1u); //+1 for null terminating character for sake of completeness but not actually necessary + } +} + +void Value::CZString::swap(CZString& other) { + std::swap(cstr_, other.cstr_); + std::swap(index_, other.index_); +} + +Value::CZString& Value::CZString::operator=(CZString other) { + swap(other); + return *this; +} + +bool Value::CZString::operator<(const CZString& other) const { + if (!cstr_) return index_ < other.index_; + //return strcmp(cstr_, other.cstr_) < 0; + // Assume both are strings. + unsigned this_len = this->storage_.length_; + unsigned other_len = other.storage_.length_; + unsigned min_len = std::min(this_len, other_len); + JSON_ASSERT(this->cstr_ && other.cstr_); + int comp = memcmp(this->cstr_, other.cstr_, min_len); + if (comp < 0) return true; + if (comp > 0) return false; + return (this_len < other_len); +} + +bool Value::CZString::operator==(const CZString& other) const { + if (!cstr_) return index_ == other.index_; + //return strcmp(cstr_, other.cstr_) == 0; + // Assume both are strings. + unsigned this_len = this->storage_.length_; + unsigned other_len = other.storage_.length_; + if (this_len != other_len) return false; + JSON_ASSERT(this->cstr_ && other.cstr_); + int comp = memcmp(this->cstr_, other.cstr_, this_len); + return comp == 0; +} + +ArrayIndex Value::CZString::index() const { return index_; } + +//const char* Value::CZString::c_str() const { return cstr_; } +const char* Value::CZString::data() const { return cstr_; } +unsigned Value::CZString::length() const { return storage_.length_; } +bool Value::CZString::isStaticString() const { return storage_.policy_ == noDuplication; } + +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// class Value::Value +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////// + +/*! \internal Default constructor initialization must be equivalent to: + * memset( this, 0, sizeof(Value) ) + * This optimization is used in ValueInternalMap fast allocator. + */ +Value::Value(ValueType vtype) { + initBasic(vtype); + switch (vtype) { + case nullValue: + break; + case intValue: + case uintValue: + value_.int_ = 0; + break; + case realValue: + value_.real_ = 0.0; + break; + case stringValue: + value_.string_ = 0; + break; + case arrayValue: + case objectValue: + value_.map_ = new ObjectValues(); + break; + case booleanValue: + value_.bool_ = false; + break; + default: + JSON_ASSERT_UNREACHABLE; + } +} + +Value::Value(Int value) { + initBasic(intValue); + value_.int_ = value; +} + +Value::Value(UInt value) { + initBasic(uintValue); + value_.uint_ = value; +} +#if defined(JSON_HAS_INT64) +Value::Value(Int64 value) { + initBasic(intValue); + value_.int_ = value; +} +Value::Value(UInt64 value) { + initBasic(uintValue); + value_.uint_ = value; +} +#endif // defined(JSON_HAS_INT64) + +Value::Value(double value) { + initBasic(realValue); + value_.real_ = value; +} + +Value::Value(const char* value) { + initBasic(stringValue, true); + value_.string_ = duplicateAndPrefixStringValue(value, static_cast(strlen(value))); +} + +Value::Value(const char* beginValue, const char* endValue) { + initBasic(stringValue, true); + value_.string_ = + duplicateAndPrefixStringValue(beginValue, static_cast(endValue - beginValue)); +} + +Value::Value(const JSONCPP_STRING& value) { + initBasic(stringValue, true); + value_.string_ = + duplicateAndPrefixStringValue(value.data(), static_cast(value.length())); +} + +Value::Value(const StaticString& value) { + initBasic(stringValue); + value_.string_ = const_cast(value.c_str()); +} + +#ifdef JSON_USE_CPPTL +Value::Value(const CppTL::ConstString& value) { + initBasic(stringValue, true); + value_.string_ = duplicateAndPrefixStringValue(value, static_cast(value.length())); +} +#endif + +Value::Value(bool value) { + initBasic(booleanValue); + value_.bool_ = value; +} + +Value::Value(Value const& other) + : type_(other.type_), allocated_(false) + , + comments_(0), start_(other.start_), limit_(other.limit_) +{ + switch (type_) { + case nullValue: + case intValue: + case uintValue: + case realValue: + case booleanValue: + value_ = other.value_; + break; + case stringValue: + if (other.value_.string_ && other.allocated_) { + unsigned len; + char const* str; + decodePrefixedString(other.allocated_, other.value_.string_, + &len, &str); + value_.string_ = duplicateAndPrefixStringValue(str, len); + allocated_ = true; + } else { + value_.string_ = other.value_.string_; + allocated_ = false; + } + break; + case arrayValue: + case objectValue: + value_.map_ = new ObjectValues(*other.value_.map_); + break; + default: + JSON_ASSERT_UNREACHABLE; + } + if (other.comments_) { + comments_ = new CommentInfo[numberOfCommentPlacement]; + for (int comment = 0; comment < numberOfCommentPlacement; ++comment) { + const CommentInfo& otherComment = other.comments_[comment]; + if (otherComment.comment_) + comments_[comment].setComment( + otherComment.comment_, strlen(otherComment.comment_)); + } + } +} + +#if JSON_HAS_RVALUE_REFERENCES +// Move constructor +Value::Value(Value&& other) { + initBasic(nullValue); + swap(other); +} +#endif + +Value::~Value() { + switch (type_) { + case nullValue: + case intValue: + case uintValue: + case realValue: + case booleanValue: + break; + case stringValue: + if (allocated_) + releasePrefixedStringValue(value_.string_); + break; + case arrayValue: + case objectValue: + delete value_.map_; + break; + default: + JSON_ASSERT_UNREACHABLE; + } + + if (comments_) + delete[] comments_; + + value_.uint_ = 0; +} + +Value& Value::operator=(Value other) { + swap(other); + return *this; +} + +void Value::swapPayload(Value& other) { + ValueType temp = type_; + type_ = other.type_; + other.type_ = temp; + std::swap(value_, other.value_); + int temp2 = allocated_; + allocated_ = other.allocated_; + other.allocated_ = temp2 & 0x1; +} + +void Value::swap(Value& other) { + swapPayload(other); + std::swap(comments_, other.comments_); + std::swap(start_, other.start_); + std::swap(limit_, other.limit_); +} + +ValueType Value::type() const { return type_; } + +int Value::compare(const Value& other) const { + if (*this < other) + return -1; + if (*this > other) + return 1; + return 0; +} + +bool Value::operator<(const Value& other) const { + int typeDelta = type_ - other.type_; + if (typeDelta) + return typeDelta < 0 ? true : false; + switch (type_) { + case nullValue: + return false; + case intValue: + return value_.int_ < other.value_.int_; + case uintValue: + return value_.uint_ < other.value_.uint_; + case realValue: + return value_.real_ < other.value_.real_; + case booleanValue: + return value_.bool_ < other.value_.bool_; + case stringValue: + { + if ((value_.string_ == 0) || (other.value_.string_ == 0)) { + if (other.value_.string_) return true; + else return false; + } + unsigned this_len; + unsigned other_len; + char const* this_str; + char const* other_str; + decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); + decodePrefixedString(other.allocated_, other.value_.string_, &other_len, &other_str); + unsigned min_len = std::min(this_len, other_len); + JSON_ASSERT(this_str && other_str); + int comp = memcmp(this_str, other_str, min_len); + if (comp < 0) return true; + if (comp > 0) return false; + return (this_len < other_len); + } + case arrayValue: + case objectValue: { + int delta = int(value_.map_->size() - other.value_.map_->size()); + if (delta) + return delta < 0; + return (*value_.map_) < (*other.value_.map_); + } + default: + JSON_ASSERT_UNREACHABLE; + } + return false; // unreachable +} + +bool Value::operator<=(const Value& other) const { return !(other < *this); } + +bool Value::operator>=(const Value& other) const { return !(*this < other); } + +bool Value::operator>(const Value& other) const { return other < *this; } + +bool Value::operator==(const Value& other) const { + // if ( type_ != other.type_ ) + // GCC 2.95.3 says: + // attempt to take address of bit-field structure member `Json::Value::type_' + // Beats me, but a temp solves the problem. + int temp = other.type_; + if (type_ != temp) + return false; + switch (type_) { + case nullValue: + return true; + case intValue: + return value_.int_ == other.value_.int_; + case uintValue: + return value_.uint_ == other.value_.uint_; + case realValue: + return value_.real_ == other.value_.real_; + case booleanValue: + return value_.bool_ == other.value_.bool_; + case stringValue: + { + if ((value_.string_ == 0) || (other.value_.string_ == 0)) { + return (value_.string_ == other.value_.string_); + } + unsigned this_len; + unsigned other_len; + char const* this_str; + char const* other_str; + decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); + decodePrefixedString(other.allocated_, other.value_.string_, &other_len, &other_str); + if (this_len != other_len) return false; + JSON_ASSERT(this_str && other_str); + int comp = memcmp(this_str, other_str, this_len); + return comp == 0; + } + case arrayValue: + case objectValue: + return value_.map_->size() == other.value_.map_->size() && + (*value_.map_) == (*other.value_.map_); + default: + JSON_ASSERT_UNREACHABLE; + } + return false; // unreachable +} + +bool Value::operator!=(const Value& other) const { return !(*this == other); } + +const char* Value::asCString() const { + JSON_ASSERT_MESSAGE(type_ == stringValue, + "in Json::Value::asCString(): requires stringValue"); + if (value_.string_ == 0) return 0; + unsigned this_len; + char const* this_str; + decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); + return this_str; +} + +#if JSONCPP_USING_SECURE_MEMORY +unsigned Value::getCStringLength() const { + JSON_ASSERT_MESSAGE(type_ == stringValue, + "in Json::Value::asCString(): requires stringValue"); + if (value_.string_ == 0) return 0; + unsigned this_len; + char const* this_str; + decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); + return this_len; +} +#endif + +bool Value::getString(char const** str, char const** cend) const { + if (type_ != stringValue) return false; + if (value_.string_ == 0) return false; + unsigned length; + decodePrefixedString(this->allocated_, this->value_.string_, &length, str); + *cend = *str + length; + return true; +} + +JSONCPP_STRING Value::asString() const { + switch (type_) { + case nullValue: + return ""; + case stringValue: + { + if (value_.string_ == 0) return ""; + unsigned this_len; + char const* this_str; + decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); + return JSONCPP_STRING(this_str, this_len); + } + case booleanValue: + return value_.bool_ ? "true" : "false"; + case intValue: + return valueToString(value_.int_); + case uintValue: + return valueToString(value_.uint_); + case realValue: + return valueToString(value_.real_); + default: + JSON_FAIL_MESSAGE("Type is not convertible to string"); + } +} + +#ifdef JSON_USE_CPPTL +CppTL::ConstString Value::asConstString() const { + unsigned len; + char const* str; + decodePrefixedString(allocated_, value_.string_, + &len, &str); + return CppTL::ConstString(str, len); +} +#endif + +Value::Int Value::asInt() const { + switch (type_) { + case intValue: + JSON_ASSERT_MESSAGE(isInt(), "LargestInt out of Int range"); + return Int(value_.int_); + case uintValue: + JSON_ASSERT_MESSAGE(isInt(), "LargestUInt out of Int range"); + return Int(value_.uint_); + case realValue: + JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt, maxInt), + "double out of Int range"); + return Int(value_.real_); + case nullValue: + return 0; + case booleanValue: + return value_.bool_ ? 1 : 0; + default: + break; + } + JSON_FAIL_MESSAGE("Value is not convertible to Int."); +} + +Value::UInt Value::asUInt() const { + switch (type_) { + case intValue: + JSON_ASSERT_MESSAGE(isUInt(), "LargestInt out of UInt range"); + return UInt(value_.int_); + case uintValue: + JSON_ASSERT_MESSAGE(isUInt(), "LargestUInt out of UInt range"); + return UInt(value_.uint_); + case realValue: + JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt), + "double out of UInt range"); + return UInt(value_.real_); + case nullValue: + return 0; + case booleanValue: + return value_.bool_ ? 1 : 0; + default: + break; + } + JSON_FAIL_MESSAGE("Value is not convertible to UInt."); +} + +#if defined(JSON_HAS_INT64) + +Value::Int64 Value::asInt64() const { + switch (type_) { + case intValue: + return Int64(value_.int_); + case uintValue: + JSON_ASSERT_MESSAGE(isInt64(), "LargestUInt out of Int64 range"); + return Int64(value_.uint_); + case realValue: + JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt64, maxInt64), + "double out of Int64 range"); + return Int64(value_.real_); + case nullValue: + return 0; + case booleanValue: + return value_.bool_ ? 1 : 0; + default: + break; + } + JSON_FAIL_MESSAGE("Value is not convertible to Int64."); +} + +Value::UInt64 Value::asUInt64() const { + switch (type_) { + case intValue: + JSON_ASSERT_MESSAGE(isUInt64(), "LargestInt out of UInt64 range"); + return UInt64(value_.int_); + case uintValue: + return UInt64(value_.uint_); + case realValue: + JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt64), + "double out of UInt64 range"); + return UInt64(value_.real_); + case nullValue: + return 0; + case booleanValue: + return value_.bool_ ? 1 : 0; + default: + break; + } + JSON_FAIL_MESSAGE("Value is not convertible to UInt64."); +} +#endif // if defined(JSON_HAS_INT64) + +LargestInt Value::asLargestInt() const { +#if defined(JSON_NO_INT64) + return asInt(); +#else + return asInt64(); +#endif +} + +LargestUInt Value::asLargestUInt() const { +#if defined(JSON_NO_INT64) + return asUInt(); +#else + return asUInt64(); +#endif +} + +double Value::asDouble() const { + switch (type_) { + case intValue: + return static_cast(value_.int_); + case uintValue: +#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) + return static_cast(value_.uint_); +#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) + return integerToDouble(value_.uint_); +#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) + case realValue: + return value_.real_; + case nullValue: + return 0.0; + case booleanValue: + return value_.bool_ ? 1.0 : 0.0; + default: + break; + } + JSON_FAIL_MESSAGE("Value is not convertible to double."); +} + +float Value::asFloat() const { + switch (type_) { + case intValue: + return static_cast(value_.int_); + case uintValue: +#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) + return static_cast(value_.uint_); +#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) + // This can fail (silently?) if the value is bigger than MAX_FLOAT. + return static_cast(integerToDouble(value_.uint_)); +#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) + case realValue: + return static_cast(value_.real_); + case nullValue: + return 0.0; + case booleanValue: + return value_.bool_ ? 1.0f : 0.0f; + default: + break; + } + JSON_FAIL_MESSAGE("Value is not convertible to float."); +} + +bool Value::asBool() const { + switch (type_) { + case booleanValue: + return value_.bool_; + case nullValue: + return false; + case intValue: + return value_.int_ ? true : false; + case uintValue: + return value_.uint_ ? true : false; + case realValue: + // This is kind of strange. Not recommended. + return (value_.real_ != 0.0) ? true : false; + default: + break; + } + JSON_FAIL_MESSAGE("Value is not convertible to bool."); +} + +bool Value::isConvertibleTo(ValueType other) const { + switch (other) { + case nullValue: + return (isNumeric() && asDouble() == 0.0) || + (type_ == booleanValue && value_.bool_ == false) || + (type_ == stringValue && asString() == "") || + (type_ == arrayValue && value_.map_->size() == 0) || + (type_ == objectValue && value_.map_->size() == 0) || + type_ == nullValue; + case intValue: + return isInt() || + (type_ == realValue && InRange(value_.real_, minInt, maxInt)) || + type_ == booleanValue || type_ == nullValue; + case uintValue: + return isUInt() || + (type_ == realValue && InRange(value_.real_, 0, maxUInt)) || + type_ == booleanValue || type_ == nullValue; + case realValue: + return isNumeric() || type_ == booleanValue || type_ == nullValue; + case booleanValue: + return isNumeric() || type_ == booleanValue || type_ == nullValue; + case stringValue: + return isNumeric() || type_ == booleanValue || type_ == stringValue || + type_ == nullValue; + case arrayValue: + return type_ == arrayValue || type_ == nullValue; + case objectValue: + return type_ == objectValue || type_ == nullValue; + } + JSON_ASSERT_UNREACHABLE; + return false; +} + +/// Number of values in array or object +ArrayIndex Value::size() const { + switch (type_) { + case nullValue: + case intValue: + case uintValue: + case realValue: + case booleanValue: + case stringValue: + return 0; + case arrayValue: // size of the array is highest index + 1 + if (!value_.map_->empty()) { + ObjectValues::const_iterator itLast = value_.map_->end(); + --itLast; + return (*itLast).first.index() + 1; + } + return 0; + case objectValue: + return ArrayIndex(value_.map_->size()); + } + JSON_ASSERT_UNREACHABLE; + return 0; // unreachable; +} + +bool Value::empty() const { + if (isNull() || isArray() || isObject()) + return size() == 0u; + else + return false; +} + +bool Value::operator!() const { return isNull(); } + +void Value::clear() { + JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue || + type_ == objectValue, + "in Json::Value::clear(): requires complex value"); + start_ = 0; + limit_ = 0; + switch (type_) { + case arrayValue: + case objectValue: + value_.map_->clear(); + break; + default: + break; + } +} + +void Value::resize(ArrayIndex newSize) { + JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue, + "in Json::Value::resize(): requires arrayValue"); + if (type_ == nullValue) + *this = Value(arrayValue); + ArrayIndex oldSize = size(); + if (newSize == 0) + clear(); + else if (newSize > oldSize) + (*this)[newSize - 1]; + else { + for (ArrayIndex index = newSize; index < oldSize; ++index) { + value_.map_->erase(index); + } + JSON_ASSERT(size() == newSize); + } +} + +Value& Value::operator[](ArrayIndex index) { + JSON_ASSERT_MESSAGE( + type_ == nullValue || type_ == arrayValue, + "in Json::Value::operator[](ArrayIndex): requires arrayValue"); + if (type_ == nullValue) + *this = Value(arrayValue); + CZString key(index); + ObjectValues::iterator it = value_.map_->lower_bound(key); + if (it != value_.map_->end() && (*it).first == key) + return (*it).second; + + ObjectValues::value_type defaultValue(key, nullRef); + it = value_.map_->insert(it, defaultValue); + return (*it).second; +} + +Value& Value::operator[](int index) { + JSON_ASSERT_MESSAGE( + index >= 0, + "in Json::Value::operator[](int index): index cannot be negative"); + return (*this)[ArrayIndex(index)]; +} + +const Value& Value::operator[](ArrayIndex index) const { + JSON_ASSERT_MESSAGE( + type_ == nullValue || type_ == arrayValue, + "in Json::Value::operator[](ArrayIndex)const: requires arrayValue"); + if (type_ == nullValue) + return nullRef; + CZString key(index); + ObjectValues::const_iterator it = value_.map_->find(key); + if (it == value_.map_->end()) + return nullRef; + return (*it).second; +} + +const Value& Value::operator[](int index) const { + JSON_ASSERT_MESSAGE( + index >= 0, + "in Json::Value::operator[](int index) const: index cannot be negative"); + return (*this)[ArrayIndex(index)]; +} + +void Value::initBasic(ValueType vtype, bool allocated) { + type_ = vtype; + allocated_ = allocated; + comments_ = 0; + start_ = 0; + limit_ = 0; +} + +// Access an object value by name, create a null member if it does not exist. +// @pre Type of '*this' is object or null. +// @param key is null-terminated. +Value& Value::resolveReference(const char* key) { + JSON_ASSERT_MESSAGE( + type_ == nullValue || type_ == objectValue, + "in Json::Value::resolveReference(): requires objectValue"); + if (type_ == nullValue) + *this = Value(objectValue); + CZString actualKey( + key, static_cast(strlen(key)), CZString::noDuplication); // NOTE! + ObjectValues::iterator it = value_.map_->lower_bound(actualKey); + if (it != value_.map_->end() && (*it).first == actualKey) + return (*it).second; + + ObjectValues::value_type defaultValue(actualKey, nullRef); + it = value_.map_->insert(it, defaultValue); + Value& value = (*it).second; + return value; +} + +// @param key is not null-terminated. +Value& Value::resolveReference(char const* key, char const* cend) +{ + JSON_ASSERT_MESSAGE( + type_ == nullValue || type_ == objectValue, + "in Json::Value::resolveReference(key, end): requires objectValue"); + if (type_ == nullValue) + *this = Value(objectValue); + CZString actualKey( + key, static_cast(cend-key), CZString::duplicateOnCopy); + ObjectValues::iterator it = value_.map_->lower_bound(actualKey); + if (it != value_.map_->end() && (*it).first == actualKey) + return (*it).second; + + ObjectValues::value_type defaultValue(actualKey, nullRef); + it = value_.map_->insert(it, defaultValue); + Value& value = (*it).second; + return value; +} + +Value Value::get(ArrayIndex index, const Value& defaultValue) const { + const Value* value = &((*this)[index]); + return value == &nullRef ? defaultValue : *value; +} + +bool Value::isValidIndex(ArrayIndex index) const { return index < size(); } + +Value const* Value::find(char const* key, char const* cend) const +{ + JSON_ASSERT_MESSAGE( + type_ == nullValue || type_ == objectValue, + "in Json::Value::find(key, end, found): requires objectValue or nullValue"); + if (type_ == nullValue) return NULL; + CZString actualKey(key, static_cast(cend-key), CZString::noDuplication); + ObjectValues::const_iterator it = value_.map_->find(actualKey); + if (it == value_.map_->end()) return NULL; + return &(*it).second; +} +const Value& Value::operator[](const char* key) const +{ + Value const* found = find(key, key + strlen(key)); + if (!found) return nullRef; + return *found; +} +Value const& Value::operator[](JSONCPP_STRING const& key) const +{ + Value const* found = find(key.data(), key.data() + key.length()); + if (!found) return nullRef; + return *found; +} + +Value& Value::operator[](const char* key) { + return resolveReference(key, key + strlen(key)); +} + +Value& Value::operator[](const JSONCPP_STRING& key) { + return resolveReference(key.data(), key.data() + key.length()); +} + +Value& Value::operator[](const StaticString& key) { + return resolveReference(key.c_str()); +} + +#ifdef JSON_USE_CPPTL +Value& Value::operator[](const CppTL::ConstString& key) { + return resolveReference(key.c_str(), key.end_c_str()); +} +Value const& Value::operator[](CppTL::ConstString const& key) const +{ + Value const* found = find(key.c_str(), key.end_c_str()); + if (!found) return nullRef; + return *found; +} +#endif + +Value& Value::append(const Value& value) { return (*this)[size()] = value; } + +Value Value::get(char const* key, char const* cend, Value const& defaultValue) const +{ + Value const* found = find(key, cend); + return !found ? defaultValue : *found; +} +Value Value::get(char const* key, Value const& defaultValue) const +{ + return get(key, key + strlen(key), defaultValue); +} +Value Value::get(JSONCPP_STRING const& key, Value const& defaultValue) const +{ + return get(key.data(), key.data() + key.length(), defaultValue); +} + + +bool Value::removeMember(const char* key, const char* cend, Value* removed) +{ + if (type_ != objectValue) { + return false; + } + CZString actualKey(key, static_cast(cend-key), CZString::noDuplication); + ObjectValues::iterator it = value_.map_->find(actualKey); + if (it == value_.map_->end()) + return false; + *removed = it->second; + value_.map_->erase(it); + return true; +} +bool Value::removeMember(const char* key, Value* removed) +{ + return removeMember(key, key + strlen(key), removed); +} +bool Value::removeMember(JSONCPP_STRING const& key, Value* removed) +{ + return removeMember(key.data(), key.data() + key.length(), removed); +} +Value Value::removeMember(const char* key) +{ + JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == objectValue, + "in Json::Value::removeMember(): requires objectValue"); + if (type_ == nullValue) + return nullRef; + + Value removed; // null + removeMember(key, key + strlen(key), &removed); + return removed; // still null if removeMember() did nothing +} +Value Value::removeMember(const JSONCPP_STRING& key) +{ + return removeMember(key.c_str()); +} + +bool Value::removeIndex(ArrayIndex index, Value* removed) { + if (type_ != arrayValue) { + return false; + } + CZString key(index); + ObjectValues::iterator it = value_.map_->find(key); + if (it == value_.map_->end()) { + return false; + } + *removed = it->second; + ArrayIndex oldSize = size(); + // shift left all items left, into the place of the "removed" + for (ArrayIndex i = index; i < (oldSize - 1); ++i){ + CZString keey(i); + (*value_.map_)[keey] = (*this)[i + 1]; + } + // erase the last one ("leftover") + CZString keyLast(oldSize - 1); + ObjectValues::iterator itLast = value_.map_->find(keyLast); + value_.map_->erase(itLast); + return true; +} + +#ifdef JSON_USE_CPPTL +Value Value::get(const CppTL::ConstString& key, + const Value& defaultValue) const { + return get(key.c_str(), key.end_c_str(), defaultValue); +} +#endif + +bool Value::isMember(char const* key, char const* cend) const +{ + Value const* value = find(key, cend); + return NULL != value; +} +bool Value::isMember(char const* key) const +{ + return isMember(key, key + strlen(key)); +} +bool Value::isMember(JSONCPP_STRING const& key) const +{ + return isMember(key.data(), key.data() + key.length()); +} + +#ifdef JSON_USE_CPPTL +bool Value::isMember(const CppTL::ConstString& key) const { + return isMember(key.c_str(), key.end_c_str()); +} +#endif + +Value::Members Value::getMemberNames() const { + JSON_ASSERT_MESSAGE( + type_ == nullValue || type_ == objectValue, + "in Json::Value::getMemberNames(), value must be objectValue"); + if (type_ == nullValue) + return Value::Members(); + Members members; + members.reserve(value_.map_->size()); + ObjectValues::const_iterator it = value_.map_->begin(); + ObjectValues::const_iterator itEnd = value_.map_->end(); + for (; it != itEnd; ++it) { + members.push_back(JSONCPP_STRING((*it).first.data(), + (*it).first.length())); + } + return members; +} +// +//# ifdef JSON_USE_CPPTL +// EnumMemberNames +// Value::enumMemberNames() const +//{ +// if ( type_ == objectValue ) +// { +// return CppTL::Enum::any( CppTL::Enum::transform( +// CppTL::Enum::keys( *(value_.map_), CppTL::Type() ), +// MemberNamesTransform() ) ); +// } +// return EnumMemberNames(); +//} +// +// +// EnumValues +// Value::enumValues() const +//{ +// if ( type_ == objectValue || type_ == arrayValue ) +// return CppTL::Enum::anyValues( *(value_.map_), +// CppTL::Type() ); +// return EnumValues(); +//} +// +//# endif + +static bool IsIntegral(double d) { + double integral_part; + return modf(d, &integral_part) == 0.0; +} + +bool Value::isNull() const { return type_ == nullValue; } + +bool Value::isBool() const { return type_ == booleanValue; } + +bool Value::isInt() const { + switch (type_) { + case intValue: + return value_.int_ >= minInt && value_.int_ <= maxInt; + case uintValue: + return value_.uint_ <= UInt(maxInt); + case realValue: + return value_.real_ >= minInt && value_.real_ <= maxInt && + IsIntegral(value_.real_); + default: + break; + } + return false; +} + +bool Value::isUInt() const { + switch (type_) { + case intValue: + return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt); + case uintValue: + return value_.uint_ <= maxUInt; + case realValue: + return value_.real_ >= 0 && value_.real_ <= maxUInt && + IsIntegral(value_.real_); + default: + break; + } + return false; +} + +bool Value::isInt64() const { +#if defined(JSON_HAS_INT64) + switch (type_) { + case intValue: + return true; + case uintValue: + return value_.uint_ <= UInt64(maxInt64); + case realValue: + // Note that maxInt64 (= 2^63 - 1) is not exactly representable as a + // double, so double(maxInt64) will be rounded up to 2^63. Therefore we + // require the value to be strictly less than the limit. + return value_.real_ >= double(minInt64) && + value_.real_ < double(maxInt64) && IsIntegral(value_.real_); + default: + break; + } +#endif // JSON_HAS_INT64 + return false; +} + +bool Value::isUInt64() const { +#if defined(JSON_HAS_INT64) + switch (type_) { + case intValue: + return value_.int_ >= 0; + case uintValue: + return true; + case realValue: + // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a + // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we + // require the value to be strictly less than the limit. + return value_.real_ >= 0 && value_.real_ < maxUInt64AsDouble && + IsIntegral(value_.real_); + default: + break; + } +#endif // JSON_HAS_INT64 + return false; +} + +bool Value::isIntegral() const { +#if defined(JSON_HAS_INT64) + return isInt64() || isUInt64(); +#else + return isInt() || isUInt(); +#endif +} + +bool Value::isDouble() const { return type_ == realValue || isIntegral(); } + +bool Value::isNumeric() const { return isIntegral() || isDouble(); } + +bool Value::isString() const { return type_ == stringValue; } + +bool Value::isArray() const { return type_ == arrayValue; } + +bool Value::isObject() const { return type_ == objectValue; } + +void Value::setComment(const char* comment, size_t len, CommentPlacement placement) { + if (!comments_) + comments_ = new CommentInfo[numberOfCommentPlacement]; + if ((len > 0) && (comment[len-1] == '\n')) { + // Always discard trailing newline, to aid indentation. + len -= 1; + } + comments_[placement].setComment(comment, len); +} + +void Value::setComment(const char* comment, CommentPlacement placement) { + setComment(comment, strlen(comment), placement); +} + +void Value::setComment(const JSONCPP_STRING& comment, CommentPlacement placement) { + setComment(comment.c_str(), comment.length(), placement); +} + +bool Value::hasComment(CommentPlacement placement) const { + return comments_ != 0 && comments_[placement].comment_ != 0; +} + +JSONCPP_STRING Value::getComment(CommentPlacement placement) const { + if (hasComment(placement)) + return comments_[placement].comment_; + return ""; +} + +void Value::setOffsetStart(ptrdiff_t start) { start_ = start; } + +void Value::setOffsetLimit(ptrdiff_t limit) { limit_ = limit; } + +ptrdiff_t Value::getOffsetStart() const { return start_; } + +ptrdiff_t Value::getOffsetLimit() const { return limit_; } + +JSONCPP_STRING Value::toStyledString() const { + StyledWriter writer; + return writer.write(*this); +} + +Value::const_iterator Value::begin() const { + switch (type_) { + case arrayValue: + case objectValue: + if (value_.map_) + return const_iterator(value_.map_->begin()); + break; + default: + break; + } + return const_iterator(); +} + +Value::const_iterator Value::end() const { + switch (type_) { + case arrayValue: + case objectValue: + if (value_.map_) + return const_iterator(value_.map_->end()); + break; + default: + break; + } + return const_iterator(); +} + +Value::iterator Value::begin() { + switch (type_) { + case arrayValue: + case objectValue: + if (value_.map_) + return iterator(value_.map_->begin()); + break; + default: + break; + } + return iterator(); +} + +Value::iterator Value::end() { + switch (type_) { + case arrayValue: + case objectValue: + if (value_.map_) + return iterator(value_.map_->end()); + break; + default: + break; + } + return iterator(); +} + +// class PathArgument +// ////////////////////////////////////////////////////////////////// + +PathArgument::PathArgument() : key_(), index_(), kind_(kindNone) {} + +PathArgument::PathArgument(ArrayIndex index) + : key_(), index_(index), kind_(kindIndex) {} + +PathArgument::PathArgument(const char* key) + : key_(key), index_(), kind_(kindKey) {} + +PathArgument::PathArgument(const JSONCPP_STRING& key) + : key_(key.c_str()), index_(), kind_(kindKey) {} + +// class Path +// ////////////////////////////////////////////////////////////////// + +Path::Path(const JSONCPP_STRING& path, + const PathArgument& a1, + const PathArgument& a2, + const PathArgument& a3, + const PathArgument& a4, + const PathArgument& a5) { + InArgs in; + in.push_back(&a1); + in.push_back(&a2); + in.push_back(&a3); + in.push_back(&a4); + in.push_back(&a5); + makePath(path, in); +} + +void Path::makePath(const JSONCPP_STRING& path, const InArgs& in) { + const char* current = path.c_str(); + const char* end = current + path.length(); + InArgs::const_iterator itInArg = in.begin(); + while (current != end) { + if (*current == '[') { + ++current; + if (*current == '%') + addPathInArg(path, in, itInArg, PathArgument::kindIndex); + else { + ArrayIndex index = 0; + for (; current != end && *current >= '0' && *current <= '9'; ++current) + index = index * 10 + ArrayIndex(*current - '0'); + args_.push_back(index); + } + if (current == end || *current++ != ']') + invalidPath(path, int(current - path.c_str())); + } else if (*current == '%') { + addPathInArg(path, in, itInArg, PathArgument::kindKey); + ++current; + } else if (*current == '.') { + ++current; + } else { + const char* beginName = current; + while (current != end && !strchr("[.", *current)) + ++current; + args_.push_back(JSONCPP_STRING(beginName, current)); + } + } +} + +void Path::addPathInArg(const JSONCPP_STRING& /*path*/, + const InArgs& in, + InArgs::const_iterator& itInArg, + PathArgument::Kind kind) { + if (itInArg == in.end()) { + // Error: missing argument %d + } else if ((*itInArg)->kind_ != kind) { + // Error: bad argument type + } else { + args_.push_back(**itInArg); + } +} + +void Path::invalidPath(const JSONCPP_STRING& /*path*/, int /*location*/) { + // Error: invalid path. +} + +const Value& Path::resolve(const Value& root) const { + const Value* node = &root; + for (Args::const_iterator it = args_.begin(); it != args_.end(); ++it) { + const PathArgument& arg = *it; + if (arg.kind_ == PathArgument::kindIndex) { + if (!node->isArray() || !node->isValidIndex(arg.index_)) { + // Error: unable to resolve path (array value expected at position... + } + node = &((*node)[arg.index_]); + } else if (arg.kind_ == PathArgument::kindKey) { + if (!node->isObject()) { + // Error: unable to resolve path (object value expected at position...) + } + node = &((*node)[arg.key_]); + if (node == &Value::nullRef) { + // Error: unable to resolve path (object has no member named '' at + // position...) + } + } + } + return *node; +} + +Value Path::resolve(const Value& root, const Value& defaultValue) const { + const Value* node = &root; + for (Args::const_iterator it = args_.begin(); it != args_.end(); ++it) { + const PathArgument& arg = *it; + if (arg.kind_ == PathArgument::kindIndex) { + if (!node->isArray() || !node->isValidIndex(arg.index_)) + return defaultValue; + node = &((*node)[arg.index_]); + } else if (arg.kind_ == PathArgument::kindKey) { + if (!node->isObject()) + return defaultValue; + node = &((*node)[arg.key_]); + if (node == &Value::nullRef) + return defaultValue; + } + } + return *node; +} + +Value& Path::make(Value& root) const { + Value* node = &root; + for (Args::const_iterator it = args_.begin(); it != args_.end(); ++it) { + const PathArgument& arg = *it; + if (arg.kind_ == PathArgument::kindIndex) { + if (!node->isArray()) { + // Error: node is not an array at position ... + } + node = &((*node)[arg.index_]); + } else if (arg.kind_ == PathArgument::kindKey) { + if (!node->isObject()) { + // Error: node is not an object at position... + } + node = &((*node)[arg.key_]); + } + } + return *node; +} + +} // namespace Json + +// ////////////////////////////////////////////////////////////////////// +// End of content of file: src/lib_json/json_value.cpp +// ////////////////////////////////////////////////////////////////////// + + + + + + +// ////////////////////////////////////////////////////////////////////// +// Beginning of content of file: src/lib_json/json_writer.cpp +// ////////////////////////////////////////////////////////////////////// + +// Copyright 2011 Baptiste Lepilleur +// Distributed under MIT license, or public domain if desired and +// recognized in your jurisdiction. +// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE + +#if !defined(JSON_IS_AMALGAMATION) +#include +#include "json_tool.h" +#endif // if !defined(JSON_IS_AMALGAMATION) +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) && _MSC_VER >= 1200 && _MSC_VER < 1800 // Between VC++ 6.0 and VC++ 11.0 +#include +#define isfinite _finite +#elif defined(__sun) && defined(__SVR4) //Solaris +#if !defined(isfinite) +#include +#define isfinite finite +#endif +#elif defined(_AIX) +#if !defined(isfinite) +#include +#define isfinite finite +#endif +#elif defined(__hpux) +#if !defined(isfinite) +#if defined(__ia64) && !defined(finite) +#define isfinite(x) ((sizeof(x) == sizeof(float) ? \ + _Isfinitef(x) : _IsFinite(x))) +#else +#include +#define isfinite finite +#endif +#endif +#else +#include +#if !(defined(__QNXNTO__)) // QNX already defines isfinite +#define isfinite std::isfinite +#endif +#endif + +#if defined(_MSC_VER) +#if !defined(WINCE) && defined(__STDC_SECURE_LIB__) && _MSC_VER >= 1500 // VC++ 9.0 and above +#define snprintf sprintf_s +#elif _MSC_VER >= 1900 // VC++ 14.0 and above +#define snprintf std::snprintf +#else +#define snprintf _snprintf +#endif +#elif defined(__ANDROID__) || defined(__QNXNTO__) +#define snprintf snprintf +#elif __cplusplus >= 201103L +#if !defined(__MINGW32__) && !defined(__CYGWIN__) +#define snprintf std::snprintf +#endif +#endif + +#if defined(__BORLANDC__) +#include +#define isfinite _finite +#define snprintf _snprintf +#endif + +#if defined(_MSC_VER) && _MSC_VER >= 1400 // VC++ 8.0 +// Disable warning about strdup being deprecated. +#pragma warning(disable : 4996) +#endif + +namespace Json { + +#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520) +typedef std::unique_ptr StreamWriterPtr; +#else +typedef std::auto_ptr StreamWriterPtr; +#endif + +static bool containsControlCharacter(const char* str) { + while (*str) { + if (isControlCharacter(*(str++))) + return true; + } + return false; +} + +static bool containsControlCharacter0(const char* str, unsigned len) { + char const* end = str + len; + while (end != str) { + if (isControlCharacter(*str) || 0==*str) + return true; + ++str; + } + return false; +} + +JSONCPP_STRING valueToString(LargestInt value) { + UIntToStringBuffer buffer; + char* current = buffer + sizeof(buffer); + if (value == Value::minLargestInt) { + uintToString(LargestUInt(Value::maxLargestInt) + 1, current); + *--current = '-'; + } else if (value < 0) { + uintToString(LargestUInt(-value), current); + *--current = '-'; + } else { + uintToString(LargestUInt(value), current); + } + assert(current >= buffer); + return current; +} + +JSONCPP_STRING valueToString(LargestUInt value) { + UIntToStringBuffer buffer; + char* current = buffer + sizeof(buffer); + uintToString(value, current); + assert(current >= buffer); + return current; +} + +#if defined(JSON_HAS_INT64) + +JSONCPP_STRING valueToString(Int value) { + return valueToString(LargestInt(value)); +} + +JSONCPP_STRING valueToString(UInt value) { + return valueToString(LargestUInt(value)); +} + +#endif // # if defined(JSON_HAS_INT64) + +JSONCPP_STRING valueToString(double value, bool useSpecialFloats, unsigned int precision) { + // Allocate a buffer that is more than large enough to store the 16 digits of + // precision requested below. + char buffer[32]; + int len = -1; + + char formatString[6]; + sprintf(formatString, "%%.%dg", precision); + + // Print into the buffer. We need not request the alternative representation + // that always has a decimal point because JSON doesn't distingish the + // concepts of reals and integers. + if (isfinite(value)) { + len = snprintf(buffer, sizeof(buffer), formatString, value); + } else { + // IEEE standard states that NaN values will not compare to themselves + if (value != value) { + len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "NaN" : "null"); + } else if (value < 0) { + len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "-Infinity" : "-1e+9999"); + } else { + len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "Infinity" : "1e+9999"); + } + // For those, we do not need to call fixNumLoc, but it is fast. + } + assert(len >= 0); + fixNumericLocale(buffer, buffer + len); + return buffer; +} + +JSONCPP_STRING valueToString(double value) { return valueToString(value, false, 17); } + +JSONCPP_STRING valueToString(bool value) { return value ? "true" : "false"; } + +JSONCPP_STRING valueToQuotedString(const char* value) { + if (value == NULL) + return ""; + // Not sure how to handle unicode... + if (strpbrk(value, "\"\\\b\f\n\r\t") == NULL && + !containsControlCharacter(value)) + return JSONCPP_STRING("\"") + value + "\""; + // We have to walk value and escape any special characters. + // Appending to JSONCPP_STRING is not efficient, but this should be rare. + // (Note: forward slashes are *not* rare, but I am not escaping them.) + JSONCPP_STRING::size_type maxsize = + strlen(value) * 2 + 3; // allescaped+quotes+NULL + JSONCPP_STRING result; + result.reserve(maxsize); // to avoid lots of mallocs + result += "\""; + for (const char* c = value; *c != 0; ++c) { + switch (*c) { + case '\"': + result += "\\\""; + break; + case '\\': + result += "\\\\"; + break; + case '\b': + result += "\\b"; + break; + case '\f': + result += "\\f"; + break; + case '\n': + result += "\\n"; + break; + case '\r': + result += "\\r"; + break; + case '\t': + result += "\\t"; + break; + // case '/': + // Even though \/ is considered a legal escape in JSON, a bare + // slash is also legal, so I see no reason to escape it. + // (I hope I am not misunderstanding something. + // blep notes: actually escaping \/ may be useful in javascript to avoid (*c); + result += oss.str(); + } else { + result += *c; + } + break; + } + } + result += "\""; + return result; +} + +// https://github.com/upcaste/upcaste/blob/master/src/upcore/src/cstring/strnpbrk.cpp +static char const* strnpbrk(char const* s, char const* accept, size_t n) { + assert((s || !n) && accept); + + char const* const end = s + n; + for (char const* cur = s; cur < end; ++cur) { + int const c = *cur; + for (char const* a = accept; *a; ++a) { + if (*a == c) { + return cur; + } + } + } + return NULL; +} +static JSONCPP_STRING valueToQuotedStringN(const char* value, unsigned length) { + if (value == NULL) + return ""; + // Not sure how to handle unicode... + if (strnpbrk(value, "\"\\\b\f\n\r\t", length) == NULL && + !containsControlCharacter0(value, length)) + return JSONCPP_STRING("\"") + value + "\""; + // We have to walk value and escape any special characters. + // Appending to JSONCPP_STRING is not efficient, but this should be rare. + // (Note: forward slashes are *not* rare, but I am not escaping them.) + JSONCPP_STRING::size_type maxsize = + length * 2 + 3; // allescaped+quotes+NULL + JSONCPP_STRING result; + result.reserve(maxsize); // to avoid lots of mallocs + result += "\""; + char const* end = value + length; + for (const char* c = value; c != end; ++c) { + switch (*c) { + case '\"': + result += "\\\""; + break; + case '\\': + result += "\\\\"; + break; + case '\b': + result += "\\b"; + break; + case '\f': + result += "\\f"; + break; + case '\n': + result += "\\n"; + break; + case '\r': + result += "\\r"; + break; + case '\t': + result += "\\t"; + break; + // case '/': + // Even though \/ is considered a legal escape in JSON, a bare + // slash is also legal, so I see no reason to escape it. + // (I hope I am not misunderstanding something.) + // blep notes: actually escaping \/ may be useful in javascript to avoid (*c); + result += oss.str(); + } else { + result += *c; + } + break; + } + } + result += "\""; + return result; +} + +// Class Writer +// ////////////////////////////////////////////////////////////////// +Writer::~Writer() {} + +// Class FastWriter +// ////////////////////////////////////////////////////////////////// + +FastWriter::FastWriter() + : yamlCompatiblityEnabled_(false), dropNullPlaceholders_(false), + omitEndingLineFeed_(false) {} + +void FastWriter::enableYAMLCompatibility() { yamlCompatiblityEnabled_ = true; } + +void FastWriter::dropNullPlaceholders() { dropNullPlaceholders_ = true; } + +void FastWriter::omitEndingLineFeed() { omitEndingLineFeed_ = true; } + +JSONCPP_STRING FastWriter::write(const Value& root) { + document_ = ""; + writeValue(root); + if (!omitEndingLineFeed_) + document_ += "\n"; + return document_; +} + +void FastWriter::writeValue(const Value& value) { + switch (value.type()) { + case nullValue: + if (!dropNullPlaceholders_) + document_ += "null"; + break; + case intValue: + document_ += valueToString(value.asLargestInt()); + break; + case uintValue: + document_ += valueToString(value.asLargestUInt()); + break; + case realValue: + document_ += valueToString(value.asDouble()); + break; + case stringValue: + { + // Is NULL possible for value.string_? + char const* str; + char const* end; + bool ok = value.getString(&str, &end); + if (ok) document_ += valueToQuotedStringN(str, static_cast(end-str)); + break; + } + case booleanValue: + document_ += valueToString(value.asBool()); + break; + case arrayValue: { + document_ += '['; + ArrayIndex size = value.size(); + for (ArrayIndex index = 0; index < size; ++index) { + if (index > 0) + document_ += ','; + writeValue(value[index]); + } + document_ += ']'; + } break; + case objectValue: { + Value::Members members(value.getMemberNames()); + document_ += '{'; + for (Value::Members::iterator it = members.begin(); it != members.end(); + ++it) { + const JSONCPP_STRING& name = *it; + if (it != members.begin()) + document_ += ','; + document_ += valueToQuotedStringN(name.data(), static_cast(name.length())); + document_ += yamlCompatiblityEnabled_ ? ": " : ":"; + writeValue(value[name]); + } + document_ += '}'; + } break; + } +} + +// Class StyledWriter +// ////////////////////////////////////////////////////////////////// + +StyledWriter::StyledWriter() + : rightMargin_(74), indentSize_(3), addChildValues_() {} + +JSONCPP_STRING StyledWriter::write(const Value& root) { + document_ = ""; + addChildValues_ = false; + indentString_ = ""; + writeCommentBeforeValue(root); + writeValue(root); + writeCommentAfterValueOnSameLine(root); + document_ += "\n"; + return document_; +} + +void StyledWriter::writeValue(const Value& value) { + switch (value.type()) { + case nullValue: + pushValue("null"); + break; + case intValue: + pushValue(valueToString(value.asLargestInt())); + break; + case uintValue: + pushValue(valueToString(value.asLargestUInt())); + break; + case realValue: + pushValue(valueToString(value.asDouble())); + break; + case stringValue: + { + // Is NULL possible for value.string_? + char const* str; + char const* end; + bool ok = value.getString(&str, &end); + if (ok) pushValue(valueToQuotedStringN(str, static_cast(end-str))); + else pushValue(""); + break; + } + case booleanValue: + pushValue(valueToString(value.asBool())); + break; + case arrayValue: + writeArrayValue(value); + break; + case objectValue: { + Value::Members members(value.getMemberNames()); + if (members.empty()) + pushValue("{}"); + else { + writeWithIndent("{"); + indent(); + Value::Members::iterator it = members.begin(); + for (;;) { + const JSONCPP_STRING& name = *it; + const Value& childValue = value[name]; + writeCommentBeforeValue(childValue); + writeWithIndent(valueToQuotedString(name.c_str())); + document_ += " : "; + writeValue(childValue); + if (++it == members.end()) { + writeCommentAfterValueOnSameLine(childValue); + break; + } + document_ += ','; + writeCommentAfterValueOnSameLine(childValue); + } + unindent(); + writeWithIndent("}"); + } + } break; + } +} + +void StyledWriter::writeArrayValue(const Value& value) { + unsigned size = value.size(); + if (size == 0) + pushValue("[]"); + else { + bool isArrayMultiLine = isMultineArray(value); + if (isArrayMultiLine) { + writeWithIndent("["); + indent(); + bool hasChildValue = !childValues_.empty(); + unsigned index = 0; + for (;;) { + const Value& childValue = value[index]; + writeCommentBeforeValue(childValue); + if (hasChildValue) + writeWithIndent(childValues_[index]); + else { + writeIndent(); + writeValue(childValue); + } + if (++index == size) { + writeCommentAfterValueOnSameLine(childValue); + break; + } + document_ += ','; + writeCommentAfterValueOnSameLine(childValue); + } + unindent(); + writeWithIndent("]"); + } else // output on a single line + { + assert(childValues_.size() == size); + document_ += "[ "; + for (unsigned index = 0; index < size; ++index) { + if (index > 0) + document_ += ", "; + document_ += childValues_[index]; + } + document_ += " ]"; + } + } +} + +bool StyledWriter::isMultineArray(const Value& value) { + ArrayIndex const size = value.size(); + bool isMultiLine = size * 3 >= rightMargin_; + childValues_.clear(); + for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) { + const Value& childValue = value[index]; + isMultiLine = ((childValue.isArray() || childValue.isObject()) && + childValue.size() > 0); + } + if (!isMultiLine) // check if line length > max line length + { + childValues_.reserve(size); + addChildValues_ = true; + ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' + for (ArrayIndex index = 0; index < size; ++index) { + if (hasCommentForValue(value[index])) { + isMultiLine = true; + } + writeValue(value[index]); + lineLength += static_cast(childValues_[index].length()); + } + addChildValues_ = false; + isMultiLine = isMultiLine || lineLength >= rightMargin_; + } + return isMultiLine; +} + +void StyledWriter::pushValue(const JSONCPP_STRING& value) { + if (addChildValues_) + childValues_.push_back(value); + else + document_ += value; +} + +void StyledWriter::writeIndent() { + if (!document_.empty()) { + char last = document_[document_.length() - 1]; + if (last == ' ') // already indented + return; + if (last != '\n') // Comments may add new-line + document_ += '\n'; + } + document_ += indentString_; +} + +void StyledWriter::writeWithIndent(const JSONCPP_STRING& value) { + writeIndent(); + document_ += value; +} + +void StyledWriter::indent() { indentString_ += JSONCPP_STRING(indentSize_, ' '); } + +void StyledWriter::unindent() { + assert(indentString_.size() >= indentSize_); + indentString_.resize(indentString_.size() - indentSize_); +} + +void StyledWriter::writeCommentBeforeValue(const Value& root) { + if (!root.hasComment(commentBefore)) + return; + + document_ += "\n"; + writeIndent(); + const JSONCPP_STRING& comment = root.getComment(commentBefore); + JSONCPP_STRING::const_iterator iter = comment.begin(); + while (iter != comment.end()) { + document_ += *iter; + if (*iter == '\n' && + (iter != comment.end() && *(iter + 1) == '/')) + writeIndent(); + ++iter; + } + + // Comments are stripped of trailing newlines, so add one here + document_ += "\n"; +} + +void StyledWriter::writeCommentAfterValueOnSameLine(const Value& root) { + if (root.hasComment(commentAfterOnSameLine)) + document_ += " " + root.getComment(commentAfterOnSameLine); + + if (root.hasComment(commentAfter)) { + document_ += "\n"; + document_ += root.getComment(commentAfter); + document_ += "\n"; + } +} + +bool StyledWriter::hasCommentForValue(const Value& value) { + return value.hasComment(commentBefore) || + value.hasComment(commentAfterOnSameLine) || + value.hasComment(commentAfter); +} + +// Class StyledStreamWriter +// ////////////////////////////////////////////////////////////////// + +StyledStreamWriter::StyledStreamWriter(JSONCPP_STRING indentation) + : document_(NULL), rightMargin_(74), indentation_(indentation), + addChildValues_() {} + +void StyledStreamWriter::write(JSONCPP_OSTREAM& out, const Value& root) { + document_ = &out; + addChildValues_ = false; + indentString_ = ""; + indented_ = true; + writeCommentBeforeValue(root); + if (!indented_) writeIndent(); + indented_ = true; + writeValue(root); + writeCommentAfterValueOnSameLine(root); + *document_ << "\n"; + document_ = NULL; // Forget the stream, for safety. +} + +void StyledStreamWriter::writeValue(const Value& value) { + switch (value.type()) { + case nullValue: + pushValue("null"); + break; + case intValue: + pushValue(valueToString(value.asLargestInt())); + break; + case uintValue: + pushValue(valueToString(value.asLargestUInt())); + break; + case realValue: + pushValue(valueToString(value.asDouble())); + break; + case stringValue: + { + // Is NULL possible for value.string_? + char const* str; + char const* end; + bool ok = value.getString(&str, &end); + if (ok) pushValue(valueToQuotedStringN(str, static_cast(end-str))); + else pushValue(""); + break; + } + case booleanValue: + pushValue(valueToString(value.asBool())); + break; + case arrayValue: + writeArrayValue(value); + break; + case objectValue: { + Value::Members members(value.getMemberNames()); + if (members.empty()) + pushValue("{}"); + else { + writeWithIndent("{"); + indent(); + Value::Members::iterator it = members.begin(); + for (;;) { + const JSONCPP_STRING& name = *it; + const Value& childValue = value[name]; + writeCommentBeforeValue(childValue); + writeWithIndent(valueToQuotedString(name.c_str())); + *document_ << " : "; + writeValue(childValue); + if (++it == members.end()) { + writeCommentAfterValueOnSameLine(childValue); + break; + } + *document_ << ","; + writeCommentAfterValueOnSameLine(childValue); + } + unindent(); + writeWithIndent("}"); + } + } break; + } +} + +void StyledStreamWriter::writeArrayValue(const Value& value) { + unsigned size = value.size(); + if (size == 0) + pushValue("[]"); + else { + bool isArrayMultiLine = isMultineArray(value); + if (isArrayMultiLine) { + writeWithIndent("["); + indent(); + bool hasChildValue = !childValues_.empty(); + unsigned index = 0; + for (;;) { + const Value& childValue = value[index]; + writeCommentBeforeValue(childValue); + if (hasChildValue) + writeWithIndent(childValues_[index]); + else { + if (!indented_) writeIndent(); + indented_ = true; + writeValue(childValue); + indented_ = false; + } + if (++index == size) { + writeCommentAfterValueOnSameLine(childValue); + break; + } + *document_ << ","; + writeCommentAfterValueOnSameLine(childValue); + } + unindent(); + writeWithIndent("]"); + } else // output on a single line + { + assert(childValues_.size() == size); + *document_ << "[ "; + for (unsigned index = 0; index < size; ++index) { + if (index > 0) + *document_ << ", "; + *document_ << childValues_[index]; + } + *document_ << " ]"; + } + } +} + +bool StyledStreamWriter::isMultineArray(const Value& value) { + ArrayIndex const size = value.size(); + bool isMultiLine = size * 3 >= rightMargin_; + childValues_.clear(); + for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) { + const Value& childValue = value[index]; + isMultiLine = ((childValue.isArray() || childValue.isObject()) && + childValue.size() > 0); + } + if (!isMultiLine) // check if line length > max line length + { + childValues_.reserve(size); + addChildValues_ = true; + ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' + for (ArrayIndex index = 0; index < size; ++index) { + if (hasCommentForValue(value[index])) { + isMultiLine = true; + } + writeValue(value[index]); + lineLength += static_cast(childValues_[index].length()); + } + addChildValues_ = false; + isMultiLine = isMultiLine || lineLength >= rightMargin_; + } + return isMultiLine; +} + +void StyledStreamWriter::pushValue(const JSONCPP_STRING& value) { + if (addChildValues_) + childValues_.push_back(value); + else + *document_ << value; +} + +void StyledStreamWriter::writeIndent() { + // blep intended this to look at the so-far-written string + // to determine whether we are already indented, but + // with a stream we cannot do that. So we rely on some saved state. + // The caller checks indented_. + *document_ << '\n' << indentString_; +} + +void StyledStreamWriter::writeWithIndent(const JSONCPP_STRING& value) { + if (!indented_) writeIndent(); + *document_ << value; + indented_ = false; +} + +void StyledStreamWriter::indent() { indentString_ += indentation_; } + +void StyledStreamWriter::unindent() { + assert(indentString_.size() >= indentation_.size()); + indentString_.resize(indentString_.size() - indentation_.size()); +} + +void StyledStreamWriter::writeCommentBeforeValue(const Value& root) { + if (!root.hasComment(commentBefore)) + return; + + if (!indented_) writeIndent(); + const JSONCPP_STRING& comment = root.getComment(commentBefore); + JSONCPP_STRING::const_iterator iter = comment.begin(); + while (iter != comment.end()) { + *document_ << *iter; + if (*iter == '\n' && + (iter != comment.end() && *(iter + 1) == '/')) + // writeIndent(); // would include newline + *document_ << indentString_; + ++iter; + } + indented_ = false; +} + +void StyledStreamWriter::writeCommentAfterValueOnSameLine(const Value& root) { + if (root.hasComment(commentAfterOnSameLine)) + *document_ << ' ' << root.getComment(commentAfterOnSameLine); + + if (root.hasComment(commentAfter)) { + writeIndent(); + *document_ << root.getComment(commentAfter); + } + indented_ = false; +} + +bool StyledStreamWriter::hasCommentForValue(const Value& value) { + return value.hasComment(commentBefore) || + value.hasComment(commentAfterOnSameLine) || + value.hasComment(commentAfter); +} + +////////////////////////// +// BuiltStyledStreamWriter + +/// Scoped enums are not available until C++11. +struct CommentStyle { + /// Decide whether to write comments. + enum Enum { + None, ///< Drop all comments. + Most, ///< Recover odd behavior of previous versions (not implemented yet). + All ///< Keep all comments. + }; +}; + +struct BuiltStyledStreamWriter : public StreamWriter +{ + BuiltStyledStreamWriter( + JSONCPP_STRING const& indentation, + CommentStyle::Enum cs, + JSONCPP_STRING const& colonSymbol, + JSONCPP_STRING const& nullSymbol, + JSONCPP_STRING const& endingLineFeedSymbol, + bool useSpecialFloats, + unsigned int precision); + int write(Value const& root, JSONCPP_OSTREAM* sout) JSONCPP_OVERRIDE; +private: + void writeValue(Value const& value); + void writeArrayValue(Value const& value); + bool isMultineArray(Value const& value); + void pushValue(JSONCPP_STRING const& value); + void writeIndent(); + void writeWithIndent(JSONCPP_STRING const& value); + void indent(); + void unindent(); + void writeCommentBeforeValue(Value const& root); + void writeCommentAfterValueOnSameLine(Value const& root); + static bool hasCommentForValue(const Value& value); + + typedef std::vector ChildValues; + + ChildValues childValues_; + JSONCPP_STRING indentString_; + unsigned int rightMargin_; + JSONCPP_STRING indentation_; + CommentStyle::Enum cs_; + JSONCPP_STRING colonSymbol_; + JSONCPP_STRING nullSymbol_; + JSONCPP_STRING endingLineFeedSymbol_; + bool addChildValues_ : 1; + bool indented_ : 1; + bool useSpecialFloats_ : 1; + unsigned int precision_; +}; +BuiltStyledStreamWriter::BuiltStyledStreamWriter( + JSONCPP_STRING const& indentation, + CommentStyle::Enum cs, + JSONCPP_STRING const& colonSymbol, + JSONCPP_STRING const& nullSymbol, + JSONCPP_STRING const& endingLineFeedSymbol, + bool useSpecialFloats, + unsigned int precision) + : rightMargin_(74) + , indentation_(indentation) + , cs_(cs) + , colonSymbol_(colonSymbol) + , nullSymbol_(nullSymbol) + , endingLineFeedSymbol_(endingLineFeedSymbol) + , addChildValues_(false) + , indented_(false) + , useSpecialFloats_(useSpecialFloats) + , precision_(precision) +{ +} +int BuiltStyledStreamWriter::write(Value const& root, JSONCPP_OSTREAM* sout) +{ + sout_ = sout; + addChildValues_ = false; + indented_ = true; + indentString_ = ""; + writeCommentBeforeValue(root); + if (!indented_) writeIndent(); + indented_ = true; + writeValue(root); + writeCommentAfterValueOnSameLine(root); + *sout_ << endingLineFeedSymbol_; + sout_ = NULL; + return 0; +} +void BuiltStyledStreamWriter::writeValue(Value const& value) { + switch (value.type()) { + case nullValue: + pushValue(nullSymbol_); + break; + case intValue: + pushValue(valueToString(value.asLargestInt())); + break; + case uintValue: + pushValue(valueToString(value.asLargestUInt())); + break; + case realValue: + pushValue(valueToString(value.asDouble(), useSpecialFloats_, precision_)); + break; + case stringValue: + { + // Is NULL is possible for value.string_? + char const* str; + char const* end; + bool ok = value.getString(&str, &end); + if (ok) pushValue(valueToQuotedStringN(str, static_cast(end-str))); + else pushValue(""); + break; + } + case booleanValue: + pushValue(valueToString(value.asBool())); + break; + case arrayValue: + writeArrayValue(value); + break; + case objectValue: { + Value::Members members(value.getMemberNames()); + if (members.empty()) + pushValue("{}"); + else { + writeWithIndent("{"); + indent(); + Value::Members::iterator it = members.begin(); + for (;;) { + JSONCPP_STRING const& name = *it; + Value const& childValue = value[name]; + writeCommentBeforeValue(childValue); + writeWithIndent(valueToQuotedStringN(name.data(), static_cast(name.length()))); + *sout_ << colonSymbol_; + writeValue(childValue); + if (++it == members.end()) { + writeCommentAfterValueOnSameLine(childValue); + break; + } + *sout_ << ","; + writeCommentAfterValueOnSameLine(childValue); + } + unindent(); + writeWithIndent("}"); + } + } break; + } +} + +void BuiltStyledStreamWriter::writeArrayValue(Value const& value) { + unsigned size = value.size(); + if (size == 0) + pushValue("[]"); + else { + bool isMultiLine = (cs_ == CommentStyle::All) || isMultineArray(value); + if (isMultiLine) { + writeWithIndent("["); + indent(); + bool hasChildValue = !childValues_.empty(); + unsigned index = 0; + for (;;) { + Value const& childValue = value[index]; + writeCommentBeforeValue(childValue); + if (hasChildValue) + writeWithIndent(childValues_[index]); + else { + if (!indented_) writeIndent(); + indented_ = true; + writeValue(childValue); + indented_ = false; + } + if (++index == size) { + writeCommentAfterValueOnSameLine(childValue); + break; + } + *sout_ << ","; + writeCommentAfterValueOnSameLine(childValue); + } + unindent(); + writeWithIndent("]"); + } else // output on a single line + { + assert(childValues_.size() == size); + *sout_ << "["; + if (!indentation_.empty()) *sout_ << " "; + for (unsigned index = 0; index < size; ++index) { + if (index > 0) + *sout_ << ", "; + *sout_ << childValues_[index]; + } + if (!indentation_.empty()) *sout_ << " "; + *sout_ << "]"; + } + } +} + +bool BuiltStyledStreamWriter::isMultineArray(Value const& value) { + ArrayIndex const size = value.size(); + bool isMultiLine = size * 3 >= rightMargin_; + childValues_.clear(); + for (ArrayIndex index = 0; index < size && !isMultiLine; ++index) { + Value const& childValue = value[index]; + isMultiLine = ((childValue.isArray() || childValue.isObject()) && + childValue.size() > 0); + } + if (!isMultiLine) // check if line length > max line length + { + childValues_.reserve(size); + addChildValues_ = true; + ArrayIndex lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' + for (ArrayIndex index = 0; index < size; ++index) { + if (hasCommentForValue(value[index])) { + isMultiLine = true; + } + writeValue(value[index]); + lineLength += static_cast(childValues_[index].length()); + } + addChildValues_ = false; + isMultiLine = isMultiLine || lineLength >= rightMargin_; + } + return isMultiLine; +} + +void BuiltStyledStreamWriter::pushValue(JSONCPP_STRING const& value) { + if (addChildValues_) + childValues_.push_back(value); + else + *sout_ << value; +} + +void BuiltStyledStreamWriter::writeIndent() { + // blep intended this to look at the so-far-written string + // to determine whether we are already indented, but + // with a stream we cannot do that. So we rely on some saved state. + // The caller checks indented_. + + if (!indentation_.empty()) { + // In this case, drop newlines too. + *sout_ << '\n' << indentString_; + } +} + +void BuiltStyledStreamWriter::writeWithIndent(JSONCPP_STRING const& value) { + if (!indented_) writeIndent(); + *sout_ << value; + indented_ = false; +} + +void BuiltStyledStreamWriter::indent() { indentString_ += indentation_; } + +void BuiltStyledStreamWriter::unindent() { + assert(indentString_.size() >= indentation_.size()); + indentString_.resize(indentString_.size() - indentation_.size()); +} + +void BuiltStyledStreamWriter::writeCommentBeforeValue(Value const& root) { + if (cs_ == CommentStyle::None) return; + if (!root.hasComment(commentBefore)) + return; + + if (!indented_) writeIndent(); + const JSONCPP_STRING& comment = root.getComment(commentBefore); + JSONCPP_STRING::const_iterator iter = comment.begin(); + while (iter != comment.end()) { + *sout_ << *iter; + if (*iter == '\n' && + (iter != comment.end() && *(iter + 1) == '/')) + // writeIndent(); // would write extra newline + *sout_ << indentString_; + ++iter; + } + indented_ = false; +} + +void BuiltStyledStreamWriter::writeCommentAfterValueOnSameLine(Value const& root) { + if (cs_ == CommentStyle::None) return; + if (root.hasComment(commentAfterOnSameLine)) + *sout_ << " " + root.getComment(commentAfterOnSameLine); + + if (root.hasComment(commentAfter)) { + writeIndent(); + *sout_ << root.getComment(commentAfter); + } +} + +// static +bool BuiltStyledStreamWriter::hasCommentForValue(const Value& value) { + return value.hasComment(commentBefore) || + value.hasComment(commentAfterOnSameLine) || + value.hasComment(commentAfter); +} + +/////////////// +// StreamWriter + +StreamWriter::StreamWriter() + : sout_(NULL) +{ +} +StreamWriter::~StreamWriter() +{ +} +StreamWriter::Factory::~Factory() +{} +StreamWriterBuilder::StreamWriterBuilder() +{ + setDefaults(&settings_); +} +StreamWriterBuilder::~StreamWriterBuilder() +{} +StreamWriter* StreamWriterBuilder::newStreamWriter() const +{ + JSONCPP_STRING indentation = settings_["indentation"].asString(); + JSONCPP_STRING cs_str = settings_["commentStyle"].asString(); + bool eyc = settings_["enableYAMLCompatibility"].asBool(); + bool dnp = settings_["dropNullPlaceholders"].asBool(); + bool usf = settings_["useSpecialFloats"].asBool(); + unsigned int pre = settings_["precision"].asUInt(); + CommentStyle::Enum cs = CommentStyle::All; + if (cs_str == "All") { + cs = CommentStyle::All; + } else if (cs_str == "None") { + cs = CommentStyle::None; + } else { + throwRuntimeError("commentStyle must be 'All' or 'None'"); + } + JSONCPP_STRING colonSymbol = " : "; + if (eyc) { + colonSymbol = ": "; + } else if (indentation.empty()) { + colonSymbol = ":"; + } + JSONCPP_STRING nullSymbol = "null"; + if (dnp) { + nullSymbol = ""; + } + if (pre > 17) pre = 17; + JSONCPP_STRING endingLineFeedSymbol = ""; + return new BuiltStyledStreamWriter( + indentation, cs, + colonSymbol, nullSymbol, endingLineFeedSymbol, usf, pre); +} +static void getValidWriterKeys(std::set* valid_keys) +{ + valid_keys->clear(); + valid_keys->insert("indentation"); + valid_keys->insert("commentStyle"); + valid_keys->insert("enableYAMLCompatibility"); + valid_keys->insert("dropNullPlaceholders"); + valid_keys->insert("useSpecialFloats"); + valid_keys->insert("precision"); +} +bool StreamWriterBuilder::validate(Json::Value* invalid) const +{ + Json::Value my_invalid; + if (!invalid) invalid = &my_invalid; // so we do not need to test for NULL + Json::Value& inv = *invalid; + std::set valid_keys; + getValidWriterKeys(&valid_keys); + Value::Members keys = settings_.getMemberNames(); + size_t n = keys.size(); + for (size_t i = 0; i < n; ++i) { + JSONCPP_STRING const& key = keys[i]; + if (valid_keys.find(key) == valid_keys.end()) { + inv[key] = settings_[key]; + } + } + return 0u == inv.size(); +} +Value& StreamWriterBuilder::operator[](JSONCPP_STRING key) +{ + return settings_[key]; +} +// static +void StreamWriterBuilder::setDefaults(Json::Value* settings) +{ + //! [StreamWriterBuilderDefaults] + (*settings)["commentStyle"] = "All"; + (*settings)["indentation"] = "\t"; + (*settings)["enableYAMLCompatibility"] = false; + (*settings)["dropNullPlaceholders"] = false; + (*settings)["useSpecialFloats"] = false; + (*settings)["precision"] = 17; + //! [StreamWriterBuilderDefaults] +} + +JSONCPP_STRING writeString(StreamWriter::Factory const& builder, Value const& root) { + JSONCPP_OSTRINGSTREAM sout; + StreamWriterPtr const writer(builder.newStreamWriter()); + writer->write(root, &sout); + return sout.str(); +} + +JSONCPP_OSTREAM& operator<<(JSONCPP_OSTREAM& sout, Value const& root) { + StreamWriterBuilder builder; + StreamWriterPtr const writer(builder.newStreamWriter()); + writer->write(root, &sout); + return sout; +} + +} // namespace Json + +// ////////////////////////////////////////////////////////////////////// +// End of content of file: src/lib_json/json_writer.cpp +// ////////////////////////////////////////////////////////////////////// + + + + + diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralPipelineComponent.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralPipelineComponent.cpp deleted file mode 100644 index 27e00a6..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralPipelineComponent.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* - * GeneralPipelineComponent.cpp - * - * Created on: May 23, 2016 - * Author: willian - */ - -#include "GeneralPipelineComponent.hpp" - - -GeneralPipelineComponent::GeneralPipelineComponent(std::string name) { - this->setComponentName(name); -} - -void GeneralPipelineComponent::addRtInput(std::string rtName, std::string regionName) { - this->addInputOutputDataRegion(rtName, regionName, RTPipelineComponentBase::INPUT);//_INPUT -} - -void GeneralPipelineComponent::addRtOutput(std::string rtName, std::string regionName) { - this->addInputOutputDataRegion(rtName, regionName, RTPipelineComponentBase::OUTPUT);//_INPUT -} - -GeneralPipelineComponent::~GeneralPipelineComponent() {} - -int GeneralPipelineComponent::run() -{ - - // Print name and id of the component instance - std::cout << "Executing component: " << this->getComponentName() << " instance id: " << this->getId() <getRegionTemplateInstance("tile"); - - int parameterId = ((ArgumentInt*)this->getArgument(0))->getArgValue(); - int parameterSegId = ((ArgumentInt*)this->getArgument(1))->getArgValue(); - unsigned char blue = (unsigned char)((ArgumentInt*)this->getArgument(2))->getArgValue(); - unsigned char green = (unsigned char)((ArgumentInt*)this->getArgument(3))->getArgValue(); - unsigned char red = (unsigned char)((ArgumentInt*)this->getArgument(4))->getArgValue(); - double T1 = (double)((ArgumentFloat*)this->getArgument(5))->getArgValue(); - double T2 = (double)((ArgumentFloat*)this->getArgument(6))->getArgValue(); - unsigned char G1 = (unsigned char)((ArgumentInt*)this->getArgument(7))->getArgValue(); - unsigned char G2 = (unsigned char)((ArgumentInt*)this->getArgument(8))->getArgValue(); - int minSize = ((ArgumentInt*)this->getArgument(9))->getArgValue(); - int maxSize = ((ArgumentInt*)this->getArgument(10))->getArgValue(); - int minSizePl = ((ArgumentInt*)this->getArgument(11))->getArgValue(); - int minSizeSeg = ((ArgumentInt*)this->getArgument(12))->getArgValue(); - int maxSizeSeg= ((ArgumentInt*)this->getArgument(13))->getArgValue(); - int fillHolesConnectivity= ((ArgumentInt*)this->getArgument(14))->getArgValue(); - int reconConnectivity= ((ArgumentInt*)this->getArgument(15))->getArgValue(); - int watershedConnectivity= ((ArgumentInt*)this->getArgument(16))->getArgValue(); - - if(inputRt != NULL){ - DenseDataRegion2D *bgr = NULL; - try{ - bgr = dynamic_cast(inputRt->getDataRegion("BGR", "", 0, parameterId)); - std::cout << "GeneralPipelineComponent. paramenterId: "<< parameterId<getId() << " paramenterId: "<< parameterId<setName("MASK"); - mask->setId(bgr->getId()); - mask->setVersion(parameterSegId); - - inputRt->insertDataRegion(mask); - std::cout << "nDataRegions: after:" << inputRt->getNumDataRegions() << std::endl; - - - // Create processing task - TaskGeneralPipelineComponent * segTask = new TaskGeneralPipelineComponent(bgr, mask, blue, green, red, T1, T2, G1, G2, minSize, maxSize, minSizePl, minSizeSeg, maxSizeSeg, fillHolesConnectivity, reconConnectivity, watershedConnectivity); - - this->executeTask(segTask); - - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" DR == NULL" << std::endl; - } - - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" RT == NULL" << std::endl; - } - - return 0; -} - -// Create the component factory -PipelineComponentBase* componentFactorySeg() { - return new GeneralPipelineComponent(); -} - -// register factory with the runtime system -bool registered = PipelineComponentBase::ComponentFactory::componentRegister("GeneralPipelineComponent", &componentFactorySeg); - - diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralPipelineComponent.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralPipelineComponent.hpp deleted file mode 100644 index 5a1045e..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralPipelineComponent.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * GeneralPipelineComponent.hpp - * - * Created on: May 23, 2016 - * Author: willian - */ - -#ifndef GENETAL_TASK_H_ -#define GENETAL_TASK_H_ - -#include "RTPipelineComponentBase.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - -class GeneralPipelineComponent : public RTPipelineComponentBase { - -public: - GeneralPipelineComponent(std::string name); - virtual ~GeneralPipelineComponent(); - - void GeneralPipelineComponent::addRtInput(std::string rtName, std::string regionName); - void GeneralPipelineComponent::addRtOutput(std::string rtName, std::string regionName); - - int run(); -}; - -#endif /* GENETAL_TASK_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralTask.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralTask.cpp deleted file mode 100644 index 59bdc07..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralTask.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "GeneralTask.hpp" - -GeneralTask::GeneralTask(DenseDataRegion2D* bgr, DenseDataRegion2D* mask, unsigned char blue, unsigned char green, unsigned char red, double T1, double T2, unsigned char G1, unsigned char G2, int minSize, int maxSize, int minSizePl, int minSizeSeg, int maxSizeSeg, int fillHolesConnectivity, int reconConnectivity, int watershedConnectivity) { - this->bgr = bgr; - this->mask = mask; - - this->blue = blue; - this->green = green; - this->red = red; - - this->T1 = T1; - this->T2 = T2; - this->G1 = G1; - this->G2 = G2; - this->minSize = minSize; - this->maxSize = maxSize; - this->minSizePl = minSizePl; - this->minSizeSeg = minSizeSeg; - this->maxSizeSeg = maxSizeSeg; - this->fillHolesConnectivity=fillHolesConnectivity; - this->reconConnectivity=reconConnectivity; - this->watershedConnectivity=watershedConnectivity; -} - -GeneralTask::~GeneralTask() { - if(bgr != NULL) delete bgr; -} - -bool GeneralTask::run(int procType, int tid) { - cv::Mat inputImage = this->bgr->getData(); - cv::Mat outMask; - - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "GeneralTask: " << (int)blue << ":"<< (int)green << ":"<< (int)red << ":"<< T1<< ":"<< T2<< ":"<< (int)G1<< ":"<< minSize<< ":"<< maxSize<< ":"<< (int)G2<< ":"<< minSizePl<< ":"<< minSizeSeg<< ":"<< maxSizeSeg << ":" << fillHolesConnectivity << ":" << reconConnectivity << ":" << watershedConnectivity << std::endl; - if(inputImage.rows > 0) - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNuclei(inputImage, outMask, blue, green, red, T1, T2, G1, minSize, maxSize, G2, minSizePl, minSizeSeg, maxSizeSeg, fillHolesConnectivity, reconConnectivity, watershedConnectivity); - else - std::cout <<"Segmentation: input data NULL"<< std::endl; - this->mask->setData(outMask); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralTask.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralTask.hpp deleted file mode 100644 index 463810f..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/GeneralTask.hpp +++ /dev/null @@ -1,38 +0,0 @@ - - -#ifndef GENERAL_TASK_H_ -#define GENERAL_TASK_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class GeneralTask: public Task { -private: - DenseDataRegion2D* bgr; - DenseDataRegion2D* mask; - - unsigned char blue, green, red; - double T1, T2; - unsigned char G1, G2; - int minSize, maxSize, minSizePl, minSizeSeg, maxSizeSeg; - int fillHolesConnectivity, reconConnectivity, watershedConnectivity; - -public: - GeneralTask(DenseDataRegion2D* bgr, DenseDataRegion2D* mask, unsigned char blue, unsigned char green, unsigned char red, double T1, double T2, unsigned char G1, unsigned char G2, int minSize, int maxSize, int minSizePl, int minSizeSeg, int maxSizeSeg, int fillHolesConnectivity, int reconConnectivity, int watershedConnectivity); - - virtual ~GeneralTask(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* GENERAL_TASK_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/NormalizationComp.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/NormalizationComp.cpp deleted file mode 100644 index ecfbfee..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/NormalizationComp.cpp +++ /dev/null @@ -1,64 +0,0 @@ - -#include "NormalizationComp.h" - - -NormalizationComp::NormalizationComp() { - this->setComponentName("NormalizationComp"); - this->addInputOutputDataRegion("tile", "RAW", RTPipelineComponentBase::INPUT); - this->addInputOutputDataRegion("tile", "BGR", RTPipelineComponentBase::OUTPUT); -} - -NormalizationComp::~NormalizationComp() { - -} - -int NormalizationComp::run() -{ - - // Print name and id of the component instance - RegionTemplate * inputRt = this->getRegionTemplateInstance("tile"); - int parameterId = ((ArgumentInt*)this->getArgument(0))->getArgValue(); - ArgumentFloatArray* args = ((ArgumentFloatArray*)this->getArgument(1)); - - - std::cout << "Executing component: " << this->getComponentName() << " instance id: " << this->getId() <(inputRt->getDataRegion("RAW")); - if(raw != NULL){ - // Create output data region - DenseDataRegion2D *bgr = new DenseDataRegion2D(); - // set outpu data region identifier - bgr->setName("BGR"); - bgr->setId(raw->getId()); - bgr->setVersion(parameterId); - - // insert data region into region template - inputRt->insertDataRegion(bgr); - - float targetMean[3]; - for(int i = 0; i < 3; i++) targetMean[i] = args->getArgValue(i).getArgValue(); - - // Create processing task - TaskNormalization * normTask = new TaskNormalization(raw, bgr, targetMean); - - this->executeTask(normTask); - - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" Data Region is == NULL" << std::endl; - } - - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" RT == NULL" << std::endl; - } - - return 0; -} - -// Create the component factory -PipelineComponentBase* componentFactoryNorm() { - return new NormalizationComp(); -} - -// register factory with the runtime system -bool registeredN = PipelineComponentBase::ComponentFactory::componentRegister("NormalizationComp", &componentFactoryNorm); diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/NormalizationComp.h b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/NormalizationComp.h deleted file mode 100644 index b650536..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/NormalizationComp.h +++ /dev/null @@ -1,28 +0,0 @@ - -#ifndef NORMALIZATION_COMP_H_ -#define NORMALIZATION_COMP_H_ - -#include "RTPipelineComponentBase.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "Util.h" -#include "FileUtils.h" - - -#include "TaskNormalization.h" - -class NormalizationComp : public RTPipelineComponentBase { -private: - cv::Mat inputImage; - cv::Mat bgr; - -public: - NormalizationComp(); - virtual ~NormalizationComp(); - - int run(); - -}; - -#endif /* NORMALIZATION_COMP_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/PipelineManager.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/PipelineManager.cpp deleted file mode 100644 index c6c4ab8..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/PipelineManager.cpp +++ /dev/null @@ -1,630 +0,0 @@ - -#include -#include -#include -#include - -#include "SysEnv.h" -#include "FileUtils.h" -#include "RegionTemplate.h" -#include "RegionTemplateCollection.h" - -#include "NormalizationComp.hpp" -#include "Segmentation.hpp" -#include "FeatureExtraction.h" -#include "DiffMaskComp.h" -#include "ParameterSet.h" - -#include -#include -#include -#include - -#include -#include - -#include "json/json.h" - -using namespace std; - -// make two of these -typedef struct port_t { - string uid; - string name; - string type; - string pipeline_port; - list interfaces; -} port_t; - -// global id counter for port_t -int uid=0; -int new_uid() {return uid++;}; - -typedef struct task_t { - string name; - // TODO: input can only be connected to 1 output - list inputs; - // TODO: output can be connected to 1 or more inputs - list outputs; - string command; -} task_t; - -typedef struct { - string type; - string data; -} general_field_t; - -namespace parsing { - -enum port_type_t { - int_t, string_t, float_t, array_t, error -}; - -} - -string tasks2string(list tasks); -string ports2string(list ports); -string get_workflow_field(FILE* workflow, string field); -string get_workflow_name(FILE* workflow); -list get_workflow_ports(FILE* workflow, string port_t); -map get_workflow_inputs(FILE* workflow); -list get_workflow_outputs(FILE* workflow); -list get_workflow_tasks(FILE* workflow); -void update_tasks_dependencies(FILE* workflow, list* tasks); -vector get_all_fields(FILE* workflow, string start, string end); -task_t* find_task(list* tasks, string name); -port_t* find_port(list* ports, string name); -parsing::port_type_t get_port_type(string s); - -void add_parameters(PipelineComponentBase* executable, list arguments, list workflow, int parameterId, int parameterSegId); -void add_parameters(PipelineComponentBase* executable, list arguments, list workflow, int parameterId); -void add_parameters(PipelineComponentBase* executable, list arguments, list workflow); - -int get_line(char** line, FILE* f); -list line_buffer; - -int main() { - - FILE* workflow = fopen("seg_example.t2flow", "r"); - - //------------------------------------------------------------ - // Parse pipeline file - //------------------------------------------------------------ - - string name = get_workflow_name(workflow); - // cout << "name: " << name << endl << endl; - map workflow_inputs = get_workflow_inputs(workflow); - cout << "inputs:" << endl; - for(map::iterator i=workflow_inputs.begin(); i!=workflow_inputs.end(); i++) - cout << i->first << ":" << (i->second)->getName() << ": " << (i->second)->toString() << endl; - cout << endl; - list workflow_outputs = get_workflow_outputs(workflow); - // cout << "outputs:" << endl; - // for(list::iterator i=workflow_outputs.begin(); i!=workflow_outputs.end(); i++) - // cout << *i << endl; - // cout << endl; - list all_tasks = get_workflow_tasks(workflow); - // cout << "get wf" << endl << tasks2string(all_tasks) << endl << endl; - update_tasks_dependencies(workflow, &all_tasks); - // cout << "update wf" << endl << tasks2string(all_tasks) << endl << endl; - - fclose(workflow); - - // print all tasks - cout << tasks2string(all_tasks); - - //------------------------------------------------------------ - // Add tasks to Manager to be executed - //------------------------------------------------------------ - - // Handler to the distributed execution system environment - // SysEnv sysEnv; - - // // Tell the system which libraries should be used - // sysEnv.startupSystem(argc, argv, "libcomponentnsdifffgo.so"); - - // // generate each stage and the corresponding output arguments - // map stages; - // // this id will be used later to diferentiate equal workflows with different parameters - // int workflow_id = 0; - // generate_workflow_stages(stages, workflow_inputs, all_tasks); - - // // link the stages inputs to the correct outputs - - - - // // get the stage wrapper to be executed - // PipelineComponentBase* executable = PipelineComponentBase::ComponentFactory::getComponentFactory("NormalizationComp"); - - // add all parameters on the received order - // TODO: what to do to dependencies? - //add_parameters(executable, workflow_inputs); - - // set dependencies between executables - - - //------------------------------------------------------------ - // Run pipeline - //------------------------------------------------------------ - - return 0; -} - -void generate_workflow_stages(map &stages, map &arguments, list tasks) { - - for (list::iterator i=tasks.begin(); i!=tasks.end(); i++) { - // check if the stage wasn't already created - if (stages.find(i->name) != stages.end()) { - // create stage - PipelineComponentBase* executable = PipelineComponentBase::ComponentFactory::getComponentFactory(i->name)(); - - // create output arguments - for (list::iterator j=i->outputs.begin(); j!=i->outputs.end(); j++) { - // arguments[j->] = generate_argument() - } - - // create input arguments - } - - } -} - - - -void add_parameters(PipelineComponentBase* executable, list arguments, list workflow, int parameterId, int parameterSegId) { - ArgumentInt* arg1 = new ArgumentInt(parameterId); - ArgumentInt* arg2 = new ArgumentInt(parameterSegId); - executable->addArgument(arg1); - executable->addArgument(arg2); - add_parameters(executable, arguments, workflow); -} - -void add_parameters(PipelineComponentBase* executable, list arguments, list workflow, int parameterId) { - ArgumentInt* arg1 = new ArgumentInt(parameterId); - executable->addArgument(arg1); - add_parameters(executable, arguments, workflow); -} - -void add_parameters(PipelineComponentBase* executable, list arguments, list workflow) { - // get executable dependencies -// list deps = find_task(workflow, executable->getComponentName())->inputs; - -// for (list::iterator i=arguments.begin(); i!=arguments.end(); i++) { -// // add parameter if necessary to the current executable -// if (find_port(deps, (*i)->getName()) != NULL) -// executable->addArgument(*i); -// } -} - -//------------------------------------------------------------------------------- - -string tasks2string(list tasks) { - string out = ""; - for(list::iterator i = tasks.begin(); i != tasks.end(); i++) { - out += "Task " + i->name + "\n"; - out += "\tcmd: " + i->command + "\n"; - out += "\tinputs:\n" + ports2string(i->inputs) + "\n"; - out += "\toutputs:\n" + ports2string(i->outputs) + "\n"; - } - return out; -} - -string ports2string(list ports) { - string out = ""; - for(list::iterator i = ports.begin(); i != ports.end(); i++) { - if (i->pipeline_port.length() > 0) - out += "\t\t" + i->name + " connected to pipeline port " + i->pipeline_port + "\n"; - else { - out += "\t\t" + i->name + " connected to: \n"; - for(list::iterator j = i->interfaces.begin(); j != i->interfaces.end(); j++) { - out += "\t\t\t" + (*j)->name + "\n"; - } - } - } - return out; -} - -string get_workflow_name(FILE* workflow) { - return get_workflow_field(workflow, "name"); -} - -string get_workflow_field(FILE* workflow, string field) { - char *line = NULL; - size_t len = 0; - - // create field regex - regex r ("<" + field + ">[\"\\:\\w {},.\\[\\]-]+<\\/" + field + ">"); - - // get a new line until name is found - while (get_line(&line, workflow) != -1) { - smatch match; - string s(line); - regex_search(s, match, r); - - // cout << "line: " << s << endl; - - // if got a name match - if (match.size() == 1) { - // cout << "field match: " << line << endl; - return s.substr(s.find("<" + field + ">")+field.length()+2, s.find("")-s.find("<" + field + ">")-field.length()-2); - } - } - - return nullptr; -} - -map get_workflow_inputs(FILE* workflow) { - map ports; - - char *line = NULL; - size_t len = 0; - string port = "inputPorts"; - - // initial ports section beginning and end - string ip("<" + port + ">"); - string ipe(""); - - // ports section beginning and end - string p(""); - string pe(""); - - // argument name, stored before to be consumed when the ArgumentBase type can be set - string name; - - // go to the initial ports beginning - while (get_line(&line, workflow) != -1 && string(line).find(ip) == string::npos); - // cout << "port init begin: " << line << endl; - - // keep getting ports until it reaches the end of initial ports - while (get_line(&line, workflow) != -1 && string(line).find(ipe) == string::npos) { - // consumes the port beginning - while (string(line).find(p) == string::npos && get_line(&line, workflow) != -1); - // cout << "port begin: " << line << endl; - - // finds the name field - name = get_workflow_name(workflow); - // cout << "name: " << name << endl; - - // finds the description field - string description = get_workflow_field(workflow, "text"); - // cout << "description: " << description << endl; - - // parse the description to get the input value(s) - Json::Reader reader; - bool wellFormed; - Json::Value data; - - wellFormed = reader.parse(description, data, false); - if(!wellFormed) { - cout << "Failed to parse JSON: " << description << endl << reader.getFormattedErrorMessages() << endl; - exit(-3); - } - - // create the propper Argument object for each type case - ArgumentBase* inp_val; - switch (get_port_type(data["type"].asString())) { - case parsing::int_t: - inp_val = new ArgumentInt(data["value"].asInt()); - break; - case parsing::string_t: - inp_val = new ArgumentString(data["value"].asString()); - break; - case parsing::float_t: - inp_val = new ArgumentFloat(data["value"].asFloat()); - break; - case parsing::array_t: - inp_val = new ArgumentFloatArray(); - for (int i=0; iaddArgValue(float_val); - } - break; - default: - exit(-4); - } - - // set inp_val name - inp_val->setName(name); - - // add input to list - ports[new_uid()] = inp_val; - - // consumes the port ending - while (get_line(&line, workflow) != -1 && string(line).find(pe) == string::npos); - // cout << "not port end: " << line << endl; - // cout << "port end: " << line << endl; - } - return ports; -} - -list get_workflow_outputs(FILE* workflow) { - return get_workflow_ports(workflow, "outputPorts"); -} - -list get_workflow_ports(FILE* workflow, string port) { - list ports; - - char *line = NULL; - size_t len = 0; - - // initial ports section beginning and end - string ip("<" + port + ">"); - string ipe(""); - - // ports section beginning and end - string p(""); - string pe(""); - - // go to the initial ports beginning - while (get_line(&line, workflow) != -1 && string(line).find(ip) == string::npos); - // cout << "port init begin: " << line << endl; - - // keep getting ports until it reaches the end of initial ports - while (get_line(&line, workflow) != -1 && string(line).find(ipe) == string::npos) { - // consumes the port beginning - while (string(line).find(p) == string::npos && get_line(&line, workflow) != -1); - // cout << "port begin: " << line << endl; - - // finds the name field - ports.push_back(get_workflow_name(workflow)); - - // consumes the port ending - while (get_line(&line, workflow) != -1 && string(line).find(pe) == string::npos); - // get_line << "not port end: " << line << endl; - // cout << "port end: " << line << endl; - } - // cout << "port init end: " << line << endl; - return ports; -} - -list get_task_ports(FILE* workflow, string port_type) { - list ports_names = get_workflow_ports(workflow, port_type); - list ports; - port_t port; - - // convert the list of port names to a list of port_t - for (list::iterator i = ports_names.begin(); i != ports_names.end(); i++) { - port.name = *i; - ports.push_back(port); - } - return ports; -} - -list get_workflow_tasks(FILE* workflow) { - list tasks; - - char *line = NULL; - size_t len = 0; - - string ps(""); - string pse(""); - - string p(""); - string pe(""); - - // go to the processors beginning - while (get_line(&line, workflow) != -1 && string(line).find(ps) == string::npos); - // cout << "not processor init begin: " << line << endl; - // cout << "processor init begin: " << line << endl; - - // keep getting single processors until it reaches the end of all processors - while (get_line(&line, workflow) != -1 && string(line).find(pse) == string::npos) { - // consumes the processor beginning - while (string(line).find(p) == string::npos && get_line(&line, workflow) != -1); - // cout << "processor begin: " << line << endl; - - task_t new_task; - new_task.name = get_workflow_name(workflow); - new_task.inputs = get_task_ports(workflow, "inputPorts"); - new_task.outputs = get_task_ports(workflow, "outputPorts"); - - // get task command - new_task.command = get_workflow_field(workflow, "command"); - - tasks.push_back(new_task); - - // consumes the processor ending - while (get_line(&line, workflow) != -1 && string(line).find(pe) == string::npos); - // cout << "not processor end: " << line << endl; - // cout << "processor end: " << line << endl; - } - - return tasks; -} - -void update_tasks_dependencies(FILE* workflow, list* tasks) { - char *line = NULL; - size_t len = 0; - - string ds(""); - string dse(""); - - string d(""); - string de(""); - - string sink(""); - - string source(""); - - // go to the datalinks beginning - while (get_line(&line, workflow) != -1 && string(line).find(ds) == string::npos); - // cout << "not datalink init begin" << line << endl; - // cout << "datalink init begin" << line << endl; - - // keep getting single datalinks until it reaches the end of all datalinks - while (get_line(&line, workflow) != -1 && string(line).find(dse) == string::npos) { - // consumes the datalink beginning - while (string(line).find(d) == string::npos && get_line(&line, workflow) != -1); - // cout << "datalink begin" << line << endl; - - // get sink field - vector all_sink_fields = get_all_fields(workflow, sink, sinke); - - // check if it's a pipeine sink instead of a task sink - bool pipeline_sink = false; - task_t* sink_task; - string sink_name; - string sink_port_name; - if (all_sink_fields.size() == 1) { - // cout << "pipeline sink" << endl; - pipeline_sink = true; - sink_name = all_sink_fields[0].data; - } else { - // cout << "task sink" << endl; - sink_name = all_sink_fields[0].data; - sink_port_name = all_sink_fields[1].data; - sink_task = find_task(tasks, sink_name); - } - - // get source field - vector all_source_fields = get_all_fields(workflow, source, sourcee); - - // check if it's a pipeine source instead of a task source - bool pipeline_source = false; - task_t* source_task; - string source_name; - string source_port_name; - if (all_source_fields.size() == 1) { - // cout << "pipeline source" << endl; - source_name = all_source_fields[0].data; - pipeline_source = true; - } else { - // cout << "task source" << endl; - source_name = all_source_fields[0].data; - source_port_name = all_source_fields[1].data; - source_task = find_task(tasks, source_name); - } - - // update source reference if there is one - port_t* source_port; - if (!pipeline_source) { - source_port = find_port(&(source_task->outputs), source_port_name); - if (pipeline_sink) - source_port->pipeline_port = sink_name; - else { - source_port->pipeline_port = ""; - source_port->interfaces.push_back(sink_task); - } - } - - // update input reference if there is one - port_t* sink_port; - if (!pipeline_sink) { - sink_port = find_port(&(sink_task->inputs), sink_port_name); - if (pipeline_source) - sink_port->pipeline_port = source_name; - else { - sink_port->pipeline_port = ""; - sink_port->interfaces.push_back(source_task); - } - } - - // consumes the datalink ending - while (string(line).find(de) == string::npos && get_line(&line, workflow) != -1); - // cout << "datalink end" << line << endl; - - } - -} - -vector get_all_fields(FILE* workflow, string start, string end) { - char *line = NULL; - size_t len = 0; - string type; - string field; - vector fields; - general_field_t general_field; - - // consumes the beginning - while (get_line(&line, workflow) != -1 && string(line).find(start) == string::npos); - - // create general field regex - regex r ("<[\\w]+>[\\w ]+<\\/[\\w]+>"); - - // keep fiding fields until the end - while (get_line(&line, workflow) != -1 && string(line).find(end) == string::npos) { - smatch match; - string s(line); - regex_search(s, match, r); - - // if got a general field match - if (match.size() == 1) { - // cout << "general field match: " << line << endl; - type = s.substr(s.find("<")+1, s.find(">")-s.find("<")-1); - field = s.substr(s.find("<" + type + ">")+type.length()+2, s.find("")-s.find("<" + type + ">")-type.length()-2); - // cout << "type: " << type << ", field: " << field << endl; - general_field.type = type; - general_field.data = field; - fields.push_back(general_field); - } - } - return fields; -} - -task_t* find_task(list* tasks, string name) { - for (list::iterator i = tasks->begin(); i != tasks->end(); i++) - if (i->name.compare(name) == 0) - return &(*i); - - return NULL; -} - -port_t* find_port(list* ports, string name) { - for (list::iterator i = ports->begin(); i != ports->end(); i++) - if (i->name.compare(name) == 0) - return &(*i); - - return NULL; -} - -int get_line(char** line, FILE* f) { - char* nline; - size_t length=0; - if (line_buffer.empty()) { - if (getline(&nline, &length, f) == -1) - return -1; - string sline(nline); - size_t pos=string::npos; - while ((pos = sline.find("><")) != string::npos) { - line_buffer.push_back(sline.substr(0,pos+1)); - sline = sline.substr(pos+1); - } - line_buffer.push_back(sline); - } - - char* cline = (char*)malloc((line_buffer.front().length()+1)*sizeof(char*)); - memcpy(cline, line_buffer.front().c_str(), line_buffer.front().length()+1); - *line = cline; - line_buffer.pop_front(); - return strlen(*line); -} - -size_t size(list s) {return s.size();} - -void print(list s) { - for(list::iterator i=s.begin();i!=s.end();i++) - cout << *i << endl; -} - -// taken from: http://stackoverflow.com/questions/16388510/evaluate-a-string-with-a-switch-in-c -constexpr unsigned int str2int(const char* str, int h = 0) { - return !str[h] ? 5381 : (str2int(str, h+1) * 33) ^ str[h]; -} - -parsing::port_type_t get_port_type(string s) { - switch (str2int(s.c_str())) { - case str2int("integer"): - return parsing::int_t; - case str2int("float"): - return parsing::float_t; - case str2int("string"): - return parsing::string_t; - case str2int("array"): - return parsing::array_t; - default: - return parsing::error; - } -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/Segmentation.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/Segmentation.cpp deleted file mode 100644 index 96db77b..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/Segmentation.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Segmentation.cpp - * - * Created on: Feb 15, 2013 - * Author: george - */ - -#include "Segmentation.h" - - -Segmentation::Segmentation() { - this->setComponentName("Segmentation"); - this->addInputOutputDataRegion("tile", "BGR", RTPipelineComponentBase::INPUT);//_OUTPUT - this->addInputOutputDataRegion("tile", "MASK", RTPipelineComponentBase::OUTPUT);//_OUTPUT -} - -Segmentation::~Segmentation() { - -} - -int Segmentation::run() -{ - - // Print name and id of the component instance - std::cout << "Executing component: " << this->getComponentName() << " instance id: " << this->getId() <getRegionTemplateInstance("tile"); - - int parameterId = ((ArgumentInt*)this->getArgument(0))->getArgValue(); - int parameterSegId = ((ArgumentInt*)this->getArgument(1))->getArgValue(); - unsigned char blue = (unsigned char)((ArgumentInt*)this->getArgument(2))->getArgValue(); - unsigned char green = (unsigned char)((ArgumentInt*)this->getArgument(3))->getArgValue(); - unsigned char red = (unsigned char)((ArgumentInt*)this->getArgument(4))->getArgValue(); - double T1 = (double)((ArgumentFloat*)this->getArgument(5))->getArgValue(); - double T2 = (double)((ArgumentFloat*)this->getArgument(6))->getArgValue(); - unsigned char G1 = (unsigned char)((ArgumentInt*)this->getArgument(7))->getArgValue(); - unsigned char G2 = (unsigned char)((ArgumentInt*)this->getArgument(8))->getArgValue(); - int minSize = ((ArgumentInt*)this->getArgument(9))->getArgValue(); - int maxSize = ((ArgumentInt*)this->getArgument(10))->getArgValue(); - int minSizePl = ((ArgumentInt*)this->getArgument(11))->getArgValue(); - int minSizeSeg = ((ArgumentInt*)this->getArgument(12))->getArgValue(); - int maxSizeSeg= ((ArgumentInt*)this->getArgument(13))->getArgValue(); - int fillHolesConnectivity= ((ArgumentInt*)this->getArgument(14))->getArgValue(); - int reconConnectivity= ((ArgumentInt*)this->getArgument(15))->getArgValue(); - int watershedConnectivity= ((ArgumentInt*)this->getArgument(16))->getArgValue(); - - if(inputRt != NULL){ - DenseDataRegion2D *bgr = NULL; - try{ - bgr = dynamic_cast(inputRt->getDataRegion("BGR", "", 0, parameterId)); - std::cout << "Segmentation. paramenterId: "<< parameterId<getId() << " paramenterId: "<< parameterId<setName("MASK"); - mask->setId(bgr->getId()); - mask->setVersion(parameterSegId); - - inputRt->insertDataRegion(mask); - std::cout << "nDataRegions: after:" << inputRt->getNumDataRegions() << std::endl; - - // Create processing tasks - TaskSegmentationStg1 * segTask1 = new TaskSegmentationStg1(bgr, blue, - green, red, T1, T2, G1, minSize, maxSize, G2, fillHolesConnectivity, - reconConnectivity, &findCandidateResult, &seg_norbc, NULL, NULL); - - TaskSegmentationStg2 * segTask2 = new TaskSegmentationStg2(&findCandidateResult, - &seg_norbc, &seg_nohole,NULL, NULL); - TaskSegmentationStg3 * segTask3 = new TaskSegmentationStg3(&seg_nohole, - &seg_open, NULL, NULL); - img = bgr->getData(); - TaskSegmentationStg4 * segTask4 = new TaskSegmentationStg4(&img, minSizePl, - watershedConnectivity, &seg_open, &seg_nonoverlap, NULL, NULL); - TaskSegmentationStg5 * segTask5 = new TaskSegmentationStg5(minSizeSeg, - maxSizeSeg, &seg_nonoverlap, &seg, NULL, NULL); - TaskSegmentationStg6 * segTask6 = new TaskSegmentationStg6(&seg, mask, fillHolesConnectivity, NULL, NULL); - - // set dependencies - segTask2->addDependency(segTask1); - segTask3->addDependency(segTask2); - segTask4->addDependency(segTask3); - segTask5->addDependency(segTask4); - segTask6->addDependency(segTask5); - - this->executeTask(segTask1); - this->executeTask(segTask2); - this->executeTask(segTask3); - this->executeTask(segTask4); - this->executeTask(segTask5); - this->executeTask(segTask6); - - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" DR == NULL" << std::endl; - } - - }else{ - std::cout << __FILE__ << ":" << __LINE__ <<" RT == NULL" << std::endl; - } - - return 0; -} - -// Create the component factory -PipelineComponentBase* componentFactorySeg() { - return new Segmentation(); -} - -// register factory with the runtime system -bool registered = PipelineComponentBase::ComponentFactory::componentRegister("Segmentation", &componentFactorySeg); - - diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/Segmentation.h b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/Segmentation.h deleted file mode 100644 index ad64282..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/Segmentation.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Segmentation.h - * - * Created on: Feb 12, 2013 - * Author: george - */ - -#ifndef SEGMENTATION_H_ -#define SEGMENTATION_H_ - -#include "RTPipelineComponentBase.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - -#include "TaskSegmentationStg1.hpp" -#include "TaskSegmentationStg2.hpp" -#include "TaskSegmentationStg3.hpp" -#include "TaskSegmentationStg4.hpp" -#include "TaskSegmentationStg5.hpp" -#include "TaskSegmentationStg6.hpp" - -class Segmentation : public RTPipelineComponentBase { -private: - cv::Mat inputImage; - cv::Mat outLabeledMask; - - // stg1-2 intertask variables - int findCandidateResult; - Mat seg_norbc; - - // stg2-3 intertask variables - Mat seg_nohole; - - // stg3-4 intertask variables - Mat seg_open; - - // stg4-5 intertask variables - Mat img; - Mat seg_nonoverlap; - - // stg5-6 intertask variables - Mat seg; - -public: - Segmentation(); - virtual ~Segmentation(); - - int run(); - -}; - -#endif /* SEGMENTATION_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskNormalization.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskNormalization.cpp deleted file mode 100644 index 6e91050..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskNormalization.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "TaskNormalization.h" - -TaskNormalization::TaskNormalization(DenseDataRegion2D* raw, DenseDataRegion2D* bgr, float targetMean[3]) { - this->bgr = bgr; - this->raw = raw; - for(int i = 0; i < 3; i++) this->targetMean[i] = targetMean[i]; -} - -TaskNormalization::~TaskNormalization() { - if(raw != NULL) delete raw; -} - -bool TaskNormalization::run(int procType, int tid) { - cv::Mat inputImage = this->raw->getData(); - // target values computed from the reference image - - float targetStd[3] = {0.26235, 0.0514831, 0.0114217}; - - cv::Mat NormalizedImg; - std::cout << "Normalization:: "<< " targetMean: "<< targetMean[0]<<":"<< targetMean[1]<<":"<< targetMean[2]< 0) - NormalizedImg = ::nscale::Normalization::normalization(inputImage, targetMean, targetStd); - else - std::cout <<"Normalization: input data NULL" << std::endl; - uint64_t t2 = Util::ClockGetTimeProfile(); - - this->bgr->setData(NormalizedImg); - - std::cout << "Task Normalization time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskNormalization.h b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskNormalization.h deleted file mode 100644 index 38c65de..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskNormalization.h +++ /dev/null @@ -1,32 +0,0 @@ - - -#ifndef TASK_NORMALIZATION_H_ -#define TASK_NORMALIZATION_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "Normalization.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskNormalization: public Task { -private: - DenseDataRegion2D* raw; - DenseDataRegion2D* bgr; - - float targetMean[3]; - -public: - TaskNormalization(DenseDataRegion2D* raw, DenseDataRegion2D* bgr, float targetMean[3]); - - virtual ~TaskNormalization(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_NORMALIZATION_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentation.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentation.cpp deleted file mode 100644 index 808f0fa..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentation.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "TaskSegmentation.h" - -TaskSegmentation::TaskSegmentation(DenseDataRegion2D* bgr, DenseDataRegion2D* mask, unsigned char blue, unsigned char green, unsigned char red, double T1, double T2, unsigned char G1, unsigned char G2, int minSize, int maxSize, int minSizePl, int minSizeSeg, int maxSizeSeg, int fillHolesConnectivity, int reconConnectivity, int watershedConnectivity) { - this->bgr = bgr; - this->mask = mask; - - this->blue = blue; - this->green = green; - this->red = red; - - this->T1 = T1; - this->T2 = T2; - this->G1 = G1; - this->G2 = G2; - this->minSize = minSize; - this->maxSize = maxSize; - this->minSizePl = minSizePl; - this->minSizeSeg = minSizeSeg; - this->maxSizeSeg = maxSizeSeg; - this->fillHolesConnectivity=fillHolesConnectivity; - this->reconConnectivity=reconConnectivity; - this->watershedConnectivity=watershedConnectivity; -} - -TaskSegmentation::~TaskSegmentation() { - if(bgr != NULL) delete bgr; -} - -bool TaskSegmentation::run(int procType, int tid) { - cv::Mat inputImage = this->bgr->getData(); - cv::Mat outMask; - - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "TaskSegmentation: " << (int)blue << ":"<< (int)green << ":"<< (int)red << ":"<< T1<< ":"<< T2<< ":"<< (int)G1<< ":"<< minSize<< ":"<< maxSize<< ":"<< (int)G2<< ":"<< minSizePl<< ":"<< minSizeSeg<< ":"<< maxSizeSeg << ":" << fillHolesConnectivity << ":" << reconConnectivity << ":" << watershedConnectivity << std::endl; - if(inputImage.rows > 0) - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNuclei(inputImage, outMask, blue, green, red, T1, T2, G1, minSize, maxSize, G2, minSizePl, minSizeSeg, maxSizeSeg, fillHolesConnectivity, reconConnectivity, watershedConnectivity); - else - std::cout <<"Segmentation: input data NULL"<< std::endl; - this->mask->setData(outMask); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentation.h b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentation.h deleted file mode 100644 index 6d45c9e..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentation.h +++ /dev/null @@ -1,38 +0,0 @@ - - -#ifndef TASK_SEGMENTATION_H_ -#define TASK_SEGMENTATION_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskSegmentation: public Task { -private: - DenseDataRegion2D* bgr; - DenseDataRegion2D* mask; - - unsigned char blue, green, red; - double T1, T2; - unsigned char G1, G2; - int minSize, maxSize, minSizePl, minSizeSeg, maxSizeSeg; - int fillHolesConnectivity, reconConnectivity, watershedConnectivity; - -public: - TaskSegmentation(DenseDataRegion2D* bgr, DenseDataRegion2D* mask, unsigned char blue, unsigned char green, unsigned char red, double T1, double T2, unsigned char G1, unsigned char G2, int minSize, int maxSize, int minSizePl, int minSizeSeg, int maxSizeSeg, int fillHolesConnectivity, int reconConnectivity, int watershedConnectivity); - - virtual ~TaskSegmentation(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_SEGMENTATION_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg1.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg1.cpp deleted file mode 100644 index 0d3dc2f..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg1.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "TaskSegmentationStg1.hpp" - -TaskSegmentationStg1::TaskSegmentationStg1(DenseDataRegion2D* bgr, unsigned char blue, unsigned char green, unsigned char red, double T1, double T2, unsigned char G1, int minSize, int maxSize, unsigned char G2, int fillHolesConnectivity, int reconConnectivity, int* findCandidateResult, cv::Mat* seg_norbc, ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler) { - - this->img = bgr->getData(); - - this->blue = blue; - this->green = green; - this->red = red; - - this->T1 = T1; - this->T2 = T2; - this->G1 = G1; - this->G2 = G2; - this->minSize = minSize; - this->maxSize = maxSize; - this->fillHolesConnectivity=fillHolesConnectivity; - this->reconConnectivity=reconConnectivity; - - this->seg_norbc = seg_norbc; - this->findCandidateResult = findCandidateResult; - this->logger = logger; - this->iresHandler = iresHandler; -} - -TaskSegmentationStg1::~TaskSegmentationStg1() {}; - -bool TaskSegmentationStg1::run(int procType, int tid) { - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "TaskSegmentationStg1" << std::endl; - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNucleiStg1(img, blue, green, red, T1, T2, G1, minSize, maxSize, G2, fillHolesConnectivity, reconConnectivity, findCandidateResult, seg_norbc, logger, iresHandler); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation Stg1 time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg1.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg1.hpp deleted file mode 100644 index 5229577..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg1.hpp +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef TASK_SEGMENTATION_STG1_H_ -#define TASK_SEGMENTATION_STG1_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskSegmentationStg1: public Task { -private: - cv::Mat img; - - unsigned char blue, green, red; - double T1, T2; - unsigned char G1, G2; - int minSize, maxSize; - - int fillHolesConnectivity, reconConnectivity; - int* findCandidateResult; - cv::Mat* seg_norbc; - - ::cciutils::SimpleCSVLogger *logger; - ::cciutils::cv::IntermediateResultHandler *iresHandler; - -public: - TaskSegmentationStg1(DenseDataRegion2D* bgr, unsigned char blue, unsigned char green, unsigned char red, - double T1, double T2, unsigned char G1, int minSize, int maxSize, unsigned char G2, - int fillHolesConnectivity, int reconConnectivity, int* findCandidateResult, - cv::Mat* seg_norbc, ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler); - - virtual ~TaskSegmentationStg1(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_SEGMENTATION_STG1_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg2.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg2.cpp deleted file mode 100644 index 786a48d..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg2.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "TaskSegmentationStg2.hpp" - -TaskSegmentationStg2::TaskSegmentationStg2(int* findCandidateResult, cv::Mat* seg_norbc, cv::Mat* seg_nohole, - ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler){ - - this->findCandidateResult = findCandidateResult; - this->seg_norbc = seg_norbc; - this->seg_nohole = seg_nohole; - this->logger = logger; - this->iresHandler = iresHandler; -} - -TaskSegmentationStg2::~TaskSegmentationStg2() {} - -bool TaskSegmentationStg2::run(int procType, int tid) { - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "TaskSegmentationStg2:" << std::endl; - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNucleiStg2(findCandidateResult, seg_norbc, seg_nohole, logger, iresHandler); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg2.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg2.hpp deleted file mode 100644 index 0d02c15..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg2.hpp +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef TASK_SEGMENTATION_STG2_H_ -#define TASK_SEGMENTATION_STG2_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskSegmentationStg2: public Task { -private: - int* findCandidateResult; - cv::Mat* seg_norbc; - cv::Mat* seg_nohole; - ::cciutils::SimpleCSVLogger *logger; - ::cciutils::cv::IntermediateResultHandler *iresHandler; - -public: - TaskSegmentationStg2(int* findCandidateResult, cv::Mat* seg_norbc, cv::Mat* seg_nohole, - ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler); - - virtual ~TaskSegmentationStg2(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_SEGMENTATION_STG2_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg3.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg3.cpp deleted file mode 100644 index 81cb31b..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg3.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "TaskSegmentationStg3.hpp" - -TaskSegmentationStg3::TaskSegmentationStg3(cv::Mat* seg_nohole, cv::Mat* seg_open, - ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler){ - - this->seg_open = seg_open; - this->seg_nohole = seg_nohole; - this->logger = logger; - this->iresHandler = iresHandler; -} - -TaskSegmentationStg3::~TaskSegmentationStg3() {} - -bool TaskSegmentationStg3::run(int procType, int tid) { - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "TaskSegmentationStg3:" << std::endl; - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNucleiStg3(seg_nohole, seg_open, logger, iresHandler); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg3.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg3.hpp deleted file mode 100644 index f38e201..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg3.hpp +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef TASK_SEGMENTATION_STG3_H_ -#define TASK_SEGMENTATION_STG3_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskSegmentationStg3: public Task { -private: - cv::Mat* seg_open; - cv::Mat* seg_nohole; - ::cciutils::SimpleCSVLogger *logger; - ::cciutils::cv::IntermediateResultHandler *iresHandler; - -public: - TaskSegmentationStg3(cv::Mat* seg_nohole, cv::Mat* seg_open, - ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler); - - virtual ~TaskSegmentationStg3(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_SEGMENTATION_STG3_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg4.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg4.cpp deleted file mode 100644 index 543ccaa..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg4.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "TaskSegmentationStg4.hpp" - -TaskSegmentationStg4::TaskSegmentationStg4(const cv::Mat* img, int minSizePl, int watershedConnectivity, - cv::Mat* seg_open, cv::Mat* seg_nonoverlap, ::cciutils::SimpleCSVLogger *logger, - ::cciutils::cv::IntermediateResultHandler *iresHandler){ - - this->img = img; - this->minSizePl = minSizePl; - this->watershedConnectivity = watershedConnectivity; - this->seg_open = seg_open; - this->seg_nonoverlap = seg_nonoverlap; - - this->logger = logger; - this->iresHandler = iresHandler; -} - -TaskSegmentationStg4::~TaskSegmentationStg4() {} - -bool TaskSegmentationStg4::run(int procType, int tid) { - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "TaskSegmentationStg4:" << std::endl; - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNucleiStg4(img, minSizePl, - watershedConnectivity, seg_open, seg_nonoverlap, logger, iresHandler); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg4.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg4.hpp deleted file mode 100644 index 8569964..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg4.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef TASK_SEGMENTATION_STG4_H_ -#define TASK_SEGMENTATION_STG4_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskSegmentationStg4: public Task { -private: - const cv::Mat* img; - int minSizePl; - int watershedConnectivity; - cv::Mat* seg_open; - cv::Mat* seg_nonoverlap; - ::cciutils::SimpleCSVLogger *logger; - ::cciutils::cv::IntermediateResultHandler *iresHandler; - -public: - TaskSegmentationStg4(const cv::Mat* img, int minSizePl, int watershedConnectivity, - cv::Mat* seg_open, cv::Mat* seg_nonoverlap, ::cciutils::SimpleCSVLogger *logger, - ::cciutils::cv::IntermediateResultHandler *iresHandler); - - virtual ~TaskSegmentationStg4(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_SEGMENTATION_STG4_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg5.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg5.cpp deleted file mode 100644 index 123195f..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg5.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "TaskSegmentationStg5.hpp" - -TaskSegmentationStg5::TaskSegmentationStg5(int minSizeSeg, int maxSizeSeg, cv::Mat* seg_nonoverlap, cv::Mat* seg, - ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler){ - - this->minSizeSeg = minSizeSeg; - this->maxSizeSeg = maxSizeSeg; - this->seg_nonoverlap = seg_nonoverlap; - this->seg = seg; - - this->logger = logger; - this->iresHandler = iresHandler; -} - -TaskSegmentationStg5::~TaskSegmentationStg5() {} - -bool TaskSegmentationStg5::run(int procType, int tid) { - uint64_t t1 = Util::ClockGetTimeProfile(); - - std::cout << "TaskSegmentationStg5:" << std::endl; - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNucleiStg5(minSizeSeg, maxSizeSeg, seg_nonoverlap, - seg, logger, iresHandler); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg5.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg5.hpp deleted file mode 100644 index a272649..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg5.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef TASK_SEGMENTATION_STG5_H_ -#define TASK_SEGMENTATION_STG5_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskSegmentationStg5: public Task { -private: - int minSizeSeg; - int maxSizeSeg; - cv::Mat* seg_nonoverlap; - cv::Mat* seg; - ::cciutils::SimpleCSVLogger *logger; - ::cciutils::cv::IntermediateResultHandler *iresHandler; - -public: - TaskSegmentationStg5(int minSizeSeg, int maxSizeSeg, cv::Mat* seg_nonoverlap, cv::Mat* seg, - ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler); - - virtual ~TaskSegmentationStg5(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_SEGMENTATION_STG5_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg6.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg6.cpp deleted file mode 100644 index 6def671..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg6.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "TaskSegmentationStg6.hpp" - -TaskSegmentationStg6::TaskSegmentationStg6(cv::Mat* seg, DenseDataRegion2D* output, int fillHolesConnectivity, ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler){ - - this->seg = seg; - this->output = output; - this->fillHolesConnectivity = fillHolesConnectivity; - - this->logger = logger; - this->iresHandler = iresHandler; -} - -TaskSegmentationStg6::~TaskSegmentationStg6() {} - -bool TaskSegmentationStg6::run(int procType, int tid) { - uint64_t t1 = Util::ClockGetTimeProfile(); - cv::Mat outMask; - - std::cout << "TaskSegmentationStg6:" << std::endl; - int segmentationExecCode = ::nscale::HistologicalEntities::segmentNucleiStg6(&outMask, fillHolesConnectivity, seg, logger, iresHandler); - - this->output->setData(outMask); - - uint64_t t2 = Util::ClockGetTimeProfile(); - - std::cout << "Task Segmentation time elapsed: "<< t2-t1 << std::endl; -} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg6.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg6.hpp deleted file mode 100644 index 2cd073c..0000000 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/old/TaskSegmentationStg6.hpp +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef TASK_SEGMENTATION_STG6_H_ -#define TASK_SEGMENTATION_STG6_H_ - -#include "Task.h" -#include "DenseDataRegion2D.h" - -#include "opencv2/opencv.hpp" -#include "opencv2/gpu/gpu.hpp" -#include "HistologicalEntities.h" -#include "PixelOperations.h" -#include "MorphologicOperations.h" -#include "Util.h" -#include "FileUtils.h" - - - -class TaskSegmentationStg6: public Task { -private: - DenseDataRegion2D* output; - cv::Mat* seg; - int fillHolesConnectivity; - ::cciutils::SimpleCSVLogger *logger; - ::cciutils::cv::IntermediateResultHandler *iresHandler; - -public: - TaskSegmentationStg6(cv::Mat* seg, DenseDataRegion2D* output, int fillHolesConnectivity, ::cciutils::SimpleCSVLogger *logger, ::cciutils::cv::IntermediateResultHandler *iresHandler); - - virtual ~TaskSegmentationStg6(); - - bool run(int procType=ExecEngineConstants::CPU, int tid=0); -}; - -#endif /* TASK_SEGMENTATION_STG6_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing.cpp new file mode 100644 index 0000000..50a5422 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing.cpp @@ -0,0 +1,440 @@ +#include "parsing.hpp" + +/***************************************************************/ +/***************** Arguments parsing functions *****************/ +/***************************************************************/ + +int find_arg_pos(string s, int argc, char** argv) { + for (int i=1; i &workflow_inputs, + map> ¶meters_values) { + + char *line = NULL; + size_t len = 0; + + // initial ports section beginning and end + string ip(""); + string ipe(""); + + // ports section beginning and end + string p(""); + string pe(""); + + // argument name, stored before to be consumed when the ArgumentBase type can be set + string name; + + // go to the initial ports beginning + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ip) == string::npos) + delete line; + // cout << "port init begin: " << line << endl; + + // keep getting ports until it reaches the end of initial ports + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ipe) == string::npos) { + // consumes the port beginning + while (string(line).find(p) == string::npos && get_line(&line, workflow_descriptor) != -1) { + delete line; + line = NULL; + } + + if (line != NULL) + delete line; + // cout << "port begin: " << line << endl; + + // finds the name field + name = get_workflow_name(workflow_descriptor); + // cout << "name: " << name << endl; + + // finds the description field + string description = get_workflow_field(workflow_descriptor, "text"); + // cout << "description: " << description << endl; + + // parse the description to get the input value(s) + Json::Reader reader; + bool wellFormed; + Json::Value data; + + wellFormed = reader.parse(description, data, false); + if(!wellFormed) { + cout << "Failed to parse JSON: " << description << endl << reader.getFormattedErrorMessages() << endl; + exit(-3); + } + + // create the propper Argument object for each type case also getting + // the parameters' values + ArgumentBase* inp_arg; + list inp_values; + switch (get_port_type(data["type"].asString())) { + case parsing::int_t: + // create the argument + inp_arg = new ArgumentInt(); + // cout << "int argument: " << name << ", values: " << endl; + // get all possible values for the argument + for (int i=0; itoString() << endl; + inp_values.emplace_back(val); + } + // cout << endl; + break; + case parsing::string_t: + // create the argument + inp_arg = new ArgumentString(); + // cout << "string argument: " << name << ", values: " << endl; + // get all possible values for the argument + for (int i=0; itoString() << endl; + inp_values.emplace_back(val); + } + // cout << endl; + break; + case parsing::float_t: + // create the argument + inp_arg = new ArgumentFloat(); + // cout << "float argument: " << name << ", values: " << endl; + // get all possible values for the argument + for (int i=0; itoString() << endl; + inp_values.emplace_back(val); + } + // cout << endl; + break; + case parsing::float_array_t: + // create the argument + inp_arg = new ArgumentFloatArray(); + // cout << "floatarray argument: " << name << ", values: " << endl; + // get all possible values for the argument + for (int i=0; iaddArgValue(temp); + // cout << temp.toString() << endl; + } + // cout << "]"; + inp_values.emplace_back(val); + } + // cout << endl; + break; + case parsing::rt_t: + // create the argument + inp_arg = new ArgumentRT(); + // cout << "string argument: " << name << ", values: " << endl; + // get all possible values for the argument + for (int i=0; iisFileInput = true; + // cout << ((ArgumentString*)val)->toString() << endl; + inp_values.emplace_back(val); + } + // cout << endl; + break; + default: + exit(-4); + } + + // set inp_arg name, id and input type + inp_arg->setName(name); + int arg_id = new_uid(); + inp_arg->setId(arg_id); + inp_arg->setIo(ArgumentBase::input); + + // add input argument to map + workflow_inputs[arg_id] = inp_arg; + + // add list of argument values to map + parameters_values[arg_id] = inp_values; + + // consumes the port ending + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pe) == string::npos) + delete line; + // cout << "not port end: " << line << endl; + // cout << "port end: " << line << endl; + } +} + +// returns by reference a map of output arguments, mapped by an uid, 'workflow_outputs' +void get_outputs_from_file(FILE* workflow_descriptor, map &workflow_outputs) { + + char *line = NULL; + size_t len = 0; + + // initial ports section beginning and end + string ip(""); + string ipe(""); + + // ports section beginning and end + string p(""); + string pe(""); + + // go to the initial ports beginning + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ip) == string::npos) + delete line; + // cout << "port init begin: " << line << endl; + + // keep getting ports until it reaches the end of initial ports + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ipe) == string::npos) { + // consumes the port beginning + while (string(line).find(p) == string::npos && get_line(&line, workflow_descriptor) != -1) { + delete line; + line = NULL; + } + if (line != NULL) + delete line; + // cout << "port begin: " << line << endl; + + // finds the name field + string name = get_workflow_name(workflow_descriptor); + // cout << "name: " << name << endl; + + // finds the description field + string description = get_workflow_field(workflow_descriptor, "text"); + // cout << "description: " << description << endl; + + // parse the description to get the input value(s) + Json::Reader reader; + bool wellFormed; + Json::Value data; + + wellFormed = reader.parse(description, data, false); + if(!wellFormed) { + cout << "Failed to parse JSON: " << description << endl << reader.getFormattedErrorMessages() << endl; + exit(-3); + } + + // create the propper Argument object for each type case also getting + // the parameters' values + ArgumentBase* out_arg; + switch (get_port_type(data["type"].asString())) { + case parsing::int_t: + // create the argument + out_arg = new ArgumentInt(); + // cout << "int output: " << name << endl; + break; + case parsing::string_t: + // create the argument + out_arg = new ArgumentString(); + // cout << "string output: " << name << endl; + break; + case parsing::float_t: + // create the argument + out_arg = new ArgumentFloat(); + // cout << "float output: " << name << endl; + break; + case parsing::float_array_t: + // create the argument + out_arg = new ArgumentFloatArray(); + // cout << "floatarray output: " << name << endl; + break; + case parsing::rt_t: + // create the argument + out_arg = new ArgumentRT(); + // cout << "string output: " << name << endl; + break; + default: + exit(-4); + } + + out_arg->setName(name); + out_arg->setIo(ArgumentBase::output); + int new_id = new_uid(); + out_arg->setId(new_id); + workflow_outputs[new_id] = out_arg; + + // consumes the port ending + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pe) == string::npos) + delete line; + // get_line << "not port end: " << line << endl; + // cout << "port end: " << line << endl; + } + // cout << "port init end: " << line << endl; +} + +// returns by reference the map of stages on its uid, 'base_stages', and also a map +// of all output arguments of all stages on its uid, 'interstage_arguments'. +void get_stages_from_file(FILE* workflow_descriptor, + map &base_stages, + map &interstage_arguments) { + + char *line = NULL; + size_t len = 0; + + string ps(""); + string pse(""); + + string p(""); + string pe(""); + + // go to the processors beginning + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ps) == string::npos) + delete line; + // cout << "not processor init begin: " << line << endl; + // cout << "processor init begin: " << line << endl; + + // keep getting single processors until it reaches the end of all processors + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pse) == string::npos) { + // consumes the processor beginning + while (string(line).find(p) == string::npos && get_line(&line, workflow_descriptor) != -1) { + delete line; + line = NULL; + } + + if (line != NULL) + delete line; + + // cout << "processor begin: " << line << endl; + + // get stage fields + string name = get_workflow_name(workflow_descriptor); + // cout << "name: " << name << endl; + + // get stage command + string command = get_workflow_field(workflow_descriptor, "command"); + // cout << "command: " << command << endl; + + PipelineComponentBase* stage = PipelineComponentBase::ComponentFactory::getComponentFactory(command)(); + stage->setName(name); + + // workaround to make sure that the RTs, if any, won't leak on the mearging part of the algorithm + stage->setLocation(PipelineComponentBase::WORKER_SIDE); + + // get outputs and add them to the map of arguments + // list inputs = get_workflow_ports(workflow_descriptor, "inputPorts"); + // cout << "outputs:" << endl; + list outputs; + get_workflow_arguments(workflow_descriptor, outputs); + for(list::iterator i=outputs.begin(); i!=outputs.end(); i++) { + // cout << "\t" << (*i)->getId() << ":" << (*i)->getName() << endl; + interstage_arguments[(*i)->getId()] = *i; + stage->addOutput((*i)->getId()); + } + + int stg_id = new_uid(); + // cout << "uid: " << stg_id << endl; + // setting task id + stage->setId(stg_id); + base_stages[stg_id] = stage; + + // consumes the processor ending + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(pe) == string::npos) + delete line; + // cout << "not processor end: " << line << endl; + // cout << "processor end: " << line << endl; + } +} + +// returns by reference the map of stages to its ids updated. each stage now has +// the list of input ids +void connect_stages_from_file(FILE* workflow_descriptor, + map &base_stages, + map &interstage_arguments, + map &input_arguments, + map> &deps, + map &workflow_outputs) { + + char *line = NULL; + size_t len = 0; + + string ds(""); + string dse(""); + + string d(""); + string de(""); + + string sink(""); + + string source(""); + + // go to the datalinks beginning + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(ds) == string::npos) + delete line; + // cout << "not datalink init begin" << line << endl; + // cout << "datalink init begin" << line << endl; + + // keep getting single datalinks until it reaches the end of all datalinks + while (get_line(&line, workflow_descriptor) != -1 && string(line).find(dse) == string::npos) { + // consumes the datalink beginning + while (string(line).find(d) == string::npos && get_line(&line, workflow_descriptor) != -1) { + delete line; + line = NULL; + } + + if (line != NULL) + delete line; + + // cout << "datalink begin" << line << endl; + + // get sink and source fields + vector all_sink_fields = get_all_fields(workflow_descriptor, sink, sinke); + vector all_source_fields = get_all_fields(workflow_descriptor, source, sourcee); + + // verify if it's a task sink instead of a workflow sink + if (all_sink_fields.size() != 1) { + // get the sink stage + PipelineComponentBase* sink_stg = find_stage(base_stages, all_sink_fields[0].data); + // cout << "stage " << sink_stg->getId() << ":" << sink_stg->getName() << " sink" << endl; + + ArgumentBase* arg; + // check whether the source is from the workflow arguments or another stage + if (all_source_fields.size() == 1) { + // if source is workflow argument: + arg = find_argument(input_arguments, all_source_fields[0].data); + // cout << "source from workflow is " << arg->getId() << ":" << arg->getName() << endl; + } else { + // if the source is another stage + deps[sink_stg->getId()].emplace_back(find_stage(base_stages, all_source_fields[0].data)->getId()); + arg = find_argument(interstage_arguments, all_source_fields[1].data); + arg->setParent(find_stage(base_stages, all_source_fields[0].data)->getId()); + // cout << "source from stage " << all_source_fields[0].data << " is " << arg->getId() << ":" + // << arg->getName() << " parent " << arg->getParent() << endl; + } + + // add the link to the sink stage + sink_stg->addInput(arg->getId()); + } + else { + // cout << "workflow argument sink: " << all_sink_fields[0].data << endl; + // update workflow output id in order to access it later to retreive the output + + ArgumentBase* itstg_argument = find_argument(interstage_arguments, all_source_fields[1].data); + // cout << "Output " << all_sink_fields[0].data << " connects to argument " << itstg_argument->getId() << + // ":" << itstg_argument->getName() << endl; + ArgumentBase* output = find_argument(workflow_outputs, all_sink_fields[0].data); + // cout << "Output " << all_sink_fields[0].data << " had id " << output->getId() << endl; + + // remove reference of old id from map + workflow_outputs.erase(output->getId()); + + // update the output id + output->setId(itstg_argument->getId()); + // cout << "Output " << all_sink_fields[0].data << " now has id " << output->getId() << endl; + + // re-insert the output with the new id + workflow_outputs[output->getId()] = output; + } + + // consumes the datalink ending + bool cond = string(line).find(de) == string::npos; + while (cond && get_line(&line, workflow_descriptor) != -1) { + cond = string(line).find(de) == string::npos; + delete line; + } + // cout << "datalink end" << line << endl; + } +} \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing.hpp new file mode 100644 index 0000000..7dedd54 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing.hpp @@ -0,0 +1,61 @@ +#ifndef PARSING_HPP_ +#define PARSING_HPP_ + +#include +#include +#include +#include + +#include +#include "json/json.h" + +#include "Argument.h" +#include "PipelineComponentBase.h" +#include "fg_reuse/merging.hpp" + +using namespace std; + +namespace parsing { +enum port_type_t { + int_t, string_t, float_t, float_array_t, rt_t, error +}; +} + +// general xml field structure +typedef struct { + string type; + string data; +} general_field_t; + +// Argument parsing functions +int find_arg_pos(string s, int argc, char** argv); + +// Workflow parsing functions +void get_inputs_from_file(FILE* workflow_descriptor, map &workflow_inputs, + map> ¶meters_values); +void get_outputs_from_file(FILE* workflow_descriptor, map &workflow_outputs); +void get_stages_from_file(FILE* workflow_descriptor, map &base_stages, + map &interstage_arguments); +void connect_stages_from_file(FILE* workflow_descriptor, map &base_stages, + map &interstage_arguments, map &input_arguments, + map> &deps, map &workflow_outputs); +void expand_stages(const map &args, map> args_values, + map &expanded_args,map stages, + map &expanded_stages, map &workflow_outputs); + +// Workflow parsing helper functions +static list line_buffer; +int get_line(char** line, FILE* f); +string get_workflow_name(FILE* workflow); +string get_workflow_field(FILE* workflow, string field); +void get_workflow_arguments(FILE* workflow, list &output_arguments); +vector get_all_fields(FILE* workflow, string start, string end); +PipelineComponentBase* find_stage(map stages, string name); +int find_stage_id(map stages, string name); +ArgumentBase* find_argument(const map& arguments, string name); +ArgumentBase* find_argument(const list& arguments, int id); +ArgumentBase* find_argument(const list& arguments, string name); +ArgumentBase* new_typed_arg_base(string type); +parsing::port_type_t get_port_type(string s); + +#endif \ No newline at end of file diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing_helper.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing_helper.cpp new file mode 100644 index 0000000..845cca4 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/parsing_helper.cpp @@ -0,0 +1,227 @@ +#include "parsing.hpp" + +/***************************************************************/ +/************* Workflow parsing helper functions ***************/ +/***************************************************************/ + +int get_line(char** line, FILE* f) { + char* nline; + size_t length=0; + if (line_buffer.empty()) { + if (getline(&nline, &length, f) == -1) + return -1; + string sline(nline); + size_t pos=string::npos; + while ((pos = sline.find("><")) != string::npos) { + line_buffer.emplace_back(sline.substr(0,pos+1)); + sline = sline.substr(pos+1); + } + line_buffer.emplace_back(sline); + } + + char* cline = (char*)malloc((line_buffer.front().length()+1)*sizeof(char*)); + memcpy(cline, line_buffer.front().c_str(), line_buffer.front().length()+1); + *line = cline; + line_buffer.pop_front(); + return strlen(*line); +} + +string get_workflow_name(FILE* workflow) { + return get_workflow_field(workflow, "name"); +} + +string get_workflow_field(FILE* workflow, string field) { + char *line = NULL; + size_t len = 0; + + // create field regex + regex r ("<" + field + ">[\"\\:\\w {},.~\\/\\[\\]-]+<\\/" + field + ">"); + + // get a new line until name is found + while (get_line(&line, workflow) != -1) { + smatch match; + string s(line); + regex_search(s, match, r); + + // cout << "line: " << s << endl; + + // if got a name match + if (match.size() == 1) { + // cout << "field match: " << line << endl; + return s.substr(s.find("<" + field + ">")+field.length()+2, + s.find("")-s.find("<" + field + ">")-field.length()-2); + } + delete line; + } + + return nullptr; +} + +void get_workflow_arguments(FILE* workflow, + list &output_arguments) { + + char *line = NULL; + size_t len = 0; + + // initial ports section beginning and end + string ie(""); + string iee(""); + + // ports section beginning and end + string e(""); + string ee(""); + + // go to the initial entries beginning + while (get_line(&line, workflow) != -1 && string(line).find(ie) == string::npos) { + delete line; + line = NULL; + } + // cout << "port init begin: " << line << endl; + + // keep getting ports until it reaches the end of initial ports + while (get_line(&line, workflow) != -1 && string(line).find(iee) == string::npos) { + // consumes the port beginning + while (string(line).find(e) == string::npos && get_line(&line, workflow) != -1) + delete line; + // cout << "port begin: " << line << endl; + + // finds the name and field + string name = get_workflow_field(workflow, "string"); + + // generate an argument + string type = get_workflow_field(workflow, "path"); + ArgumentBase* arg = new_typed_arg_base(type); + arg->setName(name); + arg->setId(new_uid()); + output_arguments.emplace_back(arg); + + // consumes the port ending + while (get_line(&line, workflow) != -1 && string(line).find(ee) == string::npos) { + delete line; + // some c++ implementations may not set line to null after delete + line = NULL; + } + // cout << "not port end: " << line << endl; + // cout << "port end: " << line << endl; + + if (line != NULL) { + delete line; + line = NULL; + } + + } + + if (line != NULL) + delete line; + // cout << "port init end: " << line << endl; +} + +vector get_all_fields(FILE* workflow, string start, string end) { + char *line = NULL; + size_t len = 0; + string type; + string field; + vector fields; + general_field_t general_field; + + // consumes the beginning + while (get_line(&line, workflow) != -1 && string(line).find(start) == string::npos) + delete line; + + // create general field regex + regex r ("<[\\w]+>[\\w ]+<\\/[\\w]+>"); + + // keep fiding fields until the end + while (get_line(&line, workflow) != -1 && string(line).find(end) == string::npos) { + smatch match; + string s(line); + regex_search(s, match, r); + + // if got a general field match + if (match.size() == 1) { + // cout << "general field match: " << line << endl; + type = s.substr(s.find("<")+1, s.find(">")-s.find("<")-1); + field = s.substr(s.find("<" + type + ">")+type.length()+2, s.find("")-s.find("<" + type + ">")-type.length()-2); + // cout << "type: " << type << ", field: " << field << endl; + general_field.type = type; + general_field.data = field; + fields.push_back(general_field); + } + delete line; + } + return fields; +} + +PipelineComponentBase* find_stage(map stages, string name) { + for (pair p : stages) + if (p.second->getName().compare(name) == 0) + return p.second; + return NULL; +} + +int find_stage_id(map stages, string name) { + for (pair p : stages) + if (p.second->getName().compare(name) == 0) + return p.first; + return -1; +} + +ArgumentBase* find_argument(const map& arguments, string name) { + for (pair p : arguments) + if (p.second->getName().compare(name) == 0) + return p.second; + return NULL; +} + +ArgumentBase* find_argument(const list& arguments, int id) { + for (ArgumentBase* a : arguments) + if (a->getId() == id) + return a; + return NULL; +} + +ArgumentBase* find_argument(const list& arguments, string name) { + for (ArgumentBase* a : arguments) + if (a->getName().compare(name) == 0) + return a; + return NULL; +} + +// taken from: http://stackoverflow.com/questions/16388510/evaluate-a-string-with-a-switch-in-c +constexpr unsigned int str2int(const char* str, int h = 0) { + return !str[h] ? 5381 : (str2int(str, h+1) * 33) ^ str[h]; +} + +ArgumentBase* new_typed_arg_base(string type) { + switch (str2int(type.c_str())) { + case str2int("integer"): + return new ArgumentInt(); + case str2int("float"): + return new ArgumentFloat(); + case str2int("string"): + return new ArgumentString(); + case str2int("floatarray"): + return new ArgumentFloatArray(); + case str2int("rt"): + return new ArgumentRT(); + default: + return NULL; + } +} + +parsing::port_type_t get_port_type(string s) { + switch (str2int(s.c_str())) { + case str2int("integer"): + return parsing::int_t; + case str2int("float"): + return parsing::float_t; + case str2int("string"): + return parsing::string_t; + case str2int("floatarray"): + return parsing::float_array_t; + case str2int("rt"): + return parsing::rt_t; + default: + return parsing::error; + } +} diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/seg_example.t2flow b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/seg_example.t2flow index a8a9059..0d5f862 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/seg_example.t2flow +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/seg_example.t2flow @@ -1,8 +1,8 @@ -Workflow2T100 +Workflow2T100 - {"type":"float","value":"5.0"} + {"type":"float","values":[5.0]} 2016-05-23 13:06:10.434 UTC @@ -13,7 +13,7 @@ - {"type":"float", "value":"4"} + {"type":"float", "values":[4]} 2016-05-20 13:33:51.322 UTC @@ -24,7 +24,7 @@ - {"type":"integer", "value":"80"} + {"type":"integer", "values":[80]} 2016-05-20 13:34:56.186 UTC @@ -35,7 +35,7 @@ - {"type":"integer", "value":"45"} + {"type":"integer", "values":[45]} 2016-05-20 13:35:09.604 UTC @@ -46,7 +46,7 @@ - {"type":"integer", "value":"220"} + {"type":"integer", "values":[220]} 2016-05-20 13:32:06.124 UTC @@ -57,7 +57,7 @@ - {"type":"integer", "value":"220"} + {"type":"integer", "values":[220]} 2016-05-20 13:32:23.990 UTC @@ -68,7 +68,7 @@ - {"type":"integer", "value":"220"} + {"type":"integer", "values":[220]} 2016-05-20 13:33:02.0 UTC @@ -79,7 +79,7 @@ - {"type":"integer", "value":"11"} + {"type":"integer", "values":[11]} 2016-05-20 13:35:32.219 UTC @@ -90,7 +90,7 @@ - {"type":"integer", "value":"1000"} + {"type":"integer", "values":[1000]} 2016-05-20 13:35:41.983 UTC @@ -101,7 +101,7 @@ - {"type":"integer", "value":"30"} + {"type":"integer", "values":[30]} 2016-05-20 13:35:53.573 UTC @@ -112,7 +112,7 @@ - {"type":"integer", "value":"21"} + {"type":"integer", "values":[21]} 2016-05-20 13:36:07.383 UTC @@ -123,7 +123,7 @@ - {"type":"integer", "value":"1000"} + {"type":"integer", "values":[1000, 111]} 2016-05-20 13:36:14.214 UTC @@ -134,7 +134,7 @@ - {"type":"integer", "value":"4"} + {"type":"integer", "values":[4, 5]} 2016-05-20 13:36:38.7 UTC @@ -145,7 +145,7 @@ - {"type":"integer", "value":"8"} + {"type":"integer", "values":[8]} 2016-05-20 13:36:48.672 UTC @@ -156,7 +156,7 @@ - {"type":"integer", "value":"8"} + {"type":"integer", "values":[8]} 2016-05-20 13:36:56.118 UTC @@ -166,10 +166,10 @@ target_std00 - - {"type":"array", "value":{"type":"float", "value":["0.26235", "0.0514831", "0.0114217"]}} + + - 2016-05-20 13:41:22.159 UTC + 2016-05-20 13:49:48.942 UTC @@ -177,10 +177,10 @@ - - + + {"type":"floatarray", "values":[[0.26235, 0.0514831, 0.0114217]]} - 2016-05-20 13:49:48.942 UTC + 2016-05-20 13:41:22.159 UTC @@ -189,7 +189,7 @@ - {array, float, [-0.632356, -0.0516004, 0.0376543]} + {"type":"floatarray", "values":[[-0.632356, -0.0516004, 0.0376543]]} 2016-05-20 13:40:34.480 UTC @@ -200,9 +200,9 @@ - temp + {"type":"rt", "values":["/home/willian/Desktop/images15/image3.tiff"]} - 2016-05-20 14:19:36.399 UTC + 2016-06-02 21:50:58.623 UTC @@ -211,101 +211,25 @@ - temp2 + {"type":"rt", "values":["/home/willian/Desktop/images15/image3.mask.png"]} 2016-05-20 14:33:42.942 UTC -dif0norm_stagetarget_mean0target_std0norm_input_rt0normalized_rt00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity - 789663B8-DA91-428A-9F7D-B3F3DA185FD4 - default local - <?xml version="1.0" encoding="UTF-8"?> -<localInvocation><shellPrefix>/bin/sh -c</shellPrefix><linkCommand>/bin/ln -s %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%</linkCommand></localInvocation> - - 296c295f-3841-4f53-8cf8-563c608f67a1 - - - - norm - 1200 - 1800 - - - - - - - - target_std - - target_std - true - false - false - UTF-8 - false - false - false - - - - - norm_input_rt - - norm_input_rt - true - false - false - UTF-8 - false - false - false - - - - - target_mean - - target_mean - true - false - false - UTF-8 - false - false - false - - - - - - - normalized_rt - - normalized_rt - false - - - - - false - true - true - - 0 - - - false -net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize - 1 -net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry - 1.0 - 1000 - 5000 - 0 -net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invokesegmentationblue0watershed_connectivity0T20T10red0recon_connectivity0min_size_seg0min_size_pl0min_size0max_size_seg0max_size0green0G20G10fill_holes_connectivity0seg_rt_inpt0segmented_rt00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity +diff0 + + + + {"type":"floatarray"} + + 2016-06-20 23:56:56.361 UTC + + + + +segmentationblue0watershed_connectivity0T20T10red0recon_connectivity0min_size_seg0min_size_pl0min_size0max_size_seg0max_size0green0G20G10fill_holes_connectivity0seg_rt_inpt0segmented_rt00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity 789663B8-DA91-428A-9F7D-B3F3DA185FD4 default local <?xml version="1.0" encoding="UTF-8"?> @@ -315,7 +239,7 @@ - seg + Segmentation 1200 1800 @@ -553,7 +477,7 @@ segmented_rt - segmented_rt + rt false @@ -584,7 +508,7 @@ - diff + DiffMaskComp 1200 1800 @@ -626,8 +550,8 @@ diff - diff - false + floatarray + true @@ -647,17 +571,17 @@ 1000 5000 0 -net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invokegenerate_rtinput_img0ref0rt00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity +net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invokenorm_stagetarget_std0target_mean0norm_input_rt0normalized_rt00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity 789663B8-DA91-428A-9F7D-B3F3DA185FD4 default local <?xml version="1.0" encoding="UTF-8"?> <localInvocation><shellPrefix>/bin/sh -c</shellPrefix><linkCommand>/bin/ln -s %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%</linkCommand></localInvocation> - cb1a8740-7b3a-4310-821e-90a3b3f089be + 296c295f-3841-4f53-8cf8-563c608f67a1 - convert2rt + NormalizationComp 1200 1800 @@ -667,9 +591,23 @@ - ref + target_std + + target_std + true + false + false + UTF-8 + false + false + false + + + + + norm_input_rt - ref + norm_input_rt true false false @@ -681,9 +619,9 @@ - input_img + target_mean - input_img + target_mean true false false @@ -697,7 +635,7 @@ - rt + normalized_rt rt false @@ -720,13 +658,57 @@ 1000 5000 0 -net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invokenorm_stagetarget_meantarget_meannorm_stagetarget_stdtarget_stdnorm_stagenorm_input_rtgenerate_rtrtsegmentationbluebluesegmentationwatershed_connectivitywatershedConnectivitysegmentationT2T2segmentationT1T1segmentationredredsegmentationrecon_connectivityreconConnectivitysegmentationmin_size_segminSizeSegsegmentationmin_size_plminSizePlsegmentationmin_sizeminSizesegmentationmax_size_segmaxSizeSegsegmentationmax_sizemaxSizesegmentationgreengreensegmentationG2G2segmentationG1G1segmentationfill_holes_connectivityfillHolesConnectivitysegmentationseg_rt_inptnorm_stagenormalized_rtdiff_stagecomputed_masksegmentationsegmented_rtdiff_stageoriginal_maskgenerate_rtrtgenerate_rtinput_imginput_imggenerate_rtrefinput_ref_imgdifdiff_stagediff +net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invokesegmentationbluebluesegmentationwatershed_connectivitywatershedConnectivitysegmentationT2T2segmentationT1T1segmentationredredsegmentationrecon_connectivityreconConnectivitysegmentationmin_size_segminSizeSegsegmentationmin_size_plminSizePlsegmentationmin_sizeminSizesegmentationmax_size_segmaxSizeSegsegmentationmax_sizemaxSizesegmentationgreengreensegmentationG2G2segmentationG1G1segmentationfill_holes_connectivityfillHolesConnectivitysegmentationseg_rt_inptnorm_stagenormalized_rtdiff_stagecomputed_masksegmentationsegmented_rtdiff_stageoriginal_maskinput_ref_imgnorm_stagetarget_stdtarget_stdnorm_stagetarget_meantarget_meannorm_stagenorm_input_rtinput_imgdiffdiff_stagediff - 93f65527-470e-4e46-a7ff-9a1413e71f9f + 1a188d86-91e4-4897-a8a5-a03142eef0f8 - 2016-05-20 13:54:29.965 UTC + 2016-06-20 23:56:57.458 UTC + + + + + + + + + c1cf530f-c89d-4ee8-a160-ce331a9dead3 + + 2016-05-18 19:38:37.813 UTC + + + + + + + + + cb447b8a-8474-49b1-8dab-9a719e926768 + + 2016-05-20 13:48:39.241 UTC + + + + + + + + + 6473b4d3-502e-496c-89f6-8a408389305a + + 2016-06-02 22:09:04.31 UTC + + + + + + + + + f5c7a265-91bb-4305-953a-8e4f5e1b3298 + + 2016-05-18 19:04:34.237 UTC @@ -746,9 +728,9 @@ - 46074bb5-bad6-4ab8-afb1-739d32dd54e1 + b66815e8-6326-417f-98cd-ef2943539c0d - 2016-05-18 20:20:31.495 UTC + 2016-06-02 14:15:50.27 UTC @@ -757,9 +739,9 @@ - d6aa8eee-7a14-474e-9ed5-2be48d2c8448 + e11cf840-592d-45c5-91f4-9bee0c290087 - 2016-05-20 13:37:01.632 UTC + 2016-06-02 21:57:13.800 UTC @@ -768,9 +750,9 @@ - cb447b8a-8474-49b1-8dab-9a719e926768 + baec5ea9-5092-4fc2-bbcd-9cf2278f1595 - 2016-05-20 13:48:39.241 UTC + 2016-06-02 22:08:24.922 UTC @@ -779,9 +761,9 @@ - c1430382-50c9-4c54-acb5-25155777d162 + 8ac2b23a-6026-4e5e-b258-2b812167c501 - 2016-05-20 14:33:23.558 UTC + 2016-06-02 21:53:09.500 UTC @@ -790,9 +772,75 @@ - 0949901b-c406-4579-84c3-a009be46223b + 7b655ea8-b73b-41c4-9f8e-17e124e1a40c - 2016-05-20 14:33:44.973 UTC + 2016-06-02 21:53:16.900 UTC + + + + + + + + + 468be6a5-f2d1-4460-97c9-4701249f3cf4 + + 2016-05-25 18:18:23.603 UTC + + + + + + + + + 5488af58-0bfb-408d-8e8d-d79f063e6505 + + 2016-06-02 22:09:38.310 UTC + + + + + + + + + 93f65527-470e-4e46-a7ff-9a1413e71f9f + + 2016-05-20 13:54:29.965 UTC + + + + + + + + + 19217faf-08fd-4a5b-9074-52c0b1faa9cc + + 2016-05-20 13:35:09.729 UTC + + + + + + + + + d9ff9e27-3833-4fd9-a646-2e36b8383ff2 + + 2016-06-02 22:15:36.871 UTC + + + + + + + + + 6844b465-b4fa-4f55-9578-bc77cca2e1f5 + + 2016-06-03 00:47:34.249 UTC @@ -808,6 +856,39 @@ + + + + + 0949901b-c406-4579-84c3-a009be46223b + + 2016-05-20 14:33:44.973 UTC + + + + + + + + + d6aa8eee-7a14-474e-9ed5-2be48d2c8448 + + 2016-05-20 13:37:01.632 UTC + + + + + + + + + ba9886c8-b4ce-486b-ab1a-6dff1e5cd7ec + + 2016-06-02 21:54:53.874 UTC + + + + @@ -823,9 +904,9 @@ - c1cf530f-c89d-4ee8-a160-ce331a9dead3 + aed7eaab-48bd-44b3-acb1-fd26a7d89687 - 2016-05-18 19:38:37.813 UTC + 2016-06-02 22:04:56.771 UTC @@ -834,9 +915,9 @@ - 19217faf-08fd-4a5b-9074-52c0b1faa9cc + a3777151-e985-413e-8270-f7b587bf46f4 - 2016-05-20 13:35:09.729 UTC + 2016-06-02 22:08:10.303 UTC @@ -845,9 +926,42 @@ - 32989400-11c7-4dcb-8e09-b70e8c9c67e1 + c1430382-50c9-4c54-acb5-25155777d162 - 2016-05-19 20:47:11.670 UTC + 2016-05-20 14:33:23.558 UTC + + + + + + + + + bb6aedc8-1d80-4a13-b7cf-47d2872d791d + + 2016-06-02 21:51:41.557 UTC + + + + + + + + + dd1638dd-820d-4ac4-9ff4-91856672f08a + + 2016-06-02 22:10:26.838 UTC + + + + + + + + + 7845d7af-905d-4036-8f20-e4d51beef2ed + + 2016-06-02 22:05:15.287 UTC @@ -863,6 +977,17 @@ + + + + + 46074bb5-bad6-4ab8-afb1-739d32dd54e1 + + 2016-05-18 20:20:31.495 UTC + + + + @@ -878,9 +1003,20 @@ - f5c7a265-91bb-4305-953a-8e4f5e1b3298 + 1a038ded-f352-4ead-afa8-7ccf891a5b0b - 2016-05-18 19:04:34.237 UTC + 2016-06-02 21:56:16.324 UTC + + + + + + + + + 32989400-11c7-4dcb-8e09-b70e8c9c67e1 + + 2016-05-19 20:47:11.670 UTC diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/CMakeLists.txt b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/CMakeLists.txt new file mode 100644 index 0000000..875c77c --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/CMakeLists.txt @@ -0,0 +1,52 @@ +cmake_minimum_required(VERSION 2.6) +project(PipelineRTFS-NS-Diff-FGO-Stages) + +add_definitions( -std=c++11 -ggdb -gdwarf-2 -fopenmp) +#add_definitions( -std=c++11 ) + +#find_package( OpenCV REQUIRED ) + +# Make sure the compiler can find the includes of the runtime system +#include_directories(${Runtime_SOURCE_DIR}) +#include_directories(${Runtime_SOURCE_DIR}/ResourceManager) +#include_directories(${Runtime_SOURCE_DIR}/util) +#include_directories(${RegionTemplate_SOURCE_DIR}) +#include_directories(${RegionTemplate_SOURCE_DIR}/Utils) +#include_directories(${RegionTemplate_SOURCE_DIR}/comparativeanalysis) + +# nscale dirs +#find_path(NSCALE_SRC_DIR REQUIRED) +#find_path(NSCALE_BUILD_DIR REQUIRED) +#set(nscalesrcdir ${NSCALE_SRC_DIR}) +#set(nscalebuilddir ${NSCALE_BUILD_DIR}) + +#includes +#include_directories(${nscalesrcdir}/segment) +#include_directories(${nscalesrcdir}/segment/cuda) +#include_directories(${nscalesrcdir}/common) +#include_directories(${nscalesrcdir}/features) +#include_directories(${nscalesrcdir}/normalization) + +# Make sure the compiler can find the library in runtime system directory +#link_directories(${Runtime_SOURCE_DIR}) +# nscale lib dir +#link_directories(/Users/george/Documents/emory/nscale-sc13/nscale/lib) +#link_directories(${nscalebuilddir}/lib) +# Create library with components implementation + +set(libname componentnsdifffgostages) + +# Source files used by the Runtime System +set(libstages NormalizationComp.cpp Segmentation.cpp FeatureExtraction.cpp TaskFeatures.cpp DiffMaskComp.cpp) + +#set(libcomparativeanalysis ../../comparativeanalysis/TaskDiffMask.cpp ../../comparativeanalysis/pixelcompare/PixelCompare.cpp) + +# Add rule to generate the Runtime System, as a shared library (.so) +add_library("${libname}" SHARED ${libstages}) + +#set_target_properties("${libname}" PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}") +#target_link_libraries("${libname}" runtimesystem) +#target_link_libraries(${libname} regiontemplates) + +# nscale libs +#target_link_libraries("${libname}" segment normalization featuresAll ${OpenCV_LIBS}) diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/DiffMaskComp.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/DiffMaskComp.cpp similarity index 66% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/DiffMaskComp.cpp rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/DiffMaskComp.cpp index 2d500d8..2398d25 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/DiffMaskComp.cpp +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/DiffMaskComp.cpp @@ -17,23 +17,23 @@ int DiffMaskComp::run() { RegionTemplate * inputRt = this->getRegionTemplateInstance("tile"); // int parameterSegId = ((ArgumentInt*)this->getArgument(0))->getArgValue(); - std::string computed_mask_name; - std::string reference_mask_name; + ArgumentRT* computed_mask_name; + ArgumentRT* reference_mask_name; float* diffPixels; int set_cout = 0; for(int i=0; igetArgumentsSize(); i++){ - if (this->getArgument(i)->getName().compare("computed_mask") == 0) { - computed_mask_name = (std::string)((ArgumentString*)this->getArgument(i))->getArgValue(); + if (this->getArgument(i)->getName().compare("segmented_rt") == 0) { + computed_mask_name = (ArgumentRT*)this->getArgument(i); set_cout++; } - if (this->getArgument(i)->getName().compare("reference_mask") == 0) { - reference_mask_name = (std::string)((ArgumentString*)this->getArgument(i))->getArgValue(); + if (this->getArgument(i)->getName().compare("input_ref_img") == 0) { + reference_mask_name = (ArgumentRT*)this->getArgument(i); set_cout++; } - if (this->getArgument(i)->getName().compare("diffPixels") == 0) { + if (this->getArgument(i)->getName().compare("diff") == 0) { diffPixels = (float*)((ArgumentFloatArray*)this->getArgument(i))->getArgValue(); set_cout++; } @@ -41,7 +41,7 @@ int DiffMaskComp::run() { } if (set_cout < this->getArgumentsSize()) - std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on DiffMaskComp" << std::endl; // this->addInputOutputDataRegion("tile", inputDr, RTPipelineComponentBase::INPUT); @@ -53,10 +53,20 @@ int DiffMaskComp::run() { if(inputRt != NULL){ + cout << "[DiffMaskComp] trying to get data regions:" << endl; + // Mask computed in segmentation using specific application parameter set - DenseDataRegion2D *computed_mask = dynamic_cast(inputRt->getDataRegion(computed_mask_name, "", 0, dr_id)); + DenseDataRegion2D *computed_mask = dynamic_cast( + inputRt->getDataRegion(computed_mask_name->getName(), std::to_string(computed_mask_name->getId()), 0, + computed_mask_name->getId())); + cout << "\t" << computed_mask_name->getName() << ":" << computed_mask_name->getId() + << ":0:" << computed_mask_name->getId() << endl; // Mask used as a reference - DenseDataRegion2D *reference_mask = dynamic_cast(inputRt->getDataRegion(reference_mask_name, "", 0, dr_id)); + DenseDataRegion2D *reference_mask = dynamic_cast( + inputRt->getDataRegion(reference_mask_name->getName(), std::to_string(reference_mask_name->getId()), 0, + reference_mask_name->getId())); + cout << "\t" << reference_mask->getName() << ":" << reference_mask->getId() + << ":0:" << reference_mask->getId() << endl; if(computed_mask != NULL && reference_mask != NULL){ // gambiarra @@ -76,7 +86,6 @@ int DiffMaskComp::run() { // std::cout << "DiffMaskComp: you didn't specify a task: " << std::endl; // inputRt->print(); // } - }else{ std::cout << "DiffMaskComp: did not find data regions: " << std::endl; inputRt->print(); @@ -85,6 +94,14 @@ int DiffMaskComp::run() { std::cout << "\tTASK diff mask: Did not find RT named tile"<< std::endl; } + // delete computed_mask_name; + // delete reference_mask_name; + // delete diffPixels; + + long long t = Util::ClockGetTime(); + // cout << "[PROFILER] Diff (id | time in ms): " << this->getId() << " " << t << endl; + cout << "[EXEC_ORDER] diff " << this->getId() << endl; + return 0; } diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/DiffMaskComp.h b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/DiffMaskComp.h similarity index 100% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/DiffMaskComp.h rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/DiffMaskComp.h diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/FeatureExtraction.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/FeatureExtraction.cpp similarity index 100% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/FeatureExtraction.cpp rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/FeatureExtraction.cpp diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/FeatureExtraction.h b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/FeatureExtraction.h similarity index 100% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/FeatureExtraction.h rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/FeatureExtraction.h diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/NormalizationComp.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/NormalizationComp.cpp similarity index 55% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/NormalizationComp.cpp rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/NormalizationComp.cpp index a63b325..709edd7 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/NormalizationComp.cpp +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/NormalizationComp.cpp @@ -26,30 +26,30 @@ int NormalizationComp::run() { std::cout << "Executing component: " << this->getComponentName() << " instance id: " << this->getId() <getRegionTemplateInstance("tile"); - std::string inputImage_name; - std::string normalizedImg_name; - float* targetMean; - float* targetStd; + ArgumentRT* input_img_arg; + ArgumentRT* normalized_rt_arg; + float* target_mean; + float* target_std; int set_cout = 0; for(int i=0; igetArgumentsSize(); i++){ - if (this->getArgument(i)->getName().compare("inputImage") == 0) { - inputImage_name = (std::string)((ArgumentString*)this->getArgument(i))->getArgValue(); + if (this->getArgument(i)->getName().compare("input_img") == 0) { + input_img_arg = (ArgumentRT*)this->getArgument(i); set_cout++; } - if (this->getArgument(i)->getName().compare("normalizedImg") == 0) { - normalizedImg_name = (std::string)((ArgumentString*)this->getArgument(i))->getArgValue(); + if (this->getArgument(i)->getName().compare("normalized_rt") == 0) { + normalized_rt_arg = (ArgumentRT*)this->getArgument(i); set_cout++; } - if (this->getArgument(i)->getName().compare("targetMean") == 0) { - targetMean = (float*)((ArgumentFloatArray*)this->getArgument(i))->getArgValue(); + if (this->getArgument(i)->getName().compare("target_mean") == 0) { + target_mean = (float*)((ArgumentFloatArray*)this->getArgument(i))->getArgValue(); set_cout++; } - if (this->getArgument(i)->getName().compare("targetStd") == 0) { - targetStd = (float*)((ArgumentFloatArray*)this->getArgument(i))->getArgValue(); + if (this->getArgument(i)->getName().compare("target_std") == 0) { + target_std = (float*)((ArgumentFloatArray*)this->getArgument(i))->getArgValue(); set_cout++; } @@ -58,28 +58,32 @@ int NormalizationComp::run() { if (set_cout < this->getArgumentsSize()) std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on NormalizationComp" << std::endl; - this->addInputOutputDataRegion("tile", inputImage_name, RTPipelineComponentBase::INPUT); + this->addInputOutputDataRegion("tile", input_img_arg->getName(), RTPipelineComponentBase::INPUT); - this->addInputOutputDataRegion("tile", normalizedImg_name, RTPipelineComponentBase::OUTPUT); + this->addInputOutputDataRegion("tile", normalized_rt_arg->getName(), RTPipelineComponentBase::OUTPUT); if(inputRt != NULL){ - DenseDataRegion2D *inputImage = NULL; + DenseDataRegion2D *input_img = NULL; - DenseDataRegion2D *normalizedImg = NULL; + DenseDataRegion2D *normalized_rt = NULL; try{ - inputImage = dynamic_cast(inputRt->getDataRegion(inputImage_name, "", 0, dr_id)); + input_img = dynamic_cast(inputRt->getDataRegion(input_img_arg->getName(), std::to_string(input_img_arg->getId()), 0, input_img_arg->getId())); - normalizedImg = dynamic_cast(inputRt->getDataRegion(normalizedImg_name, "", 0, dr_id)); + normalized_rt = new DenseDataRegion2D(); + normalized_rt->setName(normalized_rt_arg->getName()); + normalized_rt->setId(std::to_string(normalized_rt_arg->getId())); + normalized_rt->setVersion(normalized_rt_arg->getId()); + inputRt->insertDataRegion(normalized_rt); - std::cout << "NormalizationComp. paramenterId: "<< dr_id <executeTask(task); @@ -104,34 +108,34 @@ bool registeredNormalizationComp = PipelineComponentBase::ComponentFactory::comp /*********************************** Task functions ***********************************/ /**************************************************************************************/ -TaskNormalizationComp::TaskNormalizationComp(DenseDataRegion2D* inputImage_temp, DenseDataRegion2D* normalizedImg_temp, float* targetMean, float* targetStd) { +TaskNormalizationComp::TaskNormalizationComp(DenseDataRegion2D* input_img_temp, DenseDataRegion2D* normalized_rt_temp, float* target_mean, float* target_std) { - this->inputImage_temp = inputImage_temp; - this->normalizedImg_temp = normalizedImg_temp; - this->targetMean = targetMean; - this->targetStd = targetStd; + this->input_img_temp = input_img_temp; + this->normalized_rt_temp = normalized_rt_temp; + this->target_mean = target_mean; + this->target_std = target_std; } TaskNormalizationComp::~TaskNormalizationComp() { - if(inputImage_temp != NULL) delete inputImage_temp; + if(input_img_temp != NULL) delete input_img_temp; } bool TaskNormalizationComp::run(int procType, int tid) { - cv::Mat inputImage = this->inputImage_temp->getData(); + cv::Mat input_img = this->input_img_temp->getData(); - cv::Mat normalizedImg = this->normalizedImg_temp->getData(); + cv::Mat normalized_rt; uint64_t t1 = Util::ClockGetTimeProfile(); std::cout << "TaskNormalizationComp executing." << std::endl; - normalizedImg = ::nscale::Normalization::normalization(inputImage, targetMean, targetStd); + normalized_rt = ::nscale::Normalization::normalization(input_img, target_mean, target_std); - this->normalizedImg_temp->setData(normalizedImg); + this->normalized_rt_temp->setData(normalized_rt); uint64_t t2 = Util::ClockGetTimeProfile(); diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/NormalizationComp.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/NormalizationComp.hpp similarity index 73% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/NormalizationComp.hpp rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/NormalizationComp.hpp index 32a10e1..f1486f7 100644 --- a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/NormalizationComp.hpp +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/NormalizationComp.hpp @@ -24,13 +24,13 @@ class NormalizationComp : public RTPipelineComponentBase { private: // data region id // IMPORTANT: this need to be set during the creation of this object - int dr_id; + int workflow_id; public: NormalizationComp(); virtual ~NormalizationComp(); - void set_dr_id(int id) {dr_id = id;}; + void set_workflow_id(int id) {workflow_id = id;}; int run(); }; @@ -40,17 +40,17 @@ class TaskNormalizationComp: public Task { private: // data regions - DenseDataRegion2D* inputImage_temp; - DenseDataRegion2D* normalizedImg_temp; + DenseDataRegion2D* input_img_temp; + DenseDataRegion2D* normalized_rt_temp; // all other variables - float* targetMean; - float* targetStd; + float* target_mean; + float* target_std; public: - TaskNormalizationComp(DenseDataRegion2D* inputImage_temp, DenseDataRegion2D* normalizedImg_temp, float* targetMean, float* targetStd); + TaskNormalizationComp(DenseDataRegion2D* input_img_temp, DenseDataRegion2D* normalized_rt_temp, float* target_mean, float* target_std); virtual ~TaskNormalizationComp(); diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/Segmentation.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/Segmentation.cpp new file mode 100644 index 0000000..879b4ad --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/Segmentation.cpp @@ -0,0 +1,1613 @@ +/* + * Segmentation.cpp + * + * GENERATED CODE + * DO NOT CHANGE IT MANUALLY!!!!! + */ + +#include "Segmentation.hpp" + +#include +#include +#include +#include + +/**************************************************************************************/ +/**************************** PipelineComponent functions *****************************/ +/**************************************************************************************/ + +Segmentation::Segmentation() { + this->setComponentName("Segmentation"); + + // generate task descriptors + list task_Segmentation0_args; + list task_Segmentation1_args; + list task_Segmentation2_args; + list task_Segmentation3_args; + list task_Segmentation4_args; + list task_Segmentation5_args; + list task_Segmentation6_args; + + ArgumentRT* normalized_rt0 = new ArgumentRT(); + normalized_rt0->setName("normalized_rt"); + task_Segmentation0_args.emplace_back(normalized_rt0); + ArgumentInt* blue0 = new ArgumentInt(); + blue0->setName("blue"); + task_Segmentation0_args.emplace_back(blue0); + ArgumentInt* green0 = new ArgumentInt(); + green0->setName("green"); + task_Segmentation0_args.emplace_back(green0); + ArgumentInt* red0 = new ArgumentInt(); + red0->setName("red"); + task_Segmentation0_args.emplace_back(red0); + ArgumentFloat* T10 = new ArgumentFloat(); + T10->setName("T1"); + task_Segmentation0_args.emplace_back(T10); + ArgumentFloat* T20 = new ArgumentFloat(); + T20->setName("T2"); + task_Segmentation0_args.emplace_back(T20); + this->tasksDesc["TaskSegmentation0"] = task_Segmentation0_args; + + ArgumentInt* reconConnectivity1 = new ArgumentInt(); + reconConnectivity1->setName("reconConnectivity"); + task_Segmentation1_args.emplace_back(reconConnectivity1); + this->tasksDesc["TaskSegmentation1"] = task_Segmentation1_args; + + ArgumentInt* fillHolesConnectivity2 = new ArgumentInt(); + fillHolesConnectivity2->setName("fillHolesConnectivity"); + task_Segmentation2_args.emplace_back(fillHolesConnectivity2); + ArgumentInt* G12 = new ArgumentInt(); + G12->setName("G1"); + task_Segmentation2_args.emplace_back(G12); + this->tasksDesc["TaskSegmentation2"] = task_Segmentation2_args; + + ArgumentInt* minSize3 = new ArgumentInt(); + minSize3->setName("minSize"); + task_Segmentation3_args.emplace_back(minSize3); + ArgumentInt* maxSize3 = new ArgumentInt(); + maxSize3->setName("maxSize"); + task_Segmentation3_args.emplace_back(maxSize3); + this->tasksDesc["TaskSegmentation3"] = task_Segmentation3_args; + + ArgumentInt* G24 = new ArgumentInt(); + G24->setName("G2"); + task_Segmentation4_args.emplace_back(G24); + this->tasksDesc["TaskSegmentation4"] = task_Segmentation4_args; + + ArgumentRT* normalized_rt5 = new ArgumentRT(); + normalized_rt5->setName("normalized_rt"); + task_Segmentation5_args.emplace_back(normalized_rt5); + ArgumentInt* minSizePl5 = new ArgumentInt(); + minSizePl5->setName("minSizePl"); + task_Segmentation5_args.emplace_back(minSizePl5); + ArgumentInt* watershedConnectivity5 = new ArgumentInt(); + watershedConnectivity5->setName("watershedConnectivity"); + task_Segmentation5_args.emplace_back(watershedConnectivity5); + this->tasksDesc["TaskSegmentation5"] = task_Segmentation5_args; + + ArgumentRT* segmented_rt6 = new ArgumentRT(); + segmented_rt6->setName("segmented_rt"); + task_Segmentation6_args.emplace_back(segmented_rt6); + ArgumentInt* minSizeSeg6 = new ArgumentInt(); + minSizeSeg6->setName("minSizeSeg"); + task_Segmentation6_args.emplace_back(minSizeSeg6); + ArgumentInt* maxSizeSeg6 = new ArgumentInt(); + maxSizeSeg6->setName("maxSizeSeg"); + task_Segmentation6_args.emplace_back(maxSizeSeg6); + ArgumentInt* fillHolesConnectivity6 = new ArgumentInt(); + fillHolesConnectivity6->setName("fillHolesConnectivity"); + task_Segmentation6_args.emplace_back(fillHolesConnectivity6); + this->tasksDesc["TaskSegmentation6"] = task_Segmentation6_args; + + +} + +Segmentation::~Segmentation() {} + +int Segmentation::run() { + + // Print name and id of the component instance + std::cout << "Executing component: " << this->getComponentName() << " instance id: " << this->getId() <getRegionTemplateInstance("tile"); + + this->addInputOutputDataRegion("tile", "normalized_rt", RTPipelineComponentBase::INPUT); + + this->addInputOutputDataRegion("tile", "segmented_rt", RTPipelineComponentBase::OUTPUT); + + + map prev_map; + list ordered_tasks; + for (list::reverse_iterator task=tasks.rbegin(); task!=tasks.rend(); task++) { + // cout << "[Segmentation] sending task " << (*task)->getId() << endl; + // generate a task copy and update the DR, getting the actual data + ReusableTask* t = (*task)->clone(); + t->updateDR(inputRt); + + // solve dependency if it isn't the first task + if (t->parentTask != -1) { + // cout << "\t\t\t[Segmentation] setting dep of " << t->getId() << " to " << prev_map[t->parentTask]->getId() << endl; + t->addDependency(prev_map[t->parentTask]->getId()); + t->resolveDependencies(prev_map[t->parentTask]); + } + + // add this task to parent list for future dependency resolution + prev_map[t->getId()] = t; + ordered_tasks.emplace_back(t); + } + + // send all tasks to be executed + for (ReusableTask* t : ordered_tasks) { + cout << "\t\t\t[Segmentation] sending task " << t->getId() << endl; + t->mock = false; + this->executeTask(t); + } + + return 0; +} + +// Create the component factory +PipelineComponentBase* componentFactorySegmentation() { + return new Segmentation(); +} + +// register factory with the runtime system +bool registeredSegmentation = PipelineComponentBase::ComponentFactory::componentRegister("Segmentation", &componentFactorySegmentation); + + +/**************************************************************************************/ +/*********************************** Task functions ***********************************/ +/**************************************************************************************/ + +TaskSegmentation0::TaskSegmentation0() { + bgr = std::shared_ptr>(new std::vector); + rbc = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation0::TaskSegmentation0(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ + if (a->getName().compare("normalized_rt") == 0) { + ArgumentRT* normalized_rt_arg; + normalized_rt_arg = (ArgumentRT*)a; + this->normalized_rt_temp = std::make_shared(new DenseDataRegion2D()); + (*this->normalized_rt_temp)->setName(normalized_rt_arg->getName()); + (*this->normalized_rt_temp)->setId(std::to_string(normalized_rt_arg->getId())); + (*this->normalized_rt_temp)->setVersion(normalized_rt_arg->getId()); + set_cout++; + } + + if (a->getName().compare("blue") == 0) { + this->blue = (unsigned char)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("green") == 0) { + this->green = (unsigned char)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("red") == 0) { + this->red = (unsigned char)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("T1") == 0) { + this->T1 = (double)((ArgumentFloat*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("T2") == 0) { + this->T2 = (double)((ArgumentFloat*)a)->getArgValue(); + set_cout++; + } + + + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + + bgr = std::shared_ptr>(new std::vector); + rbc = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation0::~TaskSegmentation0() { + if (normalized_rt_temp.unique() && mock) + delete *normalized_rt_temp; +} + +bool TaskSegmentation0::run(int procType, int tid) { + cv::Mat normalized_rt = (*this->normalized_rt_temp)->getData(); + + + std::vector bgr_temp; + cv::Mat rbc_temp; + + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "TaskSegmentation0 executing." << std::endl; + + ::nscale::HistologicalEntities::segmentNucleiStg1(normalized_rt, blue, green, red, T1, T2, &*bgr, &*rbc); + + uint64_t t2 = Util::ClockGetTimeProfile(); + + + std::cout << "Task Segmentation0 time elapsed: "<< t2-t1 << std::endl; +} + +void TaskSegmentation0::updateDR(RegionTemplate* rt) { + string name_normalized_rt_temp = (*this->normalized_rt_temp)->getName(); + string sid_normalized_rt_temp = (*this->normalized_rt_temp)->getId(); + int id_normalized_rt_temp = stoi((*this->normalized_rt_temp)->getId()); + if (normalized_rt_temp != NULL) + delete *normalized_rt_temp; + normalized_rt_temp = std::make_shared(dynamic_cast(rt->getDataRegion(name_normalized_rt_temp, sid_normalized_rt_temp, 0, id_normalized_rt_temp))); +} + +void TaskSegmentation0::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation0] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + +} + +void TaskSegmentation0::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible + + + +} + +bool TaskSegmentation0::reusable(ReusableTask* rt) { + TaskSegmentation0* t = (TaskSegmentation0*)(rt); + if ( + (*this->normalized_rt_temp)->getName() == (*t->normalized_rt_temp)->getName() && + this->blue == t->blue && + this->green == t->green && + this->red == t->red && + this->T1 == t->T1 && + this->T2 == t->T2 && + + true) { + + return true; + } else { + return false; + } + return true; +} + +int TaskSegmentation0::size() { + return + sizeof(int) + sizeof(int) + + sizeof(int) + (*this->normalized_rt_temp)->getName().length()*sizeof(char) + sizeof(int) + + sizeof(unsigned char) + + sizeof(unsigned char) + + sizeof(unsigned char) + + sizeof(double) + + sizeof(double) + + + 0; +} + +int TaskSegmentation0::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy normalized_rt id + int normalized_rt_id = stoi((*normalized_rt_temp)->getId()); + memcpy(buff+serialized_bytes, &normalized_rt_id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy normalized_rt name size + int normalized_rt_name_size = (*normalized_rt_temp)->getName().length(); + memcpy(buff+serialized_bytes, &normalized_rt_name_size, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy normalized_rt name + memcpy(buff+serialized_bytes, (*normalized_rt_temp)->getName().c_str(), normalized_rt_name_size*sizeof(char)); + serialized_bytes+=normalized_rt_name_size*sizeof(char); + + // copy field blue + memcpy(buff+serialized_bytes, &blue, sizeof(unsigned char)); + serialized_bytes+=sizeof(unsigned char); + + // copy field green + memcpy(buff+serialized_bytes, &green, sizeof(unsigned char)); + serialized_bytes+=sizeof(unsigned char); + + // copy field red + memcpy(buff+serialized_bytes, &red, sizeof(unsigned char)); + serialized_bytes+=sizeof(unsigned char); + + // copy field T1 + memcpy(buff+serialized_bytes, &T1, sizeof(double)); + serialized_bytes+=sizeof(double); + + // copy field T2 + memcpy(buff+serialized_bytes, &T2, sizeof(double)); + serialized_bytes+=sizeof(double); + + + return serialized_bytes; +} + +int TaskSegmentation0::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // create the normalized_rt + this->normalized_rt_temp = std::make_shared(new DenseDataRegion2D()); + + // extract normalized_rt id + int normalized_rt_id = ((int*)(buff+deserialized_bytes))[0]; + (*this->normalized_rt_temp)->setId(to_string(normalized_rt_id)); + (*this->normalized_rt_temp)->setVersion(normalized_rt_id); + deserialized_bytes += sizeof(int); + + // extract normalized_rt name size + int normalized_rt_name_size = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // copy normalized_rt name + char normalized_rt_name[normalized_rt_name_size+1]; + normalized_rt_name[normalized_rt_name_size] = '\0'; + memcpy(normalized_rt_name, buff+deserialized_bytes, sizeof(char)*normalized_rt_name_size); + deserialized_bytes += sizeof(char)*normalized_rt_name_size; + (*this->normalized_rt_temp)->setName(normalized_rt_name); + + // extract field blue + this->blue = ((unsigned char*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(unsigned char); + + // extract field green + this->green = ((unsigned char*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(unsigned char); + + // extract field red + this->red = ((unsigned char*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(unsigned char); + + // extract field T1 + this->T1 = ((double*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(double); + + // extract field T2 + this->T2 = ((double*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(double); + + + return deserialized_bytes; +} + +ReusableTask* TaskSegmentation0::clone() { + ReusableTask* retValue = new TaskSegmentation0(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void TaskSegmentation0::print() { + cout << "blue: " << blue << endl; + cout << "green: " << green << endl; + cout << "red: " << red << endl; + cout << "T1: " << T1 << endl; + cout << "T2: " << T2 << endl; + +} + +// Create the task factory +ReusableTask* Segmentation0Factory1(list args, RegionTemplate* inputRt) { + return new TaskSegmentation0(args, inputRt); +} + +// Create the task factory +ReusableTask* Segmentation0Factory2() { + return new TaskSegmentation0(); +} + +// register factory with the runtime system +bool registeredTaskSegmentation02 = ReusableTask::ReusableTaskFactory::taskRegister("TaskSegmentation0", + &Segmentation0Factory1, &Segmentation0Factory2); + +TaskSegmentation1::TaskSegmentation1() { + rc = std::shared_ptr(new cv::Mat); + rc_recon = std::shared_ptr(new cv::Mat); + rc_open = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation1::TaskSegmentation1(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ + if (a->getName().compare("reconConnectivity") == 0) { + this->reconConnectivity = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + + rc = std::shared_ptr(new cv::Mat); + rc_recon = std::shared_ptr(new cv::Mat); + rc_open = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation1::~TaskSegmentation1() { + +} + +bool TaskSegmentation1::run(int procType, int tid) { + + + cv::Mat rc_temp; + cv::Mat rc_recon_temp; + cv::Mat rc_open_temp; + + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "TaskSegmentation1 executing." << std::endl; + + ::nscale::HistologicalEntities::segmentNucleiStg2(reconConnectivity, &*bgr, &*rc, &*rc_recon, &*rc_open); + + uint64_t t2 = Util::ClockGetTimeProfile(); + + + std::cout << "Task Segmentation1 time elapsed: "<< t2-t1 << std::endl; +} + +void TaskSegmentation1::updateDR(RegionTemplate* rt) { + +} + +void TaskSegmentation1::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation1] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + this->bgr = ((TaskSegmentation1*)t)->bgr; + this->rbc_fw = ((TaskSegmentation1*)t)->rbc_fw; + +} + +void TaskSegmentation1::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation1] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + + this->bgr = ((TaskSegmentation0*)t)->bgr; + this->rbc_fw = ((TaskSegmentation0*)t)->rbc; + +} + +bool TaskSegmentation1::reusable(ReusableTask* rt) { + TaskSegmentation1* t = (TaskSegmentation1*)(rt); + if ( + this->reconConnectivity == t->reconConnectivity && + + true) { + + return true; + } else { + return false; + } + return true; +} + +int TaskSegmentation1::size() { + return + sizeof(int) + sizeof(int) + + sizeof(int) + + + 0; +} + +int TaskSegmentation1::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field reconConnectivity + memcpy(buff+serialized_bytes, &reconConnectivity, sizeof(int)); + serialized_bytes+=sizeof(int); + + + return serialized_bytes; +} + +int TaskSegmentation1::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field reconConnectivity + this->reconConnectivity = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + + return deserialized_bytes; +} + +ReusableTask* TaskSegmentation1::clone() { + ReusableTask* retValue = new TaskSegmentation1(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void TaskSegmentation1::print() { + cout << "reconConnectivity: " << reconConnectivity << endl; + +} + +// Create the task factory +ReusableTask* Segmentation1Factory1(list args, RegionTemplate* inputRt) { + return new TaskSegmentation1(args, inputRt); +} + +// Create the task factory +ReusableTask* Segmentation1Factory2() { + return new TaskSegmentation1(); +} + +// register factory with the runtime system +bool registeredTaskSegmentation12 = ReusableTask::ReusableTaskFactory::taskRegister("TaskSegmentation1", + &Segmentation1Factory1, &Segmentation1Factory2); + +TaskSegmentation2::TaskSegmentation2() { + bw1 = std::shared_ptr(new cv::Mat); + diffIm = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation2::TaskSegmentation2(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ + if (a->getName().compare("fillHolesConnectivity") == 0) { + this->fillHolesConnectivity = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("G1") == 0) { + this->G1 = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + + bw1 = std::shared_ptr(new cv::Mat); + diffIm = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation2::~TaskSegmentation2() { + +} + +bool TaskSegmentation2::run(int procType, int tid) { + + + cv::Mat bw1_temp; + cv::Mat diffIm_temp; + + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "TaskSegmentation2 executing." << std::endl; + + ::nscale::HistologicalEntities::segmentNucleiStg3(fillHolesConnectivity, G1, &*rc, &*rc_recon, &*rc_open, &*bw1, &*diffIm); + + uint64_t t2 = Util::ClockGetTimeProfile(); + + + std::cout << "Task Segmentation2 time elapsed: "<< t2-t1 << std::endl; +} + +void TaskSegmentation2::updateDR(RegionTemplate* rt) { + +} + +void TaskSegmentation2::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation2] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + this->rc = ((TaskSegmentation2*)t)->rc; + this->rc_recon = ((TaskSegmentation2*)t)->rc_recon; + this->rc_open = ((TaskSegmentation2*)t)->rc_open; + this->rbc_fw = ((TaskSegmentation2*)t)->rbc_fw; + +} + +void TaskSegmentation2::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation2] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + + this->rc = ((TaskSegmentation1*)t)->rc; + this->rc_recon = ((TaskSegmentation1*)t)->rc_recon; + this->rc_open = ((TaskSegmentation1*)t)->rc_open; + this->rbc_fw = ((TaskSegmentation1*)t)->rbc_fw; + +} + +bool TaskSegmentation2::reusable(ReusableTask* rt) { + TaskSegmentation2* t = (TaskSegmentation2*)(rt); + if ( + this->fillHolesConnectivity == t->fillHolesConnectivity && + this->G1 == t->G1 && + + true) { + + return true; + } else { + return false; + } + return true; +} + +int TaskSegmentation2::size() { + return + sizeof(int) + sizeof(int) + + sizeof(int) + + sizeof(int) + + + 0; +} + +int TaskSegmentation2::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field fillHolesConnectivity + memcpy(buff+serialized_bytes, &fillHolesConnectivity, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field G1 + memcpy(buff+serialized_bytes, &G1, sizeof(int)); + serialized_bytes+=sizeof(int); + + + return serialized_bytes; +} + +int TaskSegmentation2::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field fillHolesConnectivity + this->fillHolesConnectivity = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field G1 + this->G1 = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + + return deserialized_bytes; +} + +ReusableTask* TaskSegmentation2::clone() { + ReusableTask* retValue = new TaskSegmentation2(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void TaskSegmentation2::print() { + cout << "fillHolesConnectivity: " << fillHolesConnectivity << endl; + cout << "G1: " << G1 << endl; + +} + +// Create the task factory +ReusableTask* Segmentation2Factory1(list args, RegionTemplate* inputRt) { + return new TaskSegmentation2(args, inputRt); +} + +// Create the task factory +ReusableTask* Segmentation2Factory2() { + return new TaskSegmentation2(); +} + +// register factory with the runtime system +bool registeredTaskSegmentation22 = ReusableTask::ReusableTaskFactory::taskRegister("TaskSegmentation2", + &Segmentation2Factory1, &Segmentation2Factory2); + +TaskSegmentation3::TaskSegmentation3() { + bw1_t = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation3::TaskSegmentation3(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ + if (a->getName().compare("minSize") == 0) { + this->minSize = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("maxSize") == 0) { + this->maxSize = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + + bw1_t = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation3::~TaskSegmentation3() { + +} + +bool TaskSegmentation3::run(int procType, int tid) { + + + cv::Mat bw1_t_temp; + + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "TaskSegmentation3 executing." << std::endl; + + ::nscale::HistologicalEntities::segmentNucleiStg4(minSize, maxSize, &*bw1, &*bw1_t); + + uint64_t t2 = Util::ClockGetTimeProfile(); + + + std::cout << "Task Segmentation3 time elapsed: "<< t2-t1 << std::endl; +} + +void TaskSegmentation3::updateDR(RegionTemplate* rt) { + +} + +void TaskSegmentation3::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation3] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + this->bw1 = ((TaskSegmentation3*)t)->bw1; + this->rbc_fw = ((TaskSegmentation3*)t)->rbc_fw; + this->diffIm_fw = ((TaskSegmentation3*)t)->diffIm_fw; + +} + +void TaskSegmentation3::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation3] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + + this->bw1 = ((TaskSegmentation2*)t)->bw1; + this->rbc_fw = ((TaskSegmentation2*)t)->rbc_fw; + this->diffIm_fw = ((TaskSegmentation2*)t)->diffIm; + +} + +bool TaskSegmentation3::reusable(ReusableTask* rt) { + TaskSegmentation3* t = (TaskSegmentation3*)(rt); + if ( + this->minSize == t->minSize && + this->maxSize == t->maxSize && + + true) { + + return true; + } else { + return false; + } + return true; +} + +int TaskSegmentation3::size() { + return + sizeof(int) + sizeof(int) + + sizeof(int) + + sizeof(int) + + + 0; +} + +int TaskSegmentation3::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field minSize + memcpy(buff+serialized_bytes, &minSize, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field maxSize + memcpy(buff+serialized_bytes, &maxSize, sizeof(int)); + serialized_bytes+=sizeof(int); + + + return serialized_bytes; +} + +int TaskSegmentation3::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field minSize + this->minSize = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field maxSize + this->maxSize = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + + return deserialized_bytes; +} + +ReusableTask* TaskSegmentation3::clone() { + ReusableTask* retValue = new TaskSegmentation3(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void TaskSegmentation3::print() { + cout << "minSize: " << minSize << endl; + cout << "maxSize: " << maxSize << endl; + +} + +// Create the task factory +ReusableTask* Segmentation3Factory1(list args, RegionTemplate* inputRt) { + return new TaskSegmentation3(args, inputRt); +} + +// Create the task factory +ReusableTask* Segmentation3Factory2() { + return new TaskSegmentation3(); +} + +// register factory with the runtime system +bool registeredTaskSegmentation32 = ReusableTask::ReusableTaskFactory::taskRegister("TaskSegmentation3", + &Segmentation3Factory1, &Segmentation3Factory2); + +TaskSegmentation4::TaskSegmentation4() { + seg_open = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation4::TaskSegmentation4(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ + if (a->getName().compare("G2") == 0) { + this->G2 = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + + seg_open = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation4::~TaskSegmentation4() { + +} + +bool TaskSegmentation4::run(int procType, int tid) { + + + cv::Mat seg_open_temp; + + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "TaskSegmentation4 executing." << std::endl; + + ::nscale::HistologicalEntities::segmentNucleiStg5(G2, &*diffIm, &*bw1_t, &*rbc, &*seg_open); + + uint64_t t2 = Util::ClockGetTimeProfile(); + + + std::cout << "Task Segmentation4 time elapsed: "<< t2-t1 << std::endl; +} + +void TaskSegmentation4::updateDR(RegionTemplate* rt) { + +} + +void TaskSegmentation4::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation4] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + this->diffIm = ((TaskSegmentation4*)t)->diffIm; + this->bw1_t = ((TaskSegmentation4*)t)->bw1_t; + this->rbc = ((TaskSegmentation4*)t)->rbc; + +} + +void TaskSegmentation4::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation4] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + + this->diffIm = ((TaskSegmentation3*)t)->diffIm_fw; + this->bw1_t = ((TaskSegmentation3*)t)->bw1_t; + this->rbc = ((TaskSegmentation3*)t)->rbc_fw; + +} + +bool TaskSegmentation4::reusable(ReusableTask* rt) { + TaskSegmentation4* t = (TaskSegmentation4*)(rt); + if ( + this->G2 == t->G2 && + + true) { + + return true; + } else { + return false; + } + return true; +} + +int TaskSegmentation4::size() { + return + sizeof(int) + sizeof(int) + + sizeof(int) + + + 0; +} + +int TaskSegmentation4::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field G2 + memcpy(buff+serialized_bytes, &G2, sizeof(int)); + serialized_bytes+=sizeof(int); + + + return serialized_bytes; +} + +int TaskSegmentation4::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field G2 + this->G2 = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + + return deserialized_bytes; +} + +ReusableTask* TaskSegmentation4::clone() { + ReusableTask* retValue = new TaskSegmentation4(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void TaskSegmentation4::print() { + cout << "G2: " << G2 << endl; + +} + +// Create the task factory +ReusableTask* Segmentation4Factory1(list args, RegionTemplate* inputRt) { + return new TaskSegmentation4(args, inputRt); +} + +// Create the task factory +ReusableTask* Segmentation4Factory2() { + return new TaskSegmentation4(); +} + +// register factory with the runtime system +bool registeredTaskSegmentation42 = ReusableTask::ReusableTaskFactory::taskRegister("TaskSegmentation4", + &Segmentation4Factory1, &Segmentation4Factory2); + +TaskSegmentation5::TaskSegmentation5() { + seg_nonoverlap = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation5::TaskSegmentation5(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ + if (a->getName().compare("normalized_rt") == 0) { + ArgumentRT* normalized_rt_arg; + normalized_rt_arg = (ArgumentRT*)a; + this->normalized_rt_temp = std::make_shared(new DenseDataRegion2D()); + (*this->normalized_rt_temp)->setName(normalized_rt_arg->getName()); + (*this->normalized_rt_temp)->setId(std::to_string(normalized_rt_arg->getId())); + (*this->normalized_rt_temp)->setVersion(normalized_rt_arg->getId()); + set_cout++; + } + + if (a->getName().compare("minSizePl") == 0) { + this->minSizePl = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("watershedConnectivity") == 0) { + this->watershedConnectivity = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + + seg_nonoverlap = std::shared_ptr(new cv::Mat); + +} + +TaskSegmentation5::~TaskSegmentation5() { + if (normalized_rt_temp.unique() && mock) + delete *normalized_rt_temp; +} + +bool TaskSegmentation5::run(int procType, int tid) { + cv::Mat normalized_rt = (*this->normalized_rt_temp)->getData(); + + + cv::Mat seg_nonoverlap_temp; + + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "TaskSegmentation5 executing." << std::endl; + + ::nscale::HistologicalEntities::segmentNucleiStg6(normalized_rt, minSizePl, watershedConnectivity, &*seg_open, &*seg_nonoverlap); + + uint64_t t2 = Util::ClockGetTimeProfile(); + + + std::cout << "Task Segmentation5 time elapsed: "<< t2-t1 << std::endl; +} + +void TaskSegmentation5::updateDR(RegionTemplate* rt) { + string name_normalized_rt_temp = (*this->normalized_rt_temp)->getName(); + string sid_normalized_rt_temp = (*this->normalized_rt_temp)->getId(); + int id_normalized_rt_temp = stoi((*this->normalized_rt_temp)->getId()); + if (normalized_rt_temp != NULL) + delete *normalized_rt_temp; + normalized_rt_temp = std::make_shared(dynamic_cast(rt->getDataRegion(name_normalized_rt_temp, sid_normalized_rt_temp, 0, id_normalized_rt_temp))); +} + +void TaskSegmentation5::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation5] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + this->seg_open = ((TaskSegmentation5*)t)->seg_open; + +} + +void TaskSegmentation5::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation5] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + + this->seg_open = ((TaskSegmentation4*)t)->seg_open; + +} + +bool TaskSegmentation5::reusable(ReusableTask* rt) { + TaskSegmentation5* t = (TaskSegmentation5*)(rt); + if ( + (*this->normalized_rt_temp)->getName() == (*t->normalized_rt_temp)->getName() && + this->minSizePl == t->minSizePl && + this->watershedConnectivity == t->watershedConnectivity && + + true) { + + return true; + } else { + return false; + } + return true; +} + +int TaskSegmentation5::size() { + return + sizeof(int) + sizeof(int) + + sizeof(int) + (*this->normalized_rt_temp)->getName().length()*sizeof(char) + sizeof(int) + + sizeof(int) + + sizeof(int) + + + 0; +} + +int TaskSegmentation5::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy normalized_rt id + int normalized_rt_id = stoi((*normalized_rt_temp)->getId()); + memcpy(buff+serialized_bytes, &normalized_rt_id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy normalized_rt name size + int normalized_rt_name_size = (*normalized_rt_temp)->getName().length(); + memcpy(buff+serialized_bytes, &normalized_rt_name_size, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy normalized_rt name + memcpy(buff+serialized_bytes, (*normalized_rt_temp)->getName().c_str(), normalized_rt_name_size*sizeof(char)); + serialized_bytes+=normalized_rt_name_size*sizeof(char); + + // copy field minSizePl + memcpy(buff+serialized_bytes, &minSizePl, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field watershedConnectivity + memcpy(buff+serialized_bytes, &watershedConnectivity, sizeof(int)); + serialized_bytes+=sizeof(int); + + + return serialized_bytes; +} + +int TaskSegmentation5::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // create the normalized_rt + this->normalized_rt_temp = std::make_shared(new DenseDataRegion2D()); + + // extract normalized_rt id + int normalized_rt_id = ((int*)(buff+deserialized_bytes))[0]; + (*this->normalized_rt_temp)->setId(to_string(normalized_rt_id)); + (*this->normalized_rt_temp)->setVersion(normalized_rt_id); + deserialized_bytes += sizeof(int); + + // extract normalized_rt name size + int normalized_rt_name_size = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // copy normalized_rt name + char normalized_rt_name[normalized_rt_name_size+1]; + normalized_rt_name[normalized_rt_name_size] = '\0'; + memcpy(normalized_rt_name, buff+deserialized_bytes, sizeof(char)*normalized_rt_name_size); + deserialized_bytes += sizeof(char)*normalized_rt_name_size; + (*this->normalized_rt_temp)->setName(normalized_rt_name); + + // extract field minSizePl + this->minSizePl = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field watershedConnectivity + this->watershedConnectivity = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + + return deserialized_bytes; +} + +ReusableTask* TaskSegmentation5::clone() { + ReusableTask* retValue = new TaskSegmentation5(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void TaskSegmentation5::print() { + cout << "minSizePl: " << minSizePl << endl; + cout << "watershedConnectivity: " << watershedConnectivity << endl; + +} + +// Create the task factory +ReusableTask* Segmentation5Factory1(list args, RegionTemplate* inputRt) { + return new TaskSegmentation5(args, inputRt); +} + +// Create the task factory +ReusableTask* Segmentation5Factory2() { + return new TaskSegmentation5(); +} + +// register factory with the runtime system +bool registeredTaskSegmentation52 = ReusableTask::ReusableTaskFactory::taskRegister("TaskSegmentation5", + &Segmentation5Factory1, &Segmentation5Factory2); + +TaskSegmentation6::TaskSegmentation6() { + +} + +TaskSegmentation6::TaskSegmentation6(list args, RegionTemplate* inputRt) { + + int set_cout = 0; + for(ArgumentBase* a : args){ + if (a->getName().compare("segmented_rt") == 0) { + ArgumentRT* segmented_rt_arg; + segmented_rt_arg = (ArgumentRT*)a; + this->segmented_rt_temp = std::make_shared(new DenseDataRegion2D()); + (*this->segmented_rt_temp)->setName(segmented_rt_arg->getName()); + (*this->segmented_rt_temp)->setId(std::to_string(segmented_rt_arg->getId())); + (*this->segmented_rt_temp)->setVersion(segmented_rt_arg->getId()); + set_cout++; + } + + if (a->getName().compare("minSizeSeg") == 0) { + this->minSizeSeg = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("maxSizeSeg") == 0) { + this->maxSizeSeg = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + if (a->getName().compare("fillHolesConnectivity") == 0) { + this->fillHolesConnectivity = (int)((ArgumentInt*)a)->getArgValue(); + set_cout++; + } + + + } + if (set_cout < args.size()) + std::cout << __FILE__ << ":" << __LINE__ <<" Missing common arguments on Segmentation" << std::endl; + + +} + +TaskSegmentation6::~TaskSegmentation6() { + if (segmented_rt_temp.unique() && mock) + delete *segmented_rt_temp; +} + +bool TaskSegmentation6::run(int procType, int tid) { + + cv::Mat segmented_rt; + + + uint64_t t1 = Util::ClockGetTimeProfile(); + + std::cout << "TaskSegmentation6 executing." << std::endl; + + ::nscale::HistologicalEntities::segmentNucleiStg7(&segmented_rt, minSizeSeg, maxSizeSeg, fillHolesConnectivity, &*seg_nonoverlap); + + uint64_t t2 = Util::ClockGetTimeProfile(); + + (*this->segmented_rt_temp)->setData(segmented_rt); + + std::cout << "Task Segmentation6 time elapsed: "<< t2-t1 << std::endl; +} + +void TaskSegmentation6::updateDR(RegionTemplate* rt) { +rt->insertDataRegion(*this->segmented_rt_temp); + +} + +void TaskSegmentation6::updateInterStageArgs(ReusableTask* t) { + // verify if the tasks are compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation6] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + this->seg_nonoverlap = ((TaskSegmentation6*)t)->seg_nonoverlap; + +} + +void TaskSegmentation6::resolveDependencies(ReusableTask* t) { + // verify if the task type is compatible + if (dynamic_cast(t) == NULL) { + std::cout << "[TaskSegmentation6] " << __FILE__ << ":" << __LINE__ <<" incompatible tasks: needed " << typeid(this).name() << " and got " << typeid(t).name() << std::endl; + return; + } + + + this->seg_nonoverlap = ((TaskSegmentation5*)t)->seg_nonoverlap; + +} + +bool TaskSegmentation6::reusable(ReusableTask* rt) { + TaskSegmentation6* t = (TaskSegmentation6*)(rt); + if ( + (*this->segmented_rt_temp)->getName() == (*t->segmented_rt_temp)->getName() && + this->minSizeSeg == t->minSizeSeg && + this->maxSizeSeg == t->maxSizeSeg && + this->fillHolesConnectivity == t->fillHolesConnectivity && + + true) { + + return true; + } else { + return false; + } + return true; +} + +int TaskSegmentation6::size() { + return + sizeof(int) + sizeof(int) + + sizeof(int) + (*this->segmented_rt_temp)->getName().length()*sizeof(char) + sizeof(int) + + sizeof(int) + + sizeof(int) + + sizeof(int) + + + 0; +} + +int TaskSegmentation6::serialize(char *buff) { + int serialized_bytes = 0; + // copy id + int id = this->getId(); + memcpy(buff+serialized_bytes, &id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy parent task id + int pt = this->parentTask; + memcpy(buff+serialized_bytes, &pt, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy segmented_rt id + int segmented_rt_id = stoi((*segmented_rt_temp)->getId()); + memcpy(buff+serialized_bytes, &segmented_rt_id, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy segmented_rt name size + int segmented_rt_name_size = (*segmented_rt_temp)->getName().length(); + memcpy(buff+serialized_bytes, &segmented_rt_name_size, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy segmented_rt name + memcpy(buff+serialized_bytes, (*segmented_rt_temp)->getName().c_str(), segmented_rt_name_size*sizeof(char)); + serialized_bytes+=segmented_rt_name_size*sizeof(char); + + // copy field minSizeSeg + memcpy(buff+serialized_bytes, &minSizeSeg, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field maxSizeSeg + memcpy(buff+serialized_bytes, &maxSizeSeg, sizeof(int)); + serialized_bytes+=sizeof(int); + + // copy field fillHolesConnectivity + memcpy(buff+serialized_bytes, &fillHolesConnectivity, sizeof(int)); + serialized_bytes+=sizeof(int); + + + return serialized_bytes; +} + +int TaskSegmentation6::deserialize(char *buff) { + int deserialized_bytes = 0; + + // extract task id + this->setId(((int*)(buff+deserialized_bytes))[0]); + deserialized_bytes += sizeof(int); + + // extract parent task id + this->parentTask = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // create the segmented_rt + this->segmented_rt_temp = std::make_shared(new DenseDataRegion2D()); + + // extract segmented_rt id + int segmented_rt_id = ((int*)(buff+deserialized_bytes))[0]; + (*this->segmented_rt_temp)->setId(to_string(segmented_rt_id)); + (*this->segmented_rt_temp)->setVersion(segmented_rt_id); + deserialized_bytes += sizeof(int); + + // extract segmented_rt name size + int segmented_rt_name_size = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // copy segmented_rt name + char segmented_rt_name[segmented_rt_name_size+1]; + segmented_rt_name[segmented_rt_name_size] = '\0'; + memcpy(segmented_rt_name, buff+deserialized_bytes, sizeof(char)*segmented_rt_name_size); + deserialized_bytes += sizeof(char)*segmented_rt_name_size; + (*this->segmented_rt_temp)->setName(segmented_rt_name); + + // extract field minSizeSeg + this->minSizeSeg = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field maxSizeSeg + this->maxSizeSeg = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + // extract field fillHolesConnectivity + this->fillHolesConnectivity = ((int*)(buff+deserialized_bytes))[0]; + deserialized_bytes += sizeof(int); + + + return deserialized_bytes; +} + +ReusableTask* TaskSegmentation6::clone() { + ReusableTask* retValue = new TaskSegmentation6(); + int size = this->size(); + char *buff = new char[size]; + this->serialize(buff); + retValue->deserialize(buff); + delete[] buff; + + return retValue; +} + +void TaskSegmentation6::print() { + cout << "minSizeSeg: " << minSizeSeg << endl; + cout << "maxSizeSeg: " << maxSizeSeg << endl; + cout << "fillHolesConnectivity: " << fillHolesConnectivity << endl; + +} + +// Create the task factory +ReusableTask* Segmentation6Factory1(list args, RegionTemplate* inputRt) { + return new TaskSegmentation6(args, inputRt); +} + +// Create the task factory +ReusableTask* Segmentation6Factory2() { + return new TaskSegmentation6(); +} + +// register factory with the runtime system +bool registeredTaskSegmentation62 = ReusableTask::ReusableTaskFactory::taskRegister("TaskSegmentation6", + &Segmentation6Factory1, &Segmentation6Factory2); + diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/Segmentation.hpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/Segmentation.hpp new file mode 100644 index 0000000..4846bc1 --- /dev/null +++ b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/Segmentation.hpp @@ -0,0 +1,314 @@ +/* + * Segmentation.h + * + * GENERATED CODE + * DO NOT CHANGE IT MANUALLY!!!!! + */ + +#ifndef Segmentation_H_ +#define Segmentation_H_ + +#include "RTPipelineComponentBase.h" +#include "Util.h" +#include "FileUtils.h" +#include "Task.h" +#include "DenseDataRegion2D.h" +#include "ReusableTask.hpp" + +#include "opencv2/opencv.hpp" +#include "opencv2/gpu/gpu.hpp" +#include "HistologicalEntities.h" + +// PipelineComponent header +class Segmentation : public RTPipelineComponentBase { + +private: + // data region id + // IMPORTANT: this need to be set during the creation of this object + int workflow_id; + +public: + Segmentation(); + virtual ~Segmentation(); + + void set_workflow_id(int id) {workflow_id = id;}; + + void print(); + + int run(); +}; + +/**************************************************************************************/ +/*********************************** Task functions ***********************************/ +/**************************************************************************************/ + +// TaskSegmentation0 header +class TaskSegmentation0: public ReusableTask { + friend class TaskSegmentation1; + +private: + + // all parameters + unsigned char blue; + unsigned char green; + unsigned char red; + double T1; + double T2; + + // intertask arguments + std::shared_ptr> bgr; + std::shared_ptr rbc; + +public: + // data regions + std::shared_ptr normalized_rt_temp; + + TaskSegmentation0(); + TaskSegmentation0(list args, RegionTemplate* inputRt); + + virtual ~TaskSegmentation0(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; +// TaskSegmentation1 header +class TaskSegmentation1: public ReusableTask { + friend class TaskSegmentation2; + +private: + + // all parameters + int reconConnectivity; + + // intertask arguments + std::shared_ptr> bgr; + std::shared_ptr rbc_fw; + std::shared_ptr rc; + std::shared_ptr rc_recon; + std::shared_ptr rc_open; + +public: + // data regions + + TaskSegmentation1(); + TaskSegmentation1(list args, RegionTemplate* inputRt); + + virtual ~TaskSegmentation1(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; +// TaskSegmentation2 header +class TaskSegmentation2: public ReusableTask { + friend class TaskSegmentation3; + +private: + + // all parameters + int fillHolesConnectivity; + int G1; + + // intertask arguments + std::shared_ptr rc; + std::shared_ptr rc_recon; + std::shared_ptr rc_open; + std::shared_ptr rbc_fw; + std::shared_ptr bw1; + std::shared_ptr diffIm; + +public: + // data regions + + TaskSegmentation2(); + TaskSegmentation2(list args, RegionTemplate* inputRt); + + virtual ~TaskSegmentation2(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; +// TaskSegmentation3 header +class TaskSegmentation3: public ReusableTask { + friend class TaskSegmentation4; + +private: + + // all parameters + int minSize; + int maxSize; + + // intertask arguments + std::shared_ptr bw1; + std::shared_ptr rbc_fw; + std::shared_ptr diffIm_fw; + std::shared_ptr bw1_t; + +public: + // data regions + + TaskSegmentation3(); + TaskSegmentation3(list args, RegionTemplate* inputRt); + + virtual ~TaskSegmentation3(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; +// TaskSegmentation4 header +class TaskSegmentation4: public ReusableTask { + friend class TaskSegmentation5; + +private: + + // all parameters + int G2; + + // intertask arguments + std::shared_ptr diffIm; + std::shared_ptr bw1_t; + std::shared_ptr rbc; + std::shared_ptr seg_open; + +public: + // data regions + + TaskSegmentation4(); + TaskSegmentation4(list args, RegionTemplate* inputRt); + + virtual ~TaskSegmentation4(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; +// TaskSegmentation5 header +class TaskSegmentation5: public ReusableTask { + friend class TaskSegmentation6; + +private: + + // all parameters + int minSizePl; + int watershedConnectivity; + + // intertask arguments + std::shared_ptr seg_open; + std::shared_ptr seg_nonoverlap; + +public: + // data regions + std::shared_ptr normalized_rt_temp; + + TaskSegmentation5(); + TaskSegmentation5(list args, RegionTemplate* inputRt); + + virtual ~TaskSegmentation5(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; +// TaskSegmentation6 header +class TaskSegmentation6: public ReusableTask { + + +private: + + // all parameters + int minSizeSeg; + int maxSizeSeg; + int fillHolesConnectivity; + + // intertask arguments + std::shared_ptr seg_nonoverlap; + +public: + // data regions + std::shared_ptr segmented_rt_temp; + + TaskSegmentation6(); + TaskSegmentation6(list args, RegionTemplate* inputRt); + + virtual ~TaskSegmentation6(); + + bool run(int procType=ExecEngineConstants::CPU, int tid=0); + + bool reusable(ReusableTask* t); + void updateDR(RegionTemplate* rt); + void updateInterStageArgs(ReusableTask* t); + void resolveDependencies(ReusableTask* t); + + int serialize(char *buff); + int deserialize(char *buff); + ReusableTask* clone(); + int size(); + + void print(); +}; + + +#endif /* Segmentation_H_ */ diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/TaskFeatures.cpp b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/TaskFeatures.cpp similarity index 100% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/TaskFeatures.cpp rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/TaskFeatures.cpp diff --git a/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/TaskFeatures.h b/runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/TaskFeatures.h similarity index 100% rename from runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/TaskFeatures.h rename to runtime/regiontemplates/examples/PipelineRTFS-NS-Diff-FGO/stages/TaskFeatures.h