commit f80052961fb03413ee8e4c7ed0e88e4d218c0ac7 Author: Aleksey M. Mukhin Date: Thu Oct 3 18:43:04 2024 +0700 Init version diff --git a/DEC-0.0.cpp b/DEC-0.0.cpp new file mode 100644 index 0000000..12727be --- /dev/null +++ b/DEC-0.0.cpp @@ -0,0 +1,33 @@ +#include +#include +#include "processor/KolchShindyalov.h" +#include "processor/Processor.h" +#include "processor/Settings.h" +//#include "DerevyankoReport.h" +#include "DerevyankoReport2014.h" + +int main(int argc, char** argv){ + + /*if(argc < 2){ + std::cerr<<"No input file specified\nTrying default script file (DecScript.txt)\n"; + Settings::initScript("DecScript.txt"); + } + else{ + Settings::initScript(argv[1]); + }*/ + + time_t rawtime; + time ( &rawtime ); + std::cout<<"*** Starting\tDEC v0.0 ***\t"< + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {1543172e-803c-444e-8cda-6a2308e41db2} + + + {01603e36-7499-4442-a781-b13e2af1fd98} + + + {05942c27-3dc6-45ca-8cc0-accdf0dc3b86} + + + {7c9f48d2-5ac8-4755-a0a2-536a0eacf1e8} + + + {651fa082-b05e-41a5-a43b-0698a5dce75c} + + + {a12457ad-86da-429a-b79c-59cfe2ad991d} + + + {831c8153-9898-45b7-81d8-a65c0aa1e297} + + + {f7bd5858-9457-4195-9b6e-50b7db3bfc5f} + + + {5dfc1f18-3517-4edd-8a1a-ab0a9993ba0f} + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Header Files\environment + + + Header Files\environment + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\population + + + Header Files\population + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + Header Files + + + Header Files\individual\genome\strategies + + + + + Header Files + + + Header Files\environment + + + Header Files\environment + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\population + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + Header Files + + + Header Files\individual\genome\strategies + + + + + + \ No newline at end of file diff --git a/DEC_GUI/Agressor/agent.cpp b/DEC_GUI/Agressor/agent.cpp new file mode 100644 index 0000000..c0452ba --- /dev/null +++ b/DEC_GUI/Agressor/agent.cpp @@ -0,0 +1,79 @@ +#include "agent.h" +#include +#include + +Agent::Agent(uint agentId, uint agr, uint prot, uint mod, uint str, uint rad, uint sp, QObject *parent) : + id(agentId), agressor(agr), protector(prot), mode(mod), strategy(str), radius(rad), + speed(sp), distTarget(0), contentment(0), QObject(parent) {} + +uint Agent::getID(){ + return this->id; + } +void Agent::setID(uint agentId){ + this->id = agentId; +} +uint Agent::getAgressor(){ + return this->agressor; +} +void Agent::setAgressor(uint agr){ + this->agressor = agr; +} +uint Agent::getProtector(){ + return this->protector; +} +void Agent::setProtector(uint prot){ + this->protector = prot; +} +qreal Agent::getCoordX(){ + return this->coordX; +} +void Agent::setCoordX(qreal x){ + this->coordX = x; +} +qreal Agent::getCoordY(){ + return this->coordY; +} +void Agent::setCoordY(qreal y){ + this->coordY = y; +} +uint Agent::getMode() { + return this->mode; +} +void Agent::setMode(uint mod) { + this->mode = mod; +} +uint Agent::getStrategy() { + return this->strategy; +} +void Agent::setStratedy(uint str){ + this->strategy = str; +} +int Agent::getRadius(){ + return this->radius; +} +void Agent::setRadius(uint rad){ + this->radius = rad; +} +uint Agent::getSpeed(){ + return this->speed; +} +void Agent::setSpeed(uint sp){ + this->speed = sp; +} +qreal Agent::getDistTarget(){ + return this->distTarget; +} +void Agent::setDistTarget(qreal dist){ + this->distTarget = dist; +} +qreal Agent::getContentmemt(){ + return this->contentment; +} +void Agent::setContentment(qreal cont){ + this->contentment = cont; +} +void Agent::gameEvent(QLineF shift){ + setCoordX(getCoordX() + shift.dx()); + setCoordY(getCoordY() + shift.dy()); + //std::cout << "new coord X: " << getCoordX() << ", new coord Y: " << getCoordY() << std::endl; +} diff --git a/DEC_GUI/Agressor/agent.h b/DEC_GUI/Agressor/agent.h new file mode 100644 index 0000000..607528e --- /dev/null +++ b/DEC_GUI/Agressor/agent.h @@ -0,0 +1,51 @@ +#ifndef AGENT_H +#define AGENT_H + +#include + +class Agent : public QObject +{ + Q_OBJECT +public: + explicit Agent(uint agentId, uint agr, uint prot, uint mod, uint str, uint rad, uint sp, QObject *parent = 0); + // setters, getters + uint getID(); + void setID(uint); + uint getAgressor(); + void setAgressor(uint agr); + uint getProtector(); + void setProtector(uint prot); + qreal getCoordX(); + void setCoordX(qreal x); + qreal getCoordY(); + void setCoordY(qreal y); + uint getMode(); + void setMode(uint mod); + uint getStrategy(); + void setStratedy(uint str); + int getRadius(); + void setRadius(uint rad); + uint getSpeed(); + void setSpeed(uint sp); + qreal getDistTarget(); + void setDistTarget(qreal dist); + qreal getContentmemt(); + void setContentment(qreal cont); + + void gameEvent(QLineF shift); // смена положения + +private: + uint id; // порядковый номер + uint agressor; // номер игрока А (условно - агрессора) + uint protector; // номер игрока В (условно - защитника) + qreal coordX; // координата x + qreal coordY; // координата y + uint mode; // режим: 0 - режим труса, 1 - режим защитника + uint strategy; // стратегия: 0 - движение по медиане/антимедиане, 1 - движение по нормали + uint radius; // радиус (для расчёта столкновений) + uint speed; // скорость + qreal distTarget; // расстояние до желаемых координат + qreal contentment; // неудовлетворённость агента +}; + +#endif // AGENT_H diff --git a/DEC_GUI/Agressor/agentitem.cpp b/DEC_GUI/Agressor/agentitem.cpp new file mode 100644 index 0000000..0509b01 --- /dev/null +++ b/DEC_GUI/Agressor/agentitem.cpp @@ -0,0 +1,26 @@ + +#include +#include +#include "agentitem.h" + +AgentItem::AgentItem(Agent *ag, QColor col) : + agent(ag), color(col){ +} +QRectF AgentItem::boundingRect()const { + int radius = agent->getRadius(); + return QRectF(-radius, -radius, 2*radius, 2*radius); +} +void AgentItem::paint(QPainter * painter, const QStyleOptionGraphicsItem *option, + QWidget *widget){ + int radius = agent->getRadius(); + painter->setBrush(color); + painter->drawEllipse(-radius, -radius, 2*radius, 2*radius); +} + +/* + * Событие: обновление текущих координат + */ +void AgentItem::agentEvent(){ + //std::cout << "coordX: " << agent->getCoordX() << " coordY: " << agent->getCoordY() << std::endl; + setPos(agent->getCoordX(), agent->getCoordY()); +} diff --git a/DEC_GUI/Agressor/agentitem.h b/DEC_GUI/Agressor/agentitem.h new file mode 100644 index 0000000..9d1537e --- /dev/null +++ b/DEC_GUI/Agressor/agentitem.h @@ -0,0 +1,21 @@ +#ifndef AGENTITEM_H +#define AGENTITEM_H + +#include +#include "agent.h" + +class AgentItem : public QGraphicsItem +{ +public: + explicit AgentItem(Agent *agent, QColor col); + + QRectF boundingRect() const; // ограничивающий прямоугольник + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); // отрисовка + void agentEvent(); // событие: обновление текущих координат + +private: + Agent *agent; + QColor color; +}; + +#endif // AGENTITEM_H diff --git a/DEC_GUI/Agressor/aphistory.cpp b/DEC_GUI/Agressor/aphistory.cpp new file mode 100644 index 0000000..98cd619 --- /dev/null +++ b/DEC_GUI/Agressor/aphistory.cpp @@ -0,0 +1,187 @@ + +#include +#include +#include +#include +#include +#include +#include "aphistory.h" + +/* + * Конструктор + */ +APHistory::APHistory() { + // +} + +/* + * Добавление отдельного контейнера для каждого запуска модели + */ +void APHistory::addClassHistory() { + QList content; + avContenmentHistory.push_back(content); +} + +/* + * Добавление отдельного контейнера для данных по группам каждого запуска модели + */ +void APHistory::addClassGroupHistory() { + QList groupsContent; + QVector > modelsContent(4, groupsContent); + groupAvContenmentHistoty.push_back(modelsContent); +} + +/* + * Добавление данных о модели с номером iModel + */ +void APHistory::addAvContenmentData(int iModel, qreal avContenmentData){ + avContenmentHistory[iModel].push_back(avContenmentData); +} + +/* + * Добавление данных о модели с номером iModel по группам + */ +void APHistory::addGroupAvContenmentData(int iModel, QVector avContenmentData){ + for (int iGroup = 0; iGroup < 4; iGroup++) { + groupAvContenmentHistoty[iModel][iGroup].push_back(avContenmentData[iGroup]); + } +} + +/* + * Вывод в файл всех данных по модели с номером iModel + */ +void APHistory::postPrintModelData(int iModel){ + QString directoryName("Output_for_model_"); + directoryName += QString::number(iModel); + QDir directory(directoryName); + if (!directory.exists()){ + directory.mkpath("."); + } + std::stringstream fileName; + fileName << "./Output_for_model_" << iModel << "/avContenment_model" << iModel << ".txt"; + std::ofstream avContOutput(fileName.str().c_str()); + for(int i = 0; i < avContenmentHistory[iModel].size(); i++){ + avContOutput << avContenmentHistory[iModel][i] << std::endl; + } + avContOutput.close(); +} + +void APHistory::postPrintGroupData(int iModel){ + QString directoryName("Output_for_model_"); + directoryName += QString::number(iModel); + QDir directory(directoryName); + if (!directory.exists()){ + directory.mkpath("."); + } + for (int j = 0; j < 4; j++){ + std::stringstream ss; + ss << "./Output_for_model_" << iModel << "/avContenment_model" << iModel << "_group" << j << ".txt"; + std::ofstream groupAvContOutput(ss.str().c_str()); + for(int i = 0; i < groupAvContenmentHistoty[iModel][j].size(); i++){ + groupAvContOutput << groupAvContenmentHistoty[iModel][j][i] << std::endl; + } + groupAvContOutput.close(); + } +} + +void APHistory::postPrintGlobalAverage() { + for (int iGroup = 0; iGroup < 4; iGroup++) { + QList data = getAverageForGroup(iGroup); + QString directoryName("Output_for_average"); + QDir directory(directoryName); + if (!directory.exists()){ + directory.mkpath("."); + } + std::stringstream ss; + ss << "./Output_for_average/avContenmentForAllModels_group" << iGroup << ".txt"; + std::ofstream averageForGroups(ss.str().c_str(), std::ios::app); + for (int i = 0; i < data.size(); i++) { + averageForGroups << data[i] << std::endl; + } + averageForGroups.close(); + } + QList data = getAverageForAllModels(); + std::ofstream averageForAll("./Output_for_average/avContenmentForAllModels.txt"); + for (int i = 0; i < data.size(); i++) { + averageForAll << data[i] << std::endl; + } + averageForAll.close(); +} + +/* + * Вывод в файл последних данных по модели с номером iModel + */ +void APHistory::printCurrentContentmentData(int iModel){ + QString directoryName("Output_for_model_"); + directoryName += QString::number(iModel); + QDir directory(directoryName); + if (!directory.exists()){ + directory.mkpath("."); + } + std::stringstream ss; + ss << "./Output_for_model_" << iModel << "/avContenment_model" << iModel << ".txt"; + std::ofstream currentAvContOutput(ss.str().c_str(), std::ios::app); + currentAvContOutput << avContenmentHistory[iModel].last() << std::endl; + currentAvContOutput.close(); +} + +void APHistory::printCurrentContentmentGroupData(int iModel){ + QString directoryName("Output_for_model_"); + directoryName += QString::number(iModel); + QDir directory(directoryName); + if (!directory.exists()){ + directory.mkpath("."); + } + for (int iGroup = 0; iGroup < 4; iGroup++){ + std::stringstream ss; + ss << "./Output_for_model_" << iModel << "/avContenment_model" << iModel << "_group" << iGroup <<".txt"; + std::ofstream currentAvContOutput(ss.str().c_str(), std::ios::app); + currentAvContOutput << groupAvContenmentHistoty[iModel][iGroup].last() << std::endl; + currentAvContOutput.close(); + } +} + +QList APHistory::getHistory(int iModel) { + return avContenmentHistory[iModel]; +} + +QList APHistory::getGroupHistory(int iModel, int iGroup) { + return groupAvContenmentHistoty[iModel][iGroup]; +} + +QList APHistory::getAverageForAllModels() { + QList average; + int nModels = avContenmentHistory.size(); + if (nModels > 0){ + int nIterations = avContenmentHistory[0].size(); + for (int j = 0; j < nIterations; j++){ + qreal buffer = 0; + for (int i = 0; i < nModels; i++) { + buffer += avContenmentHistory[i][j]; + } + average.push_back(buffer/nModels); + } + } + return average; +} + +QList APHistory::getAverageForGroup(int group) { + QList average; + int nModels = groupAvContenmentHistoty.size(); + if (nModels > 0){ + int nIterations = groupAvContenmentHistoty[0][group].size(); + for (int j = 0; j < nIterations; j++){ + qreal buffer = 0; + for (int i = 0; i < nModels; i++) { + buffer += groupAvContenmentHistoty[i][group][j]; + } + average.push_back(buffer/nModels); + } + } + return average; +} + +void APHistory::clearHistory() { + avContenmentHistory.clear(); + groupAvContenmentHistoty.clear(); +} diff --git a/DEC_GUI/Agressor/aphistory.h b/DEC_GUI/Agressor/aphistory.h new file mode 100644 index 0000000..1b3e7ed --- /dev/null +++ b/DEC_GUI/Agressor/aphistory.h @@ -0,0 +1,29 @@ +#ifndef APHISTORY_H +#define APHISTORY_H + +#include + +class APHistory +{ +public: + APHistory(); + void addClassHistory (); + void addClassGroupHistory(); + void addAvContenmentData(int iModel, qreal avContenmentData); // Добавление данных о модели с номером iModel + void addGroupAvContenmentData(int iModel, QVector avContenmentData); + void postPrintModelData(int iModel); // Вывод в файл всех данных по модели с номером iModel + void postPrintGroupData(int iModel); + void postPrintGlobalAverage(); + void printCurrentContentmentData(int iModel); // Вывод в файл последних данных по модели с номером iModel + void printCurrentContentmentGroupData(int iModel); + QList getHistory(int iModel); + QList getGroupHistory(int iModel, int iGroup); + QList getAverageForAllModels(); + QList getAverageForGroup(int group); + void clearHistory(); +private: + QList > avContenmentHistory; // Хранитель данных о ср.неудовлетворённости + QList > > groupAvContenmentHistoty; +}; + +#endif // APHISTORY_H diff --git a/DEC_GUI/Agressor/manager.cpp b/DEC_GUI/Agressor/manager.cpp new file mode 100644 index 0000000..68ca2e8 --- /dev/null +++ b/DEC_GUI/Agressor/manager.cpp @@ -0,0 +1,687 @@ + +#include +#include +#include +#include +#include +#include +#include +#include "QtConcurrent/qtconcurrentrun.h" +#include "manager.h" + +enum Group {CM, PM, CN, PN}; +static const bool multipleThreads = true; +static const int nThreads = 4; +static const bool blackAndWhite = false; + +/* + * Конструктор + */ +Manager::Manager(QObject *parent) : manItem(0), + xCoord(100, 0), yCoord(100, 0), cowardMedian(0), cowardNormal(0), protectorMedian(0), protectorNormal(0), + agentRadius(0), speedDistr(0), gamerSpeed(0), period(0), initDistr(0), enmity(0), newEnmity(0), + viewOrPackageMode(0), nIterations(1), nModels(1), outputToTxt(false), typeContentment(0), radiusLocality(0), QObject(parent) +{ + window = new QWidget; + base = new QGridLayout; + QGroupBox *settings = new QGroupBox; + initSettings(settings); + tabWindow = new QTabWidget; + initTab(tabWindow); + + base->addWidget(settings, 0, 1); + base->addWidget(tabWindow, 0, 0); + + window->setLayout(base); + window->setWindowTitle("Agressor-Protector"); + window->show(); + + // создание таймера + timer = new QTimer(this); + timer->setInterval(1000/10); + timer->stop(); + + // хранитель данных + history = new APHistory(); // ToDo: setNModel +} + +/* + * Создание окна настроек + */ +void Manager::initSettings(QGroupBox *set){ + QVBoxLayout *box = new QVBoxLayout; + + QGroupBox *box1 = new QGroupBox; + QGroupBox *box2 = new QGroupBox; + QGroupBox *box3 = new QGroupBox; + QGroupBox *box4 = new QGroupBox; + QGroupBox *box5 = new QGroupBox; + + QGridLayout *hbox1 = new QGridLayout; + QGridLayout *hbox2 = new QGridLayout; + QGridLayout *hbox3 = new QGridLayout; + QGridLayout *hbox4 = new QGridLayout; + QVBoxLayout *hbox5 = new QVBoxLayout; + + QLabel *labelMode1 = new QLabel("Gamer is a coward"); + QLabel *labelMode2 = new QLabel("Gamer is a protector"); + QLabel *labelStrategy1 = new QLabel("Along median"); + QLabel *labelStrategy2 = new QLabel("Along normal"); + QSpinBox *spinCM = new QSpinBox; + spinCM->setMaximum(1000); + connect (spinCM, SIGNAL(valueChanged(int)), this, SLOT(setCowardMedian(int))); + QSpinBox *spinCN = new QSpinBox; + spinCN->setMaximum(1000); + connect (spinCN, SIGNAL(valueChanged(int)), this, SLOT(setCowardNormal(int))); + QSpinBox *spinPM = new QSpinBox; + spinPM->setMaximum(1000); + connect (spinPM, SIGNAL(valueChanged(int)), this, SLOT(setProtectorMedian(int))); + QSpinBox *spinPN = new QSpinBox; + spinPN->setMaximum(1000); + connect (spinPN, SIGNAL(valueChanged(int)), this, SLOT(setProtectorNormal(int))); + + QLabel *labelRadius = new QLabel("Gamer radius:"); + QSpinBox *boxRadius = new QSpinBox; + connect(boxRadius, SIGNAL(valueChanged(int)), this, SLOT(setAgentRadius(int))); + QLabel *labelEnmity = new QLabel("Enmity:"); + QSpinBox *spinBoxEnmity = new QSpinBox; + connect(spinBoxEnmity, SIGNAL(valueChanged(int)), this, SLOT(setNewEnmity(int))); +// QLabel *labelSpeedDistr = new QLabel("Speed distribution:"); +// QComboBox *comboSpeedDistr = new QComboBox; +// comboSpeedDistr->addItem("homogeneous"); + QLabel *labelSpeed = new QLabel("Gamer speed:"); + QSpinBox *spinSpeed = new QSpinBox; + spinSpeed->setMaximum(10); + connect(spinSpeed, SIGNAL(valueChanged(int)), this, SLOT(setGamerSpeed(int))); + QLabel *labelCont = new QLabel("Type of contenment calculation: "); + QComboBox *comboContent = new QComboBox; + comboContent->addItem("absolute"); + comboContent->addItem("comparative"); + connect(comboContent, SIGNAL(currentIndexChanged(int)), this, SLOT(setTypeContenment(int))); + QLabel *labelLocality = new QLabel("Radius of locality"); + spinLocality = new QSpinBox; + spinLocality->setEnabled(false); + connect(spinLocality, SIGNAL(valueChanged(int)), this, SLOT(setRadiusLocality(int))); + connect(comboContent, SIGNAL(currentIndexChanged(int)), this, SLOT(manageSpinLocality(int))); + + QCheckBox *checkPeriod = new QCheckBox; + checkPeriod->setText("Periodicity"); + connect(checkPeriod, SIGNAL(toggled(bool)), this, SLOT(setPeriodicity(bool))); + QLabel *label = new QLabel("Initial distribution:"); + QComboBox *comboDistr = new QComboBox; + comboDistr->addItem("random"); + comboDistr->addItem("on the circle"); + connect(comboDistr, SIGNAL(currentIndexChanged(int)), this, SLOT(setDistr(int))); + + createButton = new QPushButton; + createButton->setText("Create"); + connect(createButton, SIGNAL(clicked()), this, SLOT(resetProgressBarAndHistory())); + connect(createButton, SIGNAL(clicked()), this, SLOT(initModel())); + + QLabel *labelViewOrPackage = new QLabel("Type of job: "); + viewOrPackage = new QComboBox; + viewOrPackage->addItem("one model in detail"); + viewOrPackage->addItem("processing"); + connect(viewOrPackage, SIGNAL(currentIndexChanged(int)), this, SLOT(setviewOrPackageMode(int))); + connect(viewOrPackage, SIGNAL(currentIndexChanged(int)), this, SLOT(managePackageOptions(int))); + checkLink = new QCheckBox; + checkLink->setText("Show links"); + checkOutputToTxt = new QCheckBox; + checkOutputToTxt->setText("Output to txt"); + connect(checkOutputToTxt, SIGNAL(toggled(bool)), this, SLOT(setOutputToTxt(bool))); + QLabel *label3 = new QLabel("Updating frequency: "); + comboTime = new QComboBox; + comboTime->addItem("1000/10"); + comboTime->addItem("1000/20"); + comboTime->addItem("1000/30"); + comboTime->addItem("1000/50"); + comboTime->addItem("1000/100"); + connect(comboTime, SIGNAL(currentIndexChanged(int)), this, SLOT(timerRestart(int))); + QLabel *labelIterations = new QLabel("Number of iterations: "); + spinIterations = new QSpinBox; + spinIterations->setMinimum(1); + spinIterations->setMaximum(10000); + spinIterations->setEnabled(false); + connect(spinIterations, SIGNAL(valueChanged(int)), this, SLOT(setNIterations(int))); + QLabel *labelModels = new QLabel("Number of models: "); + spinModels = new QSpinBox; + spinModels->setMinimum(1); + spinModels->setMaximum(1000); + spinModels->setEnabled(false); + connect(spinModels, SIGNAL(valueChanged(int)), this, SLOT(setNModels(int))); + buttonTime = new QPushButton; + buttonTime->setText("Start"); + connect(buttonTime, SIGNAL(clicked()), this, SLOT(handleButton())); + buttonTime->setEnabled(false); + + hbox1->addWidget(labelMode1, 0, 1); + hbox1->addWidget(labelMode2, 0, 2); + hbox1->addWidget(labelStrategy1, 1, 0); + hbox1->addWidget(labelStrategy2, 2, 0); + hbox1->addWidget(spinCM, 1, 1); + hbox1->addWidget(spinCN, 2, 1); + hbox1->addWidget(spinPM, 1, 2); + hbox1->addWidget(spinPN, 2, 2); + box1->setLayout(hbox1); + box1->setTitle("Gamers number"); + + hbox2->addWidget(labelRadius, 0, 0); + hbox2->addWidget(boxRadius, 0, 1); + hbox2->addWidget(labelEnmity, 1, 0); + hbox2->addWidget(spinBoxEnmity, 1, 1); +// hbox2->addWidget(labelSpeedDistr, 2, 0); +// hbox2->addWidget(comboSpeedDistr, 2, 1); + hbox2->addWidget(labelSpeed, 3, 0); + hbox2->addWidget(spinSpeed, 3, 1); + hbox2->addWidget(labelCont, 4, 0); + hbox2->addWidget(comboContent, 4, 1); + hbox2->addWidget(labelLocality, 5, 0); + hbox2->addWidget(spinLocality, 5, 1); + box2->setLayout(hbox2); + box2->setTitle("Gamer settings"); + + hbox3->addWidget(checkPeriod, 0, 0); + hbox3->addWidget(label, 1, 0); + hbox3->addWidget(comboDistr, 1, 1); + box3->setLayout(hbox3); + box3->setTitle("Scene settings"); + + hbox4->addWidget(labelViewOrPackage, 0, 0); + hbox4->addWidget(viewOrPackage, 0, 1); + hbox4->addWidget(checkLink, 1, 0); + hbox4->addWidget(checkOutputToTxt, 1, 1); + hbox4->addWidget(label3, 2, 0); + hbox4->addWidget(comboTime, 2, 1); + hbox4->addWidget(labelIterations, 3, 0); + hbox4->addWidget(spinIterations, 3, 1); + hbox4->addWidget(labelModels, 4, 0); + hbox4->addWidget(spinModels, 4, 1); + box4->setLayout(hbox4); + + hbox5->addWidget(createButton); + hbox5->addWidget(buttonTime); + box5->setLayout(hbox5); + + box->addWidget(box1); + box->addWidget(box2); + box->addWidget(box3); + box->addWidget(box4); + box->addWidget(box5); + box->addStretch(); + + set->setLayout(box); +} + +void Manager::initTab(QTabWidget *tabs){ + // Первая вкладка - визуализация одной модели (сцена + график) + QWidget *viewTab = new QWidget; + QGridLayout *viewLayout = new QGridLayout; + // Создание и заполнение сцены + scene = new QGraphicsScene; + scene->setSceneRect(-300, -300, 600, 600); + scene->setItemIndexMethod(QGraphicsScene::NoIndex); + + QGraphicsView *view = new QGraphicsView(scene); + view->setRenderHint(QPainter::Antialiasing); + view->setCacheMode(QGraphicsView::CacheBackground); + view->resize(800, 800); + view->setMinimumWidth(600); + view->show(); + + // Создание графика ср.неудовлетворённости + QLabel *labelGraph = new QLabel("Dynamics of average contenment"); + labelContent = new QLabel("Average contentment: "); + plot = new QCustomPlot; + plot->addGraph(); + for (int i = 0; i < 100; i++) + { + xCoord[i] = i; + } + plot->graph(0)->setData(xCoord, yCoord); + plot->yAxis->setRange(0, 1); + plot->graph(0)->rescaleAxes(); + plot->yAxis->setVisible(false); + plot->xAxis->setTickLabels(false); + + viewLayout->addWidget(view, 0, 0, 1, 2); + viewLayout->addWidget(labelGraph, 1, 0); + viewLayout->addWidget(labelContent, 1, 1); + viewLayout->addWidget(plot, 2, 0, 1, 2); + + viewTab->setLayout(viewLayout); + + // Вторая вкладка - пакетное задание (прогресс-бар) + QWidget *packageTab = new QWidget; + QGridLayout *packageLayout = new QGridLayout; + + prBar = new QProgressBar; + prBar->setValue(0); + QLabel *graphComboLabel = new QLabel("Compose the graphic for: "); + graphCombo = new QComboBox; + graphCombo->setEnabled(false); + graphCombo->addItem("---"); + connect(graphCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(composeGraph(int))); + + batchPlot = new QCustomPlot; + batchPlot->addGraph(); + batchPlot->addGraph(); + batchPlot->addGraph(); + batchPlot->addGraph(); + batchPlot->addGraph(); + batchPlot->graph(0)->setPen(QPen(Qt::black, 2)); + if (blackAndWhite) { + batchPlot->graph(CM + 1)->setPen(QPen(Qt::SolidLine)); + batchPlot->graph(PM + 1)->setPen(QPen(Qt::DashDotLine)); + batchPlot->graph(CN + 1)->setPen(QPen(Qt::DashLine)); + QPen * pen = new QPen(QPen(Qt::DashDotDotLine)); + pen->setWidth(2); + batchPlot->graph(PN + 1)->setPen(*pen); + } else { + batchPlot->graph(CM + 1)->setPen(QPen(Qt::red)); + batchPlot->graph(PM + 1)->setPen(QPen(Qt::yellow)); + batchPlot->graph(CN + 1)->setPen(QPen(Qt::darkBlue)); + batchPlot->graph(PN + 1)->setPen(QPen(Qt::cyan)); + } + batchPlot->graph(0)->setName("Average for all agents"); + batchPlot->graph(CM + 1)->setName("Average for coward-median"); + batchPlot->graph(PM + 1)->setName("Average for all protector-median"); + batchPlot->graph(CN + 1)->setName("Average for all coward-normal"); + batchPlot->graph(PN + 1)->setName("Average for all protector-normal"); + + xBatchCoord.resize(100); + yBatchCoord.resize(100); + yBatchCoord.fill(0); + for (int i = 0; i < 100; i++) + { + xBatchCoord[i] = i; + } + batchPlot->graph(0)->setData(xBatchCoord, yBatchCoord); + batchPlot->yAxis->setRange(0, 1.05); + QVector ticks; + qreal i = 0; + while (i <= 1.05) { + ticks << i; + i += 0.1; + } + batchPlot->yAxis->setAutoTicks(false); + batchPlot->yAxis->setTickVector(ticks); + batchPlot->graph(0)->rescaleAxes(); + + QLabel *labelSaveWithName = new QLabel("Save with name: "); + lineSaveWithName = new QLineEdit; + lineSaveWithName->setPlaceholderText("For example: default_name"); + QPushButton *buttonSaveGraph = new QPushButton; + buttonSaveGraph->setText("Save as jpeg"); + connect(buttonSaveGraph, SIGNAL(clicked()), this, SLOT(saveGragh())); + + packageLayout->addWidget(prBar, 0, 0, 1, 2); + packageLayout->addWidget(graphComboLabel, 1, 0, 1, 1); + packageLayout->addWidget(graphCombo, 1, 1, 1, 1); + packageLayout->addWidget(batchPlot, 2, 0, 2, 2); + packageLayout->addWidget(labelSaveWithName, 4, 0, 1, 1); + packageLayout->addWidget(lineSaveWithName, 4, 1, 1, 1); + packageLayout->addWidget(buttonSaveGraph, 5, 1, 1, 1); + packageTab->setLayout(packageLayout); + + tabs->addTab(viewTab, "One model in detail"); + tabs->addTab(packageTab, "Batch processing"); + connect(tabs, SIGNAL(currentChanged(int)), viewOrPackage, SLOT(setCurrentIndex(int))); +} + +QVector Manager::calculateAvContenmentForGroups(uint typeCalc, uint iModel){ + qreal max = 0; + qreal res = 0; + QVector cont(4, 0); + QList neibours; + QVector nAgents; + nAgents << cowardMedian << protectorMedian << cowardNormal << protectorNormal; + if (modelList[iModel]->getAgentList().size() == 0){ + return cont; + } + // С оглядкой на всех агентов + else if (typeCalc == 0){ + int ind = 0; + for (int i = 0; i < modelList[iModel]->getAgentList().size(); i++){ + if (modelList[iModel]->getAgentList()[i]->getMode() == 0) { + ind = modelList[iModel]->getAgentList()[i]->getStrategy() == 0 ? 0 : 2; + } + else { + ind = modelList[iModel]->getAgentList()[i]->getStrategy() == 0 ? 1 : 3; + } + if (modelList[iModel]->getAgentList()[i]->getDistTarget() > max){ + max = modelList[iModel]->getAgentList()[i]->getDistTarget(); + } + else{} + if (max > 0.0) { + modelList[iModel]->getAgentList()[i]->setContentment(modelList[iModel]->getAgentList()[i]->getDistTarget()/max); + cont[ind] += modelList[iModel]->getAgentList()[i]->getDistTarget()/max; + } + else{ + modelList[iModel]->getAgentList()[i]->setContentment(1); + cont[ind] += 1; + } + } + } + // С оглядкой на агентов внутри окрестности + else if (typeCalc == 1){ + for (int i = 0; i < modelList[iModel]->getAgentList().size(); i++){ + int ind = 0; + if (modelList[iModel]->getAgentList()[i]->getMode() == 0) { + ind = modelList[iModel]->getAgentList()[i]->getStrategy() == 0 ? 0 : 2; + } + else { + ind = modelList[iModel]->getAgentList()[i]->getStrategy() == 0 ? 1 : 3; + } + + neibours = modelList[iModel]->DangerGamer(i, 0, 0, radiusLocality); + max = modelList[iModel]->getAgentList()[i]->getDistTarget(); + for (int j = 0; j < neibours.size(); j++){ + if (neibours[j]->getDistTarget() > max){ + max = neibours[j]->getDistTarget(); + } + else{} + } + if (max > 0.0) { + modelList[iModel]->getAgentList()[i]->setContentment(modelList[iModel]->getAgentList()[i]->getDistTarget()/max); + cont[ind] += modelList[iModel]->getAgentList()[i]->getDistTarget()/max; + } + else{ + modelList[iModel]->getAgentList()[i]->setContentment(1); + cont[ind] += 1; + } + } + } + for (int i = CM; i < PN + 1; i++){ + if (nAgents[i] != 0) { + res += cont[i]; + cont[i] = cont[i]/nAgents[i]; + } + } + modelList[iModel]->setAvContentment(res/modelList[iModel]->getAgentList().size()); + yCoord.removeFirst(); + yCoord.push_back(res/modelList[iModel]->getAgentList().size()); + return cont; +} + +/* + * Создание модели по полученным данным + */ +void Manager::initModel(){ + + buttonTime->setText("Start"); + createButton->setText("Recreate"); + + yCoord.fill(0); + graphCombo->setCurrentIndex(0); + graphCombo->setEnabled(false); + + // Визуализация одной модели + if (viewOrPackageMode == 0){ + timer->stop(); + history->addClassHistory(); + history->addClassGroupHistory(); + Model *model = new Model(0, cowardMedian, cowardNormal, protectorMedian, protectorNormal, agentRadius, gamerSpeed, period, initDistr, enmity, newEnmity); + modelList.push_back(model); + if (manItem != 0){ + delete manItem; + } + batchPlot->clearItems(); + batchPlot->replot(); + // Создание управленца визуализацией + manItem = new ManagerItem(model->getAgentList(), scene, cowardMedian, cowardNormal, protectorMedian); + connect(timer, SIGNAL(timeout()), this, SLOT(timerEvent())); + connect(timer, SIGNAL(timeout()), manItem, SLOT(gameEvent())); + connect(checkLink, SIGNAL(toggled(bool)), manItem, SLOT(setLink(bool))); + } + // Пакетное задание + else { + // Очистка сцены и графика на первой вкладке + scene->clear(); + plot->graph(0)->setData(xCoord, yCoord); + plot->replot(); + + prBar->setMinimum(0); + prBar->setMaximum(nIterations*nModels); + } + setEnmity(newEnmity); + buttonTime->setEnabled(true); +} + +/* + * Событие игры. Вычисление новых координат для всех игроков на сцене + */ +void Manager::timerEvent(){ + modelList[0]->modelIteration(); + history->addGroupAvContenmentData(0, calculateAvContenmentForGroups(typeContentment, 0)); + history->addAvContenmentData(0, modelList[0]->getAvContentment()); + if (outputToTxt) { + history->postPrintModelData(0); + history->postPrintGroupData(0); + } + plot->graph(0)->setData(xCoord, yCoord); + plot->replot(); + history->addGroupAvContenmentData(0, calculateAvContenmentForGroups(typeContentment, 0)); + history->addAvContenmentData(0, modelList[0]->getAvContentment()); // запись в хранитель данных + labelContent->setText("Average contenment: " + QString::number(modelList[0]->getAvContentment())); +} + +void Manager::iteration(uint j) { + Model *model = new Model(j, cowardMedian, cowardNormal, protectorMedian, protectorNormal, agentRadius, gamerSpeed, period, initDistr, enmity, newEnmity); + modelList.append(model); + for(int i = 0; i < nIterations; i++){ + model->modelIteration(); + history->addGroupAvContenmentData(modelList.indexOf(model), calculateAvContenmentForGroups(typeContentment, modelList.indexOf(model))); + history->addAvContenmentData(modelList.indexOf(model), model->getAvContentment()); + //qApp->processEvents(); + } + if (outputToTxt) { + history->postPrintModelData(modelList.indexOf(model)); + history->postPrintGroupData(modelList.indexOf(model)); + } + model->clear(); + //delete model; +} + +void Manager::handlePrBar() { + //prBar->setValue(prBar->value() + nIterations); + std::cout << "handlePrBar" << std::endl; +} + +/* + * Остановка/возобновление игры + */ +void Manager::handleButton(){ + // Визуализация модели + if(viewOrPackageMode == 0){ + if (timer->isActive()){ + timer->stop(); + buttonTime->setText("Start"); + } + else { + timer->start(timer->interval()); + buttonTime->setText("Pause"); + } + } + // Пакетное задание (без возможности остановки) + else{ + buttonTime->setText("In process..."); + buttonTime->setEnabled(false); + createButton->setEnabled(false); + tabWindow->setTabEnabled(0, false); + //prBar->setValue(0); + + if(!multipleThreads){ + for (int i = 0; i < nModels; i++) { + history->addClassHistory(); + history->addClassGroupHistory(); + iteration(i); + prBar->setValue(prBar->value() + nIterations); + } + } + else { + QVector > futureVector; + QVector *> watcherVector; + for (int i = 0; i < nThreads; i++) { + QFuture future; + futureVector.append(future); + QFutureWatcher *watcher = new QFutureWatcher; + watcherVector.append(watcher); + //connect(watcherVector[i], SIGNAL(finished()), this, SLOT(handlePrBar())); + } + + for(int i = 0; i < nModels; i++) { + history->addClassHistory(); + history->addClassGroupHistory(); + } + + for(int j = 0; j < nModels/nThreads; j++){ + for (int i = 0; i < nThreads; i++) { + //qApp->processEvents(); + futureVector[i] = QtConcurrent::run(this, &Manager::iteration, j*nThreads + i); + watcherVector[i]->setFuture(futureVector[i]); + } + qApp->processEvents(); + prBar->setValue(prBar->value() + nThreads*nIterations); + for (int i = 0; i < nThreads; i++) { + watcherVector[i]->waitForFinished(); + //modelList[j*nThreads + i]->clear(); + //prBar->setValue(prBar->value() + nIterations); + } + } + //qApp->processEvents(); + if (nModels % nThreads != 0) { + for (int i = 0; i < nModels % nThreads; i++) { + futureVector[i] = QtConcurrent::run(this, &Manager::iteration, nThreads*(nModels/nThreads) + i); + watcherVector[i]->setFuture(futureVector[i]); + } + prBar->setValue(prBar->value() + (nModels % nThreads)*nIterations); + for (int i = 0; i < nModels % nThreads; i++) { + watcherVector[i]->waitForFinished(); + //modelList[nThreads*(nModels/nThreads) + i]->clear(); + //prBar->setValue(prBar->value() + nIterations); + } + } + } + qDeleteAll(modelList.begin(), modelList.end()); + modelList.clear(); + if (outputToTxt) { + history->postPrintGlobalAverage(); + } + disconnect(graphCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(composeGraph(int))); + graphCombo->clear(); + graphCombo->addItem("---"); + for(int i = 0; i < nModels; i++){ + QString comboString = "Model "; + comboString += QString::number(i + 1); + graphCombo->addItem(comboString); + } + if (nModels > 1) { + graphCombo->addItem("Average for all models"); + } + connect(graphCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(composeGraph(int))); + buttonTime->setText("Start"); + buttonTime->setEnabled(true); + graphCombo->setEnabled(true); + createButton->setEnabled(true); + tabWindow->setTabEnabled(0, true); + } +} + +/* + * Перезапуск таймера + */ +void Manager::timerRestart(int index){ + if (index == 0){ + timer->setInterval(1000/10); + } + else if(index == 1){ + timer->setInterval(1000/20); + } + else if(index == 2){ + timer->setInterval(1000/30); + } + else if(index == 3){ + timer->setInterval(1000/50); + } + else if (index == 4){ + timer->setInterval(1000/100); + } + else{} +} + +void Manager::resetProgressBarAndHistory(){ + prBar->setValue(0); + history->clearHistory(); +} +/* + * Вкл/выкл спинбокс для радиуса окрестности + */ +void Manager::manageSpinLocality(int value){ + if (value == 0){ + spinLocality->setEnabled(false); + } + else{ + spinLocality->setEnabled(true); + } +} + +/* + * Вкл/выкл спинбокс для числа итераций и спинбокс для числа запусков модели + */ +void Manager::managePackageOptions(int val){ + if(val == 0){ + spinIterations->setEnabled(false); + spinModels->setEnabled(false); + checkLink->setEnabled(true); + comboTime->setEnabled(true); + } + else { + timer->stop(); + spinIterations->setEnabled(true); + spinModels->setEnabled(true); + checkLink->setEnabled(false); + comboTime->setEnabled(false); + } + tabWindow->setCurrentIndex(val); +} + +void Manager::composeGraph(int iModel) { + xBatchCoord.resize(nIterations); + QVector avCM(nIterations, 0); + QVector avPM(nIterations, 0); + QVector avCN(nIterations, 0); + QVector avPN(nIterations, 0); + + for(int i = 0; i < nIterations; i++) { + xBatchCoord[i] = i; + } + yBatchCoord.resize(nIterations); + batchPlot->xAxis->setRange(0, nIterations + 1); + if(iModel == 0) { + yBatchCoord.fill(0); + } + else if (iModel == nModels + 1){ + yBatchCoord = history->getAverageForAllModels().toVector(); + avCM = history->getAverageForGroup(CM).toVector(); + avPM = history->getAverageForGroup(PM).toVector(); + avCN = history->getAverageForGroup(CN).toVector(); + avPN = history->getAverageForGroup(PN).toVector(); + } else { + yBatchCoord = history->getHistory(iModel - 1).toVector(); + avCM = history->getGroupHistory(iModel - 1, CM).toVector(); + avPM = history->getGroupHistory(iModel - 1, PM).toVector(); + avCN = history->getGroupHistory(iModel - 1, CN).toVector(); + avPN = history->getGroupHistory(iModel - 1, PN).toVector(); + } + batchPlot->graph(0)->setData(xBatchCoord, yBatchCoord); + batchPlot->graph(CM + 1)->setData(xBatchCoord, avCM); + batchPlot->graph(PM + 1)->setData(xBatchCoord, avPM); + batchPlot->graph(CN + 1)->setData(xBatchCoord, avCN); + batchPlot->graph(PN + 1)->setData(xBatchCoord, avPN); + batchPlot->legend->setVisible(true); + batchPlot->replot(); +} + +void Manager::saveGragh() { + batchPlot->saveJpg(lineSaveWithName->text() + ".jpg"); +} diff --git a/DEC_GUI/Agressor/manager.h b/DEC_GUI/Agressor/manager.h new file mode 100644 index 0000000..7b361e0 --- /dev/null +++ b/DEC_GUI/Agressor/manager.h @@ -0,0 +1,109 @@ +#ifndef MANAGER_H +#define MANAGER_H + +#include +#include +#include "agent.h" +#include "agentitem.h" +#include "aphistory.h" +#include "manageritem.h" +#include "model.h" +#include "Kolch_Shind/qcustomplot.h" + +class Manager : public QObject +{ + Q_OBJECT +public: + explicit Manager(QObject *parent = 0); // конструктор + void initSettings(QGroupBox *set); // создание окна настроек + void initTab(QTabWidget *tabs); + QVector calculateAvContenmentForGroups(uint typeCalc, uint iModel); + void iteration(uint j); + + // геттеры + uint getCowardMedian(){return this->cowardMedian;} + uint getCowardNormal(){return this->cowardNormal;} + uint getProtectorMedian(){return this->protectorMedian;} + uint getProtectorNormal(){return this->protectorNormal;} + +private: + QList modelList; + QVector xCoord; // x координата для построения графика средней неудовлетворённости + QVector yCoord; // y координата для построения графика средней неудовлетворённости + QVector xBatchCoord; + QVector yBatchCoord; + uint cowardMedian; // число игроков в режиме труса, движущихся по медиане + uint cowardNormal; // число игроков в режиме труса, движущихся по нормали + uint protectorMedian; // число игроков в режиме защитника, движущихся по медиане + uint protectorNormal; // число игроков в режиме защитника, движущихся по нормали + int agentRadius; // радиус шарика-агента (для передачи в конструктор) + uint speedDistr; // распределение скоростей (однородное) + uint gamerSpeed; // скорость агентов + bool period; // метка периодичности краёв сцены (true - сцена периодична) + uint initDistr; // метка начального распределения игроков сцены (0 - случайное, 1 - на круге) + uint enmity; // минимальное расстояние, на которое игроки могут приближаются друг к другу, enmity = 0 - возможно покоординатное совпадение игроков + uint newEnmity; // параметр enmity, полученный из диалогового окна + int viewOrPackageMode; // 0 - визуализация одной модели, 1 - пакетное задание + int nIterations; // число итераций для пакетного задания + int nModels; // число запусков модели для пакетного задания + uint typeContentment; // способ расчёта ср.неудовлетворённости: 0 - сравнение со всеми агентами, 1 - сравнение внутри окрестности + //qreal avContentment; // ср.неудовлетворённость (ToDo: а надо ли?) + uint radiusLocality; // радиус окрестности в случае typeContenment = 1 + QWidget *window; + QGridLayout *base; + QTabWidget *tabWindow; + QGraphicsScene *scene; + ManagerItem *manItem; + QCustomPlot *plot; + QPushButton *createButton; // кнопка создания модели + QPushButton *buttonTime; // кнопка "Pause/Start" + QLabel *labelContent; + QSpinBox *spinLocality; + QComboBox *viewOrPackage; + QCheckBox *checkLink; + QCheckBox *checkOutputToTxt; + QComboBox *comboTime; + QSpinBox *spinIterations; + QSpinBox *spinModels; + bool outputToTxt; + QTimer *timer; + QProgressBar *prBar; + QComboBox *graphCombo; + QCustomPlot *batchPlot; + QLineEdit *lineSaveWithName; + APHistory *history; + +private slots: + void setCowardMedian(int cm) {this->cowardMedian = cm;} + void setCowardNormal(int cn) {this->cowardNormal = cn;} + void setProtectorMedian(int pm) {this->protectorMedian = pm;} + void setProtectorNormal(int pn) {this->protectorNormal = pn;} + void setAgentRadius(int rad){this->agentRadius = rad;} + void setSpeedDistr(int spDistr) {this->speedDistr = spDistr;} + void setGamerSpeed(int gamerSp) {this->gamerSpeed = gamerSp;} + void setPeriodicity(bool value) {this->period = value;} + void setDistr(int distr){this->initDistr = distr;} + void setEnmity(int enm) {this->enmity = enm;} + void setNewEnmity(int nEnm){this->newEnmity = nEnm;} + void setviewOrPackageMode(int val){this->viewOrPackageMode = val;} + void setNIterations(int number){this->nIterations = number;} + void setNModels(int number){this->nModels = number;} + void setOutputToTxt(bool output) {this->outputToTxt = output;} + void setTypeContenment(int type){this->typeContentment = type;} + //void setAvContentment(qreal cont){this->avContentment = cont;} + void setRadiusLocality(int rad){this->radiusLocality = rad;} + + void initModel(); // создание модели по полученным данным + void timerEvent(); // итерация игры - вычисление новых координат для всех игроков + void handlePrBar(); + void handleButton(); // остановка/возобновление игры + void timerRestart(int index); // перезапуск таймера + void resetProgressBarAndHistory(); + void composeGraph(int iModel); + void saveGragh(); + // вкл/выкл пункты окна настроеек + void manageSpinLocality(int value); + void managePackageOptions(int val); +}; + +#endif // MANAGER_H diff --git a/DEC_GUI/Agressor/manageritem.cpp b/DEC_GUI/Agressor/manageritem.cpp new file mode 100644 index 0000000..0c4d69c --- /dev/null +++ b/DEC_GUI/Agressor/manageritem.cpp @@ -0,0 +1,160 @@ +#include +#include +#include +#include +#include "manageritem.h" + +static const qreal pi = 3.14159265358979323846264338327950288419717; + +/* + * Конструктор + */ +ManagerItem::ManagerItem(QList agents, QGraphicsScene *sceneParameter, int CM, int CN, int PM/*, int PN*/): + agent(agents), scene(sceneParameter), link(0) +{ + fillingScene(CM, CN, PM); +} + +/* + * Отрисовка связей между агентами и их агрессорами, защитниками/защищаемыми + */ +void ManagerItem::drawLinks(){ + for(int i = 0; i < agent.size(); i++){ + Agent *gamer = agent[i]; + QGraphicsLineItem *item1 = new QGraphicsLineItem(QLineF(gamer->getCoordX(), gamer->getCoordY(), + agent[gamer->getAgressor()]->getCoordX(), agent[gamer->getAgressor()]->getCoordY())); + QGraphicsLineItem *item2 = new QGraphicsLineItem(QLineF(gamer->getCoordX(), gamer->getCoordY(), + agent[gamer->getProtector()]->getCoordX(), agent[gamer->getProtector()]->getCoordY())); + item1->setPen(QPen(Qt::blue)); + item2->setPen(QPen(Qt::green)); + links.push_back(item1); + links.push_back(item2); + scene->addItem(item1); + scene->addItem(item2); + } +} + +/* + * Отрисовка направлений связей + */ +void ManagerItem::drawArrow(){ + for(int i = 0; i < agent.size(); i++){ + Agent *gamer = agent[i]; + QLineF *line1 = new QLineF(gamer->getCoordX(), gamer->getCoordY(), + agent[gamer->getAgressor()]->getCoordX(), agent[gamer->getAgressor()]->getCoordY()); + QLineF *line2 = new QLineF(gamer->getCoordX(), gamer->getCoordY(), + agent[gamer->getProtector()]->getCoordX(), agent[gamer->getProtector()]->getCoordY()); + qreal angel1 = ::acos(line1->dx()/line1->length()); + qreal angel2 = ::acos(line2->dx()/line2->length()); + if (line1->dy() >= 0){ + angel1 = 2*pi - angel1; + } + if (line2->dy() >= 0){ + angel2 = 2*pi - angel2; + } + if (line1->length() > 20){ + line1->setLength(20); + QPointF point1 = line1->p2(); + QPointF point2 = point1 + QPointF(sin(angel1 - pi/3)*10, cos(angel1 - pi/3)*10); + QPointF point3 = point1 + QPointF(sin(angel1 - 2*pi/3)*10, cos(angel1 - 2*pi/3)*10); + QGraphicsPolygonItem *poly1 = new QGraphicsPolygonItem(QPolygonF() << point1 << point2 << point3); + poly1->setBrush(QBrush(Qt::blue)); + poly1->setPen(QPen(Qt::blue)); + arrows.push_back(poly1); + scene->addItem(poly1); + } + else {} + if (line2->length() > 20){ + line2->setLength(20); + QPointF point4 = line2->p2(); + QPointF point5 = point4 + QPointF(sin(angel2 - pi/3)*10, cos(angel2 - pi/3)*10); + QPointF point6 = point4 + QPointF(sin(angel2 - 2*pi/3)*10, cos(angel2 - 2*pi/3)*10); + QGraphicsPolygonItem *poly2 = new QGraphicsPolygonItem(QPolygonF() << point4 << point5 << point6); + poly2->setBrush(QBrush(Qt::green)); + poly2->setPen(QPen(Qt::green)); + arrows.push_back(poly2); + scene->addItem(poly2); + } + else {} + delete line1; + delete line2; + } +} + +/* + * Заполнение сцены + */ +void ManagerItem:: fillingScene(int CM, int CN, int PM/*, int PN*/) { + + clearScene(); + + QGraphicsRectItem *rect = new QGraphicsRectItem(-300, -300, 600, 600); + rect->setPen(QPen(Qt::gray)); + scene->addItem(rect); + + //std::cout << "start filling scene with number of gamers =" << agent.size() << std::endl; + for(int i = 0; i < agent.size(); i++){ + AgentItem *agentIt; + if (i < CM){ + agentIt = new AgentItem(agent[i], Qt::red); + } + else if (i < CM + CN){ + agentIt = new AgentItem(agent[i], Qt::darkBlue); + } + else if (i < CM + CN + PM){ + agentIt = new AgentItem(agent[i], Qt::yellow); + } + else { + agentIt = new AgentItem(agent[i], Qt::cyan); + } + agentItems.push_back(agentIt); + agentIt->setPos(agent[i]->getCoordX(), agent[i]->getCoordY()); + scene->addItem(agentIt); + } + //std::cout << "INFO: ManagerItem::fillingScene finished, number of items =" << agentItems.size() << std::endl; +} + +/* + * Очистка сцены + */ +void ManagerItem:: clearScene(){ + scene->clear(); + qDeleteAll(agentItems.begin(), agentItems.end()); + agentItems.clear(); + qDeleteAll(links.begin(), links.end()); + links.clear(); + qDeleteAll(arrows.begin(), arrows.end()); + arrows.clear(); +} + +void ManagerItem::setLink(bool val){ + this->link = val; +} + +/* + * Событие игры: перерисовка всех элементов сцены, графика + */ +void ManagerItem::gameEvent(){ + //std::cout << "INFO: ManagerItem::gameEvent start, agentItemsSize: " << agentItems.size() << std::endl; + // Перерисовка агентов + for(int i = 0; i < agentItems.size(); i++){ + agentItems[i]->agentEvent(); + } + //Очистка сцены от связей + for (int i = 0; i < links.size(); i++){ + scene->removeItem(links[i]); + delete links[i]; + } + for (int i = 0; i < arrows.size(); i++){ + scene->removeItem(arrows[i]); + delete arrows[i]; + } + links.clear(); + arrows.clear(); + + // Отрисовка актуальных связей (если необходимо) + if(link == true){ + drawLinks(); + drawArrow(); + } +} diff --git a/DEC_GUI/Agressor/manageritem.h b/DEC_GUI/Agressor/manageritem.h new file mode 100644 index 0000000..b9f2108 --- /dev/null +++ b/DEC_GUI/Agressor/manageritem.h @@ -0,0 +1,29 @@ +#ifndef MANAGERITEM_H +#define MANAGERITEM_H + +#include +#include +#include "agent.h" +#include "agentitem.h" + +class ManagerItem : public QObject { + Q_OBJECT +public: + explicit ManagerItem(QList agents, QGraphicsScene *sceneParameter, int CM, int CN, int PM/*, int PN*/); + void drawLinks(); // отрисовать связи + void drawArrow(); // отрисовать направление связей + void fillingScene(int CM, int CN, int PM); // заполнение сцены + void clearScene(); // очистка сцены +private: + QList agent; + QList agentItems; + QList links; + QList arrows; + bool link; // флаг: отображать ли связи + QGraphicsScene *scene; +public slots: + void setLink(bool val); + void gameEvent(); // событие игры: перерисовка всех элементов сцены, графика +}; + +#endif // MANAGERITEM_H diff --git a/DEC_GUI/Agressor/model.cpp b/DEC_GUI/Agressor/model.cpp new file mode 100644 index 0000000..3a3b098 --- /dev/null +++ b/DEC_GUI/Agressor/model.cpp @@ -0,0 +1,356 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "model.h" + +static const qreal pi = 3.14159265358979323846264338327950288419717; + +/* + * Знак числа + */ +template int sgn(T val) { + return (T(0) < val) - (val < T(0)); +} + +Model::Model(uint modelId, uint CM, uint CN, uint PM, uint PN, int radius, uint speed, bool period, uint distr, + uint enmity, uint newEnmity, QObject *parent): id(modelId), cowardMedian(CM), cowardNormal(CN), + protectorMedian(PM), protectorNormal(PN), agentRadius(radius), gamerSpeed(speed), period(period), initDistr(distr), + enmity(enmity), newEnmity(newEnmity), avContentment(0), QObject(parent) +{ + uint agr; // номер агрессора (для передачи в конструктор игрока) + uint prot; // номер защитника (для передачи в конструктор игрока) + + // Конструирование игроков, заполнение списка игроков + uint gamerCount = cowardMedian + cowardNormal + protectorMedian + protectorNormal; + QTime now = QTime::currentTime(); + qsrand(now.msec()); + + for(uint i = 0; i < gamerCount; i++){ + do { + agr = qrand() % gamerCount; + } + while (agr == i); // игрок не может быть собственным агрессором + do { + prot = qrand() % gamerCount; + } + while(prot == i || prot == agr); // игрок и агрессор не могут быть защитниками + + Agent *gamer = new Agent(i, agr, prot, 0, 0, agentRadius, gamerSpeed); + if (i < cowardMedian){} + else if (i < cowardMedian + cowardNormal){ + gamer->setStratedy(1); + } + else if (i < cowardMedian + cowardNormal + protectorMedian){ + gamer->setMode(1); + } + else { + gamer->setMode(1); + gamer->setStratedy(1); + } + uint d; + if (initDistr == 0){ + d = qrand() % 220 + 70; + } + else { + d = 200; + } + agentList.push_back(gamer); + agentList[i]->setCoordX(::sin((i * 2 * pi) / gamerCount) * d); + agentList[i]->setCoordY(::cos((i * 2 * pi) / gamerCount) * d); + } + setEnmity(newEnmity); +} + +/* + * Функция, возвращающая модуль от числа + */ +qreal Model::mod(qreal a){ + qreal mod = (a > 0) ? a : -a; + return mod; +} + +/* Функция, возвращающая список игроков, с которыми столкнётся игрок index + * при сдвиге на вектор (x, y); dist - максимальное расстояние, на котором игроки считаются столкнувшимися + */ +QList Model::DangerGamer(uint index, qreal x, qreal y, uint dist){ + //std:: cout << "INFO: Manager::DangerGamer start" << std::endl; + QList DangerGamers; + for(int i = 0; i < agentList.size(); i++){ + if(i == index){ + continue; + } + else{ + QLineF toAgent = QLineF(agentList[index]->getCoordX() + x, agentList[index]->getCoordY() + y, agentList[i]->getCoordX(), agentList[i]->getCoordY()); + if(toAgent.length() <= dist){ + DangerGamers.push_back(agentList[i]); + } + else{} + } + } + return DangerGamers; +} + +QList > Model::DangerGamer(QList > danger, int index, qreal x, qreal y, uint dist){ + //std:: cout << "INFO: Manager::DangerGamer start" << std::endl; + for(int i = index + 1; i < agentList.size(); i++){ + QLineF toAgent = QLineF(agentList[index]->getCoordX() + x, agentList[index]->getCoordY() + y, agentList[i]->getCoordX(), agentList[i]->getCoordY()); + if(toAgent.length() <= dist){ + danger[index].push_back(agentList[i]); + danger[i].push_back(agentList[index]); + } + else {} + } + return danger; +} + +/* + * Проверка, выходит ли вектор checked в координатах игрока с номером gamerId за пределы сцены по координате x + * возвращает true, если выходит, false - иначе. + */ +bool Model::leaveWindowX(uint agentId, QLineF checked){ + if(mod(agentList[agentId]->getCoordX() + checked.dx()) > 300 - agentList[agentId]->getRadius()){ + return true; + } + return false; +} + +/* + * Проверка, выходит ли вектор checked в координатах игрока с номером gamerId за пределы сцены по координате y + * возвращает true, если выходит, false - иначе. + */ +bool Model::leaveWindowY(uint agentId, QLineF checked){ + if(mod(agentList[agentId]->getCoordY() + checked.dy()) > 300 - agentList[agentId]->getRadius()){ + return true; + } + return false; +} + +/* + * Преобразование координат из-за периодичности сцены + * (при попытке выйти за пределы окна игрок должен "выйти" с противоположной стороны сцены) + * параметры: номер игрока, вектор сдвига + * возвращает преобразованный вектор сдвига + */ +QLineF Model::periodicTransf(uint index, QLineF tend){ + qreal x = tend.dx(); + qreal y = tend.dy(); + // Проверка на выход за пределы окна по координате x + if (mod(tend.dx() + agentList[index]->getCoordX()) > 300 - agentList[index]->getRadius()){ + x = -1*(600 - 2*agentList[index]->getRadius())*sgn(tend.dx()) + tend.dx(); + } + else{} + // Проверка на выход за пределы окна по координате y + if (mod(tend.dy() + agentList[index]->getCoordY()) > 300 - agentList[index]->getRadius()){ + y = -1*(600 - 2*agentList[index]->getRadius())*sgn(tend.dy()) + tend.dy(); + } + else{} + return QLineF(0, 0, x, y); +} + +/* + * Вычисление новых координат для игрока под номером gamerId + */ +QLineF Model::requiredVector(uint agentId){ + //std:: cout << "req start" << std::endl; + Agent *agressorAg = agentList[agentList[agentId]->getAgressor()]; + Agent *protectorAg = agentList[agentList[agentId]->getProtector()]; + // Вычисление координат агрессора и защитника + qreal protectorX = protectorAg->getCoordX(); + qreal protectorY = protectorAg->getCoordY(); + qreal agressorX = agressorAg->getCoordX(); + qreal agressorY = agressorAg->getCoordY(); + + QLineF fromAtoPr(agressorX, agressorY, protectorX, protectorY); + QLineF shiftVector; + + if (agentList[agentId]->getStrategy() == 0){ // Агент движется вдоль медианы + // Режим труса + if(agentList[agentId]->getMode() == 0){ + qreal shiftX = agressorX + 2*fromAtoPr.dx() - agentList[agentId]->getCoordX(); + qreal shiftY = agressorY + 2*fromAtoPr.dy() - agentList[agentId]->getCoordY(); + shiftVector = QLineF(0, 0, shiftX, shiftY); + } + // Режим защитника + else if(agentList[agentId]->getMode() == 1){ + qreal shiftX = agressorX + fromAtoPr.dx()/2 - agentList[agentId]->getCoordX(); + qreal shiftY = agressorY + fromAtoPr.dy()/2 - agentList[agentId]->getCoordY(); + shiftVector = QLineF(0, 0, shiftX, shiftY); + } + else {} + agentList[agentId]->setDistTarget(shiftVector.length()); + // Проверка: не проскочить мимо цели + if (shiftVector.length() > agentList[agentId]->getSpeed()){ + shiftVector.setLength(agentList[agentId]->getSpeed()); + } + else{} + } + else if (agentList[agentId]->getStrategy() == 1){ // если агент движется вдоль нормали + + // ToDo: поправить логику + if((protectorY - agressorY == 0 && agressorX - protectorX == 0)){ + agentList[agentId]->setDistTarget(0); + return QLineF(0, 0, 0, 0); + } + // Расстояние от игрока до прямой, на которой расположены агрессор и защитник + qreal dist = (mod((protectorY - agressorY)*agressorX + (agressorX - protectorX)*agressorY)) / + sqrt(pow((qreal)protectorY - agressorY, 2) + pow((qreal)agressorX - protectorX, 2)); + + // Игрок стремится к данной прямой по нормали. + shiftVector = QLineF (0, 0, protectorY - agressorY, agressorX - protectorX); + + // Если свободный член в уравнении прямой Ax + By + C = 0 больше нуля, нормаль нужно перевернуть + нормализация вектора. + if (agressorX*(protectorY - agressorY) + agressorY*(agressorX - protectorX) < 0){ + shiftVector = QLineF(shiftVector.dx(), shiftVector.dy(), 0, 0); + + } + else {} + // Установление места назначения в точности на пересечение нормали с прямой + shiftVector.setLength(dist); + + QLineF fromShiftToA (shiftVector.dx() + agentList[agentId]->getCoordX(), shiftVector.dy() + agentList[agentId]->getCoordY(), agressorX, agressorY); + QLineF fromShiftToPr (shiftVector.dx() + agentList[agentId]->getCoordX(), shiftVector.dy() + agentList[agentId]->getCoordY(), protectorX, protectorY); + + // Режим труса + if(agentList[agentId]->getMode() == 0){ + // Проверка, не окажется ли место назначения между агрессором и протектором + // (а то и вовсе за агрессором) + if((fromShiftToA.length() < fromShiftToPr.length()) && (fromShiftToA.length() >= fromAtoPr.length())){ + // Установление желаемых координат в точности за защитником + QLineF hide = fromAtoPr; + hide.setLength(enmity); + shiftVector = QLineF(0, 0, protectorX + hide.dx() - agentList[agentId]->getCoordX(), protectorY + hide.dy() - agentList[agentId]->getCoordY()); + } + else{} + agentList[agentId]->setDistTarget(shiftVector.length()); + // Проверка: не проскочить мимо цели + if (shiftVector.length() >= agentList[agentId]->getSpeed()){ + shiftVector.setLength(agentList[agentId]->getSpeed()); + } + else {} + } + // Режим защитника + else if (agentList[agentId]->getMode() == 1){ + // Проверка, попадает ли точка назначения в промежуток между A и B + if((fromAtoPr.length() < fromShiftToPr.length()) && (fromAtoPr.length() >= fromShiftToPr.length())){ + // Установление желаемых координат посередине между А и В + QLineF AtoPr = fromAtoPr; + AtoPr.setLength(fromAtoPr.length()/2); + shiftVector = QLineF(0, 0, agressorX + AtoPr.dx() - agentList[agentId]->getCoordX(), + agressorY + AtoPr.dy() - agentList[agentId]->getCoordY()); + } + else {} + agentList[agentId]->setDistTarget(shiftVector.length()); + // Проверка: не проскочить мимо цели + if (shiftVector.length() >= agentList[agentId]->getSpeed()){ + shiftVector.setLength(agentList[agentId]->getSpeed()); + } + else {} + } + else {} + } + else{} + //qApp->processEvents(); + + //ToDo: сократить код + + // Для непериодичной сцены + if (period == false){ + // Проверка на выход за пределы окна, "подрезание" вектора перемещения + if (agentList[agentId]->getCoordX() + shiftVector.dx() > 300 - agentList[agentId]->getRadius()){ + shiftVector = QLineF(0, 0, 300 - agentList[agentId]->getRadius() - agentList[agentId]->getCoordX(), shiftVector.dy()); + } + else if(agentList[agentId]->getCoordX() + shiftVector.dx() < -300 + agentList[agentId]->getRadius()){ + shiftVector = QLineF(0, 0, -300 + agentList[agentId]->getRadius() - agentList[agentId]->getCoordX(), shiftVector.dy()); + } + else{} + if(agentList[agentId]->getCoordY() + shiftVector.dy() > 300 - agentList[agentId]->getRadius()){ + shiftVector = QLineF(0, 0, shiftVector.dx(), 300 - agentList[agentId]->getRadius() - agentList[agentId]->getCoordY()); + } + else if(agentList[agentId]->getCoordY() + shiftVector.dy() < -300 + agentList[agentId]->getRadius()){ + shiftVector = QLineF(0, 0, shiftVector.dx(), -300 + agentList[agentId]->getRadius() - agentList[agentId]->getCoordY()); + } + else {} + } + // Для периодичной сцены + else{ + // Пересчёт координат с учётом периодичности сцены + shiftVector = periodicTransf(agentId, shiftVector); + } + //qApp->processEvents(); + + if(enmity > 0){ + // Проверка на столкновение + //if (agentId < agentList.size() - 1){ + QList dangerAgents = DangerGamer(/*dangerAgents, */ agentId, shiftVector.dx(), shiftVector.dy(), enmity); + //} + //QList dangerAgents = DangerGamer(agentId, shiftVector.dx(), shiftVector.dy(), enmity); + if(dangerAgents.isEmpty()){ + //std:: cout << "req start" << std::endl; + return shiftVector; + } + else{ + // Попытка обойти все потенциальные угрозы стороной. Если не получается, игрок остаётся на месте + for (int i = 0; i < dangerAgents.size(); i++){ + QLineF toAgent = QLineF(agentList[agentId]->getCoordX() + shiftVector.dx(), agentList[agentId]->getCoordY() + shiftVector.dy(), + dangerAgents[i]->getCoordX(), dangerAgents[i]->getCoordY()); + shiftVector = toAgent.normalVector().unitVector(); + if (period == false){ // для непериодичной сцены - проверка на покидание окна + на новое столкновение + QList futureDangerous = DangerGamer(agentId, shiftVector.dx(), shiftVector.dy(), enmity); + if(futureDangerous.isEmpty() && leaveWindowX(agentId, shiftVector) && leaveWindowY(agentId, shiftVector) == false){ + return shiftVector; + } + else{} + futureDangerous.clear(); + } + else{ // для периодичной сцены - преобразование координат из-за периодичности + проверка на новое столкновение + shiftVector = periodicTransf(agentId, shiftVector); + QList futureDangerous = DangerGamer(agentId, shiftVector.dx(), shiftVector.dy(), enmity); + if(futureDangerous.isEmpty()){ + return shiftVector; + } + else{} + futureDangerous.clear(); + } + //qApp->processEvents(); + //std::cout << agentId << " Check for crush is done" << std::endl; + } + //std:: cout << "req start" << std::endl; + return QLineF(0, 0, 0, 0); + } + } + else { + //std::cout << "total shift X: " << shiftVector.dx() << " total shift Y: " << shiftVector.dy() << std::endl; + //std:: cout << "req start" << std::endl; + return shiftVector; + } +} + +void Model::modelIteration() { + QList shift; + // Вычисление новых координат +// QList> dangerAgents; +// for (int i = 0; i < agentList.size(); i++) { +// QList content; +// dangerAgents.push_back(content); +// } + for(int i = 0; i < agentList.size(); i++){ + shift.append(requiredVector(i)); + //std:: cout << "INFO: iteration: " << step << " agent: " << i << std::endl; + } + // Смена координат на новые + for(int i = 0; i < agentList.size(); i++){ + agentList[i]->gameEvent(shift[i]); + } + //qApp->processEvents(); + shift.clear(); +} + +void Model::clear() { + qDeleteAll(agentList.begin(), agentList.end()); + agentList.clear(); +} diff --git a/DEC_GUI/Agressor/model.h b/DEC_GUI/Agressor/model.h new file mode 100644 index 0000000..e3faf71 --- /dev/null +++ b/DEC_GUI/Agressor/model.h @@ -0,0 +1,49 @@ +#ifndef MODEL_H +#define MODEL_H + +#include +#include "agent.h" + + +class Model : public QObject +{ + Q_OBJECT +public: + explicit Model(uint modelId, uint CM, uint CN, uint PM, uint PN, int radius, uint speed, bool period, uint distr, + uint enmity, uint newEnmity, QObject *parent = 0); + qreal mod(qreal a); // модуль числа + QList DangerGamer(uint index, qreal x, qreal y, uint dist); // список игроков, с которыми возможно столкновение + QList > DangerGamer(QList > danger, int index, qreal x, qreal y, uint dist); + bool leaveWindowX(uint agentId, QLineF checked); // проверка на покидание окна по координате X + bool leaveWindowY(uint agentId, QLineF checked); // проверка на покидание окна по координате Y + QLineF periodicTransf(uint index, QLineF tend); // преобразование координат из-за перидочности сцены + QLineF requiredVector(uint gamerId); // вычисление новых координат для игрока с номером gamerId + void modelIteration(); + uint getId() {return id;} + QList getAgentList() {return this->agentList;} + void setEnmity(int enm) {this->enmity = enm;} + void setAvContentment(qreal cont){this->avContentment = cont;} + qreal getAvContentment(){return this->avContentment;} + void clear(); + +private: + uint id; + QList agentList; // список указателей на игроков + uint cowardMedian; // число игроков в режиме труса, движущихся по медиане + uint cowardNormal; // число игроков в режиме труса, движущихся по нормали + uint protectorMedian; // число игроков в режиме защитника, движущихся по медиане + uint protectorNormal; // число игроков в режиме защитника, движущихся по нормали + int agentRadius; // радиус шарика-агента (для передачи в конструктор) + uint newEnmity; // параметр enmity, полученный из диалогового окна + uint gamerSpeed; // скорость агентов + bool period; // метка периодичности краёв сцены (true - сцена периодична) + uint initDistr; // метка начального распределения игроков сцены (0 - случайное, 1 - на круге) + uint enmity; // минимальное расстояние, на которое игроки могут приближаются друг к другу, enmity = 0 - возможно покоординатное совпадение игроков + qreal avContentment; +signals: + +public slots: + +}; + +#endif // MODEL_H diff --git a/DEC_GUI/DEC-0.0/1.xls b/DEC_GUI/DEC-0.0/1.xls new file mode 100644 index 0000000..f300469 --- /dev/null +++ b/DEC_GUI/DEC-0.0/1.xls @@ -0,0 +1,2002 @@ +Population size: 2001 +1 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 2.98125] [disease, 2] +2 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 2.98125] [disease, 2] +3 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 2.98125] [disease, 2] +4 Fitness: 12.8 Genotype: Fch1: [A coadaptive, f (8) m (8)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.8] [disease, 3] +5 Fitness: 12.8 Genotype: Fch1: [A coadaptive, f (8) m (8)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.8] [disease, 3] +6 Fitness: 12.8 Genotype: Fch1: [A coadaptive, f (8) m (8)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.8] [disease, 3] +7 Fitness: 4.6875 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.6875] [disease, 3] +8 Fitness: 4.6875 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.6875] [disease, 3] +9 Fitness: 4.6875 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.6875] [disease, 3] +10 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 2.5] +11 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 2.5] +12 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 2.5] +13 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +14 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +15 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +16 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (6) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 3.5] +17 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (6) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 3.5] +18 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (6) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 3.5] +19 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +20 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +21 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +22 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +23 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +24 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +25 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.08125] [disease, 3] +26 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.08125] [disease, 3] +27 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.08125] [disease, 3] +28 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.0313] [disease, 2] +29 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.0313] [disease, 2] +30 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.0313] [disease, 2] +31 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +32 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +33 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +34 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (6) m (3)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 2] +35 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (6) m (3)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 2] +36 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (6) m (3)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 2] +37 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (4) m (7)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.6125] [disease, 3] +38 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (4) m (7)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.6125] [disease, 3] +39 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (4) m (7)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.6125] [disease, 3] +40 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (6) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.15] [disease, 4] +41 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (6) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.15] [disease, 4] +42 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (6) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.15] [disease, 4] +43 Fitness: 2.9375 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (6) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9375] [disease, 2.5] +44 Fitness: 2.9375 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (6) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9375] [disease, 2.5] +45 Fitness: 2.9375 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (6) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9375] [disease, 2.5] +46 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +47 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +48 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +49 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.8375] [disease, 3] +50 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.8375] [disease, 3] +51 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.8375] [disease, 3] +52 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.6] [disease, 3.5] +53 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.6] [disease, 3.5] +54 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.6] [disease, 3.5] +55 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 2.5] +56 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 2.5] +57 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 2.5] +58 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +59 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +60 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +61 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (6) m (3)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3] +62 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (6) m (3)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3] +63 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (6) m (3)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3] +64 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +65 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +66 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +67 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (1) m (7)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3] +68 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (1) m (7)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3] +69 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (1) m (7)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3] +70 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.35] [disease, 1.5] +71 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.35] [disease, 1.5] +72 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.35] [disease, 1.5] +73 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +74 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +75 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +76 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (1) m (9)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 1.5] +77 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (1) m (9)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 1.5] +78 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (1) m (9)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 1.5] +79 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (2) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +80 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (2) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +81 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (2) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +82 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +83 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +84 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +85 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (1) m (6)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3.5] +86 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (1) m (6)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3.5] +87 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (1) m (6)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3.5] +88 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.95] [disease, 3] +89 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.95] [disease, 3] +90 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.95] [disease, 3] +91 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (10) m (7)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 3] +92 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (10) m (7)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 3] +93 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (10) m (7)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 3] +94 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +95 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +96 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +97 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.36875] [disease, 2.5] +98 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.36875] [disease, 2.5] +99 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.36875] [disease, 2.5] +100 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (0) m (1)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +101 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (0) m (1)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +102 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (0) m (1)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +103 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +104 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +105 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +106 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 3] +107 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 3] +108 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 3] +109 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (6) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.00625] [disease, 3] +110 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (6) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.00625] [disease, 3] +111 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (6) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.00625] [disease, 3] +112 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +113 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +114 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +115 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3.5] +116 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3.5] +117 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3.5] +118 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (4) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 2.5] +119 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (4) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 2.5] +120 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (4) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 2.5] +121 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.1563] [disease, 3] +122 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.1563] [disease, 3] +123 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.1563] [disease, 3] +124 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (9) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +125 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (9) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +126 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (9) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +127 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +128 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +129 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +130 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.8375] [disease, 2.5] +131 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.8375] [disease, 2.5] +132 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.8375] [disease, 2.5] +133 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (0) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +134 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (0) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +135 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (0) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +136 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2] +137 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2] +138 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2] +139 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (0) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +140 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (0) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +141 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (0) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +142 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (2) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.04375] [disease, 2] +143 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (2) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.04375] [disease, 2] +144 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (2) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.04375] [disease, 2] +145 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.7375] [disease, 2.5] +146 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.7375] [disease, 2.5] +147 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.7375] [disease, 2.5] +148 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +149 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +150 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +151 Fitness: 5.15 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (10) m (9)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.15] [disease, 3.5] +152 Fitness: 5.15 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (10) m (9)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.15] [disease, 3.5] +153 Fitness: 5.15 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (10) m (9)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.15] [disease, 3.5] +154 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3] +155 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3] +156 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3] +157 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.6187] [disease, 2.5] +158 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.6187] [disease, 2.5] +159 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.6187] [disease, 2.5] +160 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (9)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +161 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (9)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +162 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (9)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +163 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 2] +164 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 2] +165 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 2] +166 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +167 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +168 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +169 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (0) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +170 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (0) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +171 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (0) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +172 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +173 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +174 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +175 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (8) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.9625] [disease, 3] +176 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (8) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.9625] [disease, 3] +177 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (8) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.9625] [disease, 3] +178 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (4) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 3] +179 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (4) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 3] +180 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (4) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 3] +181 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (1) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.875] [disease, 3.5] +182 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (1) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.875] [disease, 3.5] +183 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (1) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.875] [disease, 3.5] +184 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3.5] +185 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3.5] +186 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3.5] +187 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (10) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +188 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (10) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +189 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (10) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +190 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (6) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2.5] +191 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (6) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2.5] +192 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (6) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2.5] +193 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6] [disease, 1.5] +194 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6] [disease, 1.5] +195 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6] [disease, 1.5] +196 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.4688] [disease, 2.5] +197 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.4688] [disease, 2.5] +198 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.4688] [disease, 2.5] +199 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (0) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +200 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (0) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +201 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (0) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +202 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 3.2] [disease, 3] +203 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 3.2] [disease, 3] +204 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 3.2] [disease, 3] +205 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 4] +206 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 4] +207 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 4] +208 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (2) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.9312] [disease, 3] +209 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (2) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.9312] [disease, 3] +210 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (2) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.9312] [disease, 3] +211 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.65] [disease, 3] +212 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.65] [disease, 3] +213 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.65] [disease, 3] +214 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +215 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +216 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +217 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +218 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +219 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +220 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.05] [disease, 2] +221 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.05] [disease, 2] +222 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.05] [disease, 2] +223 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.46875] [disease, 2.5] +224 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.46875] [disease, 2.5] +225 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.46875] [disease, 2.5] +226 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (2) m (2)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 2.5] +227 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (2) m (2)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 2.5] +228 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (2) m (2)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 2.5] +229 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (2) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.7875] [disease, 2.5] +230 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (2) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.7875] [disease, 2.5] +231 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (2) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.7875] [disease, 2.5] +232 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (9) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.05] [disease, 2.5] +233 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (9) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.05] [disease, 2.5] +234 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (9) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.05] [disease, 2.5] +235 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.4688] [disease, 3] +236 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.4688] [disease, 3] +237 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.4688] [disease, 3] +238 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +239 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +240 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +241 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 1.5] +242 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 1.5] +243 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 1.5] +244 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2.5] +245 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2.5] +246 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2.5] +247 Fitness: 1.30625 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.30625] [disease, 4] +248 Fitness: 1.30625 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.30625] [disease, 4] +249 Fitness: 1.30625 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.30625] [disease, 4] +250 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +251 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +252 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +253 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (10)] [B coadaptive, f (0) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +254 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (10)] [B coadaptive, f (0) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +255 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (10)] [B coadaptive, f (0) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +256 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.84375] [disease, 3.5] +257 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.84375] [disease, 3.5] +258 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.84375] [disease, 3.5] +259 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.3] [disease, 4] +260 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.3] [disease, 4] +261 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.3] [disease, 4] +262 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 6.875] [disease, 3] +263 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 6.875] [disease, 3] +264 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 6.875] [disease, 3] +265 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +266 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +267 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +268 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (1) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 2.5] +269 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (1) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 2.5] +270 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (1) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 2.5] +271 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +272 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +273 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +274 Fitness: 11.95 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.95] [disease, 3.5] +275 Fitness: 11.95 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.95] [disease, 3.5] +276 Fitness: 11.95 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.95] [disease, 3.5] +277 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +278 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +279 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +280 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +281 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +282 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +283 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +284 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +285 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +286 Fitness: 2.025 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.025] [disease, 3] +287 Fitness: 2.025 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.025] [disease, 3] +288 Fitness: 2.025 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.025] [disease, 3] +289 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2] +290 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2] +291 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2] +292 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +293 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +294 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +295 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.825] [disease, 2] +296 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.825] [disease, 2] +297 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.825] [disease, 2] +298 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.33125] [disease, 4] +299 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.33125] [disease, 4] +300 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.33125] [disease, 4] +301 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (1) m (8)] [B coadaptive, f (9) m (7)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.84375] [disease, 4] +302 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (1) m (8)] [B coadaptive, f (9) m (7)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.84375] [disease, 4] +303 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (1) m (8)] [B coadaptive, f (9) m (7)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.84375] [disease, 4] +304 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (9) m (6)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.0625] [disease, 1.5] +305 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (9) m (6)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.0625] [disease, 1.5] +306 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (9) m (6)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.0625] [disease, 1.5] +307 Fitness: 2.43125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 2.43125] [disease, 3] +308 Fitness: 2.43125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 2.43125] [disease, 3] +309 Fitness: 2.43125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 2.43125] [disease, 3] +310 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 3.5] +311 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 3.5] +312 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 3.5] +313 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +314 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +315 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +316 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (7) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.4] [disease, 2.5] +317 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (7) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.4] [disease, 2.5] +318 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (7) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.4] [disease, 2.5] +319 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.6] [disease, 2.5] +320 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.6] [disease, 2.5] +321 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.6] [disease, 2.5] +322 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +323 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +324 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +325 Fitness: 0.75 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (0) m (2)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.75] [disease, 3] +326 Fitness: 0.75 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (0) m (2)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.75] [disease, 3] +327 Fitness: 0.75 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (0) m (2)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.75] [disease, 3] +328 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +329 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +330 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +331 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (5) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +332 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (5) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +333 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (5) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +334 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +335 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +336 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +337 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (4) m (10)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3] +338 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (4) m (10)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3] +339 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (4) m (10)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3] +340 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 6.875] [disease, 3] +341 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 6.875] [disease, 3] +342 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 6.875] [disease, 3] +343 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (0) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 6.3] [disease, 3] +344 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (0) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 6.3] [disease, 3] +345 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (0) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 6.3] [disease, 3] +346 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (8) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +347 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (8) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +348 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (8) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +349 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (8) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +350 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (8) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +351 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (8) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +352 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.0625] [disease, 3.5] +353 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.0625] [disease, 3.5] +354 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.0625] [disease, 3.5] +355 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (3) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3.5] +356 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (3) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3.5] +357 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (3) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3.5] +358 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.65625] [disease, 4] +359 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.65625] [disease, 4] +360 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (3) m (5)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.65625] [disease, 4] +361 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (8) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.15] [disease, 3] +362 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (8) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.15] [disease, 3] +363 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (8) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.15] [disease, 3] +364 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 2] +365 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 2] +366 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 2] +367 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (7) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.95] [disease, 3] +368 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (7) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.95] [disease, 3] +369 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (7) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.95] [disease, 3] +370 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (9) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +371 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (9) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +372 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (9) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +373 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +374 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +375 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +376 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +377 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +378 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +379 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (6) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.8813] [disease, 2] +380 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (6) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.8813] [disease, 2] +381 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (6) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.8813] [disease, 2] +382 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 2.5] +383 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 2.5] +384 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 2.5] +385 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3] +386 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3] +387 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3] +388 Fitness: 10 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 10] [disease, 2] +389 Fitness: 10 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 10] [disease, 2] +390 Fitness: 10 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 10] [disease, 2] +391 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 7.725] [disease, 2.5] +392 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 7.725] [disease, 2.5] +393 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 7.725] [disease, 2.5] +394 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2.5] +395 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2.5] +396 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2.5] +397 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6] [disease, 3] +398 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6] [disease, 3] +399 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6] [disease, 3] +400 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.65] [disease, 3.5] +401 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.65] [disease, 3.5] +402 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.65] [disease, 3.5] +403 Fitness: 10 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10] [disease, 3.5] +404 Fitness: 10 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10] [disease, 3.5] +405 Fitness: 10 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10] [disease, 3.5] +406 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.05] [disease, 3.5] +407 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.05] [disease, 3.5] +408 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.05] [disease, 3.5] +409 Fitness: 9.95625 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (10) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.95625] [disease, 2.5] +410 Fitness: 9.95625 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (10) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.95625] [disease, 2.5] +411 Fitness: 9.95625 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (10) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.95625] [disease, 2.5] +412 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +413 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +414 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +415 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (9)] [B coadaptive, f (6) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 4.41875] [disease, 3.5] +416 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (9)] [B coadaptive, f (6) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 4.41875] [disease, 3.5] +417 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (9)] [B coadaptive, f (6) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 4.41875] [disease, 3.5] +418 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 6.83125] [disease, 2.5] +419 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 6.83125] [disease, 2.5] +420 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 6.83125] [disease, 2.5] +421 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.8813] [disease, 3] +422 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.8813] [disease, 3] +423 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.8813] [disease, 3] +424 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.25] [disease, 3] +425 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.25] [disease, 3] +426 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.25] [disease, 3] +427 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.15] [disease, 2.5] +428 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.15] [disease, 2.5] +429 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.15] [disease, 2.5] +430 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +431 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +432 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +433 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +434 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +435 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +436 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +437 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +438 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +439 Fitness: 10 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10] [disease, 3] +440 Fitness: 10 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10] [disease, 3] +441 Fitness: 10 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10] [disease, 3] +442 Fitness: 14.7 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.7] [disease, 3.5] +443 Fitness: 14.7 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.7] [disease, 3.5] +444 Fitness: 14.7 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.7] [disease, 3.5] +445 Fitness: 10 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10] [disease, 2] +446 Fitness: 10 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10] [disease, 2] +447 Fitness: 10 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10] [disease, 2] +448 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3] +449 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3] +450 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3] +451 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +452 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +453 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +454 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 2.5] +455 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 2.5] +456 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 2.5] +457 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +458 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +459 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +460 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +461 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +462 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +463 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (6) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.2] [disease, 3] +464 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (6) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.2] [disease, 3] +465 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (6) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.2] [disease, 3] +466 Fitness: 2.8 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.8] [disease, 3.5] +467 Fitness: 2.8 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.8] [disease, 3.5] +468 Fitness: 2.8 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.8] [disease, 3.5] +469 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (9) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 3] +470 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (9) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 3] +471 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (9) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 3] +472 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (6) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.15] [disease, 2] +473 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (6) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.15] [disease, 2] +474 Fitness: 8.15 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (6) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.15] [disease, 2] +475 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (6) m (3)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +476 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (6) m (3)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +477 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (6) m (3)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +478 Fitness: 13.3062 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.3062] [disease, 4] +479 Fitness: 13.3062 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.3062] [disease, 4] +480 Fitness: 13.3062 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.3062] [disease, 4] +481 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +482 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +483 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +484 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (1) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.08125] [disease, 3.5] +485 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (1) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.08125] [disease, 3.5] +486 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (1) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.08125] [disease, 3.5] +487 Fitness: 2.85 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.85] [disease, 3] +488 Fitness: 2.85 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.85] [disease, 3] +489 Fitness: 2.85 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.85] [disease, 3] +490 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.05625] [disease, 2.5] +491 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.05625] [disease, 2.5] +492 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.05625] [disease, 2.5] +493 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (5) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.1] [disease, 4] +494 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (5) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.1] [disease, 4] +495 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (5) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.1] [disease, 4] +496 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 1.5] +497 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 1.5] +498 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 1.5] +499 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (0) m (8)] [B coadaptive, f (2) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +500 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (0) m (8)] [B coadaptive, f (2) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +501 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (0) m (8)] [B coadaptive, f (2) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +502 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2] +503 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2] +504 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 2] +505 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +506 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +507 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +508 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.05] [disease, 3] +509 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.05] [disease, 3] +510 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.05] [disease, 3] +511 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (7) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +512 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (7) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +513 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (7) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +514 Fitness: 0.25625 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.25625] [disease, 3.5] +515 Fitness: 0.25625 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.25625] [disease, 3.5] +516 Fitness: 0.25625 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.25625] [disease, 3.5] +517 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 3] +518 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 3] +519 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 3] +520 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3] +521 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3] +522 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3] +523 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.83125] [disease, 3.5] +524 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.83125] [disease, 3.5] +525 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.83125] [disease, 3.5] +526 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (5) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3] +527 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (5) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3] +528 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (5) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3] +529 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (10) m (7)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.9875] [disease, 1.5] +530 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (10) m (7)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.9875] [disease, 1.5] +531 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (10) m (7)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.9875] [disease, 1.5] +532 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +533 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +534 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +535 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.875] [disease, 3] +536 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.875] [disease, 3] +537 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.875] [disease, 3] +538 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.4688] [disease, 3.5] +539 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.4688] [disease, 3.5] +540 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.4688] [disease, 3.5] +541 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (6) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3] +542 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (6) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3] +543 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (6) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3] +544 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +545 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +546 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +547 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 3.5] +548 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 3.5] +549 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 3.5] +550 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (6) m (9)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.1] [disease, 2.5] +551 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (6) m (9)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.1] [disease, 2.5] +552 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (6) m (9)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.1] [disease, 2.5] +553 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.825] [disease, 3] +554 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.825] [disease, 3] +555 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.825] [disease, 3] +556 Fitness: 2.85 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.85] [disease, 3.5] +557 Fitness: 2.85 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.85] [disease, 3.5] +558 Fitness: 2.85 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.85] [disease, 3.5] +559 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.5] [disease, 3.5] +560 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.5] [disease, 3.5] +561 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.5] [disease, 3.5] +562 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +563 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +564 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +565 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3.5] +566 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3.5] +567 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3.5] +568 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +569 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +570 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +571 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.8813] [disease, 3.5] +572 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.8813] [disease, 3.5] +573 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.8813] [disease, 3.5] +574 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (8) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +575 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (8) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +576 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (8) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +577 Fitness: 10.8375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.8375] [disease, 3] +578 Fitness: 10.8375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.8375] [disease, 3] +579 Fitness: 10.8375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.8375] [disease, 3] +580 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +581 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +582 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +583 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (4) m (0)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3] +584 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (4) m (0)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3] +585 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (4) m (0)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3] +586 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (4) m (6)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +587 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (4) m (6)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +588 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (4) m (6)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 3] +589 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (0) m (3)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +590 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (0) m (3)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +591 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (0) m (3)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +592 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (1) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3.5] +593 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (1) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3.5] +594 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (1) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3.5] +595 Fitness: 4.29375 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.29375] [disease, 3] +596 Fitness: 4.29375 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.29375] [disease, 3] +597 Fitness: 4.29375 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.29375] [disease, 3] +598 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 3.5] +599 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 3.5] +600 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 3.5] +601 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.7875] [disease, 4] +602 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.7875] [disease, 4] +603 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.7875] [disease, 4] +604 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (7) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +605 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (7) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +606 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (7) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +607 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (4) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3.5] +608 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (4) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3.5] +609 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (4) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 3.5] +610 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +611 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +612 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (4) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +613 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +614 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +615 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +616 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 1.5] +617 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 1.5] +618 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 1.5] +619 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +620 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +621 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +622 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.33125] [disease, 2.5] +623 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.33125] [disease, 2.5] +624 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.33125] [disease, 2.5] +625 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (5) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +626 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (5) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +627 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (5) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +628 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (1) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.59375] [disease, 4] +629 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (1) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.59375] [disease, 4] +630 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (1) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.59375] [disease, 4] +631 Fitness: 6.75 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 6.75] [disease, 3.5] +632 Fitness: 6.75 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 6.75] [disease, 3.5] +633 Fitness: 6.75 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 6.75] [disease, 3.5] +634 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +635 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +636 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +637 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +638 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +639 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +640 Fitness: 11.95 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.95] [disease, 3] +641 Fitness: 11.95 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.95] [disease, 3] +642 Fitness: 11.95 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.95] [disease, 3] +643 Fitness: 7.175 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.175] [disease, 2] +644 Fitness: 7.175 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.175] [disease, 2] +645 Fitness: 7.175 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.175] [disease, 2] +646 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +647 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +648 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +649 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.36875] [disease, 3] +650 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.36875] [disease, 3] +651 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.36875] [disease, 3] +652 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +653 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +654 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +655 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.0625] [disease, 2.5] +656 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.0625] [disease, 2.5] +657 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.0625] [disease, 2.5] +658 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.84375] [disease, 2] +659 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.84375] [disease, 2] +660 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.84375] [disease, 2] +661 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +662 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +663 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +664 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 3.41875] [disease, 2] +665 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 3.41875] [disease, 2] +666 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 3.41875] [disease, 2] +667 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +668 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +669 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +670 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +671 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +672 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +673 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 2.5] +674 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 2.5] +675 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 2.5] +676 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +677 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +678 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +679 Fitness: 1.30625 Genotype: Fch1: [A coadaptive, f (0) m (2)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.30625] [disease, 4] +680 Fitness: 1.30625 Genotype: Fch1: [A coadaptive, f (0) m (2)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.30625] [disease, 4] +681 Fitness: 1.30625 Genotype: Fch1: [A coadaptive, f (0) m (2)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.30625] [disease, 4] +682 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (5) m (6)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 3] +683 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (5) m (6)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 3] +684 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (5) m (6)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 3] +685 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +686 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +687 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +688 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.925] [disease, 3.5] +689 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.925] [disease, 3.5] +690 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.925] [disease, 3.5] +691 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 2.5] +692 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 2.5] +693 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 2.5] +694 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (1) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 3] +695 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (1) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 3] +696 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (1) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 3] +697 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 14.05] [disease, 3.5] +698 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 14.05] [disease, 3.5] +699 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 14.05] [disease, 3.5] +700 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (6) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.0313] [disease, 3.5] +701 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (6) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.0313] [disease, 3.5] +702 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (6) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.0313] [disease, 3.5] +703 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (4) m (10)] [B coadaptive, f (3) m (6)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.79375] [disease, 3.5] +704 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (4) m (10)] [B coadaptive, f (3) m (6)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.79375] [disease, 3.5] +705 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (4) m (10)] [B coadaptive, f (3) m (6)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.79375] [disease, 3.5] +706 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.1375] [disease, 3.5] +707 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.1375] [disease, 3.5] +708 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (4) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.1375] [disease, 3.5] +709 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +710 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +711 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (8) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +712 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 3.5] +713 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 3.5] +714 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.63125] [disease, 3.5] +715 Fitness: 9.95625 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 9.95625] [disease, 3.5] +716 Fitness: 9.95625 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 9.95625] [disease, 3.5] +717 Fitness: 9.95625 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 9.95625] [disease, 3.5] +718 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.0625] [disease, 4] +719 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.0625] [disease, 4] +720 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 1.0625] [disease, 4] +721 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.9625] [disease, 2] +722 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.9625] [disease, 2] +723 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.9625] [disease, 2] +724 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.5] [disease, 3.5] +725 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.5] [disease, 3.5] +726 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.5] [disease, 3.5] +727 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +728 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +729 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +730 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +731 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +732 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 1.5] +733 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3] +734 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3] +735 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3] +736 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (8) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.65] [disease, 2] +737 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (8) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.65] [disease, 2] +738 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (8) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.65] [disease, 2] +739 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (9) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.06875] [disease, 3] +740 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (9) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.06875] [disease, 3] +741 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (9) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.06875] [disease, 3] +742 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (7) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.8375] [disease, 1.5] +743 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (7) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.8375] [disease, 1.5] +744 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (7) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.8375] [disease, 1.5] +745 Fitness: 4.25 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.25] [disease, 2.5] +746 Fitness: 4.25 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.25] [disease, 2.5] +747 Fitness: 4.25 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.25] [disease, 2.5] +748 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.0625] [disease, 3] +749 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.0625] [disease, 3] +750 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.0625] [disease, 3] +751 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (2) m (9)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.9312] [disease, 3] +752 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (2) m (9)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.9312] [disease, 3] +753 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (2) m (9)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.9312] [disease, 3] +754 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (4) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 1.5] +755 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (4) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 1.5] +756 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (4) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.06875] [disease, 1.5] +757 Fitness: 10.0813 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 10.0813] [disease, 3.5] +758 Fitness: 10.0813 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 10.0813] [disease, 3.5] +759 Fitness: 10.0813 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 10.0813] [disease, 3.5] +760 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 6.83125] [disease, 3] +761 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 6.83125] [disease, 3] +762 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 6.83125] [disease, 3] +763 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (8) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 10.1563] [disease, 2] +764 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (8) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 10.1563] [disease, 2] +765 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (8) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 10.1563] [disease, 2] +766 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (1) m (8)] [B coadaptive, f (6) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.79375] [disease, 3] +767 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (1) m (8)] [B coadaptive, f (6) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.79375] [disease, 3] +768 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (1) m (8)] [B coadaptive, f (6) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 9.79375] [disease, 3] +769 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 2.5] +770 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 2.5] +771 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 2.5] +772 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3] +773 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3] +774 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 3] +775 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (8) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.3] [disease, 3] +776 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (8) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.3] [disease, 3] +777 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (8) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.3] [disease, 3] +778 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (1) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 3] +779 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (1) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 3] +780 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (1) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 3] +781 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (8) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 3.5] +782 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (8) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 3.5] +783 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (8) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 3.5] +784 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 3] +785 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 3] +786 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 3] +787 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.3] [disease, 3] +788 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.3] [disease, 3] +789 Fitness: 6.3 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.3] [disease, 3] +790 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (3) m (1)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 4.04375] [disease, 3.5] +791 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (3) m (1)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 4.04375] [disease, 3.5] +792 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (3) m (1)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 4.04375] [disease, 3.5] +793 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 2.5] +794 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 2.5] +795 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 2.5] +796 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +797 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +798 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (10) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +799 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (2) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.4] [disease, 3] +800 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (2) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.4] [disease, 3] +801 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (2) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 14.4] [disease, 3] +802 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (6) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.6187] [disease, 4] +803 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (6) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.6187] [disease, 4] +804 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (6) m (8)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.6187] [disease, 4] +805 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +806 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +807 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +808 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (9) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 2.5] +809 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (9) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 2.5] +810 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (9) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 2.5] +811 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +812 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +813 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +814 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +815 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +816 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (7) m (9)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +817 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (5) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +818 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (5) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +819 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (5) m (7)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +820 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 3] +821 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 3] +822 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 3] +823 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (4) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.45] [disease, 3.5] +824 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (4) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.45] [disease, 3.5] +825 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (4) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.45] [disease, 3.5] +826 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (9) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +827 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (9) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +828 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (9) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +829 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (1) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.20625] [disease, 3] +830 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (1) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.20625] [disease, 3] +831 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (1) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.20625] [disease, 3] +832 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +833 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +834 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +835 Fitness: 14.7875 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.7875] [disease, 4] +836 Fitness: 14.7875 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.7875] [disease, 4] +837 Fitness: 14.7875 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.7875] [disease, 4] +838 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.79375] [disease, 2] +839 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.79375] [disease, 2] +840 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (10) m (4)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.79375] [disease, 2] +841 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (8) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 8.7875] [disease, 3] +842 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (8) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 8.7875] [disease, 3] +843 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (8) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 8.7875] [disease, 3] +844 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 2.5] +845 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 2.5] +846 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 2.5] +847 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (1) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +848 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (1) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +849 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (1) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +850 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +851 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +852 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (0)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +853 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 1.7375] [disease, 1.5] +854 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 1.7375] [disease, 1.5] +855 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 1.7375] [disease, 1.5] +856 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 2.5] +857 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 2.5] +858 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 2.5] +859 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (1) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +860 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (1) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +861 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (1) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +862 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (7) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +863 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (7) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +864 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (7) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +865 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (7) m (9)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +866 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (7) m (9)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +867 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (7) m (9)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.6687] [disease, 3.5] +868 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (7) m (8)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 2.5] +869 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (7) m (8)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 2.5] +870 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (0) m (6)] [B coadaptive, f (7) m (8)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 2.5] +871 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 3] +872 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 3] +873 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 3] +874 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +875 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +876 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +877 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +878 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +879 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +880 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +881 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +882 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (10) m (5)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +883 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (6) m (0)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.85] [disease, 4] +884 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (6) m (0)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.85] [disease, 4] +885 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (6) m (0)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.85] [disease, 4] +886 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +887 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +888 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +889 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (3) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 3.35] [disease, 3] +890 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (3) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 3.35] [disease, 3] +891 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (3) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 3.35] [disease, 3] +892 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +893 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +894 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +895 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 3] +896 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (0) m (10)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 3] +897 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (0) m (10)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 3] +898 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (7) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3.5] +899 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (7) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3.5] +900 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (7) m (8)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3.5] +901 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.41875] [disease, 3] +902 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.41875] [disease, 3] +903 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.41875] [disease, 3] +904 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (7)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +905 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (7)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +906 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (4) m (7)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +907 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +908 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +909 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +910 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (5) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +911 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (5) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +912 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (5) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +913 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.9625] [disease, 2.5] +914 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.9625] [disease, 2.5] +915 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.9625] [disease, 2.5] +916 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (3) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 2.5] +917 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (3) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 2.5] +918 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (9) m (0)] [B coadaptive, f (3) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 2.5] +919 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (6) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 3] +920 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (6) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 3] +921 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (6) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 3] +922 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +923 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +924 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +925 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +926 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +927 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +928 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (10) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +929 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (10) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +930 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (10) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +931 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +932 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +933 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (10) m (6)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +934 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 3] +935 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 3] +936 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 3] +937 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 4] +938 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 4] +939 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 4] +940 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (0) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3.5] +941 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (0) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3.5] +942 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (0) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3.5] +943 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (1) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +944 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (1) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +945 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (1) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +946 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (9) m (8)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +947 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (9) m (8)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +948 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (9) m (8)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +949 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +950 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +951 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +952 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (1) m (8)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.79375] [disease, 3.5] +953 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (1) m (8)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.79375] [disease, 3.5] +954 Fitness: 9.79375 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (1) m (8)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.79375] [disease, 3.5] +955 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 2] +956 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 2] +957 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5188] [disease, 2] +958 Fitness: 4.73125 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (10) m (8)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 4.73125] [disease, 3] +959 Fitness: 4.73125 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (10) m (8)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 4.73125] [disease, 3] +960 Fitness: 4.73125 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (10) m (8)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 4.73125] [disease, 3] +961 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 4] +962 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 4] +963 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 4] +964 Fitness: 0.59375 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0.59375] [disease, 2] +965 Fitness: 0.59375 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0.59375] [disease, 2] +966 Fitness: 0.59375 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0.59375] [disease, 2] +967 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.1] [disease, 4] +968 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.1] [disease, 4] +969 Fitness: 8.1 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 8.1] [disease, 4] +970 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (7) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 2.5] +971 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (7) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 2.5] +972 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (7) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 2.5] +973 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +974 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +975 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3] +976 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +977 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +978 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +979 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (1) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +980 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (1) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +981 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (1) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +982 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (4) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.20625] [disease, 3.5] +983 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (4) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.20625] [disease, 3.5] +984 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (4) m (3)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.20625] [disease, 3.5] +985 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.9625] [disease, 4] +986 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.9625] [disease, 4] +987 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (0) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.9625] [disease, 4] +988 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.7] [disease, 3] +989 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.7] [disease, 3] +990 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.7] [disease, 3] +991 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +992 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +993 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +994 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +995 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +996 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +997 Fitness: 0.8 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0.8] [disease, 2.5] +998 Fitness: 0.8 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0.8] [disease, 2.5] +999 Fitness: 0.8 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0.8] [disease, 2.5] +1000 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5] [disease, 3] +1001 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5] [disease, 3] +1002 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (3) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.5] [disease, 3] +1003 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3.5] +1004 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3.5] +1005 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3.5] +1006 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.5] [disease, 2.5] +1007 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.5] [disease, 2.5] +1008 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.5] [disease, 2.5] +1009 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1010 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1011 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1012 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.875] [disease, 4] +1013 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.875] [disease, 4] +1014 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 11.875] [disease, 4] +1015 Fitness: 14.7 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (9) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 14.7] [disease, 3] +1016 Fitness: 14.7 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (9) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 14.7] [disease, 3] +1017 Fitness: 14.7 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (9) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 14.7] [disease, 3] +1018 Fitness: 10.8125 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (7) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.8125] [disease, 3.5] +1019 Fitness: 10.8125 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (7) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.8125] [disease, 3.5] +1020 Fitness: 10.8125 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (7) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.8125] [disease, 3.5] +1021 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (0) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 1.5] +1022 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (0) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 1.5] +1023 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (0) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 1.5] +1024 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +1025 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +1026 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +1027 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.05625] [disease, 3] +1028 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.05625] [disease, 3] +1029 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.05625] [disease, 3] +1030 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1031 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1032 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1033 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (8) m (8)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.84375] [disease, 3.5] +1034 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (8) m (8)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.84375] [disease, 3.5] +1035 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (8) m (8)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.84375] [disease, 3.5] +1036 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.00625] [disease, 3.5] +1037 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.00625] [disease, 3.5] +1038 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.00625] [disease, 3.5] +1039 Fitness: 10 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10] [disease, 2.5] +1040 Fitness: 10 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10] [disease, 2.5] +1041 Fitness: 10 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10] [disease, 2.5] +1042 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 2.5] +1043 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 2.5] +1044 Fitness: 7.00625 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.00625] [disease, 2.5] +1045 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (10) m (7)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.54375] [disease, 3] +1046 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (10) m (7)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.54375] [disease, 3] +1047 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (10) m (7)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.54375] [disease, 3] +1048 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (7) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.59375] [disease, 2.5] +1049 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (7) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.59375] [disease, 2.5] +1050 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (7) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.59375] [disease, 2.5] +1051 Fitness: 4.25 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (5) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.25] [disease, 4] +1052 Fitness: 4.25 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (5) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.25] [disease, 4] +1053 Fitness: 4.25 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (5) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.25] [disease, 4] +1054 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (0) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1055 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (0) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1056 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (0) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1057 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1058 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1059 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (5) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1060 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (7) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3.5] +1061 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (7) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3.5] +1062 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (7) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 3.5] +1063 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (7) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.04375] [disease, 4] +1064 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (7) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.04375] [disease, 4] +1065 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (7) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.04375] [disease, 4] +1066 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (9) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1067 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (9) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1068 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (4) m (6)] [B coadaptive, f (9) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1069 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1070 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1071 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (2) m (8)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1072 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3.5] +1073 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3.5] +1074 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3.5] +1075 Fitness: 5.15 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.15] [disease, 3] +1076 Fitness: 5.15 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.15] [disease, 3] +1077 Fitness: 5.15 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.15] [disease, 3] +1078 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1079 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1080 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (0)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1081 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +1082 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +1083 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.05] [disease, 2.5] +1084 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1085 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1086 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1087 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +1088 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +1089 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (0) m (5)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +1090 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1091 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1092 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1093 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 1.5] +1094 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 1.5] +1095 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 1.5] +1096 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (10) m (3)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 2.5] +1097 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (10) m (3)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 2.5] +1098 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (10) m (3)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 2.5] +1099 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (6) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.7875] [disease, 3.5] +1100 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (6) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.7875] [disease, 3.5] +1101 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (6) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.7875] [disease, 3.5] +1102 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +1103 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +1104 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 3] +1105 Fitness: 8.31875 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (10) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.31875] [disease, 3.5] +1106 Fitness: 8.31875 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (10) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.31875] [disease, 3.5] +1107 Fitness: 8.31875 Genotype: Fch1: [A coadaptive, f (6) m (7)] [B coadaptive, f (10) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.31875] [disease, 3.5] +1108 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.05] [disease, 4] +1109 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.05] [disease, 4] +1110 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (3) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 14.05] [disease, 4] +1111 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +1112 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +1113 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 3.5] +1114 Fitness: 14.7875 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (5) m (8)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.7875] [disease, 2] +1115 Fitness: 14.7875 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (5) m (8)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.7875] [disease, 2] +1116 Fitness: 14.7875 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (5) m (8)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.7875] [disease, 2] +1117 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 2] +1118 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 2] +1119 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 2] +1120 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 3] +1121 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 3] +1122 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.83125] [disease, 3] +1123 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 2.5] +1124 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 2.5] +1125 Fitness: 8.7875 Genotype: Fch1: [A coadaptive, f (4) m (7)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 8.7875] [disease, 2.5] +1126 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.7375] [disease, 2.5] +1127 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.7375] [disease, 2.5] +1128 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 1.7375] [disease, 2.5] +1129 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (8) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +1130 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (8) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +1131 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (8) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +1132 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 3] +1133 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 3] +1134 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 3] +1135 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (7) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 4] +1136 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (7) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 4] +1137 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (7) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 12.6687] [disease, 4] +1138 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (6) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.2] [disease, 3.5] +1139 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (6) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.2] [disease, 3.5] +1140 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (6) m (10)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.2] [disease, 3.5] +1141 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (9) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 3.5] +1142 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (9) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 3.5] +1143 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (9) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.55] [disease, 3.5] +1144 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (10) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1145 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (10) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1146 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (10) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1147 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3] +1148 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3] +1149 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3] +1150 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3] +1151 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3] +1152 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (9)] [B coadaptive, f (5) m (5)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 3] +1153 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (6)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1154 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (6)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1155 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (6)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1156 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (6) m (6)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 4] +1157 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (6) m (6)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 4] +1158 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (6) m (6)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 5.85] [disease, 4] +1159 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (9) m (8)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.49375] [disease, 2.5] +1160 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (9) m (8)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.49375] [disease, 2.5] +1161 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (9) m (8)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.49375] [disease, 2.5] +1162 Fitness: 2.8 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (1) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.8] [disease, 2.5] +1163 Fitness: 2.8 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (1) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.8] [disease, 2.5] +1164 Fitness: 2.8 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (1) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.8] [disease, 2.5] +1165 Fitness: 0.75 Genotype: Fch1: [A coadaptive, f (2) m (0)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0.75] [disease, 3.5] +1166 Fitness: 0.75 Genotype: Fch1: [A coadaptive, f (2) m (0)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0.75] [disease, 3.5] +1167 Fitness: 0.75 Genotype: Fch1: [A coadaptive, f (2) m (0)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0.75] [disease, 3.5] +1168 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.825] [disease, 3.5] +1169 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.825] [disease, 3.5] +1170 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.825] [disease, 3.5] +1171 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +1172 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +1173 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +1174 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (8) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.25] [disease, 4] +1175 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (8) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.25] [disease, 4] +1176 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (8) m (6)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.25] [disease, 4] +1177 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (0) m (8)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 3.5] +1178 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (0) m (8)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 3.5] +1179 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (0) m (8)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 3.5] +1180 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3] +1181 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3] +1182 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3] +1183 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (8) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1184 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (8) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1185 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (8) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1186 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (6) m (5)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1187 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (6) m (5)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1188 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (6) m (5)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1189 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +1190 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +1191 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +1192 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (7) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1193 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (7) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1194 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (7) m (2)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1195 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1196 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1197 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1198 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +1199 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +1200 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (10)] [B coadaptive, f (1) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +1201 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.59375] [disease, 3.5] +1202 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.59375] [disease, 3.5] +1203 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.59375] [disease, 3.5] +1204 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3.5] +1205 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3.5] +1206 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3.5] +1207 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +1208 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +1209 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.9125] [disease, 4] +1210 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 3] +1211 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 3] +1212 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 3] +1213 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1214 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1215 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1216 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (6) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.4] [disease, 3] +1217 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (6) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.4] [disease, 3] +1218 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (6) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.4] [disease, 3] +1219 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1220 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1221 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1222 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 4] +1223 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 4] +1224 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 4] +1225 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.20625] [disease, 4] +1226 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.20625] [disease, 4] +1227 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.20625] [disease, 4] +1228 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 1.5] +1229 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 1.5] +1230 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 1.5] +1231 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 3] +1232 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 3] +1233 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 3] +1234 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +1235 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +1236 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 3] +1237 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (6) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1238 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (6) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1239 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (9)] [B coadaptive, f (6) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1240 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.05] [disease, 3] +1241 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.05] [disease, 3] +1242 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 14.05] [disease, 3] +1243 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1244 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1245 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (5)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1246 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 2] +1247 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 2] +1248 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (10) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 1.08125] [disease, 2] +1249 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 1.5] +1250 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 1.5] +1251 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (10)] [B coadaptive, f (5) m (2)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 1.5] +1252 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.6187] [disease, 3.5] +1253 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.6187] [disease, 3.5] +1254 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 14.6187] [disease, 3.5] +1255 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.6125] [disease, 3.5] +1256 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.6125] [disease, 3.5] +1257 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.6125] [disease, 3.5] +1258 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.45] [disease, 3] +1259 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.45] [disease, 3] +1260 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (2) m (6)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.45] [disease, 3] +1261 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (0) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2] +1262 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (0) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2] +1263 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (0) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2] +1264 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (2) m (9)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.28125] [disease, 2] +1265 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (2) m (9)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.28125] [disease, 2] +1266 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (2) m (9)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.28125] [disease, 2] +1267 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (7) m (4)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.0313] [disease, 3.5] +1268 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (7) m (4)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.0313] [disease, 3.5] +1269 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (7) m (4)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.0313] [disease, 3.5] +1270 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (3) m (1)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.04375] [disease, 2.5] +1271 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (3) m (1)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.04375] [disease, 2.5] +1272 Fitness: 4.04375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (3) m (1)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.04375] [disease, 2.5] +1273 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.4] [disease, 2.5] +1274 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.4] [disease, 2.5] +1275 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.4] [disease, 2.5] +1276 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +1277 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +1278 Fitness: 1.08125 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (2) m (1)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.08125] [disease, 3] +1279 Fitness: 12.8 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.8] [disease, 3] +1280 Fitness: 12.8 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.8] [disease, 3] +1281 Fitness: 12.8 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (10) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.8] [disease, 3] +1282 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (4) m (9)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 1.7375] [disease, 3] +1283 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (4) m (9)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 1.7375] [disease, 3] +1284 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (4) m (9)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 1.7375] [disease, 3] +1285 Fitness: 1.55 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (2) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.55] [disease, 2.5] +1286 Fitness: 1.55 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (2) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.55] [disease, 2.5] +1287 Fitness: 1.55 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (2) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.55] [disease, 2.5] +1288 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +1289 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +1290 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +1291 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (1) m (4)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1292 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (1) m (4)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1293 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (6)] [B coadaptive, f (1) m (4)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1294 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 2] +1295 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 2] +1296 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 2] +1297 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (7) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1298 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (7) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1299 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (7) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1300 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1301 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1302 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1303 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1304 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1305 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1306 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (0) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1307 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (0) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1308 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (6)] [B coadaptive, f (0) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1309 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1310 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1311 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1312 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1313 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1314 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1315 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.825] [disease, 4] +1316 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.825] [disease, 4] +1317 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.825] [disease, 4] +1318 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (8) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +1319 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (8) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +1320 Fitness: 9.6 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (8) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.6] [disease, 4] +1321 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1322 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1323 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (2) m (1)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1324 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (0) m (1)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1325 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (0) m (1)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1326 Fitness: 0 Genotype: Fch1: [A coadaptive, f (8) m (6)] [B coadaptive, f (0) m (1)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1327 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 4] +1328 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 4] +1329 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (0) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.05] [disease, 4] +1330 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1331 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1332 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1333 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1334 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1335 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (5) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1336 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (5) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.4] [disease, 3] +1337 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (5) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.4] [disease, 3] +1338 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (5) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.4] [disease, 3] +1339 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (8) m (2)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1340 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (8) m (2)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1341 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (8) m (2)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2.5] +1342 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 3] +1343 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 3] +1344 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (9) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 3] +1345 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (5) m (4)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 2.5] +1346 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (5) m (4)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 2.5] +1347 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (5) m (4)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 11.6938] [disease, 2.5] +1348 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (0) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3] +1349 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (0) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3] +1350 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (0) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 3] +1351 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1352 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1353 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1354 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1355 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1356 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (5) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1357 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1358 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1359 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1360 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (1) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 2] +1361 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (1) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 2] +1362 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (1) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 2] +1363 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1364 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1365 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (10)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1366 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (9) m (6)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1367 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (9) m (6)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1368 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (9) m (6)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1369 Fitness: 0.9 Genotype: Fch1: [A coadaptive, f (2) m (0)] [B coadaptive, f (1) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.9] [disease, 3.5] +1370 Fitness: 0.9 Genotype: Fch1: [A coadaptive, f (2) m (0)] [B coadaptive, f (1) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.9] [disease, 3.5] +1371 Fitness: 0.9 Genotype: Fch1: [A coadaptive, f (2) m (0)] [B coadaptive, f (1) m (1)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.9] [disease, 3.5] +1372 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 3] +1373 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 3] +1374 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 4.4] [disease, 3] +1375 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.9625] [disease, 3.5] +1376 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.9625] [disease, 3.5] +1377 Fitness: 7.9625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.9625] [disease, 3.5] +1378 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +1379 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +1380 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (8) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +1381 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (3) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3.5] +1382 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (3) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3.5] +1383 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (3) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3.5] +1384 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (9) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3.5] +1385 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (9) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3.5] +1386 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (9) m (0)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3.5] +1387 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2] +1388 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2] +1389 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 2] +1390 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.4] [disease, 3.5] +1391 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.4] [disease, 3.5] +1392 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (3)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.4] [disease, 3.5] +1393 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (1) m (2)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.98125] [disease, 4] +1394 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (1) m (2)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.98125] [disease, 4] +1395 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (1) m (2)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.98125] [disease, 4] +1396 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (5) m (8)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1397 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (5) m (8)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1398 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (5) m (8)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1399 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1400 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1401 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (10) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1402 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +1403 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +1404 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (5) m (10)] [C disease, f (0) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3.5] +1405 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +1406 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +1407 Fitness: 8.65625 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 8.65625] [disease, 2.5] +1408 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.59375] [disease, 3] +1409 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.59375] [disease, 3] +1410 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.59375] [disease, 3] +1411 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1412 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1413 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1414 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (8) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1415 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (8) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1416 Fitness: 13.925 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (8) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.925] [disease, 3] +1417 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (0)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +1418 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (0)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +1419 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (0)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +1420 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.4] [disease, 3] +1421 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.4] [disease, 3] +1422 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.4] [disease, 3] +1423 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (6) m (1)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.45625] [disease, 3.5] +1424 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (6) m (1)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.45625] [disease, 3.5] +1425 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (2) m (2)] [B coadaptive, f (6) m (1)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.45625] [disease, 3.5] +1426 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 2] +1427 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 2] +1428 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (2) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.825] [disease, 2] +1429 Fitness: 10 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10] [disease, 4] +1430 Fitness: 10 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10] [disease, 4] +1431 Fitness: 10 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10] [disease, 4] +1432 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 6.83125] [disease, 4] +1433 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 6.83125] [disease, 4] +1434 Fitness: 6.83125 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 6.83125] [disease, 4] +1435 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 1.0625] [disease, 4] +1436 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 1.0625] [disease, 4] +1437 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 1.0625] [disease, 4] +1438 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1439 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1440 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1441 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1442 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1443 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (0)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1444 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.41875] [disease, 2] +1445 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.41875] [disease, 2] +1446 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.41875] [disease, 2] +1447 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (0) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +1448 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (0) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +1449 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (8) m (5)] [B coadaptive, f (0) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.5188] [disease, 3.5] +1450 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (0) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3.5] +1451 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (0) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3.5] +1452 Fitness: 3.35 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (0) m (4)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.35] [disease, 3.5] +1453 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1454 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1455 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (0) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1456 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.65] [disease, 2] +1457 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.65] [disease, 2] +1458 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (4) m (1)] [B coadaptive, f (9) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 4.65] [disease, 2] +1459 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (0) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1460 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (0) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1461 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (0) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1462 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.45625] [disease, 3] +1463 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.45625] [disease, 3] +1464 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (5) m (2)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 4.45625] [disease, 3] +1465 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.41875] [disease, 3.5] +1466 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.41875] [disease, 3.5] +1467 Fitness: 4.41875 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (9) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 4.41875] [disease, 3.5] +1468 Fitness: 10.0813 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (7) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 10.0813] [disease, 2] +1469 Fitness: 10.0813 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (7) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 10.0813] [disease, 2] +1470 Fitness: 10.0813 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (7) m (4)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 10.0813] [disease, 2] +1471 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1472 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1473 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3] +1474 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1475 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1476 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (8)] [B coadaptive, f (3) m (0)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1477 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (10) m (9)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1478 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (10) m (9)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1479 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (5)] [B coadaptive, f (10) m (9)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1480 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (7) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1481 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (7) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1482 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (7) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1483 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 3] +1484 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 3] +1485 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 11.875] [disease, 3] +1486 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.20625] [disease, 2] +1487 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.20625] [disease, 2] +1488 Fitness: 5.20625 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (4) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 5.20625] [disease, 2] +1489 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (8) m (9)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.49375] [disease, 3] +1490 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (8) m (9)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.49375] [disease, 3] +1491 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (8) m (9)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 9.49375] [disease, 3] +1492 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1493 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1494 Fitness: 0 Genotype: Fch1: [A coadaptive, f (6) m (8)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1495 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (0) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1496 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (0) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1497 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (0) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1498 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1499 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1500 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (0) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1501 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 2] +1502 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 2] +1503 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (6) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 2] +1504 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3] +1505 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3] +1506 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (3) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3] +1507 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1508 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1509 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (9) m (3)] [B coadaptive, f (2) m (3)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 4] +1510 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3] +1511 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3] +1512 Fitness: 9.05 Genotype: Fch1: [A coadaptive, f (8) m (1)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 9.05] [disease, 3] +1513 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.05] [disease, 3] +1514 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.05] [disease, 3] +1515 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.05] [disease, 3] +1516 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (5) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 2.5] +1517 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (5) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 2.5] +1518 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (5) m (5)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.5] [disease, 2.5] +1519 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 2] +1520 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 2] +1521 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (6) m (5)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.0313] [disease, 2] +1522 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (10) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 1.5] +1523 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (10) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 1.5] +1524 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (9) m (4)] [B coadaptive, f (10) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 13.7] [disease, 1.5] +1525 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 2.5] +1526 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 2.5] +1527 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (3) m (10)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 2.5] +1528 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +1529 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +1530 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (5) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +1531 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (7) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1532 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (7) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1533 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (7) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1534 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1535 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1536 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1537 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (0) m (9)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 3] +1538 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (0) m (9)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 3] +1539 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (8) m (4)] [B coadaptive, f (0) m (9)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 3] +1540 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1541 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1542 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (0)] [B coadaptive, f (4) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1543 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1544 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1545 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1546 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (6) m (9)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +1547 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (6) m (9)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +1548 Fitness: 10.1563 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (6) m (9)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.1563] [disease, 3.5] +1549 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (6) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.84375] [disease, 3] +1550 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (6) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.84375] [disease, 3] +1551 Fitness: 5.84375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (6) m (10)] [C disease, f (0.5) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.84375] [disease, 3] +1552 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1553 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1554 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (0) m (4)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1555 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.0125] [disease, 3] +1556 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.0125] [disease, 3] +1557 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (6) m (9)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 3.0125] [disease, 3] +1558 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +1559 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +1560 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (3) m (5)] [B coadaptive, f (10) m (1)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3.5] +1561 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1562 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1563 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (5)] [B coadaptive, f (5) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1564 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (4) m (4)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.63125] [disease, 3] +1565 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (4) m (4)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.63125] [disease, 3] +1566 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (4) m (4)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.63125] [disease, 3] +1567 Fitness: 0.4625 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (3) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0.4625] [disease, 3.5] +1568 Fitness: 0.4625 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (3) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0.4625] [disease, 3.5] +1569 Fitness: 0.4625 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (3) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0.4625] [disease, 3.5] +1570 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (0)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.45625] [disease, 2.5] +1571 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (0)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.45625] [disease, 2.5] +1572 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (5) m (2)] [B coadaptive, f (4) m (0)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.45625] [disease, 2.5] +1573 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (10) m (9)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1574 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (10) m (9)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1575 Fitness: 0 Genotype: Fch1: [A coadaptive, f (2) m (8)] [B coadaptive, f (10) m (9)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1576 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (3) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +1577 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (3) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +1578 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (3) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +1579 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (0) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.4812] [disease, 4] +1580 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (0) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.4812] [disease, 4] +1581 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (0) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.4812] [disease, 4] +1582 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 2.5] +1583 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 2.5] +1584 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 2.5] +1585 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1586 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1587 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (1) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 2.5] +1588 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3] +1589 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3] +1590 Fitness: 11.1375 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.1375] [disease, 3] +1591 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (8) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3] +1592 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (8) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3] +1593 Fitness: 13.1062 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (8) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.1062] [disease, 3] +1594 Fitness: 4.29375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 4.29375] [disease, 3.5] +1595 Fitness: 4.29375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 4.29375] [disease, 3.5] +1596 Fitness: 4.29375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 4.29375] [disease, 3.5] +1597 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +1598 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +1599 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (5) m (10)] [B coadaptive, f (5) m (2)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +1600 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +1601 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +1602 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (0)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 4] +1603 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3] +1604 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3] +1605 Fitness: 12.5 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 12.5] [disease, 3] +1606 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (9) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 2.5] +1607 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (9) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 2.5] +1608 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (8) m (0)] [B coadaptive, f (9) m (5)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 2.5] +1609 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 3.5] +1610 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 3.5] +1611 Fitness: 10.9625 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (3) m (10)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.9625] [disease, 3.5] +1612 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.3] [disease, 2] +1613 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.3] [disease, 2] +1614 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (10) m (8)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.3] [disease, 2] +1615 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (9) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1616 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (9) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1617 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (9) m (1)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1618 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (8) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.25] [disease, 3.5] +1619 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (8) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.25] [disease, 3.5] +1620 Fitness: 13.25 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (8) m (8)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.25] [disease, 3.5] +1621 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 10.4812] [disease, 2.5] +1622 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 10.4812] [disease, 2.5] +1623 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 10.4812] [disease, 2.5] +1624 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 2] +1625 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 2] +1626 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0] [disease, 2] +1627 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (3) m (9)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 2] +1628 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (3) m (9)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 2] +1629 Fitness: 3.41875 Genotype: Fch1: [A coadaptive, f (1) m (4)] [B coadaptive, f (3) m (9)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 3.41875] [disease, 2] +1630 Fitness: 1.66875 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.66875] [disease, 2.5] +1631 Fitness: 1.66875 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.66875] [disease, 2.5] +1632 Fitness: 1.66875 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (0) m (2)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.66875] [disease, 2.5] +1633 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (1) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 1.6] [disease, 4] +1634 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (1) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 1.6] [disease, 4] +1635 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (1) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 1.6] [disease, 4] +1636 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (4) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.9125] [disease, 2.5] +1637 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (4) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.9125] [disease, 2.5] +1638 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (4) m (1)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 5.9125] [disease, 2.5] +1639 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.6438] [disease, 3] +1640 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.6438] [disease, 3] +1641 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (7) m (10)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.6438] [disease, 3] +1642 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (9) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 9.49375] [disease, 3.5] +1643 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (9) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 9.49375] [disease, 3.5] +1644 Fitness: 9.49375 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (9) m (8)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 9.49375] [disease, 3.5] +1645 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 2.5] +1646 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 2.5] +1647 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (2) m (10)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6438] [disease, 2.5] +1648 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 2.5] +1649 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 2.5] +1650 Fitness: 5.54375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.54375] [disease, 2.5] +1651 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1652 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1653 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2.5] +1654 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 14.0625] [disease, 4] +1655 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 14.0625] [disease, 4] +1656 Fitness: 14.0625 Genotype: Fch1: [A coadaptive, f (8) m (7)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 14.0625] [disease, 4] +1657 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (5) m (6)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.8813] [disease, 3] +1658 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (5) m (6)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.8813] [disease, 3] +1659 Fitness: 13.8813 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (5) m (6)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 13.8813] [disease, 3] +1660 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (8) m (3)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.725] [disease, 3.5] +1661 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (8) m (3)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.725] [disease, 3.5] +1662 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (8) m (3)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.725] [disease, 3.5] +1663 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3] +1664 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3] +1665 Fitness: 4.65 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (4) m (1)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.65] [disease, 3] +1666 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1667 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1668 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (3) m (3)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1669 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.05625] [disease, 4] +1670 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.05625] [disease, 4] +1671 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (10) m (2)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 8.05625] [disease, 4] +1672 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (2) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.28125] [disease, 4] +1673 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (2) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.28125] [disease, 4] +1674 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (0) m (4)] [B coadaptive, f (2) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 2.28125] [disease, 4] +1675 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (6) m (3)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1676 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (6) m (3)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1677 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (6) m (3)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1678 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.05625] [disease, 2.5] +1679 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.05625] [disease, 2.5] +1680 Fitness: 8.05625 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (7) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 8.05625] [disease, 2.5] +1681 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.4] [disease, 1.5] +1682 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.4] [disease, 1.5] +1683 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (6) m (4)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 7.4] [disease, 1.5] +1684 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.59375] [disease, 2.5] +1685 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.59375] [disease, 2.5] +1686 Fitness: 7.59375 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (0)] [D disease, f (0.5) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.59375] [disease, 2.5] +1687 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (6) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.2] [disease, 2] +1688 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (6) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.2] [disease, 2] +1689 Fitness: 3.2 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (6) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 3.2] [disease, 2] +1690 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.6] [disease, 4] +1691 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.6] [disease, 4] +1692 Fitness: 1.6 Genotype: Fch1: [A coadaptive, f (1) m (1)] [B coadaptive, f (0) m (6)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 1.6] [disease, 4] +1693 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.28125] [disease, 4] +1694 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.28125] [disease, 4] +1695 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 2.28125] [disease, 4] +1696 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (10) m (9)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.33125] [disease, 3] +1697 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (10) m (9)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.33125] [disease, 3] +1698 Fitness: 3.33125 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (10) m (9)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 3.33125] [disease, 3] +1699 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 3] +1700 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 3] +1701 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (6)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 3] +1702 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 4] +1703 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 4] +1704 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (5) m (6)] [B coadaptive, f (3) m (8)] [C disease, f (1) m (0)] [D disease, f (1) m (0)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 4] +1705 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.45] [disease, 3] +1706 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.45] [disease, 3] +1707 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (7) m (1)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 7.45] [disease, 3] +1708 Fitness: 10 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (6) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10] [disease, 2.5] +1709 Fitness: 10 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (6) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10] [disease, 2.5] +1710 Fitness: 10 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (6) m (6)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10] [disease, 2.5] +1711 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.875] [disease, 2.5] +1712 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.875] [disease, 2.5] +1713 Fitness: 6.875 Genotype: Fch1: [A coadaptive, f (1) m (6)] [B coadaptive, f (7) m (6)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 6.875] [disease, 2.5] +1714 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (3) m (6)] [B coadaptive, f (8) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1715 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (3) m (6)] [B coadaptive, f (8) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1716 Fitness: 11.6438 Genotype: Fch1: [A coadaptive, f (3) m (6)] [B coadaptive, f (8) m (4)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6438] [disease, 3.5] +1717 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 4] +1718 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 4] +1719 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 4] +1720 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (0) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.875] [disease, 3.5] +1721 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (0) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.875] [disease, 3.5] +1722 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (0) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.875] [disease, 3.5] +1723 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1724 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1725 Fitness: 7.4 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (10) m (0)] [C disease, f (1) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 7.4] [disease, 3.5] +1726 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (2)] [B coadaptive, f (1) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1727 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (2)] [B coadaptive, f (1) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1728 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (2)] [B coadaptive, f (1) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1729 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (0) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1730 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (0) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1731 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (8)] [B coadaptive, f (0) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1732 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +1733 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +1734 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 4] +1735 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (8)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 4] +1736 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (8)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 4] +1737 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (8)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 10.2437] [disease, 4] +1738 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1739 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1740 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (9)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1741 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +1742 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +1743 Fitness: 7.45 Genotype: Fch1: [A coadaptive, f (4) m (2)] [B coadaptive, f (2) m (6)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 7.45] [disease, 2.5] +1744 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1745 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1746 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (0) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1747 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.3] [disease, 4] +1748 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.3] [disease, 4] +1749 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (9) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.3] [disease, 4] +1750 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +1751 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +1752 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (2) m (9)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 0] [disease, 4] +1753 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (1) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.5] [disease, 4] +1754 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (1) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.5] [disease, 4] +1755 Fitness: 2.5 Genotype: Fch1: [A coadaptive, f (10) m (4)] [B coadaptive, f (1) m (5)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 2.5] [disease, 4] +1756 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.725] [disease, 3] +1757 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.725] [disease, 3] +1758 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (8) m (9)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.725] [disease, 3] +1759 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (7) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.8375] [disease, 3.5] +1760 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (7) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.8375] [disease, 3.5] +1761 Fitness: 11.8375 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (7) m (4)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.8375] [disease, 3.5] +1762 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.45625] [disease, 3] +1763 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.45625] [disease, 3] +1764 Fitness: 4.45625 Genotype: Fch1: [A coadaptive, f (3) m (4)] [B coadaptive, f (2) m (2)] [C disease, f (0) m (1)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 4.45625] [disease, 3] +1765 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (10) m (7)] [B coadaptive, f (6) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.09375] [disease, 2] +1766 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (10) m (7)] [B coadaptive, f (6) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.09375] [disease, 2] +1767 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (10) m (7)] [B coadaptive, f (6) m (2)] [C disease, f (0) m (0)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.09375] [disease, 2] +1768 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +1769 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +1770 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (3) m (9)] [C disease, f (0.5) m (1)] [D disease, f (0) m (0)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +1771 Fitness: 6.75 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.75] [disease, 3.5] +1772 Fitness: 6.75 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.75] [disease, 3.5] +1773 Fitness: 6.75 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (10) m (8)] [C disease, f (1) m (1)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 6.75] [disease, 3.5] +1774 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (0) m (9)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 1.5] +1775 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (0) m (9)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 1.5] +1776 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (0) m (9)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 1.5] +1777 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2.5] +1778 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2.5] +1779 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (5) m (8)] [C disease, f (1) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2.5] +1780 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1781 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1782 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (10)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1783 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.4] [disease, 3] +1784 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.4] [disease, 3] +1785 Fitness: 4.4 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 4.4] [disease, 3] +1786 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (7) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1787 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (7) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1788 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (7) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 0] [disease, 2] +1789 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 4] +1790 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 4] +1791 Fitness: 9.06875 Genotype: Fch1: [A coadaptive, f (2) m (6)] [B coadaptive, f (10) m (3)] [C disease, f (1) m (0)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.06875] [disease, 4] +1792 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2.5] +1793 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2.5] +1794 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (3) m (7)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2.5] +1795 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (7)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.6187] [disease, 2.5] +1796 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (7)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.6187] [disease, 2.5] +1797 Fitness: 14.6187 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (7)] [C disease, f (0) m (0)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 14.6187] [disease, 2.5] +1798 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (9) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.875] [disease, 2.5] +1799 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (9) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.875] [disease, 2.5] +1800 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (8) m (3)] [B coadaptive, f (9) m (0)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 11.875] [disease, 2.5] +1801 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1802 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1803 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (7)] [B coadaptive, f (9) m (10)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1804 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.0313] [disease, 4] +1805 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.0313] [disease, 4] +1806 Fitness: 13.0313 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (10) m (4)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 13.0313] [disease, 4] +1807 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (8) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1808 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (8) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1809 Fitness: 0 Genotype: Fch1: [A coadaptive, f (9) m (10)] [B coadaptive, f (8) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1810 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.6687] [disease, 3] +1811 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.6687] [disease, 3] +1812 Fitness: 12.6687 Genotype: Fch1: [A coadaptive, f (9) m (7)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.6687] [disease, 3] +1813 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1814 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1815 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (8)] [B coadaptive, f (0) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1816 Fitness: 10 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10] [disease, 2] +1817 Fitness: 10 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10] [disease, 2] +1818 Fitness: 10 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (8) m (0)] [C disease, f (0) m (0)] [D disease, f (0) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 10] [disease, 2] +1819 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1820 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1821 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (1) m (7)] [B coadaptive, f (9) m (0)] [C disease, f (0) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1822 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1823 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1824 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (2)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +1825 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.85] [disease, 3] +1826 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.85] [disease, 3] +1827 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (2) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 5.85] [disease, 3] +1828 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (6) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2] +1829 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (6) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2] +1830 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (6) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 13.7] [disease, 2] +1831 Fitness: 1.9125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.9125] [disease, 3] +1832 Fitness: 1.9125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.9125] [disease, 3] +1833 Fitness: 1.9125 Genotype: Fch1: [A coadaptive, f (2) m (1)] [B coadaptive, f (2) m (1)] [C disease, f (0) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.9125] [disease, 3] +1834 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.7] [disease, 2] +1835 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.7] [disease, 2] +1836 Fitness: 13.7 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (10) m (3)] [C disease, f (0) m (0.5)] [D disease, f (0) m (0.5)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 13.7] [disease, 2] +1837 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.36875] [disease, 2] +1838 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.36875] [disease, 2] +1839 Fitness: 5.36875 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (2) m (4)] [C disease, f (0) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 5.36875] [disease, 2] +1840 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1841 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1842 Fitness: 0 Genotype: Fch1: [A coadaptive, f (3) m (1)] [B coadaptive, f (10) m (7)] [C disease, f (1) m (0)] [D disease, f (0) m (1)] [E disease, f (0) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1843 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (7) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6938] [disease, 3] +1844 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (7) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6938] [disease, 3] +1845 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (7) m (2)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 11.6938] [disease, 3] +1846 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (6) m (9)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3] +1847 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (6) m (9)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3] +1848 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (6) m (9)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0.05625] [disease, 3] +1849 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (1) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +1850 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (1) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +1851 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (10) m (0)] [B coadaptive, f (1) m (10)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 2.5] +1852 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (2) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1853 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (2) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1854 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (10)] [B coadaptive, f (2) m (0)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2] +1855 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 3.5] +1856 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 3.5] +1857 Fitness: 7.65 Genotype: Fch1: [A coadaptive, f (7) m (7)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 7.65] [disease, 3.5] +1858 Fitness: 2.43125 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 2.43125] [disease, 4] +1859 Fitness: 2.43125 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 2.43125] [disease, 4] +1860 Fitness: 2.43125 Genotype: Fch1: [A coadaptive, f (0) m (3)] [B coadaptive, f (2) m (2)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 2.43125] [disease, 4] +1861 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.28125] [disease, 3] +1862 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.28125] [disease, 3] +1863 Fitness: 2.28125 Genotype: Fch1: [A coadaptive, f (2) m (9)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.28125] [disease, 3] +1864 Fitness: 0.575 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0.575] [disease, 3] +1865 Fitness: 0.575 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0.575] [disease, 3] +1866 Fitness: 0.575 Genotype: Fch1: [A coadaptive, f (1) m (2)] [B coadaptive, f (0) m (1)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 0.575] [disease, 3] +1867 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3.5] +1868 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3.5] +1869 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (9) m (5)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 11.6] [disease, 3.5] +1870 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1871 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1872 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (5)] [C disease, f (1) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1873 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.4688] [disease, 1.5] +1874 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.4688] [disease, 1.5] +1875 Fitness: 14.4688 Genotype: Fch1: [A coadaptive, f (4) m (8)] [B coadaptive, f (3) m (10)] [C disease, f (0.5) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 14.4688] [disease, 1.5] +1876 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (10) m (9)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1877 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (10) m (9)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1878 Fitness: 0 Genotype: Fch1: [A coadaptive, f (4) m (3)] [B coadaptive, f (10) m (9)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (0)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1879 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1880 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1881 Fitness: 0 Genotype: Fch1: [A coadaptive, f (1) m (3)] [B coadaptive, f (9) m (5)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1882 Fitness: 0.8 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0.8] [disease, 2.5] +1883 Fitness: 0.8 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0.8] [disease, 2.5] +1884 Fitness: 0.8 Genotype: Fch1: [A coadaptive, f (6) m (6)] [B coadaptive, f (4) m (0)] [C disease, f (1) m (0)] [D disease, f (0) m (0)] [E disease, f (0.5) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0.8] [disease, 2.5] +1885 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.825] [disease, 4] +1886 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.825] [disease, 4] +1887 Fitness: 5.825 Genotype: Fch1: [A coadaptive, f (2) m (3)] [B coadaptive, f (3) m (4)] [C disease, f (1) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 5.825] [disease, 4] +1888 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (6) m (8)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2.5] +1889 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (6) m (8)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2.5] +1890 Fitness: 11.6 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (6) m (8)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.6] [disease, 2.5] +1891 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3] +1892 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3] +1893 Fitness: 10.4812 Genotype: Fch1: [A coadaptive, f (3) m (8)] [B coadaptive, f (5) m (3)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (0.5)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 10.4812] [disease, 3] +1894 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.09375] [disease, 3] +1895 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.09375] [disease, 3] +1896 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (9) m (8)] [B coadaptive, f (7) m (1)] [C disease, f (1) m (0.5)] [D disease, f (1) m (1)] [E disease, f (0) m (0)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.09375] [disease, 3] +1897 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (8)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 14.4] [disease, 3] +1898 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (8)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 14.4] [disease, 3] +1899 Fitness: 14.4 Genotype: Fch1: [A coadaptive, f (3) m (9)] [B coadaptive, f (4) m (8)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 14.4] [disease, 3] +1900 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1901 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1902 Fitness: 0 Genotype: Fch1: [A coadaptive, f (0) m (0)] [B coadaptive, f (2) m (4)] [C disease, f (0.5) m (0.5)] [D disease, f (1) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 3.5] +1903 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (2)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1904 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (2)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1905 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (1)] [B coadaptive, f (1) m (2)] [C disease, f (0.5) m (1)] [D disease, f (1) m (0.5)] [E disease, f (0) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 0] [disease, 4] +1906 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (10) m (7)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.725] [disease, 2] +1907 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (10) m (7)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.725] [disease, 2] +1908 Fitness: 7.725 Genotype: Fch1: [A coadaptive, f (6) m (5)] [B coadaptive, f (10) m (7)] [C disease, f (0) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 7.725] [disease, 2] +1909 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.98125] [disease, 2.5] +1910 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.98125] [disease, 2.5] +1911 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (3) m (3)] [B coadaptive, f (3) m (0)] [C disease, f (1) m (0)] [D disease, f (1) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 2.98125] [disease, 2.5] +1912 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1913 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1914 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (9)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 2.5] +1915 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1916 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1917 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (2)] [B coadaptive, f (9) m (10)] [C disease, f (1) m (0)] [D disease, f (0) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3] +1918 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 3] +1919 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 3] +1920 Fitness: 9.10625 Genotype: Fch1: [A coadaptive, f (1) m (9)] [B coadaptive, f (0) m (7)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 9.10625] [disease, 3] +1921 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (10) m (9)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.0625] [disease, 2.5] +1922 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (10) m (9)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.0625] [disease, 2.5] +1923 Fitness: 1.0625 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (10) m (9)] [C disease, f (0.5) m (0)] [D disease, f (1) m (0.5)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 1.0625] [disease, 2.5] +1924 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (10) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +1925 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (10) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +1926 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (6) m (1)] [B coadaptive, f (10) m (5)] [C disease, f (0.5) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 3.0125] [disease, 2.5] +1927 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (7) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 3.0125] [disease, 3] +1928 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (7) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 3.0125] [disease, 3] +1929 Fitness: 3.0125 Genotype: Fch1: [A coadaptive, f (9) m (6)] [B coadaptive, f (7) m (0)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 3.0125] [disease, 3] +1930 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.05625] [disease, 4] +1931 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.05625] [disease, 4] +1932 Fitness: 0.05625 Genotype: Fch1: [A coadaptive, f (1) m (5)] [B coadaptive, f (5) m (10)] [C disease, f (1) m (1)] [D disease, f (1) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0) m (1)] Phenotype: [coadaptive, 0.05625] [disease, 4] +1933 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1934 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1935 Fitness: 10.2437 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (6) m (2)] [C disease, f (1) m (1)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 10.2437] [disease, 3] +1936 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +1937 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +1938 Fitness: 10.55 Genotype: Fch1: [A coadaptive, f (5) m (3)] [B coadaptive, f (10) m (0)] [C disease, f (0) m (1)] [D disease, f (0.5) m (0)] [E disease, f (0) m (0)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 10.55] [disease, 2.5] +1939 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.09375] [disease, 3] +1940 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.09375] [disease, 3] +1941 Fitness: 0.09375 Genotype: Fch1: [A coadaptive, f (8) m (9)] [B coadaptive, f (0) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0) m (1)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.09375] [disease, 3] +1942 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (7) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 3.5] +1943 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (7) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 3.5] +1944 Fitness: 2.9875 Genotype: Fch1: [A coadaptive, f (4) m (5)] [B coadaptive, f (7) m (10)] [C disease, f (0) m (1)] [D disease, f (1) m (1)] [E disease, f (0) m (1)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.9875] [disease, 3.5] +1945 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.05] [disease, 2.5] +1946 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.05] [disease, 2.5] +1947 Fitness: 14.05 Genotype: Fch1: [A coadaptive, f (7) m (5)] [B coadaptive, f (7) m (7)] [C disease, f (0.5) m (0.5)] [D disease, f (0.5) m (0)] [E disease, f (0.5) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 14.05] [disease, 2.5] +1948 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +1949 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +1950 Fitness: 12.95 Genotype: Fch1: [A coadaptive, f (6) m (4)] [B coadaptive, f (10) m (2)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 12.95] [disease, 2.5] +1951 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 1.7375] [disease, 1.5] +1952 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 1.7375] [disease, 1.5] +1953 Fitness: 1.7375 Genotype: Fch1: [A coadaptive, f (5) m (0)] [B coadaptive, f (8) m (5)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (1) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 1.7375] [disease, 1.5] +1954 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 3] +1955 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 3] +1956 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (9) m (2)] [B coadaptive, f (6) m (4)] [C disease, f (0) m (1)] [D disease, f (0) m (0)] [E disease, f (0.5) m (1)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 12.9312] [disease, 3] +1957 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (2) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 3] +1958 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (2) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 3] +1959 Fitness: 5.9125 Genotype: Fch1: [A coadaptive, f (2) m (7)] [B coadaptive, f (2) m (3)] [C disease, f (0.5) m (1)] [D disease, f (0) m (1)] [E disease, f (1) m (0.5)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 5.9125] [disease, 3] +1960 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (0) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +1961 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (0) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +1962 Fitness: 5.46875 Genotype: Fch1: [A coadaptive, f (5) m (5)] [B coadaptive, f (0) m (5)] [C disease, f (1) m (0.5)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (1)] Phenotype: [coadaptive, 5.46875] [disease, 3.5] +1963 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1964 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1965 Fitness: 0 Genotype: Fch1: [A coadaptive, f (10) m (9)] [B coadaptive, f (2) m (3)] [C disease, f (0) m (1)] [D disease, f (0.5) m (1)] [E disease, f (1) m (0)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 0] [disease, 3.5] +1966 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (4) m (6)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1967 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (4) m (6)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1968 Fitness: 11.6938 Genotype: Fch1: [A coadaptive, f (5) m (4)] [B coadaptive, f (4) m (6)] [C disease, f (1) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 11.6938] [disease, 3.5] +1969 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 2.5] +1970 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 2.5] +1971 Fitness: 2.98125 Genotype: Fch1: [A coadaptive, f (6) m (0)] [B coadaptive, f (0) m (3)] [C disease, f (0) m (0)] [D disease, f (1) m (1)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 2.98125] [disease, 2.5] +1972 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1973 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1974 Fitness: 0 Genotype: Fch1: [A coadaptive, f (7) m (3)] [B coadaptive, f (10) m (10)] [C disease, f (1) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3] +1975 Fitness: 0.4625 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.4625] [disease, 2.5] +1976 Fitness: 0.4625 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.4625] [disease, 2.5] +1977 Fitness: 0.4625 Genotype: Fch1: [A coadaptive, f (0) m (1)] [B coadaptive, f (5) m (0)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0.5)] [E disease, f (0.5) m (1)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0.4625] [disease, 2.5] +1978 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 1.5] +1979 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 1.5] +1980 Fitness: 12.9312 Genotype: Fch1: [A coadaptive, f (8) m (2)] [B coadaptive, f (10) m (1)] [C disease, f (0) m (0)] [D disease, f (0) m (0)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0.5)] Phenotype: [coadaptive, 12.9312] [disease, 1.5] +1981 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (4) m (7)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 2] +1982 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (4) m (7)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 2] +1983 Fitness: 13.6125 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (4) m (7)] [C disease, f (1) m (1)] [D disease, f (0) m (0)] [E disease, f (0) m (1)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 13.6125] [disease, 2] +1984 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +1985 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +1986 Fitness: 2.63125 Genotype: Fch1: [A coadaptive, f (4) m (4)] [B coadaptive, f (1) m (2)] [C disease, f (0.5) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0) m (0.5)] [F disease, f (0.5) m (0.5)] Phenotype: [coadaptive, 2.63125] [disease, 2.5] +1987 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 3] +1988 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 3] +1989 Fitness: 12.5188 Genotype: Fch1: [A coadaptive, f (10) m (3)] [B coadaptive, f (2) m (8)] [C disease, f (0.5) m (0)] [D disease, f (0.5) m (0)] [E disease, f (1) m (0.5)] [F disease, f (0.5) m (1)] Phenotype: [coadaptive, 12.5188] [disease, 3] +1990 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.875] [disease, 2] +1991 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.875] [disease, 2] +1992 Fitness: 11.875 Genotype: Fch1: [A coadaptive, f (7) m (4)] [B coadaptive, f (4) m (5)] [C disease, f (0) m (0.5)] [D disease, f (0) m (1)] [E disease, f (0.5) m (0)] [F disease, f (0) m (0)] Phenotype: [coadaptive, 11.875] [disease, 2] +1993 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (0) m (6)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +1994 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (0) m (6)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +1995 Fitness: 5.85 Genotype: Fch1: [A coadaptive, f (5) m (7)] [B coadaptive, f (0) m (6)] [C disease, f (1) m (1)] [D disease, f (0.5) m (1)] [E disease, f (0) m (0.5)] [F disease, f (1) m (0)] Phenotype: [coadaptive, 5.85] [disease, 3.5] +1996 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (8) m (10)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.3] [disease, 3] +1997 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (8) m (10)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.3] [disease, 3] +1998 Fitness: 2.3 Genotype: Fch1: [A coadaptive, f (9) m (1)] [B coadaptive, f (8) m (10)] [C disease, f (0) m (0.5)] [D disease, f (1) m (0.5)] [E disease, f (1) m (1)] [F disease, f (0.5) m (0)] Phenotype: [coadaptive, 2.3] [disease, 3] +1999 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (9) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +2000 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (9) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] +2001 Fitness: 0 Genotype: Fch1: [A coadaptive, f (5) m (1)] [B coadaptive, f (9) m (9)] [C disease, f (1) m (0)] [D disease, f (1) m (0.5)] [E disease, f (1) m (0)] [F disease, f (0) m (0.5)] Phenotype: [coadaptive, 0] [disease, 3.5] diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcproj b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj new file mode 100644 index 0000000..9c9e61e --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.NEPTUNE.lashin.user b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.NEPTUNE.lashin.user new file mode 100644 index 0000000..fd3eb15 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.NEPTUNE.lashin.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.ROCKWOOD.Family.user b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.ROCKWOOD.Family.user new file mode 100644 index 0000000..aa9b5a2 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.ROCKWOOD.Family.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.Rockwood.rock.user b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.Rockwood.rock.user new file mode 100644 index 0000000..aa9b5a2 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.Rockwood.rock.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.neptune2010.lashin.user b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.neptune2010.lashin.user new file mode 100644 index 0000000..2e19ebd --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.neptune2010.lashin.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.rockwood.Sergey.user b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.rockwood.Sergey.user new file mode 100644 index 0000000..aa9b5a2 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcproj.rockwood.Sergey.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcxproj b/DEC_GUI/DEC-0.0/DEC-0.0.vcxproj new file mode 100644 index 0000000..64c60ee --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcxproj @@ -0,0 +1,147 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {40B43ED1-51FA-4A77-9057-945EFC442A7B} + DEC00 + + + + Application + v120 + MultiByte + true + + + Application + v120 + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>11.0.61030.0 + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + Disabled + C:\Programs\boost_1_46_1\;C:\Programming\boost_1_45_0\;%(AdditionalIncludeDirectories) + true + EnableFastChecks + MultiThreadedDebugDLL + Level3 + EditAndContinue + + + true + MachineX86 + + + + + MaxSpeed + true + C:\Programs\boost_1_46_1\;C:\Programming\boost_1_45_0\;%(AdditionalIncludeDirectories) + MultiThreadedDLL + true + Level3 + ProgramDatabase + + + true + true + true + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/DEC-0.0.vcxproj.filters b/DEC_GUI/DEC-0.0/DEC-0.0.vcxproj.filters new file mode 100644 index 0000000..a2ea0df --- /dev/null +++ b/DEC_GUI/DEC-0.0/DEC-0.0.vcxproj.filters @@ -0,0 +1,216 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {1543172e-803c-444e-8cda-6a2308e41db2} + + + {01603e36-7499-4442-a781-b13e2af1fd98} + + + {05942c27-3dc6-45ca-8cc0-accdf0dc3b86} + + + {7c9f48d2-5ac8-4755-a0a2-536a0eacf1e8} + + + {651fa082-b05e-41a5-a43b-0698a5dce75c} + + + {a12457ad-86da-429a-b79c-59cfe2ad991d} + + + {831c8153-9898-45b7-81d8-a65c0aa1e297} + + + {f7bd5858-9457-4195-9b6e-50b7db3bfc5f} + + + {5dfc1f18-3517-4edd-8a1a-ab0a9993ba0f} + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Header Files\environment + + + Header Files\environment + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\population + + + Header Files\population + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + + + Header Files + + + Header Files\environment + + + Header Files\environment + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\InOutBreeding + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\individual\genome\strategies\KolchShindyal + + + Header Files\population + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\population\BreedingStrategies + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + Header Files\processor + + + + + + \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/DecScript.txt b/DEC_GUI/DEC-0.0/DecScript.txt new file mode 100644 index 0000000..6111d64 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DecScript.txt @@ -0,0 +1,18 @@ +////////// + +fullstat=1 +generations=100 +popsize=100 +kmax=2000 + +offsprings=3 + + +coadaptive_threshold=0 +disease_threshold=1 + +// Coadaptive genes interact (possible: onechromosome, mean, maxmodule) +cgi=mean + +// Disease genes interact (possible: add1, addmax, mult, meanadd, meanmult ) +dgi=addmax \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/DerevyankoReport.cpp b/DEC_GUI/DEC-0.0/DerevyankoReport.cpp new file mode 100644 index 0000000..80b457d --- /dev/null +++ b/DEC_GUI/DEC-0.0/DerevyankoReport.cpp @@ -0,0 +1,611 @@ +#include "DerevyankoReport.h" +#include "individual/Trait.h" +#include "individual/Phenotype.h" +//#include "population/BreedingStrategies/PopulationBreedingStrategy.h" +#include "population/BreedingStrategies/NeutralEvolutionBreedStrat.h" + +#include +#include + + +using std::string; + +string DerevyankoReport::initMtDNA; +string DerevyankoReport::initMtDNA_G; +std::vector DerevyankoReport::initMtDNAgui; +std::vector DerevyankoReport::initMtDNA_Ggui; + +BisexualPopulation* DerevyankoReport::pop_f; +BisexualPopulation* DerevyankoReport::pop_G; +BisexualPopulation* DerevyankoReport::pop_e; +BisexualPopulation* DerevyankoReport::pop_F; +BisexualPopulation* DerevyankoReport::pop_d; +BisexualPopulation* DerevyankoReport::pop_E; +BisexualPopulation* DerevyankoReport::pop_c; +BisexualPopulation* DerevyankoReport::pop_D; +BisexualPopulation* DerevyankoReport::pop_b; +BisexualPopulation* DerevyankoReport::pop_a; +BisexualPopulation* DerevyankoReport::pop_A; +BisexualPopulation* DerevyankoReport::pop_B; +BisexualPopulation* DerevyankoReport::pop_C; + +int DerevyankoReport::basePopSize = 5000; +float DerevyankoReport::initBirthRate = 0.25f; +float DerevyankoReport::deltaBirthRate = 0.0002f; + +int DerevyankoReport::genPerMigr_f_G; +float DerevyankoReport::part_f_to_G; +float DerevyankoReport::part_G_to_f; + +int DerevyankoReport::genPerMigr_A_B; +int DerevyankoReport::genPerMigr_A_C; +int DerevyankoReport::genPerMigr_A_D; +int DerevyankoReport::genPerMigr_A_E; +int DerevyankoReport::genPerMigr_A_F; + +float DerevyankoReport::part_A_to_B; +float DerevyankoReport::part_B_to_A; +float DerevyankoReport::part_A_to_C; +float DerevyankoReport::part_A_to_D; +float DerevyankoReport::part_A_to_E; +float DerevyankoReport::part_A_to_F; + +float DerevyankoReport::fraction_e_founder; +float DerevyankoReport::fraction_F_founder; +float DerevyankoReport::fraction_E_founder; +float DerevyankoReport::fraction_D_founder; +float DerevyankoReport::fraction_C_founder; +float DerevyankoReport::fraction_B_founder; + +QVector DerevyankoReport::popSize_f; +QVector DerevyankoReport::popSize_G; +QVector DerevyankoReport::popSize_e; +QVector DerevyankoReport::popSize_F; +QVector DerevyankoReport::popSize_d; +QVector DerevyankoReport::popSize_E; +QVector DerevyankoReport::popSize_c; +QVector DerevyankoReport::popSize_D; +QVector DerevyankoReport::popSize_b; +QVector DerevyankoReport::popSize_a; +QVector DerevyankoReport::popSize_A; +QVector DerevyankoReport::popSize_B; +QVector DerevyankoReport::popSize_C; + +QVector DerevyankoReport::pops; +QVector DerevyankoReport::populNames; +QVector DerevyankoReport::maxYval(2); +// if uncomment report, set size to 13 +//QVector DerevyankoReport::globalGenerations(13); +int DerevyankoReport::globalGenerations; +QVector< QVector > DerevyankoReport::popSizes(2); +QVector< QVector > DerevyankoReport::generations(2); + + + +void DerevyankoReport::initVectors() +{ + DerevyankoReport::popSizes[0].push_back(DerevyankoReport::basePopSize); + + DerevyankoReport::popSizes[1].push_back(DerevyankoReport::basePopSize); + DerevyankoReport::generations[0].push_back(0); + DerevyankoReport::generations[1].push_back(0); + + for (int i = 0; i < 2; i++) + { + DerevyankoReport::maxYval[i] = 0; + } +} + +void DerevyankoReport::fillVectors(BisexualPopulation *pop, int popNum) +{ + + DerevyankoReport::generations[popNum].push_back(globalGenerations); + DerevyankoReport::popSizes[popNum].push_back(pop->males.size() + pop->males.size()); + if (pop->males.size() + pop->males.size() > DerevyankoReport::maxYval[popNum]) + { + DerevyankoReport::maxYval[popNum] = pop->males.size() + pop->males.size(); + } +} + +BisexualPopulation* DerevyankoReport::populationFactory(int size, std::string initMtGenome){ + BisexualPopulation* ans; + + std::list males; + std::list females; + + Gene gene1(Gene::Sequence, "mtDna1", initMtGenome); + Chromosome chrom1("Mitochondrial chromosome"); + chrom1.insertGeneToEnd(gene1); + + std::vector fGenome; + std::vector mGenome; + fGenome.push_back(chrom1); + mGenome.push_back(chrom1); + + // + Trait trait1(Trait::Discrete, "Age", 20); + // + InnerSubstratesPool* subPool = 0; + // (END) + + for(int i = 0; i < size/2; i++){ + Genotype* genotype = new Genotype(fGenome, mGenome); + Phenotype* phenotype = new Phenotype(trait1); + males.push_back(new Individual(genotype, phenotype, subPool, Individual::male, 0)); + + genotype = new Genotype(fGenome, mGenome); + phenotype = new Phenotype(trait1); + females.push_back(new Individual(genotype, phenotype, subPool, Individual::female, 0)); + } + + ans = new BisexualPopulation(males,females); + return ans; +} + +void DerevyankoReport::separatePop(QString popName, double founder, int sepPopInd) +{ + //Derfraction_founder = founder; + BisexualPopulation* population = DerevyankoReport::pops[sepPopInd]->createSubpopulation(founder); + + + BisexualPopulation* population_rest = DerevyankoReport::pops[sepPopInd]; // d + NeutralEvolutionBreedingStrategy* breedStrat_d = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_d->setBirthRate(initBirthRate); + breedStrat_d->setDeathRate(initBirthRate-deltaBirthRate*2); + population_rest->setBreedingStrategy(breedStrat_d); + DerevyankoReport::pops.push_back(population); + DerevyankoReport::pops.push_back(population_rest); + + QVector pop_gen; + QVector pop_size; + + QVector pop_gen_2; + QVector pop_size_2; + + DerevyankoReport::popSizes.push_back(pop_size); + DerevyankoReport::generations.push_back(pop_gen); + DerevyankoReport::maxYval.push_back(0); + + DerevyankoReport::popSizes.push_back(pop_size_2); + DerevyankoReport::generations.push_back(pop_gen_2); + DerevyankoReport::maxYval.push_back(0); + + DerevyankoReport::populNames.push_back(popName); + QString name = DerevyankoReport::populNames[sepPopInd] + "_rest"; + DerevyankoReport::populNames.push_back(name); +} + +void DerevyankoReport::evolution(int evol_time) +{ + for(int i = 0; i < evol_time; i++) + { + for (int j = 0; j < DerevyankoReport::pops.size(); j++) + { + DerevyankoReport::pops[j]->breedAll(); + DerevyankoReport::pops[j]->mutationAll(); + DerevyankoReport::fillVectors(DerevyankoReport::pops[j], j); + } + DerevyankoReport::globalGenerations++; + + } +} + +void DerevyankoReport::reportRFBR2013_01(){ + + std::cout << "ReportRFBR" << std::endl; + // ( f) +// DerevyankoReport::initMtDNA = "TTCTTTCATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACC"; +// DerevyankoReport::initMtDNA += "GCTATGTATTTCGTACATTACTGCCAGCCACCATGAATATTGTACGGTACCATAAATACT"; +// DerevyankoReport::initMtDNA += "TGACCACCTGTAGTACATAAAAACCCAATCCACATCAAAACCCCCCCCTCATGCTTACAA"; +// DerevyankoReport::initMtDNA += "GCAAGTACAGCAATCAACCTTCAACTATCACACATCAACTGCAACTCCAAAGCCACCCCT"; +// DerevyankoReport::initMtDNA += "CACCCACTAGGATATCAACAAACCTACCCATCCTTAACAGTACATGGTACATAAAGCCAT"; +// DerevyankoReport::initMtDNA += "TTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCCTCA"; + +// // ( G) +// DerevyankoReport::initMtDNA_G = DerevyankoReport::initMtDNA; +// DerevyankoReport::initMtDNA_G.replace(60,1,"T"); +// DerevyankoReport::initMtDNA_G.replace(120,1,"A"); +// DerevyankoReport::initMtDNA_G.replace(180,1,"C"); +// DerevyankoReport::initMtDNA_G.replace(240,1,"G"); + +// // +// // +// DerevyankoReport::basePopSize = 5000; +// DerevyankoReport::initBirthRate = 0.25f; +// DerevyankoReport::deltaBirthRate = 0.0002f; + BisexualPopulation *pop_f = populationFactory(basePopSize, DerevyankoReport::initMtDNA); + NeutralEvolutionBreedingStrategy* breedStrat_f = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_f->setBirthRate(initBirthRate); + breedStrat_f->setDeathRate(initBirthRate-deltaBirthRate); + pop_f->setBreedingStrategy(breedStrat_f); + + BisexualPopulation *pop_G = populationFactory(basePopSize, DerevyankoReport::initMtDNA_G); + NeutralEvolutionBreedingStrategy* breedStrat_G = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_G->setBirthRate(initBirthRate); + breedStrat_G->setDeathRate(initBirthRate-deltaBirthRate); + pop_G->setBreedingStrategy(breedStrat_G); + DerevyankoReport::pops.push_back(pop_f); + DerevyankoReport::pops.push_back(pop_G); + + DerevyankoReport::populNames.push_back("Pop_f"); + DerevyankoReport::populNames.push_back("Pop_G"); + + /////////////////////////////////////////// + // + // + // + /////////////////////////////////////////// + + unsigned int generation; + + // 1. + // 1 + DerevyankoReport::genPerMigr_f_G = 100; + DerevyankoReport::part_f_to_G = 0.01f; + DerevyankoReport::part_G_to_f = 0.01f; + std::cout<<"Variant 1"<breedAll(); + DerevyankoReport::pops[0]->mutationAll(); + + DerevyankoReport::pops[1]->breedAll(); + DerevyankoReport::pops[1]->mutationAll(); + + if(generation != 0 && ((generation % genPerMigr_f_G) == 0)){ + std::string code = BisexualPopulation::mutualMigration(DerevyankoReport::pops[0], DerevyankoReport::pops[1], part_f_to_G, part_G_to_f); + std::cout<<"Migration f<->G\t"<createSubpopulation(fraction_e_founder); +// std::cout<<"pop_e has been created"<breedAll(); +// DerevyankoReport::pop_e->mutationAll(); + +// DerevyankoReport::pop_G->breedAll(); +// DerevyankoReport::pop_G->mutationAll(); +// DerevyankoReport::globalGenerations++; +// DerevyankoReport::fillVectors(DerevyankoReport::pop_e, 2); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_G, 1); +// } + +// // 3. +// // F d +// // 50 +// // - d, 90% +// DerevyankoReport::fraction_F_founder = 0.1f; +// DerevyankoReport::pop_F = DerevyankoReport::pop_e->createSubpopulation(fraction_F_founder); +// std::cout<<"pop_F has been created"<(PopulationBreedingStrategy::getInstance("neutral")); +// breedStrat_d->setBirthRate(initBirthRate); +// breedStrat_d->setDeathRate(initBirthRate-deltaBirthRate*2); +// DerevyankoReport::pop_d->setBreedingStrategy(breedStrat_d); +// std::cout<<"pop_e -> pop_d\tPop dynamics coeffs have been changed:\td =\t"; +// std::cout<<(initBirthRate-deltaBirthRate*2)<breedAll(); +// DerevyankoReport::pop_d->mutationAll(); + +// DerevyankoReport::pop_F->breedAll(); +// DerevyankoReport::pop_F->mutationAll(); + +// DerevyankoReport::pop_G->breedAll(); +// DerevyankoReport::pop_G->mutationAll(); +// DerevyankoReport::globalGenerations++; +// DerevyankoReport::fillVectors(DerevyankoReport::pop_F, 3); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_d, 4); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_G, 1); +// } + +// // 4. +// // d E c +// // 100 +// // - c, 90% +// DerevyankoReport::fraction_E_founder = 0.1f; +// DerevyankoReport::pop_E = DerevyankoReport::pop_d->createSubpopulation(fraction_E_founder); +// std::cout<<"pop_E has been created"<(PopulationBreedingStrategy::getInstance("neutral")); +// breedStrat_c->setBirthRate(initBirthRate); +// breedStrat_c->setDeathRate(initBirthRate-deltaBirthRate*2.5f); +// DerevyankoReport::pop_c->setBreedingStrategy(breedStrat_c); +// std::cout<<"pop_d -> pop_c\tPop dynamics coeffs have been changed:\td =\t"; +// std::cout<<(initBirthRate-deltaBirthRate*2.5f)<breedAll(); +// DerevyankoReport::pop_c->mutationAll(); + +// DerevyankoReport::pop_E->breedAll(); +// DerevyankoReport::pop_E->mutationAll(); + +// DerevyankoReport::pop_F->breedAll(); +// DerevyankoReport::pop_F->mutationAll(); + +// DerevyankoReport::pop_G->breedAll(); +// DerevyankoReport::pop_G->mutationAll(); +// DerevyankoReport::globalGenerations++; +// DerevyankoReport::fillVectors(DerevyankoReport::pop_F, 3); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_c, 5); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_G, 1); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_E, 6); +// } + +// // 5. +// // c D b +// // 100 +// // - b, 90% +// DerevyankoReport::fraction_D_founder = 0.1f; +// DerevyankoReport::pop_D = DerevyankoReport::pop_c->createSubpopulation(fraction_D_founder); +// std::cout<<"pop_D has been created"<(PopulationBreedingStrategy::getInstance("neutral")); +// breedStrat_b->setBirthRate(initBirthRate); +// breedStrat_b->setDeathRate(initBirthRate-deltaBirthRate*3.f); +// DerevyankoReport::pop_b->setBreedingStrategy(breedStrat_b); +// std::cout<<"pop_c -> pop_b\tPop dynamics coeffs have been changed:\td =\t"; +// std::cout<<(initBirthRate-deltaBirthRate*3.f)<breedAll(); +// DerevyankoReport::pop_b->mutationAll(); + +// DerevyankoReport::pop_D->breedAll(); +// DerevyankoReport::pop_D->mutationAll(); + +// DerevyankoReport::pop_E->breedAll(); +// DerevyankoReport::pop_E->mutationAll(); + +// DerevyankoReport::pop_F->breedAll(); +// DerevyankoReport::pop_F->mutationAll(); + +// DerevyankoReport::pop_G->breedAll(); +// DerevyankoReport::pop_G->mutationAll(); +// DerevyankoReport::globalGenerations++; +// DerevyankoReport::fillVectors(DerevyankoReport::pop_F, 3); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_b, 7); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_G, 1); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_E, 6); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_D, 8); + +// } + +// // 6. +// // b C a +// // 200 +// // - a, 90% +// DerevyankoReport::fraction_C_founder = 0.1f; +// DerevyankoReport::pop_C = DerevyankoReport::pop_b->createSubpopulation(fraction_C_founder); +// std::cout<<"pop_C has been created"<(PopulationBreedingStrategy::getInstance("neutral")); +// breedStrat_a->setBirthRate(initBirthRate); +// breedStrat_a->setDeathRate(initBirthRate-deltaBirthRate*3.5f); +// DerevyankoReport::pop_a->setBreedingStrategy(breedStrat_a); +// std::cout<<"pop_b -> pop_a\tPop dynamics coeffs have been changed:\td =\t"; +// std::cout<<(initBirthRate-deltaBirthRate*3.5f)<breedAll(); +// DerevyankoReport::pop_a->mutationAll(); + +// DerevyankoReport::pop_C->breedAll(); +// DerevyankoReport::pop_C->mutationAll(); + +// DerevyankoReport::pop_D->breedAll(); +// DerevyankoReport::pop_D->mutationAll(); + +// DerevyankoReport::pop_E->breedAll(); +// DerevyankoReport::pop_E->mutationAll(); + +// DerevyankoReport::pop_F->breedAll(); +// DerevyankoReport::pop_F->mutationAll(); + +// DerevyankoReport::pop_G->breedAll(); +// DerevyankoReport::pop_G->mutationAll(); +// DerevyankoReport::globalGenerations++; +// DerevyankoReport::fillVectors(DerevyankoReport::pop_F, 3); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_a, 9); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_G, 1); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_E, 6); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_D, 8); +// DerevyankoReport::fillVectors(DerevyankoReport::pop_C, 10); +// } + +// // 7. +// // a A B +// // 2540 +// // - A, 50% , +// // . +// // A B, A C, D, E, F (G ) +// DerevyankoReport::fraction_B_founder = 0.5f; +// DerevyankoReport::pop_B = DerevyankoReport::pop_a->createSubpopulation(fraction_B_founder); +// std::cout<<"pop_B has been created"<(PopulationBreedingStrategy::getInstance("neutral")); +// breedStrat_A->setBirthRate(initBirthRate); +// breedStrat_A->setDeathRate(initBirthRate-deltaBirthRate*4.f); +// DerevyankoReport::pop_A->setBreedingStrategy(breedStrat_A); +// std::cout<<"pop_a -> pop_A\tPop dynamics coeffs have been changed:\td =\t"; +// std::cout<<(initBirthRate-deltaBirthRate*4.f)<breedAll(); +// DerevyankoReport::pop_A->mutationAll(); + +// DerevyankoReport::pop_B->breedAll(); +// DerevyankoReport::pop_B->mutationAll(); + +// DerevyankoReport::pop_C->breedAll(); +// DerevyankoReport::pop_C->mutationAll(); + +// DerevyankoReport::pop_D->breedAll(); +// DerevyankoReport::pop_D->mutationAll(); + +// DerevyankoReport::pop_E->breedAll(); +// DerevyankoReport::pop_E->mutationAll(); + +// DerevyankoReport::pop_F->breedAll(); +// DerevyankoReport::pop_F->mutationAll(); + +// if((generation % genPerMigr_A_B) == 0){ +// std::string code = BisexualPopulation::mutualMigration(DerevyankoReport::pop_A, DerevyankoReport::pop_B, part_A_to_B, part_B_to_A); +// std::cout<<"Migration A<->B\t"<C\t"<D\t"<E\t"<F\t"<putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_A.txt"); +// DerevyankoReport::pop_A->putGeneticSimpleStatisticsToStream(file); +// file.close(); + +// //////////////////////////////////////// +// file.open("GenStatistics.pop_B.fasta"); +// DerevyankoReport::pop_B->putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_B.txt"); +// DerevyankoReport::pop_B->putGeneticSimpleStatisticsToStream(file); +// file.close(); +// //////////////////////////////////////// + +// //////////////////////////////////////// +// file.open("GenStatistics.pop_C.fasta"); +// DerevyankoReport::pop_C->putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_C.txt"); +// DerevyankoReport::pop_C->putGeneticSimpleStatisticsToStream(file); +// file.close(); +// //////////////////////////////////////// + +// //////////////////////////////////////// +// file.open("GenStatistics.pop_D.fasta"); +// DerevyankoReport::pop_D->putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_D.txt"); +// DerevyankoReport::pop_D->putGeneticSimpleStatisticsToStream(file); +// file.close(); +// //////////////////////////////////////// + +// //////////////////////////////////////// +// file.open("GenStatistics.pop_E.fasta"); +// DerevyankoReport::pop_E->putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_E.txt"); +// DerevyankoReport::pop_E->putGeneticSimpleStatisticsToStream(file); +// file.close(); +// //////////////////////////////////////// + +// //////////////////////////////////////// +// file.open("GenStatistics.pop_F.fasta"); +// DerevyankoReport::pop_F->putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_F.txt"); +// DerevyankoReport::pop_F->putGeneticSimpleStatisticsToStream(file); +// file.close(); +// //////////////////////////////////////// + +// //////////////////////////////////////// +// file.open("GenStatistics.pop_G.fasta"); +// DerevyankoReport::pop_G->putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_G.txt"); +// DerevyankoReport::pop_G->putGeneticSimpleStatisticsToStream(file); +// file.close(); +// //////////////////////////////////////// + +// //////////////////////////////////////// +// file.open("GenStatistics.pop_flittle.fasta"); +// DerevyankoReport::pop_f->putGeneticStatisticsToStream(file); +// file.close(); + +// file.open("GenStatistics.pop_flittle.txt"); +// DerevyankoReport::pop_f->putGeneticSimpleStatisticsToStream(file); +// file.close(); +// //////////////////////////////////////// +} diff --git a/DEC_GUI/DEC-0.0/DerevyankoReport.h b/DEC_GUI/DEC-0.0/DerevyankoReport.h new file mode 100644 index 0000000..56c4771 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DerevyankoReport.h @@ -0,0 +1,85 @@ +#pragma once +#include "population/Population.h" +#include +#include + +class DerevyankoReport{ +public: + static void reportRFBR2013_01(); + static BisexualPopulation* populationFactory(int size, std::string initMtGenome); + static void separatePop(QString popName, double founder, int sepPopInd); + static void evolution(int evol_time); + + static std::string initMtDNA; + static std::string initMtDNA_G; + static std::vector initMtDNAgui; + static std::vector initMtDNA_Ggui; + static int basePopSize; + static float initBirthRate; + static float deltaBirthRate; + static BisexualPopulation* pop_f; + static BisexualPopulation* pop_G; + static BisexualPopulation* pop_e; + static BisexualPopulation* pop_F; + static BisexualPopulation* pop_d; + static BisexualPopulation* pop_E; + static BisexualPopulation* pop_c; + static BisexualPopulation* pop_D; + static BisexualPopulation* pop_b; + static BisexualPopulation* pop_a; + static BisexualPopulation* pop_A; + static BisexualPopulation* pop_B; + static BisexualPopulation* pop_C; + + static int genPerMigr_f_G; + static float part_f_to_G; + static float part_G_to_f; + + static int genPerMigr_A_B; + static int genPerMigr_A_C; + static int genPerMigr_A_D; + static int genPerMigr_A_E; + static int genPerMigr_A_F; + + static float part_A_to_B; + static float part_B_to_A; + static float part_A_to_C; + static float part_A_to_D; + static float part_A_to_E; + static float part_A_to_F; + + static float fraction_e_founder; + static float fraction_F_founder; + static float fraction_E_founder; + static float fraction_D_founder; + static float fraction_C_founder; + static float fraction_B_founder; + + + static QVector popSize_f; + static QVector popSize_G; + static QVector popSize_e; + static QVector popSize_F; + static QVector popSize_d; + static QVector popSize_E; + static QVector popSize_c; + static QVector popSize_D; + static QVector popSize_b; + static QVector popSize_a; + static QVector popSize_A; + static QVector popSize_B; + static QVector popSize_C; + + static QVector pops; + static QVector populNames; + //static QVector globalGenerations; + static int globalGenerations; + static QVector maxYval; + static QVector< QVector > popSizes; + static QVector< QVector > generations; + + static void initVectors(); + static void fillVectors(BisexualPopulation* pop, int popNum); + + +}; diff --git a/DEC_GUI/DEC-0.0/DerevyankoReport2014.cpp b/DEC_GUI/DEC-0.0/DerevyankoReport2014.cpp new file mode 100644 index 0000000..f2edbc9 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DerevyankoReport2014.cpp @@ -0,0 +1,414 @@ +#include "DerevyankoReport2014.h" +#include "individual/Trait.h" +#include "individual/Phenotype.h" +//#include "population/BreedingStrategies/PopulationBreedingStrategy.h" +#include "population/BreedingStrategies/NeutralEvolutionBreedStrat.h" +#include "processor/Settings.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define sscanf_s sscanf + +using std::string; + +BisexualPopulation* DerevyankoReport2014::pop_Sapiens; +BisexualPopulation* DerevyankoReport2014::pop_Ancient; + + +std::string DerevyankoReport2014::getInitGene(int type, int num){ + + + string seq, initSeq = ""; + //srand((unsigned int)time(NULL)); + //QTime time = QTime::currentTime(); + //qsrand((uint)time.msec()); + QTime midnight(0, 0, 0); + qsrand(midnight.secsTo(QTime::currentTime())); + for(unsigned int i = 0; i < Settings::locusLength; i++){ + //int nucl = rand()%4; + int nucl = qrand() % 4; + if(nucl == 0){initSeq += 'A';} + else if(nucl == 1){initSeq += 'T';} + else if(nucl == 2){initSeq += 'G';} + else if(nucl == 3){initSeq += 'C';} + } + //initSeq = "TTCTTTCATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACC"; + //std::cout << initSeq << std::endl; + if(type == 0){ + // ( "") + seq = initSeq; + } + else{ + // ( ) + seq = initSeq; + seq.replace(10,1,"T"); + seq.replace(20,1,"A"); + seq.replace(30,1,"C"); + seq.replace(40,1,"G"); + seq.replace(50,1,"G"); + } + + return seq; +} + +BisexualPopulation* DerevyankoReport2014::populationFactory(int size, const std::vector& genome){ + BisexualPopulation* ans; + + std::list males; + std::list females; + + // + Chromosome chrom1("Mitochondrial chromosome"); + for(unsigned int i = 0; i < genome.size(); i++){ + string gName = "mtDna_" + boost::lexical_cast(i+1); + Gene gene(Gene::Sequence, gName, genome.at(i)); + chrom1.insertGeneToEnd(gene); + } + + std::vector fGenome; + std::vector mGenome; + fGenome.push_back(chrom1); + mGenome.push_back(chrom1); + + // + Trait trait1(Trait::Discrete, "Age", 20); + // + InnerSubstratesPool* subPool = 0; + // (END) + + for(int i = 0; i < size/2; i++){ + Genotype* genotype = new Genotype(fGenome, mGenome); + Phenotype* phenotype = new Phenotype(trait1); + males.push_back(new Individual(genotype, phenotype, subPool, Individual::male, 0)); + + genotype = new Genotype(fGenome, mGenome); + phenotype = new Phenotype(trait1); + females.push_back(new Individual(genotype, phenotype, subPool, Individual::female, 0)); + } + + ans = new BisexualPopulation(males,females); + return ans; +} + +void DerevyankoReport2014::evolution(int iter) +{ + for(unsigned int i = 0; i < iter; i++) + { + pop_Sapiens->breedAll(); + pop_Sapiens->mutationAll(); + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + Settings::fillVectors(pop_Sapiens, pop_Ancient); + } +} + +void DerevyankoReport2014::evolution_migr(int iter) +{ + for(unsigned int i = 0; i < iter; i++){ + + pop_Sapiens->breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + + + + if(i != 0 && ((i % Settings::generationsPerMigration) == 0)){ + std::string code = BisexualPopulation::mutualMigration(pop_Sapiens, pop_Ancient, + Settings::migrationPartHomoToAncient, Settings::migrationPartAncientToHomo); + //std::cout<<"Migration Sapienti<->Ancient\t"< calcScript; + +// if(argc > 1){ +// calcScript = parseScript(argv[1]); +// } +// else{ + //calcScript = parseScript("script.txt"); +// } +// calcScript = parseScript("script.txt"); +// //std::cout << "report2014" << std::endl; + Settings::initGUIvect(); +// // +// int numLoci = Settings::numLoci; +// std::vector initMtDNA(numLoci); +// std::vector initMtDNA_ancient(numLoci); +// for(unsigned int i = 0; i < initMtDNA.size(); i++){ +// initMtDNA.at(i) = getInitGene(0,i); +// if(i<= numLoci*Settings::percentDiffLoci){ +// string seq = initMtDNA.at(i); +// for(int j = 0; j < 5; j++){ +// int pos = (int)(j/5.*Settings::locusLength); +// if(seq.at(pos)=='T') +// seq.replace(pos,1,"G"); +// else +// seq.replace(pos,1,"T"); +// } +// initMtDNA_ancient.at(i) = seq; +// } +// else{ +// initMtDNA_ancient.at(i) = initMtDNA.at(i); +// } +// } + + int popSizeH = Settings::PopulationHomoInitSize; + int popSizeA = Settings::PopulationAncientInitSize; + float initBirthRate = Settings::BirthRate; + float deathRate = Settings::NaturalDeathRate; + + + + pop_Sapiens = populationFactory(popSizeH, Settings::initMtDNA); + NeutralEvolutionBreedingStrategy* breedStrat_Sapiens = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_Sapiens->setBirthRate(initBirthRate); + breedStrat_Sapiens->setDeathRate(deathRate); + pop_Sapiens->setBreedingStrategy(breedStrat_Sapiens); + + pop_Ancient = populationFactory(popSizeA, Settings::initMtDNA_ancient); + NeutralEvolutionBreedingStrategy* breedStrat_Ancient = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_Ancient->setBirthRate(initBirthRate); + breedStrat_Ancient->setDeathRate(deathRate); + pop_Ancient->setBreedingStrategy(breedStrat_Ancient); + + /////////////////////////////////////////// + // + // + // + /////////////////////////////////////////// + //Settings::ProbMtDNARecomb = 1e-4; + + // 1. + // 1 + int genPerMigr_H_A = Settings::generationsPerMigration; + float part_H_to_A = Settings::migrationPartHomoToAncient; + float part_A_to_H = Settings::migrationPartAncientToHomo; + + unsigned int generation = 0; + for(unsigned int curLine = 0; curLine < Settings::calcScript.size(); curLine++){ + if(Settings::calcScript.at(curLine).at(0) == '/' || Settings::calcScript.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, Settings::calcScript.at(curLine), boost::is_any_of("=") ); + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + + if(instr == "evolution"){ + int iter = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + for(unsigned int i = 0; i < iter; i++, generation++){ + std::cout<<"gen\t"<breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + Settings::fillVectors(pop_Sapiens, pop_Ancient); + std::cout << pop_Ancient->females.size() + pop_Ancient->males.size() << " evol_size " <females.size() + pop_Sapiens->males.size() << " evol_size " <breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + + Settings::fillVectors(pop_Sapiens, pop_Ancient); + std::cout << pop_Ancient->females.size() + pop_Ancient->males.size() << " evol/migr_size " <Ancient\t"<Ancient\t"<breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + + if(generation != 0 && ((generation % genPerMigr_H_A) == 0)){ + std::string code = BisexualPopulation::mutualMigration(pop_Sapiens, pop_Ancient, part_H_to_A, part_A_to_H); + std::cout<<"Migration Sapienti<->Ancient\t"<putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_Sapiens.txt"); + pop_Sapiens->putGeneticSimpleStatisticsToStream(file); + file.close(); + + //////////////////////////////////////// + file.open("GenStatistics.pop_Ancient.fasta"); + pop_Ancient->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_Ancient.txt"); + pop_Ancient->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + +} + +std::vector DerevyankoReport2014::parseScript(std::string fileName){ + std::vector script; + std::ifstream file(fileName.c_str()); + std::string str; + + if (!file.is_open()) + { + std::cout << "Can't open file!" << std::endl; + } + + while(getline(file,str)){ + if(str.length() > 2) + script.push_back(str); + } + file.close(); + + // process Script + unsigned int curLine; + for(curLine = 0; curLine < script.size(); curLine++){ + if(script.at(curLine).at(0) == '/' || script.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, script.at(curLine), boost::is_any_of("=") ); + + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + + if(instr == "model_start"){ + vector::const_iterator first = script.begin() + curLine; + vector::const_iterator last = script.end(); + std::vector ans(first, last); + return ans; + } + else if(instr == "pop_homo_init"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::PopulationHomoInitSize = flag; + } + else if(instr == "pop_ancient_init"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::PopulationAncientInitSize = flag; + } + else if(instr == "generations_per_migration"){ + int flag = Settings::generationsPerMigration; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::generationsPerMigration = flag; + } + else if(instr == "migr_homo_ancient_ratio"){ + double ratio = Settings::migrationPartHomoToAncient; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &ratio); + Settings::migrationPartHomoToAncient = ratio; + } + else if(instr == "migr_ancient_homo_ratio"){ + double ratio = Settings::migrationPartAncientToHomo; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &ratio); + Settings::migrationPartAncientToHomo = ratio; + } + else if(instr == "birth" || instr == "birthrate" || instr == "birth_rate" ){ + double rate = Settings::BirthRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::BirthRate = rate; + } + else if(instr == "death" || instr == "deathrate" || instr == "death_rate" ){ + double rate = Settings::NaturalDeathRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::NaturalDeathRate = rate; + } + else if(instr == "percent_diff_loci" ){ + double value = Settings::percentDiffLoci; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &value); + Settings::percentDiffLoci = value; + } + else if(instr == "num_loci"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::numLoci = flag; + } + else if(instr == "prob_recomb" ){ + double value = Settings::ProbMtDNARecomb; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &value); + Settings::ProbMtDNARecomb = value; + } + + + + //***************************** + else if(instr == "breedings"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string strategy = tokensVector.at(1); + boost::to_lower(strategy); + boost::trim(strategy); + Settings::BreedingStrategy = strategy; + } + } // (END) for(curLine = 0; curLine < script.size(); curLine++) + std::vector a; + return a; +} + +//void DerevyankoReport2014::parseCalc(std::vector script){ +// +//} diff --git a/DEC_GUI/DEC-0.0/DerevyankoReport2014.h b/DEC_GUI/DEC-0.0/DerevyankoReport2014.h new file mode 100644 index 0000000..7916e07 --- /dev/null +++ b/DEC_GUI/DEC-0.0/DerevyankoReport2014.h @@ -0,0 +1,22 @@ +#pragma once +#include +#include "population/Population.h" +#include +#include + +class DerevyankoReport2014 +{ + +public: + static void report2014_01(/*int argc, char** argv*/); + static std::string getInitGene(int type = 0, int num = 0); + static BisexualPopulation* populationFactory(int size, const std::vector& genome); + static std::vector parseScript(std::string fileName); + //static void parseCalc(std::vector script); + static BisexualPopulation* pop_Sapiens; + static BisexualPopulation* pop_Ancient; + static void evolution(int iter); + static void evolution_migr(int iter); + static void migration(); + +}; diff --git a/DEC_GUI/DEC-0.0/ToDoList.txt b/DEC_GUI/DEC-0.0/ToDoList.txt new file mode 100644 index 0000000..813a69e --- /dev/null +++ b/DEC_GUI/DEC-0.0/ToDoList.txt @@ -0,0 +1,7 @@ +1. "", "" "" +( ""). + +2. . + +3. +(, ..). \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/environment/AbstractEnvironment.h b/DEC_GUI/DEC-0.0/environment/AbstractEnvironment.h new file mode 100644 index 0000000..9fe8ce0 --- /dev/null +++ b/DEC_GUI/DEC-0.0/environment/AbstractEnvironment.h @@ -0,0 +1,10 @@ +#pragma once +#include "AbstractRegion.h" +#include + +class Environment { +protected: + std::vector regions; +public: + +}; diff --git a/DEC_GUI/DEC-0.0/environment/AbstractRegion.h b/DEC_GUI/DEC-0.0/environment/AbstractRegion.h new file mode 100644 index 0000000..5e1f1c2 --- /dev/null +++ b/DEC_GUI/DEC-0.0/environment/AbstractRegion.h @@ -0,0 +1,40 @@ +#pragma once +#include + +// () +template +class Position3D { +public: + T xOrigin; + T yOrigin; + T zOrigin; + T length; + T width; + T height; + //Position3D(T x0, T y0, T z0, T len, T wid, T hei): + Position3D(T x0, T y0, T z0, T len, T wid, T heigh): + xOrigin(x0), yOrigin(y0), zOrigin(z0), + length(len), width(wid), height(heigh){}; +}; + +// , +using std::vector; +class Region { +protected: + long int capacity; // map capacities + std::vector currentSubstrates; // + std::vector restorationSubstrates; // + std::vector maxSubstrates; // + std::vector regulators; // temperature, humidity etc + + ///////////////////// + Position3D position3D; + +public: + Region(Position3D pos, long int capac); + Region(Position3D pos, long int capac, + const vector&, const vector&, + const vector&, const vector&); + void restoreSubstrate(); + long int getCapacity() const { return this->capacity;} +}; diff --git a/DEC_GUI/DEC-0.0/environment/Environment.cpp b/DEC_GUI/DEC-0.0/environment/Environment.cpp new file mode 100644 index 0000000..a814ac8 --- /dev/null +++ b/DEC_GUI/DEC-0.0/environment/Environment.cpp @@ -0,0 +1,2 @@ +#include "AbstractEnvironment.h" + diff --git a/DEC_GUI/DEC-0.0/environment/Region.cpp b/DEC_GUI/DEC-0.0/environment/Region.cpp new file mode 100644 index 0000000..836d8f5 --- /dev/null +++ b/DEC_GUI/DEC-0.0/environment/Region.cpp @@ -0,0 +1,39 @@ +#include "AbstractRegion.h" +#include + +//template + + +////////////////////////////////////// +Region::Region(Position3D pos, long capac): +position3D(pos), capacity(capac) +{} + +Region::Region(Position3D pos, long capac, + const std::vector & curS, const std::vector & restS, + const std::vector & maxS, const std::vector & regS): +position3D(pos), capacity(capac), +currentSubstrates(curS), restorationSubstrates(restS), +maxSubstrates(maxS), regulators(regS) +{ + if(currentSubstrates.size() != restorationSubstrates.size()){ + std::cerr<<"Warning! currentSubstrates size != restorationSubstrates size\n"; + } + if(currentSubstrates.size() != maxSubstrates.size()){ + std::cerr<<"Warning! currentSubstrates size != maximumSubstrates size\n"; + } + if(restorationSubstrates.size() != maxSubstrates.size()){ + std::cerr<<"Warning! restorationSubstrates size != maximumSubstrates size\n"; + } +} + +/** +* +**/ +void Region::restoreSubstrate(){ + for(unsigned int i = 0; i < this->currentSubstrates.size(); i++){ + this->currentSubstrates.at(i) = std::max( + this->currentSubstrates.at(i) + this->restorationSubstrates.at(i), + this->maxSubstrates.at(i)); + } +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/generation.0.xls b/DEC_GUI/DEC-0.0/generation.0.xls new file mode 100644 index 0000000..779fb0c --- /dev/null +++ b/DEC_GUI/DEC-0.0/generation.0.xls @@ -0,0 +1,1480 @@ +Population size: 1479 +1 Fitness: 0 Genotype: Fch1: A coadaptive 7.5 0.9 B coadaptive 9 9.2 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +2 Fitness: 0.121651 Genotype: Fch1: A coadaptive 5.3 0.9 B coadaptive 6 9.2 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0.121651 disease 4 +3 Fitness: 9.52145 Genotype: Fch1: A coadaptive 7.5 8.5 B coadaptive 9 9.2 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.52145 disease 3 +4 Fitness: 3.78725 Genotype: Fch1: A coadaptive 3.4 0.3 B coadaptive 2 6.3 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.78725 disease 2 +5 Fitness: 3.78725 Genotype: Fch1: A coadaptive 3.4 0.3 B coadaptive 2 6.3 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.78725 disease 2 +6 Fitness: 3.78725 Genotype: Fch1: A coadaptive 3.4 0.3 B coadaptive 2 6.3 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.78725 disease 2 +7 Fitness: 8.192 Genotype: Fch1: A coadaptive 6 0.4 B coadaptive 6.6 3 C disease 0 0 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.192 disease 3 +8 Fitness: 8.192 Genotype: Fch1: A coadaptive 6 0.4 B coadaptive 6.6 3 C disease 0 0 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.192 disease 3 +9 Fitness: 8.192 Genotype: Fch1: A coadaptive 6 0.4 B coadaptive 6.6 3 C disease 0 0 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.192 disease 3 +10 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 1.3 B coadaptive 4.5 7.8 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +11 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 1.3 B coadaptive 4.5 7.8 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +12 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 1.3 B coadaptive 4.5 7.8 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +13 Fitness: 7.22504 Genotype: Fch1: A coadaptive 2.6 5.6 B coadaptive 8.1 6.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 7.22504 disease 3 +14 Fitness: 7.22504 Genotype: Fch1: A coadaptive 2.6 5.6 B coadaptive 8.1 6.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 7.22504 disease 3 +15 Fitness: 7.22504 Genotype: Fch1: A coadaptive 2.6 5.6 B coadaptive 8.1 6.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 7.22504 disease 3 +16 Fitness: 6.7064 Genotype: Fch1: A coadaptive 0.4 7.2 B coadaptive 4.7 9.3 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 6.7064 disease 3.5 +17 Fitness: 6.7064 Genotype: Fch1: A coadaptive 0.4 7.2 B coadaptive 4.7 9.3 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 6.7064 disease 3.5 +18 Fitness: 6.7064 Genotype: Fch1: A coadaptive 0.4 7.2 B coadaptive 4.7 9.3 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 6.7064 disease 3.5 +19 Fitness: 3.40147 Genotype: Fch1: A coadaptive 6.2 7.9 B coadaptive 2.7 3.7 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 3.40147 disease 3 +20 Fitness: 3.40147 Genotype: Fch1: A coadaptive 6.2 7.9 B coadaptive 2.7 3.7 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 3.40147 disease 3 +21 Fitness: 3.40147 Genotype: Fch1: A coadaptive 6.2 7.9 B coadaptive 2.7 3.7 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 3.40147 disease 3 +22 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 8.6 B coadaptive 0.6 2.6 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +23 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 8.6 B coadaptive 0.6 2.6 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +24 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 8.6 B coadaptive 0.6 2.6 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +25 Fitness: 10.0527 Genotype: Fch1: A coadaptive 3.3 5.2 B coadaptive 6.5 1.6 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 10.0527 disease 4 +26 Fitness: 10.0527 Genotype: Fch1: A coadaptive 3.3 5.2 B coadaptive 6.5 1.6 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 10.0527 disease 4 +27 Fitness: 10.0527 Genotype: Fch1: A coadaptive 3.3 5.2 B coadaptive 6.5 1.6 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 10.0527 disease 4 +28 Fitness: 9.21601 Genotype: Fch1: A coadaptive 4.8 2.3 B coadaptive 5.7 4.6 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.21601 disease 3 +29 Fitness: 9.21601 Genotype: Fch1: A coadaptive 4.8 2.3 B coadaptive 5.7 4.6 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.21601 disease 3 +30 Fitness: 9.21601 Genotype: Fch1: A coadaptive 4.8 2.3 B coadaptive 5.7 4.6 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.21601 disease 3 +31 Fitness: 13 Genotype: Fch1: A coadaptive 9.4 6.2 B coadaptive 5.1 7.6 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 13 disease 3 +32 Fitness: 13 Genotype: Fch1: A coadaptive 9.4 6.2 B coadaptive 5.1 7.6 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 13 disease 3 +33 Fitness: 13 Genotype: Fch1: A coadaptive 9.4 6.2 B coadaptive 5.1 7.6 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 13 disease 3 +34 Fitness: 11.6559 Genotype: Fch1: A coadaptive 9.5 4 B coadaptive 5.1 4.6 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.6559 disease 4 +35 Fitness: 11.6559 Genotype: Fch1: A coadaptive 9.5 4 B coadaptive 5.1 4.6 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.6559 disease 4 +36 Fitness: 11.6559 Genotype: Fch1: A coadaptive 9.5 4 B coadaptive 5.1 4.6 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.6559 disease 4 +37 Fitness: 8.06129 Genotype: Fch1: A coadaptive 8.3 4.3 B coadaptive 6.6 0.7 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.06129 disease 4 +38 Fitness: 8.06129 Genotype: Fch1: A coadaptive 8.3 4.3 B coadaptive 6.6 0.7 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.06129 disease 4 +39 Fitness: 8.06129 Genotype: Fch1: A coadaptive 8.3 4.3 B coadaptive 6.6 0.7 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.06129 disease 4 +40 Fitness: 4.40889 Genotype: Fch1: A coadaptive 4.1 0 B coadaptive 7.7 0.9 C disease 0 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 4.40889 disease 2.5 +41 Fitness: 4.40889 Genotype: Fch1: A coadaptive 4.1 0 B coadaptive 7.7 0.9 C disease 0 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 4.40889 disease 2.5 +42 Fitness: 4.40889 Genotype: Fch1: A coadaptive 4.1 0 B coadaptive 7.7 0.9 C disease 0 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 4.40889 disease 2.5 +43 Fitness: 10.1519 Genotype: Fch1: A coadaptive 3.1 5.2 B coadaptive 1.2 7.2 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1519 disease 4 +44 Fitness: 10.1519 Genotype: Fch1: A coadaptive 3.1 5.2 B coadaptive 1.2 7.2 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1519 disease 4 +45 Fitness: 10.1519 Genotype: Fch1: A coadaptive 3.1 5.2 B coadaptive 1.2 7.2 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1519 disease 4 +46 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0 B coadaptive 8.2 9.9 C disease 0 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +47 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0 B coadaptive 8.2 9.9 C disease 0 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +48 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0 B coadaptive 8.2 9.9 C disease 0 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +49 Fitness: 14.4826 Genotype: Fch1: A coadaptive 5.5 6.9 B coadaptive 8.7 5 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.4826 disease 1.5 +50 Fitness: 14.4826 Genotype: Fch1: A coadaptive 5.5 6.9 B coadaptive 8.7 5 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.4826 disease 1.5 +51 Fitness: 14.4826 Genotype: Fch1: A coadaptive 5.5 6.9 B coadaptive 8.7 5 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.4826 disease 1.5 +52 Fitness: 0.658849 Genotype: Fch1: A coadaptive 1 8.4 B coadaptive 8.7 9.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.658849 disease 3 +53 Fitness: 0.658849 Genotype: Fch1: A coadaptive 1 8.4 B coadaptive 8.7 9.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.658849 disease 3 +54 Fitness: 0.658849 Genotype: Fch1: A coadaptive 1 8.4 B coadaptive 8.7 9.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.658849 disease 3 +55 Fitness: 9.02585 Genotype: Fch1: A coadaptive 0.5 6.5 B coadaptive 4.1 6.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.02585 disease 2.5 +56 Fitness: 9.02585 Genotype: Fch1: A coadaptive 0.5 6.5 B coadaptive 4.1 6.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.02585 disease 2.5 +57 Fitness: 9.02585 Genotype: Fch1: A coadaptive 0.5 6.5 B coadaptive 4.1 6.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.02585 disease 2.5 +58 Fitness: 4.60496 Genotype: Fch1: A coadaptive 10 4.3 B coadaptive 4.7 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 4.60496 disease 3 +59 Fitness: 4.60496 Genotype: Fch1: A coadaptive 10 4.3 B coadaptive 4.7 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 4.60496 disease 3 +60 Fitness: 4.60496 Genotype: Fch1: A coadaptive 10 4.3 B coadaptive 4.7 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 4.60496 disease 3 +61 Fitness: 6.96621 Genotype: Fch1: A coadaptive 8.4 9.7 B coadaptive 4.5 7.8 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.96621 disease 3.5 +62 Fitness: 6.96621 Genotype: Fch1: A coadaptive 8.4 9.7 B coadaptive 4.5 7.8 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.96621 disease 3.5 +63 Fitness: 6.96621 Genotype: Fch1: A coadaptive 8.4 9.7 B coadaptive 4.5 7.8 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.96621 disease 3.5 +64 Fitness: 10.4266 Genotype: Fch1: A coadaptive 0.6 7.3 B coadaptive 1.8 8.3 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.4266 disease 3 +65 Fitness: 10.4266 Genotype: Fch1: A coadaptive 0.6 7.3 B coadaptive 1.8 8.3 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.4266 disease 3 +66 Fitness: 10.4266 Genotype: Fch1: A coadaptive 0.6 7.3 B coadaptive 1.8 8.3 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.4266 disease 3 +67 Fitness: 13.5461 Genotype: Fch1: A coadaptive 2.4 8.3 B coadaptive 9.4 3.2 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.5461 disease 3.5 +68 Fitness: 13.5461 Genotype: Fch1: A coadaptive 2.4 8.3 B coadaptive 9.4 3.2 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.5461 disease 3.5 +69 Fitness: 13.5461 Genotype: Fch1: A coadaptive 2.4 8.3 B coadaptive 9.4 3.2 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.5461 disease 3.5 +70 Fitness: 12.7752 Genotype: Fch1: A coadaptive 5.7 9.9 B coadaptive 9.8 6.5 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.7752 disease 3.5 +71 Fitness: 12.7752 Genotype: Fch1: A coadaptive 5.7 9.9 B coadaptive 9.8 6.5 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.7752 disease 3.5 +72 Fitness: 12.7752 Genotype: Fch1: A coadaptive 5.7 9.9 B coadaptive 9.8 6.5 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.7752 disease 3.5 +73 Fitness: 0 Genotype: Fch1: A coadaptive 0 6.8 B coadaptive 8.4 8.2 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +74 Fitness: 0 Genotype: Fch1: A coadaptive 0 6.8 B coadaptive 8.4 8.2 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +75 Fitness: 0 Genotype: Fch1: A coadaptive 0 6.8 B coadaptive 8.4 8.2 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +76 Fitness: 0 Genotype: Fch1: A coadaptive 6 6.9 B coadaptive 0.9 1.2 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +77 Fitness: 0 Genotype: Fch1: A coadaptive 6 6.9 B coadaptive 0.9 1.2 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +78 Fitness: 0 Genotype: Fch1: A coadaptive 6 6.9 B coadaptive 0.9 1.2 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +79 Fitness: 7.17947 Genotype: Fch1: A coadaptive 6.8 0.1 B coadaptive 10 2.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.17947 disease 3 +80 Fitness: 7.17947 Genotype: Fch1: A coadaptive 6.8 0.1 B coadaptive 10 2.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.17947 disease 3 +81 Fitness: 7.17947 Genotype: Fch1: A coadaptive 6.8 0.1 B coadaptive 10 2.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.17947 disease 3 +82 Fitness: 14.3887 Genotype: Fch1: A coadaptive 8.6 5.5 B coadaptive 7.2 7.6 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 14.3887 disease 2.5 +83 Fitness: 14.3887 Genotype: Fch1: A coadaptive 8.6 5.5 B coadaptive 7.2 7.6 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 14.3887 disease 2.5 +84 Fitness: 14.3887 Genotype: Fch1: A coadaptive 8.6 5.5 B coadaptive 7.2 7.6 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 14.3887 disease 2.5 +85 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.9 B coadaptive 10 6.7 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +86 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.9 B coadaptive 10 6.7 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +87 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.9 B coadaptive 10 6.7 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +88 Fitness: 0.155882 Genotype: Fch1: A coadaptive 0.1 4.2 B coadaptive 6.6 6.2 C disease 0.5 0.5 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0.155882 disease 2.5 +89 Fitness: 0.155882 Genotype: Fch1: A coadaptive 0.1 4.2 B coadaptive 6.6 6.2 C disease 0.5 0.5 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0.155882 disease 2.5 +90 Fitness: 0.155882 Genotype: Fch1: A coadaptive 0.1 4.2 B coadaptive 6.6 6.2 C disease 0.5 0.5 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0.155882 disease 2.5 +91 Fitness: 8.98909 Genotype: Fch1: A coadaptive 5.1 6.2 B coadaptive 4.6 2.6 C disease 0.5 1 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.98909 disease 3 +92 Fitness: 8.98909 Genotype: Fch1: A coadaptive 5.1 6.2 B coadaptive 4.6 2.6 C disease 0.5 1 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.98909 disease 3 +93 Fitness: 8.98909 Genotype: Fch1: A coadaptive 5.1 6.2 B coadaptive 4.6 2.6 C disease 0.5 1 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.98909 disease 3 +94 Fitness: 13.2499 Genotype: Fch1: A coadaptive 6.6 4.7 B coadaptive 8 2.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.2499 disease 2.5 +95 Fitness: 13.2499 Genotype: Fch1: A coadaptive 6.6 4.7 B coadaptive 8 2.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.2499 disease 2.5 +96 Fitness: 13.2499 Genotype: Fch1: A coadaptive 6.6 4.7 B coadaptive 8 2.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.2499 disease 2.5 +97 Fitness: 3.42499 Genotype: Fch1: A coadaptive 4.3 8.2 B coadaptive 1.8 3.5 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.42499 disease 3 +98 Fitness: 3.42499 Genotype: Fch1: A coadaptive 4.3 8.2 B coadaptive 1.8 3.5 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.42499 disease 3 +99 Fitness: 3.42499 Genotype: Fch1: A coadaptive 4.3 8.2 B coadaptive 1.8 3.5 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.42499 disease 3 +100 Fitness: 2.15148 Genotype: Fch1: A coadaptive 4.2 2.5 B coadaptive 7.3 7.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 2.15148 disease 3 +101 Fitness: 2.15148 Genotype: Fch1: A coadaptive 4.2 2.5 B coadaptive 7.3 7.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 2.15148 disease 3 +102 Fitness: 2.15148 Genotype: Fch1: A coadaptive 4.2 2.5 B coadaptive 7.3 7.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 2.15148 disease 3 +103 Fitness: 13.5065 Genotype: Fch1: A coadaptive 5.7 5.7 B coadaptive 3.8 6.8 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.5065 disease 2.5 +104 Fitness: 13.5065 Genotype: Fch1: A coadaptive 5.7 5.7 B coadaptive 3.8 6.8 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.5065 disease 2.5 +105 Fitness: 13.5065 Genotype: Fch1: A coadaptive 5.7 5.7 B coadaptive 3.8 6.8 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.5065 disease 2.5 +106 Fitness: 10.5141 Genotype: Fch1: A coadaptive 6 8.3 B coadaptive 5.9 3.7 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5141 disease 3.5 +107 Fitness: 10.5141 Genotype: Fch1: A coadaptive 6 8.3 B coadaptive 5.9 3.7 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5141 disease 3.5 +108 Fitness: 10.5141 Genotype: Fch1: A coadaptive 6 8.3 B coadaptive 5.9 3.7 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5141 disease 3.5 +109 Fitness: 9.81719 Genotype: Fch1: A coadaptive 7.4 0.1 B coadaptive 0.5 9 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.81719 disease 2.5 +110 Fitness: 9.81719 Genotype: Fch1: A coadaptive 7.4 0.1 B coadaptive 0.5 9 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.81719 disease 2.5 +111 Fitness: 9.81719 Genotype: Fch1: A coadaptive 7.4 0.1 B coadaptive 0.5 9 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.81719 disease 2.5 +112 Fitness: 13.9916 Genotype: Fch1: A coadaptive 6.1 8.7 B coadaptive 2.9 9.9 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.9916 disease 3.5 +113 Fitness: 13.9916 Genotype: Fch1: A coadaptive 6.1 8.7 B coadaptive 2.9 9.9 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.9916 disease 3.5 +114 Fitness: 13.9916 Genotype: Fch1: A coadaptive 6.1 8.7 B coadaptive 2.9 9.9 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.9916 disease 3.5 +115 Fitness: 10.6958 Genotype: Fch1: A coadaptive 0.3 8.1 B coadaptive 1.6 7.5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.6958 disease 2 +116 Fitness: 10.6958 Genotype: Fch1: A coadaptive 0.3 8.1 B coadaptive 1.6 7.5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.6958 disease 2 +117 Fitness: 10.6958 Genotype: Fch1: A coadaptive 0.3 8.1 B coadaptive 1.6 7.5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.6958 disease 2 +118 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 1.6 0.3 C disease 0 1 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +119 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 1.6 0.3 C disease 0 1 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +120 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 1.6 0.3 C disease 0 1 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +121 Fitness: 12.7725 Genotype: Fch1: A coadaptive 0.9 8.9 B coadaptive 8.4 3.3 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.7725 disease 2.5 +122 Fitness: 12.7725 Genotype: Fch1: A coadaptive 0.9 8.9 B coadaptive 8.4 3.3 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.7725 disease 2.5 +123 Fitness: 12.7725 Genotype: Fch1: A coadaptive 0.9 8.9 B coadaptive 8.4 3.3 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.7725 disease 2.5 +124 Fitness: 4.45349 Genotype: Fch1: A coadaptive 0.2 4.6 B coadaptive 1 3.9 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 4.45349 disease 3 +125 Fitness: 4.45349 Genotype: Fch1: A coadaptive 0.2 4.6 B coadaptive 1 3.9 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 4.45349 disease 3 +126 Fitness: 4.45349 Genotype: Fch1: A coadaptive 0.2 4.6 B coadaptive 1 3.9 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 4.45349 disease 3 +127 Fitness: 5.98355 Genotype: Fch1: A coadaptive 8.7 8.5 B coadaptive 9.9 9.5 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.98355 disease 3 +128 Fitness: 5.98355 Genotype: Fch1: A coadaptive 8.7 8.5 B coadaptive 9.9 9.5 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.98355 disease 3 +129 Fitness: 5.98355 Genotype: Fch1: A coadaptive 8.7 8.5 B coadaptive 9.9 9.5 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.98355 disease 3 +130 Fitness: 7.39409 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 5.7 0.5 C disease 0 0 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 7.39409 disease 3 +131 Fitness: 7.39409 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 5.7 0.5 C disease 0 0 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 7.39409 disease 3 +132 Fitness: 7.39409 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 5.7 0.5 C disease 0 0 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 7.39409 disease 3 +133 Fitness: 7.44095 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 5.1 5.5 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.44095 disease 2 +134 Fitness: 7.44095 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 5.1 5.5 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.44095 disease 2 +135 Fitness: 7.44095 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 5.1 5.5 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.44095 disease 2 +136 Fitness: 4.28314 Genotype: Fch1: A coadaptive 1.8 4.7 B coadaptive 4.3 9.5 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 4.28314 disease 4 +137 Fitness: 4.28314 Genotype: Fch1: A coadaptive 1.8 4.7 B coadaptive 4.3 9.5 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 4.28314 disease 4 +138 Fitness: 4.28314 Genotype: Fch1: A coadaptive 1.8 4.7 B coadaptive 4.3 9.5 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 4.28314 disease 4 +139 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.4 B coadaptive 5.3 5.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +140 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.4 B coadaptive 5.3 5.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +141 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.4 B coadaptive 5.3 5.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +142 Fitness: 8.05596 Genotype: Fch1: A coadaptive 3.6 2.7 B coadaptive 3.2 5.8 C disease 0.5 1 D disease 1 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 8.05596 disease 2 +143 Fitness: 8.05596 Genotype: Fch1: A coadaptive 3.6 2.7 B coadaptive 3.2 5.8 C disease 0.5 1 D disease 1 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 8.05596 disease 2 +144 Fitness: 8.05596 Genotype: Fch1: A coadaptive 3.6 2.7 B coadaptive 3.2 5.8 C disease 0.5 1 D disease 1 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 8.05596 disease 2 +145 Fitness: 2.49357 Genotype: Fch1: A coadaptive 0.3 2.6 B coadaptive 6 1.9 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.49357 disease 2 +146 Fitness: 2.49357 Genotype: Fch1: A coadaptive 0.3 2.6 B coadaptive 6 1.9 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.49357 disease 2 +147 Fitness: 2.49357 Genotype: Fch1: A coadaptive 0.3 2.6 B coadaptive 6 1.9 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.49357 disease 2 +148 Fitness: 8.12459 Genotype: Fch1: A coadaptive 3.6 4.5 B coadaptive 2.4 4.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.12459 disease 2 +149 Fitness: 8.12459 Genotype: Fch1: A coadaptive 3.6 4.5 B coadaptive 2.4 4.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.12459 disease 2 +150 Fitness: 8.12459 Genotype: Fch1: A coadaptive 3.6 4.5 B coadaptive 2.4 4.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.12459 disease 2 +151 Fitness: 11.5433 Genotype: Fch1: A coadaptive 6 7.1 B coadaptive 0 9.4 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.5433 disease 4 +152 Fitness: 11.5433 Genotype: Fch1: A coadaptive 6 7.1 B coadaptive 0 9.4 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.5433 disease 4 +153 Fitness: 11.5433 Genotype: Fch1: A coadaptive 6 7.1 B coadaptive 0 9.4 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.5433 disease 4 +154 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 5.9 B coadaptive 5.3 0 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +155 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 5.9 B coadaptive 5.3 0 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +156 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 5.9 B coadaptive 5.3 0 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +157 Fitness: 9.35424 Genotype: Fch1: A coadaptive 0.9 6.5 B coadaptive 8.6 2.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 9.35424 disease 2.5 +158 Fitness: 9.35424 Genotype: Fch1: A coadaptive 0.9 6.5 B coadaptive 8.6 2.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 9.35424 disease 2.5 +159 Fitness: 9.35424 Genotype: Fch1: A coadaptive 0.9 6.5 B coadaptive 8.6 2.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 9.35424 disease 2.5 +160 Fitness: 10.3073 Genotype: Fch1: A coadaptive 2 6.4 B coadaptive 8.3 0.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.3073 disease 3 +161 Fitness: 10.3073 Genotype: Fch1: A coadaptive 2 6.4 B coadaptive 8.3 0.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.3073 disease 3 +162 Fitness: 10.3073 Genotype: Fch1: A coadaptive 2 6.4 B coadaptive 8.3 0.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.3073 disease 3 +163 Fitness: 12.3057 Genotype: Fch1: A coadaptive 1.5 8.3 B coadaptive 7 5.9 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.3057 disease 2 +164 Fitness: 12.3057 Genotype: Fch1: A coadaptive 1.5 8.3 B coadaptive 7 5.9 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.3057 disease 2 +165 Fitness: 12.3057 Genotype: Fch1: A coadaptive 1.5 8.3 B coadaptive 7 5.9 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.3057 disease 2 +166 Fitness: 13.9691 Genotype: Fch1: A coadaptive 9.6 1.6 B coadaptive 5.1 6.6 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.9691 disease 2.5 +167 Fitness: 13.9691 Genotype: Fch1: A coadaptive 9.6 1.6 B coadaptive 5.1 6.6 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.9691 disease 2.5 +168 Fitness: 13.9691 Genotype: Fch1: A coadaptive 9.6 1.6 B coadaptive 5.1 6.6 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.9691 disease 2.5 +169 Fitness: 6.64057 Genotype: Fch1: A coadaptive 6.3 6.7 B coadaptive 4.7 2.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 6.64057 disease 3.5 +170 Fitness: 6.64057 Genotype: Fch1: A coadaptive 6.3 6.7 B coadaptive 4.7 2.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 6.64057 disease 3.5 +171 Fitness: 6.64057 Genotype: Fch1: A coadaptive 6.3 6.7 B coadaptive 4.7 2.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 6.64057 disease 3.5 +172 Fitness: 7.93721 Genotype: Fch1: A coadaptive 9.2 0.8 B coadaptive 6.2 0.1 C disease 0 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 7.93721 disease 2.5 +173 Fitness: 7.93721 Genotype: Fch1: A coadaptive 9.2 0.8 B coadaptive 6.2 0.1 C disease 0 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 7.93721 disease 2.5 +174 Fitness: 7.93721 Genotype: Fch1: A coadaptive 9.2 0.8 B coadaptive 6.2 0.1 C disease 0 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 7.93721 disease 2.5 +175 Fitness: 11.9392 Genotype: Fch1: A coadaptive 6.8 2.8 B coadaptive 7.7 5.3 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.9392 disease 2.5 +176 Fitness: 11.9392 Genotype: Fch1: A coadaptive 6.8 2.8 B coadaptive 7.7 5.3 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.9392 disease 2.5 +177 Fitness: 11.9392 Genotype: Fch1: A coadaptive 6.8 2.8 B coadaptive 7.7 5.3 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.9392 disease 2.5 +178 Fitness: 12.4014 Genotype: Fch1: A coadaptive 6.7 2.9 B coadaptive 7.3 4.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.4014 disease 3 +179 Fitness: 12.4014 Genotype: Fch1: A coadaptive 6.7 2.9 B coadaptive 7.3 4.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.4014 disease 3 +180 Fitness: 12.4014 Genotype: Fch1: A coadaptive 6.7 2.9 B coadaptive 7.3 4.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.4014 disease 3 +181 Fitness: 13.0784 Genotype: Fch1: A coadaptive 6.9 9.1 B coadaptive 4.7 8.9 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 13.0784 disease 3 +182 Fitness: 13.0784 Genotype: Fch1: A coadaptive 6.9 9.1 B coadaptive 4.7 8.9 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 13.0784 disease 3 +183 Fitness: 13.0784 Genotype: Fch1: A coadaptive 6.9 9.1 B coadaptive 4.7 8.9 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 13.0784 disease 3 +184 Fitness: 4.58856 Genotype: Fch1: A coadaptive 2.3 1.8 B coadaptive 0.6 6.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.58856 disease 3.5 +185 Fitness: 4.58856 Genotype: Fch1: A coadaptive 2.3 1.8 B coadaptive 0.6 6.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.58856 disease 3.5 +186 Fitness: 4.58856 Genotype: Fch1: A coadaptive 2.3 1.8 B coadaptive 0.6 6.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.58856 disease 3.5 +187 Fitness: 7.06306 Genotype: Fch1: A coadaptive 3.4 3.7 B coadaptive 5.9 0.1 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.06306 disease 2.5 +188 Fitness: 7.06306 Genotype: Fch1: A coadaptive 3.4 3.7 B coadaptive 5.9 0.1 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.06306 disease 2.5 +189 Fitness: 7.06306 Genotype: Fch1: A coadaptive 3.4 3.7 B coadaptive 5.9 0.1 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.06306 disease 2.5 +190 Fitness: 10.6454 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 9.1 6.7 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 10.6454 disease 2 +191 Fitness: 10.6454 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 9.1 6.7 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 10.6454 disease 2 +192 Fitness: 10.6454 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 9.1 6.7 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 10.6454 disease 2 +193 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 6.8 B coadaptive 3.9 0.4 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +194 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 6.8 B coadaptive 3.9 0.4 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +195 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 6.8 B coadaptive 3.9 0.4 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +196 Fitness: 8.14563 Genotype: Fch1: A coadaptive 9.6 9.1 B coadaptive 8.1 8.5 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 8.14563 disease 3.5 +197 Fitness: 8.14563 Genotype: Fch1: A coadaptive 9.6 9.1 B coadaptive 8.1 8.5 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 8.14563 disease 3.5 +198 Fitness: 8.14563 Genotype: Fch1: A coadaptive 9.6 9.1 B coadaptive 8.1 8.5 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 8.14563 disease 3.5 +199 Fitness: 8.8672 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 5 3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.8672 disease 3.5 +200 Fitness: 8.8672 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 5 3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.8672 disease 3.5 +201 Fitness: 8.8672 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 5 3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.8672 disease 3.5 +202 Fitness: 13.8565 Genotype: Fch1: A coadaptive 8.2 6.6 B coadaptive 3 9.6 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.8565 disease 1.5 +203 Fitness: 13.8565 Genotype: Fch1: A coadaptive 8.2 6.6 B coadaptive 3 9.6 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.8565 disease 1.5 +204 Fitness: 13.8565 Genotype: Fch1: A coadaptive 8.2 6.6 B coadaptive 3 9.6 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.8565 disease 1.5 +205 Fitness: 1.49971 Genotype: Fch1: A coadaptive 0.7 3.5 B coadaptive 2.2 9.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 1.49971 disease 3 +206 Fitness: 1.49971 Genotype: Fch1: A coadaptive 0.7 3.5 B coadaptive 2.2 9.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 1.49971 disease 3 +207 Fitness: 1.49971 Genotype: Fch1: A coadaptive 0.7 3.5 B coadaptive 2.2 9.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 1.49971 disease 3 +208 Fitness: 7.09908 Genotype: Fch1: A coadaptive 6 5.1 B coadaptive 8.3 9 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 7.09908 disease 3 +209 Fitness: 7.09908 Genotype: Fch1: A coadaptive 6 5.1 B coadaptive 8.3 9 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 7.09908 disease 3 +210 Fitness: 7.09908 Genotype: Fch1: A coadaptive 6 5.1 B coadaptive 8.3 9 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 7.09908 disease 3 +211 Fitness: 10.0635 Genotype: Fch1: A coadaptive 6.9 6.6 B coadaptive 2.2 6.6 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.0635 disease 3.5 +212 Fitness: 10.0635 Genotype: Fch1: A coadaptive 6.9 6.6 B coadaptive 2.2 6.6 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.0635 disease 3.5 +213 Fitness: 10.0635 Genotype: Fch1: A coadaptive 6.9 6.6 B coadaptive 2.2 6.6 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.0635 disease 3.5 +214 Fitness: 13.0597 Genotype: Fch1: A coadaptive 6 8.1 B coadaptive 7.4 3.7 C disease 1 1 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.0597 disease 3.5 +215 Fitness: 13.0597 Genotype: Fch1: A coadaptive 6 8.1 B coadaptive 7.4 3.7 C disease 1 1 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.0597 disease 3.5 +216 Fitness: 13.0597 Genotype: Fch1: A coadaptive 6 8.1 B coadaptive 7.4 3.7 C disease 1 1 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.0597 disease 3.5 +217 Fitness: 1.91585 Genotype: Fch1: A coadaptive 0.2 5.4 B coadaptive 1.5 0.7 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.91585 disease 3 +218 Fitness: 1.91585 Genotype: Fch1: A coadaptive 0.2 5.4 B coadaptive 1.5 0.7 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.91585 disease 3 +219 Fitness: 1.91585 Genotype: Fch1: A coadaptive 0.2 5.4 B coadaptive 1.5 0.7 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.91585 disease 3 +220 Fitness: 10.2945 Genotype: Fch1: A coadaptive 6.6 1.4 B coadaptive 2.3 9.2 C disease 1 0.5 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.2945 disease 4 +221 Fitness: 10.2945 Genotype: Fch1: A coadaptive 6.6 1.4 B coadaptive 2.3 9.2 C disease 1 0.5 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.2945 disease 4 +222 Fitness: 10.2945 Genotype: Fch1: A coadaptive 6.6 1.4 B coadaptive 2.3 9.2 C disease 1 0.5 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.2945 disease 4 +223 Fitness: 5.55016 Genotype: Fch1: A coadaptive 2.9 1.8 B coadaptive 4.8 3 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.55016 disease 4 +224 Fitness: 5.55016 Genotype: Fch1: A coadaptive 2.9 1.8 B coadaptive 4.8 3 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.55016 disease 4 +225 Fitness: 5.55016 Genotype: Fch1: A coadaptive 2.9 1.8 B coadaptive 4.8 3 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.55016 disease 4 +226 Fitness: 10.7403 Genotype: Fch1: A coadaptive 8.1 7.9 B coadaptive 4.6 6.8 C disease 0 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.7403 disease 2.5 +227 Fitness: 10.7403 Genotype: Fch1: A coadaptive 8.1 7.9 B coadaptive 4.6 6.8 C disease 0 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.7403 disease 2.5 +228 Fitness: 10.7403 Genotype: Fch1: A coadaptive 8.1 7.9 B coadaptive 4.6 6.8 C disease 0 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.7403 disease 2.5 +229 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 8.4 B coadaptive 0.5 3.2 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +230 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 8.4 B coadaptive 0.5 3.2 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +231 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 8.4 B coadaptive 0.5 3.2 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +232 Fitness: 8.13723 Genotype: Fch1: A coadaptive 6.8 3.1 B coadaptive 4.9 1.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.13723 disease 2 +233 Fitness: 8.13723 Genotype: Fch1: A coadaptive 6.8 3.1 B coadaptive 4.9 1.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.13723 disease 2 +234 Fitness: 8.13723 Genotype: Fch1: A coadaptive 6.8 3.1 B coadaptive 4.9 1.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.13723 disease 2 +235 Fitness: 2.2718 Genotype: Fch1: A coadaptive 2.2 2.4 B coadaptive 0.1 2.5 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.2718 disease 2.5 +236 Fitness: 2.2718 Genotype: Fch1: A coadaptive 2.2 2.4 B coadaptive 0.1 2.5 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.2718 disease 2.5 +237 Fitness: 2.2718 Genotype: Fch1: A coadaptive 2.2 2.4 B coadaptive 0.1 2.5 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.2718 disease 2.5 +238 Fitness: 10.2351 Genotype: Fch1: A coadaptive 6.2 7.9 B coadaptive 7.3 2 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.2351 disease 2.5 +239 Fitness: 10.2351 Genotype: Fch1: A coadaptive 6.2 7.9 B coadaptive 7.3 2 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.2351 disease 2.5 +240 Fitness: 10.2351 Genotype: Fch1: A coadaptive 6.2 7.9 B coadaptive 7.3 2 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.2351 disease 2.5 +241 Fitness: 3.74676 Genotype: Fch1: A coadaptive 3.2 3.1 B coadaptive 8.1 5.7 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 3.74676 disease 3 +242 Fitness: 3.74676 Genotype: Fch1: A coadaptive 3.2 3.1 B coadaptive 8.1 5.7 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 3.74676 disease 3 +243 Fitness: 3.74676 Genotype: Fch1: A coadaptive 3.2 3.1 B coadaptive 8.1 5.7 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 3.74676 disease 3 +244 Fitness: 3.09506 Genotype: Fch1: A coadaptive 3.3 3.7 B coadaptive 1.6 1.5 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 3.09506 disease 3.5 +245 Fitness: 3.09506 Genotype: Fch1: A coadaptive 3.3 3.7 B coadaptive 1.6 1.5 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 3.09506 disease 3.5 +246 Fitness: 3.09506 Genotype: Fch1: A coadaptive 3.3 3.7 B coadaptive 1.6 1.5 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 3.09506 disease 3.5 +247 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 8.2 B coadaptive 0.1 1.1 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +248 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 8.2 B coadaptive 0.1 1.1 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +249 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 8.2 B coadaptive 0.1 1.1 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +250 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 9.9 B coadaptive 7.1 2.3 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +251 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 9.9 B coadaptive 7.1 2.3 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +252 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 9.9 B coadaptive 7.1 2.3 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +253 Fitness: 14.0751 Genotype: Fch1: A coadaptive 4.8 8.9 B coadaptive 6.4 5.4 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.0751 disease 3 +254 Fitness: 14.0751 Genotype: Fch1: A coadaptive 4.8 8.9 B coadaptive 6.4 5.4 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.0751 disease 3 +255 Fitness: 14.0751 Genotype: Fch1: A coadaptive 4.8 8.9 B coadaptive 6.4 5.4 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.0751 disease 3 +256 Fitness: 9.64512 Genotype: Fch1: A coadaptive 7.3 0.1 B coadaptive 0.9 8.4 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 9.64512 disease 2 +257 Fitness: 9.64512 Genotype: Fch1: A coadaptive 7.3 0.1 B coadaptive 0.9 8.4 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 9.64512 disease 2 +258 Fitness: 9.64512 Genotype: Fch1: A coadaptive 7.3 0.1 B coadaptive 0.9 8.4 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 9.64512 disease 2 +259 Fitness: 7.8732 Genotype: Fch1: A coadaptive 9.3 5.1 B coadaptive 4.6 3.8 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.8732 disease 2.5 +260 Fitness: 7.8732 Genotype: Fch1: A coadaptive 9.3 5.1 B coadaptive 4.6 3.8 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.8732 disease 2.5 +261 Fitness: 7.8732 Genotype: Fch1: A coadaptive 9.3 5.1 B coadaptive 4.6 3.8 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.8732 disease 2.5 +262 Fitness: 8.73356 Genotype: Fch1: A coadaptive 0.6 6.4 B coadaptive 6.7 4.4 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.73356 disease 3.5 +263 Fitness: 8.73356 Genotype: Fch1: A coadaptive 0.6 6.4 B coadaptive 6.7 4.4 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.73356 disease 3.5 +264 Fitness: 8.73356 Genotype: Fch1: A coadaptive 0.6 6.4 B coadaptive 6.7 4.4 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.73356 disease 3.5 +265 Fitness: 5.21017 Genotype: Fch1: A coadaptive 3.1 3 B coadaptive 1.5 3.3 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 5.21017 disease 2.5 +266 Fitness: 5.21017 Genotype: Fch1: A coadaptive 3.1 3 B coadaptive 1.5 3.3 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 5.21017 disease 2.5 +267 Fitness: 5.21017 Genotype: Fch1: A coadaptive 3.1 3 B coadaptive 1.5 3.3 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 5.21017 disease 2.5 +268 Fitness: 13.0169 Genotype: Fch1: A coadaptive 0.5 9.6 B coadaptive 8.9 2.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.0169 disease 3 +269 Fitness: 13.0169 Genotype: Fch1: A coadaptive 0.5 9.6 B coadaptive 8.9 2.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.0169 disease 3 +270 Fitness: 13.0169 Genotype: Fch1: A coadaptive 0.5 9.6 B coadaptive 8.9 2.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.0169 disease 3 +271 Fitness: 2.15148 Genotype: Fch1: A coadaptive 8.6 6.4 B coadaptive 5.9 0.8 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 2.15148 disease 3.5 +272 Fitness: 2.15148 Genotype: Fch1: A coadaptive 8.6 6.4 B coadaptive 5.9 0.8 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 2.15148 disease 3.5 +273 Fitness: 2.15148 Genotype: Fch1: A coadaptive 8.6 6.4 B coadaptive 5.9 0.8 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 2.15148 disease 3.5 +274 Fitness: 10.7019 Genotype: Fch1: A coadaptive 8.8 8.2 B coadaptive 6 6.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.7019 disease 2.5 +275 Fitness: 10.7019 Genotype: Fch1: A coadaptive 8.8 8.2 B coadaptive 6 6.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.7019 disease 2.5 +276 Fitness: 10.7019 Genotype: Fch1: A coadaptive 8.8 8.2 B coadaptive 6 6.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.7019 disease 2.5 +277 Fitness: 5.08998 Genotype: Fch1: A coadaptive 5.4 7 B coadaptive 3.2 2.7 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 5.08998 disease 3 +278 Fitness: 5.08998 Genotype: Fch1: A coadaptive 5.4 7 B coadaptive 3.2 2.7 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 5.08998 disease 3 +279 Fitness: 5.08998 Genotype: Fch1: A coadaptive 5.4 7 B coadaptive 3.2 2.7 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 5.08998 disease 3 +280 Fitness: 1.82286 Genotype: Fch1: A coadaptive 6.8 6.3 B coadaptive 1.6 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.82286 disease 3 +281 Fitness: 1.82286 Genotype: Fch1: A coadaptive 6.8 6.3 B coadaptive 1.6 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.82286 disease 3 +282 Fitness: 1.82286 Genotype: Fch1: A coadaptive 6.8 6.3 B coadaptive 1.6 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.82286 disease 3 +283 Fitness: 3.3012 Genotype: Fch1: A coadaptive 9.9 7 B coadaptive 4.8 4.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 3.3012 disease 2.5 +284 Fitness: 3.3012 Genotype: Fch1: A coadaptive 9.9 7 B coadaptive 4.8 4.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 3.3012 disease 2.5 +285 Fitness: 3.3012 Genotype: Fch1: A coadaptive 9.9 7 B coadaptive 4.8 4.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 3.3012 disease 2.5 +286 Fitness: 13.9328 Genotype: Fch1: A coadaptive 8.6 2.5 B coadaptive 7.9 4.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 13.9328 disease 2.5 +287 Fitness: 13.9328 Genotype: Fch1: A coadaptive 8.6 2.5 B coadaptive 7.9 4.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 13.9328 disease 2.5 +288 Fitness: 13.9328 Genotype: Fch1: A coadaptive 8.6 2.5 B coadaptive 7.9 4.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 13.9328 disease 2.5 +289 Fitness: 9.02519 Genotype: Fch1: A coadaptive 4.2 2.8 B coadaptive 3.5 5.4 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.02519 disease 2.5 +290 Fitness: 9.02519 Genotype: Fch1: A coadaptive 4.2 2.8 B coadaptive 3.5 5.4 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.02519 disease 2.5 +291 Fitness: 9.02519 Genotype: Fch1: A coadaptive 4.2 2.8 B coadaptive 3.5 5.4 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.02519 disease 2.5 +292 Fitness: 10.5263 Genotype: Fch1: A coadaptive 0.1 8.2 B coadaptive 5 7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 10.5263 disease 3 +293 Fitness: 10.5263 Genotype: Fch1: A coadaptive 0.1 8.2 B coadaptive 5 7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 10.5263 disease 3 +294 Fitness: 10.5263 Genotype: Fch1: A coadaptive 0.1 8.2 B coadaptive 5 7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 10.5263 disease 3 +295 Fitness: 13.5527 Genotype: Fch1: A coadaptive 6.5 7.3 B coadaptive 9.9 5.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.5527 disease 2.5 +296 Fitness: 13.5527 Genotype: Fch1: A coadaptive 6.5 7.3 B coadaptive 9.9 5.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.5527 disease 2.5 +297 Fitness: 13.5527 Genotype: Fch1: A coadaptive 6.5 7.3 B coadaptive 9.9 5.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.5527 disease 2.5 +298 Fitness: 13.54 Genotype: Fch1: A coadaptive 6.3 4.5 B coadaptive 8.3 4.6 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.54 disease 2 +299 Fitness: 13.54 Genotype: Fch1: A coadaptive 6.3 4.5 B coadaptive 8.3 4.6 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.54 disease 2 +300 Fitness: 13.54 Genotype: Fch1: A coadaptive 6.3 4.5 B coadaptive 8.3 4.6 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.54 disease 2 +301 Fitness: 2.65028 Genotype: Fch1: A coadaptive 3.5 1.9 B coadaptive 3.4 9.7 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.65028 disease 3.5 +302 Fitness: 2.65028 Genotype: Fch1: A coadaptive 3.5 1.9 B coadaptive 3.4 9.7 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.65028 disease 3.5 +303 Fitness: 2.65028 Genotype: Fch1: A coadaptive 3.5 1.9 B coadaptive 3.4 9.7 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.65028 disease 3.5 +304 Fitness: 6.1625 Genotype: Fch1: A coadaptive 1.4 9.1 B coadaptive 3.4 2.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.1625 disease 3 +305 Fitness: 6.1625 Genotype: Fch1: A coadaptive 1.4 9.1 B coadaptive 3.4 2.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.1625 disease 3 +306 Fitness: 6.1625 Genotype: Fch1: A coadaptive 1.4 9.1 B coadaptive 3.4 2.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.1625 disease 3 +307 Fitness: 1.48461 Genotype: Fch1: A coadaptive 2.9 8.5 B coadaptive 0.1 3.8 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.48461 disease 2.5 +308 Fitness: 1.48461 Genotype: Fch1: A coadaptive 2.9 8.5 B coadaptive 0.1 3.8 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.48461 disease 2.5 +309 Fitness: 1.48461 Genotype: Fch1: A coadaptive 2.9 8.5 B coadaptive 0.1 3.8 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.48461 disease 2.5 +310 Fitness: 11.6564 Genotype: Fch1: A coadaptive 3.2 5.7 B coadaptive 6.5 3.7 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.6564 disease 2.5 +311 Fitness: 11.6564 Genotype: Fch1: A coadaptive 3.2 5.7 B coadaptive 6.5 3.7 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.6564 disease 2.5 +312 Fitness: 11.6564 Genotype: Fch1: A coadaptive 3.2 5.7 B coadaptive 6.5 3.7 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.6564 disease 2.5 +313 Fitness: 10.8438 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 10 0.5 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.8438 disease 3.5 +314 Fitness: 10.8438 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 10 0.5 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.8438 disease 3.5 +315 Fitness: 10.8438 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 10 0.5 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.8438 disease 3.5 +316 Fitness: 14.4414 Genotype: Fch1: A coadaptive 3.3 8.6 B coadaptive 2.5 9.9 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 14.4414 disease 4 +317 Fitness: 14.4414 Genotype: Fch1: A coadaptive 3.3 8.6 B coadaptive 2.5 9.9 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 14.4414 disease 4 +318 Fitness: 14.4414 Genotype: Fch1: A coadaptive 3.3 8.6 B coadaptive 2.5 9.9 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 14.4414 disease 4 +319 Fitness: 3.41709 Genotype: Fch1: A coadaptive 9 8.9 B coadaptive 5.6 4.7 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 3.41709 disease 3 +320 Fitness: 3.41709 Genotype: Fch1: A coadaptive 9 8.9 B coadaptive 5.6 4.7 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 3.41709 disease 3 +321 Fitness: 3.41709 Genotype: Fch1: A coadaptive 9 8.9 B coadaptive 5.6 4.7 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 3.41709 disease 3 +322 Fitness: 11.1704 Genotype: Fch1: A coadaptive 6.1 2.7 B coadaptive 9.4 2.9 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.1704 disease 2.5 +323 Fitness: 11.1704 Genotype: Fch1: A coadaptive 6.1 2.7 B coadaptive 9.4 2.9 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.1704 disease 2.5 +324 Fitness: 11.1704 Genotype: Fch1: A coadaptive 6.1 2.7 B coadaptive 9.4 2.9 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.1704 disease 2.5 +325 Fitness: 12.7943 Genotype: Fch1: A coadaptive 3.9 8.3 B coadaptive 7 8.4 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 12.7943 disease 4 +326 Fitness: 12.7943 Genotype: Fch1: A coadaptive 3.9 8.3 B coadaptive 7 8.4 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 12.7943 disease 4 +327 Fitness: 12.7943 Genotype: Fch1: A coadaptive 3.9 8.3 B coadaptive 7 8.4 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 12.7943 disease 4 +328 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 2.5 B coadaptive 9 9.9 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +329 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 2.5 B coadaptive 9 9.9 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +330 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 2.5 B coadaptive 9 9.9 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +331 Fitness: 14.2172 Genotype: Fch1: A coadaptive 6.5 5 B coadaptive 5.3 7.3 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 14.2172 disease 2.5 +332 Fitness: 14.2172 Genotype: Fch1: A coadaptive 6.5 5 B coadaptive 5.3 7.3 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 14.2172 disease 2.5 +333 Fitness: 14.2172 Genotype: Fch1: A coadaptive 6.5 5 B coadaptive 5.3 7.3 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 14.2172 disease 2.5 +334 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.1 B coadaptive 9.2 7.8 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +335 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.1 B coadaptive 9.2 7.8 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +336 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.1 B coadaptive 9.2 7.8 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +337 Fitness: 9.40782 Genotype: Fch1: A coadaptive 7.2 2.9 B coadaptive 5.1 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.40782 disease 3 +338 Fitness: 9.40782 Genotype: Fch1: A coadaptive 7.2 2.9 B coadaptive 5.1 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.40782 disease 3 +339 Fitness: 9.40782 Genotype: Fch1: A coadaptive 7.2 2.9 B coadaptive 5.1 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.40782 disease 3 +340 Fitness: 12.2286 Genotype: Fch1: A coadaptive 0.6 9.1 B coadaptive 8.2 4.6 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 12.2286 disease 3.5 +341 Fitness: 12.2286 Genotype: Fch1: A coadaptive 0.6 9.1 B coadaptive 8.2 4.6 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 12.2286 disease 3.5 +342 Fitness: 12.2286 Genotype: Fch1: A coadaptive 0.6 9.1 B coadaptive 8.2 4.6 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 12.2286 disease 3.5 +343 Fitness: 11.5208 Genotype: Fch1: A coadaptive 8.5 8.3 B coadaptive 6.6 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.5208 disease 3 +344 Fitness: 11.5208 Genotype: Fch1: A coadaptive 8.5 8.3 B coadaptive 6.6 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.5208 disease 3 +345 Fitness: 11.5208 Genotype: Fch1: A coadaptive 8.5 8.3 B coadaptive 6.6 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.5208 disease 3 +346 Fitness: 11.3542 Genotype: Fch1: A coadaptive 3.8 6.6 B coadaptive 8.3 0.3 C disease 0 1 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.3542 disease 3.5 +347 Fitness: 11.3542 Genotype: Fch1: A coadaptive 3.8 6.6 B coadaptive 8.3 0.3 C disease 0 1 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.3542 disease 3.5 +348 Fitness: 11.3542 Genotype: Fch1: A coadaptive 3.8 6.6 B coadaptive 8.3 0.3 C disease 0 1 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.3542 disease 3.5 +349 Fitness: 13.3354 Genotype: Fch1: A coadaptive 3.3 7.4 B coadaptive 3.4 9.7 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3354 disease 1.5 +350 Fitness: 13.3354 Genotype: Fch1: A coadaptive 3.3 7.4 B coadaptive 3.4 9.7 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3354 disease 1.5 +351 Fitness: 13.3354 Genotype: Fch1: A coadaptive 3.3 7.4 B coadaptive 3.4 9.7 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3354 disease 1.5 +352 Fitness: 13.8008 Genotype: Fch1: A coadaptive 1.5 9.5 B coadaptive 8.2 3.3 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 13.8008 disease 3.5 +353 Fitness: 13.8008 Genotype: Fch1: A coadaptive 1.5 9.5 B coadaptive 8.2 3.3 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 13.8008 disease 3.5 +354 Fitness: 13.8008 Genotype: Fch1: A coadaptive 1.5 9.5 B coadaptive 8.2 3.3 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 13.8008 disease 3.5 +355 Fitness: 4.76123 Genotype: Fch1: A coadaptive 8.8 8.3 B coadaptive 7.3 2.5 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.76123 disease 2 +356 Fitness: 4.76123 Genotype: Fch1: A coadaptive 8.8 8.3 B coadaptive 7.3 2.5 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.76123 disease 2 +357 Fitness: 4.76123 Genotype: Fch1: A coadaptive 8.8 8.3 B coadaptive 7.3 2.5 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.76123 disease 2 +358 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 1.2 B coadaptive 3.3 7.7 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +359 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 1.2 B coadaptive 3.3 7.7 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +360 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 1.2 B coadaptive 3.3 7.7 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +361 Fitness: 9.50754 Genotype: Fch1: A coadaptive 6.1 2 B coadaptive 1.2 6.6 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.50754 disease 3 +362 Fitness: 9.50754 Genotype: Fch1: A coadaptive 6.1 2 B coadaptive 1.2 6.6 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.50754 disease 3 +363 Fitness: 9.50754 Genotype: Fch1: A coadaptive 6.1 2 B coadaptive 1.2 6.6 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.50754 disease 3 +364 Fitness: 6.93635 Genotype: Fch1: A coadaptive 0.8 7.4 B coadaptive 5 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.93635 disease 3 +365 Fitness: 6.93635 Genotype: Fch1: A coadaptive 0.8 7.4 B coadaptive 5 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.93635 disease 3 +366 Fitness: 6.93635 Genotype: Fch1: A coadaptive 0.8 7.4 B coadaptive 5 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.93635 disease 3 +367 Fitness: 11.8392 Genotype: Fch1: A coadaptive 8.9 0.5 B coadaptive 5.4 4.2 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.8392 disease 2.5 +368 Fitness: 11.8392 Genotype: Fch1: A coadaptive 8.9 0.5 B coadaptive 5.4 4.2 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.8392 disease 2.5 +369 Fitness: 11.8392 Genotype: Fch1: A coadaptive 8.9 0.5 B coadaptive 5.4 4.2 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.8392 disease 2.5 +370 Fitness: 9.70681 Genotype: Fch1: A coadaptive 7.3 4.6 B coadaptive 2.6 5.2 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.70681 disease 3 +371 Fitness: 9.70681 Genotype: Fch1: A coadaptive 7.3 4.6 B coadaptive 2.6 5.2 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.70681 disease 3 +372 Fitness: 9.70681 Genotype: Fch1: A coadaptive 7.3 4.6 B coadaptive 2.6 5.2 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.70681 disease 3 +373 Fitness: 9.81719 Genotype: Fch1: A coadaptive 6.8 0.7 B coadaptive 7.5 2 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.81719 disease 2.5 +374 Fitness: 9.81719 Genotype: Fch1: A coadaptive 6.8 0.7 B coadaptive 7.5 2 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.81719 disease 2.5 +375 Fitness: 9.81719 Genotype: Fch1: A coadaptive 6.8 0.7 B coadaptive 7.5 2 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.81719 disease 2.5 +376 Fitness: 7.95738 Genotype: Fch1: A coadaptive 3.9 3.2 B coadaptive 3.2 3.7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.95738 disease 2 +377 Fitness: 7.95738 Genotype: Fch1: A coadaptive 3.9 3.2 B coadaptive 3.2 3.7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.95738 disease 2 +378 Fitness: 7.95738 Genotype: Fch1: A coadaptive 3.9 3.2 B coadaptive 3.2 3.7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.95738 disease 2 +379 Fitness: 13.6395 Genotype: Fch1: A coadaptive 3.8 8 B coadaptive 2.1 8.6 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.6395 disease 1.5 +380 Fitness: 13.6395 Genotype: Fch1: A coadaptive 3.8 8 B coadaptive 2.1 8.6 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.6395 disease 1.5 +381 Fitness: 13.6395 Genotype: Fch1: A coadaptive 3.8 8 B coadaptive 2.1 8.6 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.6395 disease 1.5 +382 Fitness: 6.5663 Genotype: Fch1: A coadaptive 5.4 0.1 B coadaptive 5.3 2 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.5663 disease 3 +383 Fitness: 6.5663 Genotype: Fch1: A coadaptive 5.4 0.1 B coadaptive 5.3 2 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.5663 disease 3 +384 Fitness: 6.5663 Genotype: Fch1: A coadaptive 5.4 0.1 B coadaptive 5.3 2 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.5663 disease 3 +385 Fitness: 14.5364 Genotype: Fch1: A coadaptive 5.3 7 B coadaptive 6.1 7.3 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.5364 disease 2.5 +386 Fitness: 14.5364 Genotype: Fch1: A coadaptive 5.3 7 B coadaptive 6.1 7.3 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.5364 disease 2.5 +387 Fitness: 14.5364 Genotype: Fch1: A coadaptive 5.3 7 B coadaptive 6.1 7.3 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.5364 disease 2.5 +388 Fitness: 12.6811 Genotype: Fch1: A coadaptive 3.5 6.2 B coadaptive 2.2 9.2 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.6811 disease 4 +389 Fitness: 12.6811 Genotype: Fch1: A coadaptive 3.5 6.2 B coadaptive 2.2 9.2 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.6811 disease 4 +390 Fitness: 12.6811 Genotype: Fch1: A coadaptive 3.5 6.2 B coadaptive 2.2 9.2 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.6811 disease 4 +391 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 3.2 7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +392 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 3.2 7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +393 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 3.2 7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +394 Fitness: 10.5435 Genotype: Fch1: A coadaptive 7.8 2.9 B coadaptive 6.3 1.7 C disease 1 0 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.5435 disease 3 +395 Fitness: 10.5435 Genotype: Fch1: A coadaptive 7.8 2.9 B coadaptive 6.3 1.7 C disease 1 0 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.5435 disease 3 +396 Fitness: 10.5435 Genotype: Fch1: A coadaptive 7.8 2.9 B coadaptive 6.3 1.7 C disease 1 0 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.5435 disease 3 +397 Fitness: 9.03307 Genotype: Fch1: A coadaptive 2.9 4.8 B coadaptive 0.4 7.2 C disease 1 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 9.03307 disease 3 +398 Fitness: 9.03307 Genotype: Fch1: A coadaptive 2.9 4.8 B coadaptive 0.4 7.2 C disease 1 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 9.03307 disease 3 +399 Fitness: 9.03307 Genotype: Fch1: A coadaptive 2.9 4.8 B coadaptive 0.4 7.2 C disease 1 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 9.03307 disease 3 +400 Fitness: 2.038 Genotype: Fch1: A coadaptive 1.6 8.8 B coadaptive 2.4 1.2 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 2.038 disease 3.5 +401 Fitness: 2.038 Genotype: Fch1: A coadaptive 1.6 8.8 B coadaptive 2.4 1.2 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 2.038 disease 3.5 +402 Fitness: 2.038 Genotype: Fch1: A coadaptive 1.6 8.8 B coadaptive 2.4 1.2 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 2.038 disease 3.5 +403 Fitness: 2.17865 Genotype: Fch1: A coadaptive 2 9.8 B coadaptive 1 3.4 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 2.17865 disease 2.5 +404 Fitness: 2.17865 Genotype: Fch1: A coadaptive 2 9.8 B coadaptive 1 3.4 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 2.17865 disease 2.5 +405 Fitness: 2.17865 Genotype: Fch1: A coadaptive 2 9.8 B coadaptive 1 3.4 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 2.17865 disease 2.5 +406 Fitness: 10.9454 Genotype: Fch1: A coadaptive 7 6.2 B coadaptive 3.4 5.7 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.9454 disease 4 +407 Fitness: 10.9454 Genotype: Fch1: A coadaptive 7 6.2 B coadaptive 3.4 5.7 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.9454 disease 4 +408 Fitness: 10.9454 Genotype: Fch1: A coadaptive 7 6.2 B coadaptive 3.4 5.7 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.9454 disease 4 +409 Fitness: 8.65625 Genotype: Fch1: A coadaptive 7 1 B coadaptive 3.3 3.7 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 8.65625 disease 3.5 +410 Fitness: 8.65625 Genotype: Fch1: A coadaptive 7 1 B coadaptive 3.3 3.7 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 8.65625 disease 3.5 +411 Fitness: 8.65625 Genotype: Fch1: A coadaptive 7 1 B coadaptive 3.3 3.7 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 8.65625 disease 3.5 +412 Fitness: 5.20942 Genotype: Fch1: A coadaptive 4.3 0.2 B coadaptive 6.9 1.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.20942 disease 3 +413 Fitness: 5.20942 Genotype: Fch1: A coadaptive 4.3 0.2 B coadaptive 6.9 1.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.20942 disease 3 +414 Fitness: 5.20942 Genotype: Fch1: A coadaptive 4.3 0.2 B coadaptive 6.9 1.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.20942 disease 3 +415 Fitness: 11.8023 Genotype: Fch1: A coadaptive 9.1 5 B coadaptive 9.8 0.4 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.8023 disease 2.5 +416 Fitness: 11.8023 Genotype: Fch1: A coadaptive 9.1 5 B coadaptive 9.8 0.4 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.8023 disease 2.5 +417 Fitness: 11.8023 Genotype: Fch1: A coadaptive 9.1 5 B coadaptive 9.8 0.4 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.8023 disease 2.5 +418 Fitness: 8.04111 Genotype: Fch1: A coadaptive 4.4 1.9 B coadaptive 4.5 5 C disease 0 0 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.04111 disease 2.5 +419 Fitness: 8.04111 Genotype: Fch1: A coadaptive 4.4 1.9 B coadaptive 4.5 5 C disease 0 0 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.04111 disease 2.5 +420 Fitness: 8.04111 Genotype: Fch1: A coadaptive 4.4 1.9 B coadaptive 4.5 5 C disease 0 0 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.04111 disease 2.5 +421 Fitness: 1.64212 Genotype: Fch1: A coadaptive 2 2 B coadaptive 0.9 1.2 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 1.64212 disease 2.5 +422 Fitness: 1.64212 Genotype: Fch1: A coadaptive 2 2 B coadaptive 0.9 1.2 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 1.64212 disease 2.5 +423 Fitness: 1.64212 Genotype: Fch1: A coadaptive 2 2 B coadaptive 0.9 1.2 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 1.64212 disease 2.5 +424 Fitness: 11.931 Genotype: Fch1: A coadaptive 9.2 4 B coadaptive 9.5 0.2 C disease 0 1 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.931 disease 4 +425 Fitness: 11.931 Genotype: Fch1: A coadaptive 9.2 4 B coadaptive 9.5 0.2 C disease 0 1 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.931 disease 4 +426 Fitness: 11.931 Genotype: Fch1: A coadaptive 9.2 4 B coadaptive 9.5 0.2 C disease 0 1 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.931 disease 4 +427 Fitness: 11.3003 Genotype: Fch1: A coadaptive 1.9 6.7 B coadaptive 2.3 7.8 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3003 disease 3 +428 Fitness: 11.3003 Genotype: Fch1: A coadaptive 1.9 6.7 B coadaptive 2.3 7.8 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3003 disease 3 +429 Fitness: 11.3003 Genotype: Fch1: A coadaptive 1.9 6.7 B coadaptive 2.3 7.8 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3003 disease 3 +430 Fitness: 2.75959 Genotype: Fch1: A coadaptive 2.3 3 B coadaptive 0.3 2.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.75959 disease 2.5 +431 Fitness: 2.75959 Genotype: Fch1: A coadaptive 2.3 3 B coadaptive 0.3 2.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.75959 disease 2.5 +432 Fitness: 2.75959 Genotype: Fch1: A coadaptive 2.3 3 B coadaptive 0.3 2.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.75959 disease 2.5 +433 Fitness: 14.2621 Genotype: Fch1: A coadaptive 8.4 3.7 B coadaptive 3.9 7.7 C disease 1 0.5 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.2621 disease 3 +434 Fitness: 14.2621 Genotype: Fch1: A coadaptive 8.4 3.7 B coadaptive 3.9 7.7 C disease 1 0.5 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.2621 disease 3 +435 Fitness: 14.2621 Genotype: Fch1: A coadaptive 8.4 3.7 B coadaptive 3.9 7.7 C disease 1 0.5 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.2621 disease 3 +436 Fitness: 7.83437 Genotype: Fch1: A coadaptive 3.6 3.9 B coadaptive 0.2 6.3 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.83437 disease 2.5 +437 Fitness: 7.83437 Genotype: Fch1: A coadaptive 3.6 3.9 B coadaptive 0.2 6.3 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.83437 disease 2.5 +438 Fitness: 7.83437 Genotype: Fch1: A coadaptive 3.6 3.9 B coadaptive 0.2 6.3 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.83437 disease 2.5 +439 Fitness: 12.023 Genotype: Fch1: A coadaptive 2.5 9.7 B coadaptive 6.3 9.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.023 disease 3.5 +440 Fitness: 12.023 Genotype: Fch1: A coadaptive 2.5 9.7 B coadaptive 6.3 9.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.023 disease 3.5 +441 Fitness: 12.023 Genotype: Fch1: A coadaptive 2.5 9.7 B coadaptive 6.3 9.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.023 disease 3.5 +442 Fitness: 12.9003 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 3.4 9.4 C disease 0 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.9003 disease 2 +443 Fitness: 12.9003 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 3.4 9.4 C disease 0 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.9003 disease 2 +444 Fitness: 12.9003 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 3.4 9.4 C disease 0 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.9003 disease 2 +445 Fitness: 6.1351 Genotype: Fch1: A coadaptive 5.4 2.3 B coadaptive 1.8 3.3 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.1351 disease 3 +446 Fitness: 6.1351 Genotype: Fch1: A coadaptive 5.4 2.3 B coadaptive 1.8 3.3 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.1351 disease 3 +447 Fitness: 6.1351 Genotype: Fch1: A coadaptive 5.4 2.3 B coadaptive 1.8 3.3 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.1351 disease 3 +448 Fitness: 9.61286 Genotype: Fch1: A coadaptive 9 6.6 B coadaptive 9.7 0.6 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.61286 disease 2.5 +449 Fitness: 9.61286 Genotype: Fch1: A coadaptive 9 6.6 B coadaptive 9.7 0.6 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.61286 disease 2.5 +450 Fitness: 9.61286 Genotype: Fch1: A coadaptive 9 6.6 B coadaptive 9.7 0.6 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.61286 disease 2.5 +451 Fitness: 10.8514 Genotype: Fch1: A coadaptive 7.5 8.6 B coadaptive 8.9 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.8514 disease 3 +452 Fitness: 10.8514 Genotype: Fch1: A coadaptive 7.5 8.6 B coadaptive 8.9 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.8514 disease 3 +453 Fitness: 10.8514 Genotype: Fch1: A coadaptive 7.5 8.6 B coadaptive 8.9 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.8514 disease 3 +454 Fitness: 9.24406 Genotype: Fch1: A coadaptive 10 8.1 B coadaptive 7.5 9.4 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.24406 disease 2.5 +455 Fitness: 9.24406 Genotype: Fch1: A coadaptive 10 8.1 B coadaptive 7.5 9.4 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.24406 disease 2.5 +456 Fitness: 9.24406 Genotype: Fch1: A coadaptive 10 8.1 B coadaptive 7.5 9.4 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.24406 disease 2.5 +457 Fitness: 12.523 Genotype: Fch1: A coadaptive 3.7 6.1 B coadaptive 5.4 4.9 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.523 disease 3.5 +458 Fitness: 12.523 Genotype: Fch1: A coadaptive 3.7 6.1 B coadaptive 5.4 4.9 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.523 disease 3.5 +459 Fitness: 12.523 Genotype: Fch1: A coadaptive 3.7 6.1 B coadaptive 5.4 4.9 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.523 disease 3.5 +460 Fitness: 11.5003 Genotype: Fch1: A coadaptive 6 2.7 B coadaptive 4.7 6 C disease 0 0.5 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.5003 disease 2.5 +461 Fitness: 11.5003 Genotype: Fch1: A coadaptive 6 2.7 B coadaptive 4.7 6 C disease 0 0.5 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.5003 disease 2.5 +462 Fitness: 11.5003 Genotype: Fch1: A coadaptive 6 2.7 B coadaptive 4.7 6 C disease 0 0.5 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.5003 disease 2.5 +463 Fitness: 11.083 Genotype: Fch1: A coadaptive 0.3 9.9 B coadaptive 2.3 6.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.083 disease 2.5 +464 Fitness: 11.083 Genotype: Fch1: A coadaptive 0.3 9.9 B coadaptive 2.3 6.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.083 disease 2.5 +465 Fitness: 11.083 Genotype: Fch1: A coadaptive 0.3 9.9 B coadaptive 2.3 6.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.083 disease 2.5 +466 Fitness: 10.1729 Genotype: Fch1: A coadaptive 2.4 7 B coadaptive 1.5 6.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.1729 disease 2.5 +467 Fitness: 10.1729 Genotype: Fch1: A coadaptive 2.4 7 B coadaptive 1.5 6.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.1729 disease 2.5 +468 Fitness: 10.1729 Genotype: Fch1: A coadaptive 2.4 7 B coadaptive 1.5 6.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.1729 disease 2.5 +469 Fitness: 3.58711 Genotype: Fch1: A coadaptive 7.3 4.4 B coadaptive 0.1 4.8 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.58711 disease 2.5 +470 Fitness: 3.58711 Genotype: Fch1: A coadaptive 7.3 4.4 B coadaptive 0.1 4.8 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.58711 disease 2.5 +471 Fitness: 3.58711 Genotype: Fch1: A coadaptive 7.3 4.4 B coadaptive 0.1 4.8 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.58711 disease 2.5 +472 Fitness: 11.8705 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 4.7 4.3 C disease 1 1 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 11.8705 disease 4 +473 Fitness: 11.8705 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 4.7 4.3 C disease 1 1 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 11.8705 disease 4 +474 Fitness: 11.8705 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 4.7 4.3 C disease 1 1 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 11.8705 disease 4 +475 Fitness: 4.8344 Genotype: Fch1: A coadaptive 7.3 5.1 B coadaptive 9.8 9 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.8344 disease 4 +476 Fitness: 4.8344 Genotype: Fch1: A coadaptive 7.3 5.1 B coadaptive 9.8 9 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.8344 disease 4 +477 Fitness: 4.8344 Genotype: Fch1: A coadaptive 7.3 5.1 B coadaptive 9.8 9 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.8344 disease 4 +478 Fitness: 9.05025 Genotype: Fch1: A coadaptive 9.6 1.7 B coadaptive 8.5 8.2 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.05025 disease 3 +479 Fitness: 9.05025 Genotype: Fch1: A coadaptive 9.6 1.7 B coadaptive 8.5 8.2 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.05025 disease 3 +480 Fitness: 9.05025 Genotype: Fch1: A coadaptive 9.6 1.7 B coadaptive 8.5 8.2 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.05025 disease 3 +481 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 0.3 B coadaptive 8.7 7.1 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +482 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 0.3 B coadaptive 8.7 7.1 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +483 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 0.3 B coadaptive 8.7 7.1 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +484 Fitness: 8.18225 Genotype: Fch1: A coadaptive 7.5 9.4 B coadaptive 3 8.1 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 8.18225 disease 4 +485 Fitness: 8.18225 Genotype: Fch1: A coadaptive 7.5 9.4 B coadaptive 3 8.1 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 8.18225 disease 4 +486 Fitness: 8.18225 Genotype: Fch1: A coadaptive 7.5 9.4 B coadaptive 3 8.1 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 8.18225 disease 4 +487 Fitness: 7.11905 Genotype: Fch1: A coadaptive 8.7 5.2 B coadaptive 1.4 6.3 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 7.11905 disease 2.5 +488 Fitness: 7.11905 Genotype: Fch1: A coadaptive 8.7 5.2 B coadaptive 1.4 6.3 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 7.11905 disease 2.5 +489 Fitness: 7.11905 Genotype: Fch1: A coadaptive 8.7 5.2 B coadaptive 1.4 6.3 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 7.11905 disease 2.5 +490 Fitness: 4.96235 Genotype: Fch1: A coadaptive 2.2 2.7 B coadaptive 3.8 1.7 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.96235 disease 4 +491 Fitness: 4.96235 Genotype: Fch1: A coadaptive 2.2 2.7 B coadaptive 3.8 1.7 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.96235 disease 4 +492 Fitness: 4.96235 Genotype: Fch1: A coadaptive 2.2 2.7 B coadaptive 3.8 1.7 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.96235 disease 4 +493 Fitness: 12.9003 Genotype: Fch1: A coadaptive 3.1 9.7 B coadaptive 2.1 8.1 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9003 disease 2 +494 Fitness: 12.9003 Genotype: Fch1: A coadaptive 3.1 9.7 B coadaptive 2.1 8.1 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9003 disease 2 +495 Fitness: 12.9003 Genotype: Fch1: A coadaptive 3.1 9.7 B coadaptive 2.1 8.1 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9003 disease 2 +496 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 9 B coadaptive 1.3 0.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +497 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 9 B coadaptive 1.3 0.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +498 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 9 B coadaptive 1.3 0.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +499 Fitness: 4.29519 Genotype: Fch1: A coadaptive 9.9 2.7 B coadaptive 2.9 2.8 C disease 0 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.29519 disease 4 +500 Fitness: 4.29519 Genotype: Fch1: A coadaptive 9.9 2.7 B coadaptive 2.9 2.8 C disease 0 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.29519 disease 4 +501 Fitness: 4.29519 Genotype: Fch1: A coadaptive 9.9 2.7 B coadaptive 2.9 2.8 C disease 0 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.29519 disease 4 +502 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 8.4 4.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +503 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 8.4 4.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +504 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 8.4 4.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +505 Fitness: 8.74225 Genotype: Fch1: A coadaptive 2 4.8 B coadaptive 6.7 3.5 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.74225 disease 2.5 +506 Fitness: 8.74225 Genotype: Fch1: A coadaptive 2 4.8 B coadaptive 6.7 3.5 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.74225 disease 2.5 +507 Fitness: 8.74225 Genotype: Fch1: A coadaptive 2 4.8 B coadaptive 6.7 3.5 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.74225 disease 2.5 +508 Fitness: 0.800531 Genotype: Fch1: A coadaptive 5.1 0.8 B coadaptive 4.9 9.7 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0.800531 disease 1.5 +509 Fitness: 0.800531 Genotype: Fch1: A coadaptive 5.1 0.8 B coadaptive 4.9 9.7 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0.800531 disease 1.5 +510 Fitness: 0.800531 Genotype: Fch1: A coadaptive 5.1 0.8 B coadaptive 4.9 9.7 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0.800531 disease 1.5 +511 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 5.5 B coadaptive 7.7 9.9 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +512 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 5.5 B coadaptive 7.7 9.9 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +513 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 5.5 B coadaptive 7.7 9.9 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +514 Fitness: 13.4326 Genotype: Fch1: A coadaptive 6.9 6.9 B coadaptive 9 6.8 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.4326 disease 3.5 +515 Fitness: 13.4326 Genotype: Fch1: A coadaptive 6.9 6.9 B coadaptive 9 6.8 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.4326 disease 3.5 +516 Fitness: 13.4326 Genotype: Fch1: A coadaptive 6.9 6.9 B coadaptive 9 6.8 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.4326 disease 3.5 +517 Fitness: 10.8463 Genotype: Fch1: A coadaptive 5.2 9.6 B coadaptive 7.3 2.9 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.8463 disease 3.5 +518 Fitness: 10.8463 Genotype: Fch1: A coadaptive 5.2 9.6 B coadaptive 7.3 2.9 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.8463 disease 3.5 +519 Fitness: 10.8463 Genotype: Fch1: A coadaptive 5.2 9.6 B coadaptive 7.3 2.9 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.8463 disease 3.5 +520 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 7.2 B coadaptive 3.5 0.2 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +521 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 7.2 B coadaptive 3.5 0.2 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +522 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 7.2 B coadaptive 3.5 0.2 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +523 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 9.6 B coadaptive 1.9 0.6 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +524 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 9.6 B coadaptive 1.9 0.6 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +525 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 9.6 B coadaptive 1.9 0.6 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +526 Fitness: 7.9992 Genotype: Fch1: A coadaptive 7.8 3.8 B coadaptive 0.1 6.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.9992 disease 3 +527 Fitness: 7.9992 Genotype: Fch1: A coadaptive 7.8 3.8 B coadaptive 0.1 6.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.9992 disease 3 +528 Fitness: 7.9992 Genotype: Fch1: A coadaptive 7.8 3.8 B coadaptive 0.1 6.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.9992 disease 3 +529 Fitness: 8.25608 Genotype: Fch1: A coadaptive 7.1 5.7 B coadaptive 7.3 0.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.25608 disease 4 +530 Fitness: 8.25608 Genotype: Fch1: A coadaptive 7.1 5.7 B coadaptive 7.3 0.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.25608 disease 4 +531 Fitness: 8.25608 Genotype: Fch1: A coadaptive 7.1 5.7 B coadaptive 7.3 0.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.25608 disease 4 +532 Fitness: 0 Genotype: Fch1: A coadaptive 6 6.3 B coadaptive 1.3 2 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +533 Fitness: 0 Genotype: Fch1: A coadaptive 6 6.3 B coadaptive 1.3 2 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +534 Fitness: 0 Genotype: Fch1: A coadaptive 6 6.3 B coadaptive 1.3 2 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +535 Fitness: 4.05896 Genotype: Fch1: A coadaptive 0.6 4.6 B coadaptive 3.1 8.8 C disease 1 1 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.05896 disease 3 +536 Fitness: 4.05896 Genotype: Fch1: A coadaptive 0.6 4.6 B coadaptive 3.1 8.8 C disease 1 1 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.05896 disease 3 +537 Fitness: 4.05896 Genotype: Fch1: A coadaptive 0.6 4.6 B coadaptive 3.1 8.8 C disease 1 1 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.05896 disease 3 +538 Fitness: 3.07046 Genotype: Fch1: A coadaptive 7.3 3 B coadaptive 9 9 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.07046 disease 3.5 +539 Fitness: 3.07046 Genotype: Fch1: A coadaptive 7.3 3 B coadaptive 9 9 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.07046 disease 3.5 +540 Fitness: 3.07046 Genotype: Fch1: A coadaptive 7.3 3 B coadaptive 9 9 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.07046 disease 3.5 +541 Fitness: 9.22578 Genotype: Fch1: A coadaptive 3.4 6.6 B coadaptive 5.8 9.7 C disease 0 1 D disease 0 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.22578 disease 3.5 +542 Fitness: 9.22578 Genotype: Fch1: A coadaptive 3.4 6.6 B coadaptive 5.8 9.7 C disease 0 1 D disease 0 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.22578 disease 3.5 +543 Fitness: 9.22578 Genotype: Fch1: A coadaptive 3.4 6.6 B coadaptive 5.8 9.7 C disease 0 1 D disease 0 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.22578 disease 3.5 +544 Fitness: 11.1848 Genotype: Fch1: A coadaptive 6.9 1.6 B coadaptive 7.6 2.5 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.1848 disease 3 +545 Fitness: 11.1848 Genotype: Fch1: A coadaptive 6.9 1.6 B coadaptive 7.6 2.5 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.1848 disease 3 +546 Fitness: 11.1848 Genotype: Fch1: A coadaptive 6.9 1.6 B coadaptive 7.6 2.5 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.1848 disease 3 +547 Fitness: 1.60655 Genotype: Fch1: A coadaptive 2.1 0.7 B coadaptive 3.6 5.4 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 1.60655 disease 3 +548 Fitness: 1.60655 Genotype: Fch1: A coadaptive 2.1 0.7 B coadaptive 3.6 5.4 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 1.60655 disease 3 +549 Fitness: 1.60655 Genotype: Fch1: A coadaptive 2.1 0.7 B coadaptive 3.6 5.4 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 1.60655 disease 3 +550 Fitness: 13.7693 Genotype: Fch1: A coadaptive 7.2 6.7 B coadaptive 6.2 5.4 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.7693 disease 3.5 +551 Fitness: 13.7693 Genotype: Fch1: A coadaptive 7.2 6.7 B coadaptive 6.2 5.4 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.7693 disease 3.5 +552 Fitness: 13.7693 Genotype: Fch1: A coadaptive 7.2 6.7 B coadaptive 6.2 5.4 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.7693 disease 3.5 +553 Fitness: 4.76488 Genotype: Fch1: A coadaptive 2 4.2 B coadaptive 4.1 9 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.76488 disease 2 +554 Fitness: 4.76488 Genotype: Fch1: A coadaptive 2 4.2 B coadaptive 4.1 9 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.76488 disease 2 +555 Fitness: 4.76488 Genotype: Fch1: A coadaptive 2 4.2 B coadaptive 4.1 9 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.76488 disease 2 +556 Fitness: 8.35875 Genotype: Fch1: A coadaptive 0.9 7.5 B coadaptive 1.7 4.9 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.35875 disease 3.5 +557 Fitness: 8.35875 Genotype: Fch1: A coadaptive 0.9 7.5 B coadaptive 1.7 4.9 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.35875 disease 3.5 +558 Fitness: 8.35875 Genotype: Fch1: A coadaptive 0.9 7.5 B coadaptive 1.7 4.9 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.35875 disease 3.5 +559 Fitness: 12.4463 Genotype: Fch1: A coadaptive 1.9 8 B coadaptive 3.7 9.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.4463 disease 2.5 +560 Fitness: 12.4463 Genotype: Fch1: A coadaptive 1.9 8 B coadaptive 3.7 9.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.4463 disease 2.5 +561 Fitness: 12.4463 Genotype: Fch1: A coadaptive 1.9 8 B coadaptive 3.7 9.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.4463 disease 2.5 +562 Fitness: 3.71625 Genotype: Fch1: A coadaptive 0.4 8.2 B coadaptive 7.1 9.3 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 3.71625 disease 3.5 +563 Fitness: 3.71625 Genotype: Fch1: A coadaptive 0.4 8.2 B coadaptive 7.1 9.3 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 3.71625 disease 3.5 +564 Fitness: 3.71625 Genotype: Fch1: A coadaptive 0.4 8.2 B coadaptive 7.1 9.3 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 3.71625 disease 3.5 +565 Fitness: 9.89845 Genotype: Fch1: A coadaptive 7.3 4.3 B coadaptive 7.5 0.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.89845 disease 2 +566 Fitness: 9.89845 Genotype: Fch1: A coadaptive 7.3 4.3 B coadaptive 7.5 0.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.89845 disease 2 +567 Fitness: 9.89845 Genotype: Fch1: A coadaptive 7.3 4.3 B coadaptive 7.5 0.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.89845 disease 2 +568 Fitness: 9.93381 Genotype: Fch1: A coadaptive 1.5 9.3 B coadaptive 5.9 10 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.93381 disease 2 +569 Fitness: 9.93381 Genotype: Fch1: A coadaptive 1.5 9.3 B coadaptive 5.9 10 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.93381 disease 2 +570 Fitness: 9.93381 Genotype: Fch1: A coadaptive 1.5 9.3 B coadaptive 5.9 10 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.93381 disease 2 +571 Fitness: 11.8622 Genotype: Fch1: A coadaptive 2.2 6.8 B coadaptive 1.1 9.6 C disease 0.5 1 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.8622 disease 3.5 +572 Fitness: 11.8622 Genotype: Fch1: A coadaptive 2.2 6.8 B coadaptive 1.1 9.6 C disease 0.5 1 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.8622 disease 3.5 +573 Fitness: 11.8622 Genotype: Fch1: A coadaptive 2.2 6.8 B coadaptive 1.1 9.6 C disease 0.5 1 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.8622 disease 3.5 +574 Fitness: 8.10395 Genotype: Fch1: A coadaptive 6.8 7.2 B coadaptive 3.5 4.7 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.10395 disease 3.5 +575 Fitness: 8.10395 Genotype: Fch1: A coadaptive 6.8 7.2 B coadaptive 3.5 4.7 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.10395 disease 3.5 +576 Fitness: 8.10395 Genotype: Fch1: A coadaptive 6.8 7.2 B coadaptive 3.5 4.7 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.10395 disease 3.5 +577 Fitness: 11.0421 Genotype: Fch1: A coadaptive 6.4 2.7 B coadaptive 6.9 6.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.0421 disease 3 +578 Fitness: 11.0421 Genotype: Fch1: A coadaptive 6.4 2.7 B coadaptive 6.9 6.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.0421 disease 3 +579 Fitness: 11.0421 Genotype: Fch1: A coadaptive 6.4 2.7 B coadaptive 6.9 6.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.0421 disease 3 +580 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 0.1 0.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +581 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 0.1 0.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +582 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 0.1 0.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +583 Fitness: 14.337 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 10 2.3 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 14.337 disease 2 +584 Fitness: 14.337 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 10 2.3 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 14.337 disease 2 +585 Fitness: 14.337 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 10 2.3 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 14.337 disease 2 +586 Fitness: 10.2747 Genotype: Fch1: A coadaptive 5.9 1.9 B coadaptive 5.8 4.1 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.2747 disease 3 +587 Fitness: 10.2747 Genotype: Fch1: A coadaptive 5.9 1.9 B coadaptive 5.8 4.1 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.2747 disease 3 +588 Fitness: 10.2747 Genotype: Fch1: A coadaptive 5.9 1.9 B coadaptive 5.8 4.1 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.2747 disease 3 +589 Fitness: 10.7026 Genotype: Fch1: A coadaptive 5.3 5.5 B coadaptive 6.9 8.6 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 10.7026 disease 2.5 +590 Fitness: 10.7026 Genotype: Fch1: A coadaptive 5.3 5.5 B coadaptive 6.9 8.6 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 10.7026 disease 2.5 +591 Fitness: 10.7026 Genotype: Fch1: A coadaptive 5.3 5.5 B coadaptive 6.9 8.6 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 10.7026 disease 2.5 +592 Fitness: 3.81252 Genotype: Fch1: A coadaptive 9.5 5.4 B coadaptive 5.9 1.3 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 3.81252 disease 2 +593 Fitness: 3.81252 Genotype: Fch1: A coadaptive 9.5 5.4 B coadaptive 5.9 1.3 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 3.81252 disease 2 +594 Fitness: 3.81252 Genotype: Fch1: A coadaptive 9.5 5.4 B coadaptive 5.9 1.3 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 3.81252 disease 2 +595 Fitness: 9.99686 Genotype: Fch1: A coadaptive 0.3 7.3 B coadaptive 6.4 3.9 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.99686 disease 3 +596 Fitness: 9.99686 Genotype: Fch1: A coadaptive 0.3 7.3 B coadaptive 6.4 3.9 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.99686 disease 3 +597 Fitness: 9.99686 Genotype: Fch1: A coadaptive 0.3 7.3 B coadaptive 6.4 3.9 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.99686 disease 3 +598 Fitness: 6.2944 Genotype: Fch1: A coadaptive 2.3 9.3 B coadaptive 2 4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 6.2944 disease 3.5 +599 Fitness: 6.2944 Genotype: Fch1: A coadaptive 2.3 9.3 B coadaptive 2 4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 6.2944 disease 3.5 +600 Fitness: 6.2944 Genotype: Fch1: A coadaptive 2.3 9.3 B coadaptive 2 4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 6.2944 disease 3.5 +601 Fitness: 12.9148 Genotype: Fch1: A coadaptive 4.6 5.8 B coadaptive 9.5 3.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 12.9148 disease 3.5 +602 Fitness: 12.9148 Genotype: Fch1: A coadaptive 4.6 5.8 B coadaptive 9.5 3.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 12.9148 disease 3.5 +603 Fitness: 12.9148 Genotype: Fch1: A coadaptive 4.6 5.8 B coadaptive 9.5 3.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 12.9148 disease 3.5 +604 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 1.9 B coadaptive 8.8 2.9 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +605 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 1.9 B coadaptive 8.8 2.9 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +606 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 1.9 B coadaptive 8.8 2.9 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +607 Fitness: 5.3362 Genotype: Fch1: A coadaptive 3.3 6.9 B coadaptive 0.9 4.1 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 5.3362 disease 3.5 +608 Fitness: 5.3362 Genotype: Fch1: A coadaptive 3.3 6.9 B coadaptive 0.9 4.1 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 5.3362 disease 3.5 +609 Fitness: 5.3362 Genotype: Fch1: A coadaptive 3.3 6.9 B coadaptive 0.9 4.1 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 5.3362 disease 3.5 +610 Fitness: 7.28135 Genotype: Fch1: A coadaptive 1.2 4.6 B coadaptive 7.2 1.6 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.28135 disease 3.5 +611 Fitness: 7.28135 Genotype: Fch1: A coadaptive 1.2 4.6 B coadaptive 7.2 1.6 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.28135 disease 3.5 +612 Fitness: 7.28135 Genotype: Fch1: A coadaptive 1.2 4.6 B coadaptive 7.2 1.6 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.28135 disease 3.5 +613 Fitness: 2.51533 Genotype: Fch1: A coadaptive 2.1 7.6 B coadaptive 1.1 2.4 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.51533 disease 2.5 +614 Fitness: 2.51533 Genotype: Fch1: A coadaptive 2.1 7.6 B coadaptive 1.1 2.4 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.51533 disease 2.5 +615 Fitness: 2.51533 Genotype: Fch1: A coadaptive 2.1 7.6 B coadaptive 1.1 2.4 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.51533 disease 2.5 +616 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.2 B coadaptive 3.6 9.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +617 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.2 B coadaptive 3.6 9.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +618 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.2 B coadaptive 3.6 9.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +619 Fitness: 3.04613 Genotype: Fch1: A coadaptive 1.5 1.7 B coadaptive 3.7 1.4 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.04613 disease 1.5 +620 Fitness: 3.04613 Genotype: Fch1: A coadaptive 1.5 1.7 B coadaptive 3.7 1.4 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.04613 disease 1.5 +621 Fitness: 3.04613 Genotype: Fch1: A coadaptive 1.5 1.7 B coadaptive 3.7 1.4 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.04613 disease 1.5 +622 Fitness: 14.383 Genotype: Fch1: A coadaptive 3.8 9.3 B coadaptive 6.2 8.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.383 disease 3.5 +623 Fitness: 14.383 Genotype: Fch1: A coadaptive 3.8 9.3 B coadaptive 6.2 8.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.383 disease 3.5 +624 Fitness: 14.383 Genotype: Fch1: A coadaptive 3.8 9.3 B coadaptive 6.2 8.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.383 disease 3.5 +625 Fitness: 4.14809 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 1.2 2.7 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 4.14809 disease 2.5 +626 Fitness: 4.14809 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 1.2 2.7 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 4.14809 disease 2.5 +627 Fitness: 4.14809 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 1.2 2.7 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 4.14809 disease 2.5 +628 Fitness: 4.68155 Genotype: Fch1: A coadaptive 1.4 3.8 B coadaptive 2.9 8.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.68155 disease 2 +629 Fitness: 4.68155 Genotype: Fch1: A coadaptive 1.4 3.8 B coadaptive 2.9 8.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.68155 disease 2 +630 Fitness: 4.68155 Genotype: Fch1: A coadaptive 1.4 3.8 B coadaptive 2.9 8.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.68155 disease 2 +631 Fitness: 12.6976 Genotype: Fch1: A coadaptive 8.3 4.4 B coadaptive 7.9 2.1 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.6976 disease 3.5 +632 Fitness: 12.6976 Genotype: Fch1: A coadaptive 8.3 4.4 B coadaptive 7.9 2.1 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.6976 disease 3.5 +633 Fitness: 12.6976 Genotype: Fch1: A coadaptive 8.3 4.4 B coadaptive 7.9 2.1 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.6976 disease 3.5 +634 Fitness: 3.21575 Genotype: Fch1: A coadaptive 1.8 1.4 B coadaptive 3.1 2.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.21575 disease 3 +635 Fitness: 3.21575 Genotype: Fch1: A coadaptive 1.8 1.4 B coadaptive 3.1 2.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.21575 disease 3 +636 Fitness: 3.21575 Genotype: Fch1: A coadaptive 1.8 1.4 B coadaptive 3.1 2.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.21575 disease 3 +637 Fitness: 10.5705 Genotype: Fch1: A coadaptive 6.7 1.3 B coadaptive 9.9 0.4 C disease 0 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.5705 disease 3.5 +638 Fitness: 10.5705 Genotype: Fch1: A coadaptive 6.7 1.3 B coadaptive 9.9 0.4 C disease 0 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.5705 disease 3.5 +639 Fitness: 10.5705 Genotype: Fch1: A coadaptive 6.7 1.3 B coadaptive 9.9 0.4 C disease 0 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.5705 disease 3.5 +640 Fitness: 2.84737 Genotype: Fch1: A coadaptive 7.5 1 B coadaptive 7.9 8.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.84737 disease 2 +641 Fitness: 2.84737 Genotype: Fch1: A coadaptive 7.5 1 B coadaptive 7.9 8.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.84737 disease 2 +642 Fitness: 2.84737 Genotype: Fch1: A coadaptive 7.5 1 B coadaptive 7.9 8.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.84737 disease 2 +643 Fitness: 10.4414 Genotype: Fch1: A coadaptive 4.7 8.8 B coadaptive 6.4 2.6 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.4414 disease 3.5 +644 Fitness: 10.4414 Genotype: Fch1: A coadaptive 4.7 8.8 B coadaptive 6.4 2.6 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.4414 disease 3.5 +645 Fitness: 10.4414 Genotype: Fch1: A coadaptive 4.7 8.8 B coadaptive 6.4 2.6 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.4414 disease 3.5 +646 Fitness: 9.00867 Genotype: Fch1: A coadaptive 7.1 9.9 B coadaptive 3.5 8.2 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.00867 disease 2.5 +647 Fitness: 9.00867 Genotype: Fch1: A coadaptive 7.1 9.9 B coadaptive 3.5 8.2 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.00867 disease 2.5 +648 Fitness: 9.00867 Genotype: Fch1: A coadaptive 7.1 9.9 B coadaptive 3.5 8.2 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.00867 disease 2.5 +649 Fitness: 11.0313 Genotype: Fch1: A coadaptive 8.5 8 B coadaptive 8.6 3.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.0313 disease 3 +650 Fitness: 11.0313 Genotype: Fch1: A coadaptive 8.5 8 B coadaptive 8.6 3.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.0313 disease 3 +651 Fitness: 11.0313 Genotype: Fch1: A coadaptive 8.5 8 B coadaptive 8.6 3.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.0313 disease 3 +652 Fitness: 7.14905 Genotype: Fch1: A coadaptive 5.4 1.6 B coadaptive 6 6.8 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.14905 disease 2 +653 Fitness: 7.14905 Genotype: Fch1: A coadaptive 5.4 1.6 B coadaptive 6 6.8 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.14905 disease 2 +654 Fitness: 7.14905 Genotype: Fch1: A coadaptive 5.4 1.6 B coadaptive 6 6.8 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.14905 disease 2 +655 Fitness: 8.78029 Genotype: Fch1: A coadaptive 8.8 7.4 B coadaptive 8.9 9.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.78029 disease 3.5 +656 Fitness: 8.78029 Genotype: Fch1: A coadaptive 8.8 7.4 B coadaptive 8.9 9.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.78029 disease 3.5 +657 Fitness: 8.78029 Genotype: Fch1: A coadaptive 8.8 7.4 B coadaptive 8.9 9.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.78029 disease 3.5 +658 Fitness: 12.1224 Genotype: Fch1: A coadaptive 6.9 2.4 B coadaptive 3.3 7.1 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 12.1224 disease 3 +659 Fitness: 12.1224 Genotype: Fch1: A coadaptive 6.9 2.4 B coadaptive 3.3 7.1 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 12.1224 disease 3 +660 Fitness: 12.1224 Genotype: Fch1: A coadaptive 6.9 2.4 B coadaptive 3.3 7.1 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 12.1224 disease 3 +661 Fitness: 7.1809 Genotype: Fch1: A coadaptive 0 8.6 B coadaptive 7.5 7.5 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 7.1809 disease 3.5 +662 Fitness: 7.1809 Genotype: Fch1: A coadaptive 0 8.6 B coadaptive 7.5 7.5 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 7.1809 disease 3.5 +663 Fitness: 7.1809 Genotype: Fch1: A coadaptive 0 8.6 B coadaptive 7.5 7.5 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 7.1809 disease 3.5 +664 Fitness: 4.53363 Genotype: Fch1: A coadaptive 8.5 7.8 B coadaptive 3.9 4.9 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.53363 disease 3 +665 Fitness: 4.53363 Genotype: Fch1: A coadaptive 8.5 7.8 B coadaptive 3.9 4.9 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.53363 disease 3 +666 Fitness: 4.53363 Genotype: Fch1: A coadaptive 8.5 7.8 B coadaptive 3.9 4.9 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.53363 disease 3 +667 Fitness: 6.11432 Genotype: Fch1: A coadaptive 3.9 1.4 B coadaptive 3.1 3.7 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.11432 disease 2 +668 Fitness: 6.11432 Genotype: Fch1: A coadaptive 3.9 1.4 B coadaptive 3.1 3.7 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.11432 disease 2 +669 Fitness: 6.11432 Genotype: Fch1: A coadaptive 3.9 1.4 B coadaptive 3.1 3.7 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.11432 disease 2 +670 Fitness: 1.28935 Genotype: Fch1: A coadaptive 7.7 9.3 B coadaptive 6.5 1.9 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 1.28935 disease 2.5 +671 Fitness: 1.28935 Genotype: Fch1: A coadaptive 7.7 9.3 B coadaptive 6.5 1.9 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 1.28935 disease 2.5 +672 Fitness: 1.28935 Genotype: Fch1: A coadaptive 7.7 9.3 B coadaptive 6.5 1.9 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 1.28935 disease 2.5 +673 Fitness: 10.2434 Genotype: Fch1: A coadaptive 4.7 3.9 B coadaptive 3.4 9.6 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.2434 disease 3.5 +674 Fitness: 10.2434 Genotype: Fch1: A coadaptive 4.7 3.9 B coadaptive 3.4 9.6 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.2434 disease 3.5 +675 Fitness: 10.2434 Genotype: Fch1: A coadaptive 4.7 3.9 B coadaptive 3.4 9.6 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.2434 disease 3.5 +676 Fitness: 14.1889 Genotype: Fch1: A coadaptive 6.8 8.3 B coadaptive 6.5 7.6 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 14.1889 disease 3 +677 Fitness: 14.1889 Genotype: Fch1: A coadaptive 6.8 8.3 B coadaptive 6.5 7.6 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 14.1889 disease 3 +678 Fitness: 14.1889 Genotype: Fch1: A coadaptive 6.8 8.3 B coadaptive 6.5 7.6 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 14.1889 disease 3 +679 Fitness: 8.97511 Genotype: Fch1: A coadaptive 4.5 2.4 B coadaptive 8.5 1.2 C disease 1 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.97511 disease 4 +680 Fitness: 8.97511 Genotype: Fch1: A coadaptive 4.5 2.4 B coadaptive 8.5 1.2 C disease 1 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.97511 disease 4 +681 Fitness: 8.97511 Genotype: Fch1: A coadaptive 4.5 2.4 B coadaptive 8.5 1.2 C disease 1 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.97511 disease 4 +682 Fitness: 7.25375 Genotype: Fch1: A coadaptive 2.2 3.6 B coadaptive 2.4 6.8 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.25375 disease 3 +683 Fitness: 7.25375 Genotype: Fch1: A coadaptive 2.2 3.6 B coadaptive 2.4 6.8 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.25375 disease 3 +684 Fitness: 7.25375 Genotype: Fch1: A coadaptive 2.2 3.6 B coadaptive 2.4 6.8 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.25375 disease 3 +685 Fitness: 9.51851 Genotype: Fch1: A coadaptive 0.4 7.6 B coadaptive 0.1 7.8 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.51851 disease 3.5 +686 Fitness: 9.51851 Genotype: Fch1: A coadaptive 0.4 7.6 B coadaptive 0.1 7.8 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.51851 disease 3.5 +687 Fitness: 9.51851 Genotype: Fch1: A coadaptive 0.4 7.6 B coadaptive 0.1 7.8 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.51851 disease 3.5 +688 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 10 B coadaptive 2.2 1.4 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +689 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 10 B coadaptive 2.2 1.4 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +690 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 10 B coadaptive 2.2 1.4 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +691 Fitness: 13.9328 Genotype: Fch1: A coadaptive 5.7 5.4 B coadaptive 7.2 5.3 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.9328 disease 2 +692 Fitness: 13.9328 Genotype: Fch1: A coadaptive 5.7 5.4 B coadaptive 7.2 5.3 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.9328 disease 2 +693 Fitness: 13.9328 Genotype: Fch1: A coadaptive 5.7 5.4 B coadaptive 7.2 5.3 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.9328 disease 2 +694 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.1 B coadaptive 4.1 5 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +695 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.1 B coadaptive 4.1 5 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +696 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.1 B coadaptive 4.1 5 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +697 Fitness: 12.4937 Genotype: Fch1: A coadaptive 3.5 6.6 B coadaptive 1.2 8.7 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.4937 disease 2.5 +698 Fitness: 12.4937 Genotype: Fch1: A coadaptive 3.5 6.6 B coadaptive 1.2 8.7 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.4937 disease 2.5 +699 Fitness: 12.4937 Genotype: Fch1: A coadaptive 3.5 6.6 B coadaptive 1.2 8.7 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.4937 disease 2.5 +700 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 9.4 B coadaptive 0.2 2.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +701 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 9.4 B coadaptive 0.2 2.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +702 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 9.4 B coadaptive 0.2 2.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +703 Fitness: 10.0299 Genotype: Fch1: A coadaptive 5.5 7.7 B coadaptive 2.5 6.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.0299 disease 2 +704 Fitness: 10.0299 Genotype: Fch1: A coadaptive 5.5 7.7 B coadaptive 2.5 6.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.0299 disease 2 +705 Fitness: 10.0299 Genotype: Fch1: A coadaptive 5.5 7.7 B coadaptive 2.5 6.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.0299 disease 2 +706 Fitness: 13.7984 Genotype: Fch1: A coadaptive 9.4 1.8 B coadaptive 7.3 3.9 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.7984 disease 2.5 +707 Fitness: 13.7984 Genotype: Fch1: A coadaptive 9.4 1.8 B coadaptive 7.3 3.9 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.7984 disease 2.5 +708 Fitness: 13.7984 Genotype: Fch1: A coadaptive 9.4 1.8 B coadaptive 7.3 3.9 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.7984 disease 2.5 +709 Fitness: 10.7407 Genotype: Fch1: A coadaptive 2.7 5.6 B coadaptive 6.3 5.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.7407 disease 4 +710 Fitness: 10.7407 Genotype: Fch1: A coadaptive 2.7 5.6 B coadaptive 6.3 5.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.7407 disease 4 +711 Fitness: 10.7407 Genotype: Fch1: A coadaptive 2.7 5.6 B coadaptive 6.3 5.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.7407 disease 4 +712 Fitness: 3.90943 Genotype: Fch1: A coadaptive 7.4 0.5 B coadaptive 0.8 2.9 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 3.90943 disease 2.5 +713 Fitness: 3.90943 Genotype: Fch1: A coadaptive 7.4 0.5 B coadaptive 0.8 2.9 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 3.90943 disease 2.5 +714 Fitness: 3.90943 Genotype: Fch1: A coadaptive 7.4 0.5 B coadaptive 0.8 2.9 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 3.90943 disease 2.5 +715 Fitness: 4.84555 Genotype: Fch1: A coadaptive 3.7 7.1 B coadaptive 3.7 1.3 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.84555 disease 2 +716 Fitness: 4.84555 Genotype: Fch1: A coadaptive 3.7 7.1 B coadaptive 3.7 1.3 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.84555 disease 2 +717 Fitness: 4.84555 Genotype: Fch1: A coadaptive 3.7 7.1 B coadaptive 3.7 1.3 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.84555 disease 2 +718 Fitness: 1.35095 Genotype: Fch1: A coadaptive 0.9 1.7 B coadaptive 2.4 6.4 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 1.35095 disease 2 +719 Fitness: 1.35095 Genotype: Fch1: A coadaptive 0.9 1.7 B coadaptive 2.4 6.4 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 1.35095 disease 2 +720 Fitness: 1.35095 Genotype: Fch1: A coadaptive 0.9 1.7 B coadaptive 2.4 6.4 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 1.35095 disease 2 +721 Fitness: 11.617 Genotype: Fch1: A coadaptive 0.1 8.7 B coadaptive 10 0.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.617 disease 3.5 +722 Fitness: 11.617 Genotype: Fch1: A coadaptive 0.1 8.7 B coadaptive 10 0.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.617 disease 3.5 +723 Fitness: 11.617 Genotype: Fch1: A coadaptive 0.1 8.7 B coadaptive 10 0.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.617 disease 3.5 +724 Fitness: 4.33657 Genotype: Fch1: A coadaptive 3.2 2.9 B coadaptive 3.6 9.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.33657 disease 2 +725 Fitness: 4.33657 Genotype: Fch1: A coadaptive 3.2 2.9 B coadaptive 3.6 9.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.33657 disease 2 +726 Fitness: 4.33657 Genotype: Fch1: A coadaptive 3.2 2.9 B coadaptive 3.6 9.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.33657 disease 2 +727 Fitness: 4.98971 Genotype: Fch1: A coadaptive 6.2 9 B coadaptive 7.3 0.6 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 4.98971 disease 2 +728 Fitness: 4.98971 Genotype: Fch1: A coadaptive 6.2 9 B coadaptive 7.3 0.6 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 4.98971 disease 2 +729 Fitness: 4.98971 Genotype: Fch1: A coadaptive 6.2 9 B coadaptive 7.3 0.6 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 4.98971 disease 2 +730 Fitness: 9.73632 Genotype: Fch1: A coadaptive 2.5 6.4 B coadaptive 8.1 5.8 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.73632 disease 2 +731 Fitness: 9.73632 Genotype: Fch1: A coadaptive 2.5 6.4 B coadaptive 8.1 5.8 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.73632 disease 2 +732 Fitness: 9.73632 Genotype: Fch1: A coadaptive 2.5 6.4 B coadaptive 8.1 5.8 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.73632 disease 2 +733 Fitness: 3.72498 Genotype: Fch1: A coadaptive 4.2 8.9 B coadaptive 1 4.8 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.72498 disease 2.5 +734 Fitness: 3.72498 Genotype: Fch1: A coadaptive 4.2 8.9 B coadaptive 1 4.8 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.72498 disease 2.5 +735 Fitness: 3.72498 Genotype: Fch1: A coadaptive 4.2 8.9 B coadaptive 1 4.8 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.72498 disease 2.5 +736 Fitness: 11.2091 Genotype: Fch1: A coadaptive 4 4.6 B coadaptive 2.7 8.9 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.2091 disease 2 +737 Fitness: 11.2091 Genotype: Fch1: A coadaptive 4 4.6 B coadaptive 2.7 8.9 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.2091 disease 2 +738 Fitness: 11.2091 Genotype: Fch1: A coadaptive 4 4.6 B coadaptive 2.7 8.9 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.2091 disease 2 +739 Fitness: 0 Genotype: Fch1: A coadaptive 3 0.9 B coadaptive 7.9 5.7 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +740 Fitness: 0 Genotype: Fch1: A coadaptive 3 0.9 B coadaptive 7.9 5.7 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +741 Fitness: 0 Genotype: Fch1: A coadaptive 3 0.9 B coadaptive 7.9 5.7 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +742 Fitness: 12.1872 Genotype: Fch1: A coadaptive 4.5 7.1 B coadaptive 8 1.3 C disease 0.5 0 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.1872 disease 1.5 +743 Fitness: 12.1872 Genotype: Fch1: A coadaptive 4.5 7.1 B coadaptive 8 1.3 C disease 0.5 0 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.1872 disease 1.5 +744 Fitness: 12.1872 Genotype: Fch1: A coadaptive 4.5 7.1 B coadaptive 8 1.3 C disease 0.5 0 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.1872 disease 1.5 +745 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 7.8 B coadaptive 0.4 1 C disease 0 0 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3 +746 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 7.8 B coadaptive 0.4 1 C disease 0 0 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3 +747 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 7.8 B coadaptive 0.4 1 C disease 0 0 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3 +748 Fitness: 6.45552 Genotype: Fch1: A coadaptive 3.7 1.6 B coadaptive 2.3 5.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 6.45552 disease 2.5 +749 Fitness: 6.45552 Genotype: Fch1: A coadaptive 3.7 1.6 B coadaptive 2.3 5.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 6.45552 disease 2.5 +750 Fitness: 6.45552 Genotype: Fch1: A coadaptive 3.7 1.6 B coadaptive 2.3 5.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 6.45552 disease 2.5 +751 Fitness: 13.8879 Genotype: Fch1: A coadaptive 5.4 5.8 B coadaptive 4.4 8.6 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.8879 disease 2 +752 Fitness: 13.8879 Genotype: Fch1: A coadaptive 5.4 5.8 B coadaptive 4.4 8.6 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.8879 disease 2 +753 Fitness: 13.8879 Genotype: Fch1: A coadaptive 5.4 5.8 B coadaptive 4.4 8.6 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.8879 disease 2 +754 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.9 B coadaptive 8.5 4.5 C disease 0 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +755 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.9 B coadaptive 8.5 4.5 C disease 0 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +756 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.9 B coadaptive 8.5 4.5 C disease 0 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +757 Fitness: 7.53497 Genotype: Fch1: A coadaptive 5.1 1.8 B coadaptive 0.7 5.9 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.53497 disease 3.5 +758 Fitness: 7.53497 Genotype: Fch1: A coadaptive 5.1 1.8 B coadaptive 0.7 5.9 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.53497 disease 3.5 +759 Fitness: 7.53497 Genotype: Fch1: A coadaptive 5.1 1.8 B coadaptive 0.7 5.9 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.53497 disease 3.5 +760 Fitness: 7.61905 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 8.1 8.3 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.61905 disease 3.5 +761 Fitness: 7.61905 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 8.1 8.3 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.61905 disease 3.5 +762 Fitness: 7.61905 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 8.1 8.3 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.61905 disease 3.5 +763 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 5.2 B coadaptive 8.6 8.9 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +764 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 5.2 B coadaptive 8.6 8.9 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +765 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 5.2 B coadaptive 8.6 8.9 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +766 Fitness: 8.47792 Genotype: Fch1: A coadaptive 6.5 0.5 B coadaptive 2.7 5 C disease 1 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.47792 disease 4 +767 Fitness: 8.47792 Genotype: Fch1: A coadaptive 6.5 0.5 B coadaptive 2.7 5 C disease 1 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.47792 disease 4 +768 Fitness: 8.47792 Genotype: Fch1: A coadaptive 6.5 0.5 B coadaptive 2.7 5 C disease 1 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.47792 disease 4 +769 Fitness: 0.318732 Genotype: Fch1: A coadaptive 8.6 9.1 B coadaptive 2.4 6.5 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.318732 disease 2.5 +770 Fitness: 0.318732 Genotype: Fch1: A coadaptive 8.6 9.1 B coadaptive 2.4 6.5 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.318732 disease 2.5 +771 Fitness: 0.318732 Genotype: Fch1: A coadaptive 8.6 9.1 B coadaptive 2.4 6.5 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.318732 disease 2.5 +772 Fitness: 5.94082 Genotype: Fch1: A coadaptive 9.5 3.8 B coadaptive 0 6.8 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.94082 disease 3 +773 Fitness: 5.94082 Genotype: Fch1: A coadaptive 9.5 3.8 B coadaptive 0 6.8 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.94082 disease 3 +774 Fitness: 5.94082 Genotype: Fch1: A coadaptive 9.5 3.8 B coadaptive 0 6.8 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.94082 disease 3 +775 Fitness: 1.79297 Genotype: Fch1: A coadaptive 1 1.1 B coadaptive 3.2 2.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 1.79297 disease 3 +776 Fitness: 1.79297 Genotype: Fch1: A coadaptive 1 1.1 B coadaptive 3.2 2.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 1.79297 disease 3 +777 Fitness: 1.79297 Genotype: Fch1: A coadaptive 1 1.1 B coadaptive 3.2 2.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 1.79297 disease 3 +778 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 0.8 B coadaptive 2.3 5.9 C disease 1 1 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +779 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 0.8 B coadaptive 2.3 5.9 C disease 1 1 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +780 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 0.8 B coadaptive 2.3 5.9 C disease 1 1 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +781 Fitness: 11.7167 Genotype: Fch1: A coadaptive 5.5 4.8 B coadaptive 8 6.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.7167 disease 3.5 +782 Fitness: 11.7167 Genotype: Fch1: A coadaptive 5.5 4.8 B coadaptive 8 6.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.7167 disease 3.5 +783 Fitness: 11.7167 Genotype: Fch1: A coadaptive 5.5 4.8 B coadaptive 8 6.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.7167 disease 3.5 +784 Fitness: 2.42458 Genotype: Fch1: A coadaptive 1.7 1.8 B coadaptive 8 1.8 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 2.42458 disease 2.5 +785 Fitness: 2.42458 Genotype: Fch1: A coadaptive 1.7 1.8 B coadaptive 8 1.8 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 2.42458 disease 2.5 +786 Fitness: 2.42458 Genotype: Fch1: A coadaptive 1.7 1.8 B coadaptive 8 1.8 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 2.42458 disease 2.5 +787 Fitness: 9.74008 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 6.8 0.7 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.74008 disease 3 +788 Fitness: 9.74008 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 6.8 0.7 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.74008 disease 3 +789 Fitness: 9.74008 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 6.8 0.7 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.74008 disease 3 +790 Fitness: 1.12922 Genotype: Fch1: A coadaptive 5.6 10 B coadaptive 6 0.9 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 1.12922 disease 2.5 +791 Fitness: 1.12922 Genotype: Fch1: A coadaptive 5.6 10 B coadaptive 6 0.9 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 1.12922 disease 2.5 +792 Fitness: 1.12922 Genotype: Fch1: A coadaptive 5.6 10 B coadaptive 6 0.9 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 1.12922 disease 2.5 +793 Fitness: 11.1091 Genotype: Fch1: A coadaptive 5.3 3.1 B coadaptive 2.2 8.5 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.1091 disease 4 +794 Fitness: 11.1091 Genotype: Fch1: A coadaptive 5.3 3.1 B coadaptive 2.2 8.5 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.1091 disease 4 +795 Fitness: 11.1091 Genotype: Fch1: A coadaptive 5.3 3.1 B coadaptive 2.2 8.5 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.1091 disease 4 +796 Fitness: 4.79041 Genotype: Fch1: A coadaptive 2.9 2.6 B coadaptive 2.6 9.3 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 4.79041 disease 2.5 +797 Fitness: 4.79041 Genotype: Fch1: A coadaptive 2.9 2.6 B coadaptive 2.6 9.3 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 4.79041 disease 2.5 +798 Fitness: 4.79041 Genotype: Fch1: A coadaptive 2.9 2.6 B coadaptive 2.6 9.3 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 4.79041 disease 2.5 +799 Fitness: 12.7879 Genotype: Fch1: A coadaptive 1.6 8.2 B coadaptive 2.1 9.3 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.7879 disease 3.5 +800 Fitness: 12.7879 Genotype: Fch1: A coadaptive 1.6 8.2 B coadaptive 2.1 9.3 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.7879 disease 3.5 +801 Fitness: 12.7879 Genotype: Fch1: A coadaptive 1.6 8.2 B coadaptive 2.1 9.3 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.7879 disease 3.5 +802 Fitness: 6.84254 Genotype: Fch1: A coadaptive 1.1 4.6 B coadaptive 4.1 5.9 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 6.84254 disease 2.5 +803 Fitness: 6.84254 Genotype: Fch1: A coadaptive 1.1 4.6 B coadaptive 4.1 5.9 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 6.84254 disease 2.5 +804 Fitness: 6.84254 Genotype: Fch1: A coadaptive 1.1 4.6 B coadaptive 4.1 5.9 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 6.84254 disease 2.5 +805 Fitness: 3.24967 Genotype: Fch1: A coadaptive 8.4 2.8 B coadaptive 0 4.5 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.24967 disease 3 +806 Fitness: 3.24967 Genotype: Fch1: A coadaptive 8.4 2.8 B coadaptive 0 4.5 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.24967 disease 3 +807 Fitness: 3.24967 Genotype: Fch1: A coadaptive 8.4 2.8 B coadaptive 0 4.5 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.24967 disease 3 +808 Fitness: 11.1117 Genotype: Fch1: A coadaptive 9.4 1.2 B coadaptive 4.5 3.9 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 11.1117 disease 3.5 +809 Fitness: 11.1117 Genotype: Fch1: A coadaptive 9.4 1.2 B coadaptive 4.5 3.9 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 11.1117 disease 3.5 +810 Fitness: 11.1117 Genotype: Fch1: A coadaptive 9.4 1.2 B coadaptive 4.5 3.9 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 11.1117 disease 3.5 +811 Fitness: 12.4494 Genotype: Fch1: A coadaptive 2.4 10 B coadaptive 3.1 6.6 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 12.4494 disease 4 +812 Fitness: 12.4494 Genotype: Fch1: A coadaptive 2.4 10 B coadaptive 3.1 6.6 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 12.4494 disease 4 +813 Fitness: 12.4494 Genotype: Fch1: A coadaptive 2.4 10 B coadaptive 3.1 6.6 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 12.4494 disease 4 +814 Fitness: 14.6868 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 9.6 3.5 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.6868 disease 3 +815 Fitness: 14.6868 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 9.6 3.5 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.6868 disease 3 +816 Fitness: 14.6868 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 9.6 3.5 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.6868 disease 3 +817 Fitness: 12.1937 Genotype: Fch1: A coadaptive 4.2 5.1 B coadaptive 5.3 5.4 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.1937 disease 2 +818 Fitness: 12.1937 Genotype: Fch1: A coadaptive 4.2 5.1 B coadaptive 5.3 5.4 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.1937 disease 2 +819 Fitness: 12.1937 Genotype: Fch1: A coadaptive 4.2 5.1 B coadaptive 5.3 5.4 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.1937 disease 2 +820 Fitness: 12.0583 Genotype: Fch1: A coadaptive 5.2 8.3 B coadaptive 8.4 8.2 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.0583 disease 3.5 +821 Fitness: 12.0583 Genotype: Fch1: A coadaptive 5.2 8.3 B coadaptive 8.4 8.2 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.0583 disease 3.5 +822 Fitness: 12.0583 Genotype: Fch1: A coadaptive 5.2 8.3 B coadaptive 8.4 8.2 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.0583 disease 3.5 +823 Fitness: 9.9668 Genotype: Fch1: A coadaptive 4.4 3.2 B coadaptive 8.6 1 C disease 0.5 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.9668 disease 3 +824 Fitness: 9.9668 Genotype: Fch1: A coadaptive 4.4 3.2 B coadaptive 8.6 1 C disease 0.5 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.9668 disease 3 +825 Fitness: 9.9668 Genotype: Fch1: A coadaptive 4.4 3.2 B coadaptive 8.6 1 C disease 0.5 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.9668 disease 3 +826 Fitness: 4.62815 Genotype: Fch1: A coadaptive 1.5 2.9 B coadaptive 3.2 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.62815 disease 3.5 +827 Fitness: 4.62815 Genotype: Fch1: A coadaptive 1.5 2.9 B coadaptive 3.2 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.62815 disease 3.5 +828 Fitness: 4.62815 Genotype: Fch1: A coadaptive 1.5 2.9 B coadaptive 3.2 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.62815 disease 3.5 +829 Fitness: 7.28844 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 6.9 2.4 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 7.28844 disease 4 +830 Fitness: 7.28844 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 6.9 2.4 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 7.28844 disease 4 +831 Fitness: 7.28844 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 6.9 2.4 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 7.28844 disease 4 +832 Fitness: 5.26469 Genotype: Fch1: A coadaptive 4.1 0.8 B coadaptive 8.8 1.2 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.26469 disease 2.5 +833 Fitness: 5.26469 Genotype: Fch1: A coadaptive 4.1 0.8 B coadaptive 8.8 1.2 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.26469 disease 2.5 +834 Fitness: 5.26469 Genotype: Fch1: A coadaptive 4.1 0.8 B coadaptive 8.8 1.2 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.26469 disease 2.5 +835 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 6.6 6.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +836 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 6.6 6.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +837 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 6.6 6.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +838 Fitness: 7.30229 Genotype: Fch1: A coadaptive 3.3 3.6 B coadaptive 9 3.5 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.30229 disease 3 +839 Fitness: 7.30229 Genotype: Fch1: A coadaptive 3.3 3.6 B coadaptive 9 3.5 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.30229 disease 3 +840 Fitness: 7.30229 Genotype: Fch1: A coadaptive 3.3 3.6 B coadaptive 9 3.5 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.30229 disease 3 +841 Fitness: 0 Genotype: Fch1: A coadaptive 6 8.7 B coadaptive 3.6 0.5 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +842 Fitness: 0 Genotype: Fch1: A coadaptive 6 8.7 B coadaptive 3.6 0.5 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +843 Fitness: 0 Genotype: Fch1: A coadaptive 6 8.7 B coadaptive 3.6 0.5 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +844 Fitness: 6.7916 Genotype: Fch1: A coadaptive 5.1 3.8 B coadaptive 2.8 2.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 6.7916 disease 3.5 +845 Fitness: 6.7916 Genotype: Fch1: A coadaptive 5.1 3.8 B coadaptive 2.8 2.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 6.7916 disease 3.5 +846 Fitness: 6.7916 Genotype: Fch1: A coadaptive 5.1 3.8 B coadaptive 2.8 2.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 6.7916 disease 3.5 +847 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.4 B coadaptive 7.3 4 C disease 0 0 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +848 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.4 B coadaptive 7.3 4 C disease 0 0 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +849 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.4 B coadaptive 7.3 4 C disease 0 0 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +850 Fitness: 7.38497 Genotype: Fch1: A coadaptive 4.9 3.7 B coadaptive 6.6 8.3 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 7.38497 disease 2 +851 Fitness: 7.38497 Genotype: Fch1: A coadaptive 4.9 3.7 B coadaptive 6.6 8.3 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 7.38497 disease 2 +852 Fitness: 7.38497 Genotype: Fch1: A coadaptive 4.9 3.7 B coadaptive 6.6 8.3 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 7.38497 disease 2 +853 Fitness: 0 Genotype: Fch1: A coadaptive 7.9 6.4 B coadaptive 1.5 1.9 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +854 Fitness: 0 Genotype: Fch1: A coadaptive 7.9 6.4 B coadaptive 1.5 1.9 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +855 Fitness: 0 Genotype: Fch1: A coadaptive 7.9 6.4 B coadaptive 1.5 1.9 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +856 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 1.4 B coadaptive 7.7 5.4 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 4 +857 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 1.4 B coadaptive 7.7 5.4 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 4 +858 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 1.4 B coadaptive 7.7 5.4 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 4 +859 Fitness: 14.6799 Genotype: Fch1: A coadaptive 8.9 3.6 B coadaptive 4.1 9 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 14.6799 disease 2 +860 Fitness: 14.6799 Genotype: Fch1: A coadaptive 8.9 3.6 B coadaptive 4.1 9 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 14.6799 disease 2 +861 Fitness: 14.6799 Genotype: Fch1: A coadaptive 8.9 3.6 B coadaptive 4.1 9 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 14.6799 disease 2 +862 Fitness: 5.23964 Genotype: Fch1: A coadaptive 7.2 0.5 B coadaptive 0.5 4 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.23964 disease 1.5 +863 Fitness: 5.23964 Genotype: Fch1: A coadaptive 7.2 0.5 B coadaptive 0.5 4 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.23964 disease 1.5 +864 Fitness: 5.23964 Genotype: Fch1: A coadaptive 7.2 0.5 B coadaptive 0.5 4 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.23964 disease 1.5 +865 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 9.4 B coadaptive 0 4.8 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +866 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 9.4 B coadaptive 0 4.8 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +867 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 9.4 B coadaptive 0 4.8 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +868 Fitness: 14.0248 Genotype: Fch1: A coadaptive 6.2 6.9 B coadaptive 5.8 5.6 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.0248 disease 3 +869 Fitness: 14.0248 Genotype: Fch1: A coadaptive 6.2 6.9 B coadaptive 5.8 5.6 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.0248 disease 3 +870 Fitness: 14.0248 Genotype: Fch1: A coadaptive 6.2 6.9 B coadaptive 5.8 5.6 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.0248 disease 3 +871 Fitness: 7.2194 Genotype: Fch1: A coadaptive 4.7 1.1 B coadaptive 1 8.4 C disease 0 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 7.2194 disease 2.5 +872 Fitness: 7.2194 Genotype: Fch1: A coadaptive 4.7 1.1 B coadaptive 1 8.4 C disease 0 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 7.2194 disease 2.5 +873 Fitness: 7.2194 Genotype: Fch1: A coadaptive 4.7 1.1 B coadaptive 1 8.4 C disease 0 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 7.2194 disease 2.5 +874 Fitness: 12.4854 Genotype: Fch1: A coadaptive 9.4 0.3 B coadaptive 9.9 0.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.4854 disease 2 +875 Fitness: 12.4854 Genotype: Fch1: A coadaptive 9.4 0.3 B coadaptive 9.9 0.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.4854 disease 2 +876 Fitness: 12.4854 Genotype: Fch1: A coadaptive 9.4 0.3 B coadaptive 9.9 0.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.4854 disease 2 +877 Fitness: 12.0895 Genotype: Fch1: A coadaptive 4.1 8.9 B coadaptive 5.7 4 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.0895 disease 3 +878 Fitness: 12.0895 Genotype: Fch1: A coadaptive 4.1 8.9 B coadaptive 5.7 4 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.0895 disease 3 +879 Fitness: 12.0895 Genotype: Fch1: A coadaptive 4.1 8.9 B coadaptive 5.7 4 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.0895 disease 3 +880 Fitness: 14.0516 Genotype: Fch1: A coadaptive 7.8 6.7 B coadaptive 5.4 7.1 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 14.0516 disease 4 +881 Fitness: 14.0516 Genotype: Fch1: A coadaptive 7.8 6.7 B coadaptive 5.4 7.1 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 14.0516 disease 4 +882 Fitness: 14.0516 Genotype: Fch1: A coadaptive 7.8 6.7 B coadaptive 5.4 7.1 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 14.0516 disease 4 +883 Fitness: 7.82508 Genotype: Fch1: A coadaptive 5.7 5 B coadaptive 4.5 1.9 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 7.82508 disease 2 +884 Fitness: 7.82508 Genotype: Fch1: A coadaptive 5.7 5 B coadaptive 4.5 1.9 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 7.82508 disease 2 +885 Fitness: 7.82508 Genotype: Fch1: A coadaptive 5.7 5 B coadaptive 4.5 1.9 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 7.82508 disease 2 +886 Fitness: 5.5036 Genotype: Fch1: A coadaptive 5.6 1.2 B coadaptive 1.5 3.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 5.5036 disease 3 +887 Fitness: 5.5036 Genotype: Fch1: A coadaptive 5.6 1.2 B coadaptive 1.5 3.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 5.5036 disease 3 +888 Fitness: 5.5036 Genotype: Fch1: A coadaptive 5.6 1.2 B coadaptive 1.5 3.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 5.5036 disease 3 +889 Fitness: 10.9329 Genotype: Fch1: A coadaptive 8.3 1.1 B coadaptive 6.6 7.1 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.9329 disease 2.5 +890 Fitness: 10.9329 Genotype: Fch1: A coadaptive 8.3 1.1 B coadaptive 6.6 7.1 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.9329 disease 2.5 +891 Fitness: 10.9329 Genotype: Fch1: A coadaptive 8.3 1.1 B coadaptive 6.6 7.1 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.9329 disease 2.5 +892 Fitness: 7.53254 Genotype: Fch1: A coadaptive 6.1 6 B coadaptive 1.4 5.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.53254 disease 3 +893 Fitness: 7.53254 Genotype: Fch1: A coadaptive 6.1 6 B coadaptive 1.4 5.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.53254 disease 3 +894 Fitness: 7.53254 Genotype: Fch1: A coadaptive 6.1 6 B coadaptive 1.4 5.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.53254 disease 3 +895 Fitness: 9.87311 Genotype: Fch1: A coadaptive 8.5 0.4 B coadaptive 3.1 4.6 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.87311 disease 3.5 +896 Fitness: 9.87311 Genotype: Fch1: A coadaptive 8.5 0.4 B coadaptive 3.1 4.6 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.87311 disease 3.5 +897 Fitness: 9.87311 Genotype: Fch1: A coadaptive 8.5 0.4 B coadaptive 3.1 4.6 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.87311 disease 3.5 +898 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 5.8 B coadaptive 4.8 0.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +899 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 5.8 B coadaptive 4.8 0.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +900 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 5.8 B coadaptive 4.8 0.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +901 Fitness: 6.36479 Genotype: Fch1: A coadaptive 6.4 2.9 B coadaptive 3.6 1.7 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.36479 disease 3.5 +902 Fitness: 6.36479 Genotype: Fch1: A coadaptive 6.4 2.9 B coadaptive 3.6 1.7 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.36479 disease 3.5 +903 Fitness: 6.36479 Genotype: Fch1: A coadaptive 6.4 2.9 B coadaptive 3.6 1.7 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.36479 disease 3.5 +904 Fitness: 7.44441 Genotype: Fch1: A coadaptive 1.2 5.1 B coadaptive 7.1 0.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.44441 disease 2.5 +905 Fitness: 7.44441 Genotype: Fch1: A coadaptive 1.2 5.1 B coadaptive 7.1 0.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.44441 disease 2.5 +906 Fitness: 7.44441 Genotype: Fch1: A coadaptive 1.2 5.1 B coadaptive 7.1 0.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.44441 disease 2.5 +907 Fitness: 11.6762 Genotype: Fch1: A coadaptive 9.2 3.3 B coadaptive 1.9 7.3 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.6762 disease 3.5 +908 Fitness: 11.6762 Genotype: Fch1: A coadaptive 9.2 3.3 B coadaptive 1.9 7.3 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.6762 disease 3.5 +909 Fitness: 11.6762 Genotype: Fch1: A coadaptive 9.2 3.3 B coadaptive 1.9 7.3 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.6762 disease 3.5 +910 Fitness: 12.7286 Genotype: Fch1: A coadaptive 3.7 7.2 B coadaptive 7 2.8 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.7286 disease 4 +911 Fitness: 12.7286 Genotype: Fch1: A coadaptive 3.7 7.2 B coadaptive 7 2.8 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.7286 disease 4 +912 Fitness: 12.7286 Genotype: Fch1: A coadaptive 3.7 7.2 B coadaptive 7 2.8 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.7286 disease 4 +913 Fitness: 12.0641 Genotype: Fch1: A coadaptive 7.1 5.5 B coadaptive 4.9 4.6 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.0641 disease 3.5 +914 Fitness: 12.0641 Genotype: Fch1: A coadaptive 7.1 5.5 B coadaptive 4.9 4.6 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.0641 disease 3.5 +915 Fitness: 12.0641 Genotype: Fch1: A coadaptive 7.1 5.5 B coadaptive 4.9 4.6 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.0641 disease 3.5 +916 Fitness: 4.66199 Genotype: Fch1: A coadaptive 0.6 5.9 B coadaptive 5.6 8 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.66199 disease 3.5 +917 Fitness: 4.66199 Genotype: Fch1: A coadaptive 0.6 5.9 B coadaptive 5.6 8 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.66199 disease 3.5 +918 Fitness: 4.66199 Genotype: Fch1: A coadaptive 0.6 5.9 B coadaptive 5.6 8 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 4.66199 disease 3.5 +919 Fitness: 14.6273 Genotype: Fch1: A coadaptive 5.1 7.7 B coadaptive 7.7 6.1 C disease 1 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 14.6273 disease 2.5 +920 Fitness: 9.61515 Genotype: Fch1: A coadaptive 7.7 7.6 B coadaptive 0.4 9.6 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 9.61515 disease 2.5 +921 Fitness: 9.61515 Genotype: Fch1: A coadaptive 7.7 7.6 B coadaptive 0.4 9.6 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 9.61515 disease 2.5 +922 Fitness: 4.16791 Genotype: Fch1: A coadaptive 1.5 3.2 B coadaptive 1.7 9.1 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.16791 disease 2.5 +923 Fitness: 4.16791 Genotype: Fch1: A coadaptive 1.5 3.2 B coadaptive 1.7 9.1 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.16791 disease 2.5 +924 Fitness: 4.16791 Genotype: Fch1: A coadaptive 1.5 3.2 B coadaptive 1.7 9.1 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.16791 disease 2.5 +925 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 0.7 B coadaptive 3.6 10 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +926 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 0.7 B coadaptive 3.6 10 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +927 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 0.7 B coadaptive 3.6 10 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +928 Fitness: 4.68155 Genotype: Fch1: A coadaptive 2 9.4 B coadaptive 4.4 0.8 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 4.68155 disease 3.5 +929 Fitness: 4.68155 Genotype: Fch1: A coadaptive 2 9.4 B coadaptive 4.4 0.8 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 4.68155 disease 3.5 +930 Fitness: 4.68155 Genotype: Fch1: A coadaptive 2 9.4 B coadaptive 4.4 0.8 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 4.68155 disease 3.5 +931 Fitness: 8.60375 Genotype: Fch1: A coadaptive 3.9 5.7 B coadaptive 8.8 6.6 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.60375 disease 4 +932 Fitness: 8.60375 Genotype: Fch1: A coadaptive 3.9 5.7 B coadaptive 8.8 6.6 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.60375 disease 4 +933 Fitness: 8.60375 Genotype: Fch1: A coadaptive 3.9 5.7 B coadaptive 8.8 6.6 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.60375 disease 4 +934 Fitness: 9.8287 Genotype: Fch1: A coadaptive 3.2 4.6 B coadaptive 4.3 4.3 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.8287 disease 3 +935 Fitness: 9.8287 Genotype: Fch1: A coadaptive 3.2 4.6 B coadaptive 4.3 4.3 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.8287 disease 3 +936 Fitness: 9.8287 Genotype: Fch1: A coadaptive 3.2 4.6 B coadaptive 4.3 4.3 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.8287 disease 3 +937 Fitness: 8.33703 Genotype: Fch1: A coadaptive 0.9 5.8 B coadaptive 3.3 7.5 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.33703 disease 3 +938 Fitness: 8.33703 Genotype: Fch1: A coadaptive 0.9 5.8 B coadaptive 3.3 7.5 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.33703 disease 3 +939 Fitness: 8.33703 Genotype: Fch1: A coadaptive 0.9 5.8 B coadaptive 3.3 7.5 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.33703 disease 3 +940 Fitness: 11.3003 Genotype: Fch1: A coadaptive 7.4 1.2 B coadaptive 6.9 3.2 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.3003 disease 3.5 +941 Fitness: 11.3003 Genotype: Fch1: A coadaptive 7.4 1.2 B coadaptive 6.9 3.2 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.3003 disease 3.5 +942 Fitness: 11.3003 Genotype: Fch1: A coadaptive 7.4 1.2 B coadaptive 6.9 3.2 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.3003 disease 3.5 +943 Fitness: 10.179 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 7.5 2 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 10.179 disease 2.5 +944 Fitness: 10.179 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 7.5 2 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 10.179 disease 2.5 +945 Fitness: 10.179 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 7.5 2 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 10.179 disease 2.5 +946 Fitness: 5.34026 Genotype: Fch1: A coadaptive 9.4 9.5 B coadaptive 2.9 10 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.34026 disease 2.5 +947 Fitness: 5.34026 Genotype: Fch1: A coadaptive 9.4 9.5 B coadaptive 2.9 10 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.34026 disease 2.5 +948 Fitness: 5.34026 Genotype: Fch1: A coadaptive 9.4 9.5 B coadaptive 2.9 10 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.34026 disease 2.5 +949 Fitness: 7.31233 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 2.4 6 C disease 0.5 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.31233 disease 2 +950 Fitness: 7.31233 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 2.4 6 C disease 0.5 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.31233 disease 2 +951 Fitness: 7.31233 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 2.4 6 C disease 0.5 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.31233 disease 2 +952 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 5.9 B coadaptive 7.8 9.9 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +953 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 5.9 B coadaptive 7.8 9.9 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +954 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 5.9 B coadaptive 7.8 9.9 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +955 Fitness: 12.6435 Genotype: Fch1: A coadaptive 6.5 7.5 B coadaptive 9 1.7 C disease 0 1 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.6435 disease 2.5 +956 Fitness: 12.6435 Genotype: Fch1: A coadaptive 6.5 7.5 B coadaptive 9 1.7 C disease 0 1 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.6435 disease 2.5 +957 Fitness: 12.6435 Genotype: Fch1: A coadaptive 6.5 7.5 B coadaptive 9 1.7 C disease 0 1 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.6435 disease 2.5 +958 Fitness: 9.02519 Genotype: Fch1: A coadaptive 3.6 3.4 B coadaptive 4 4.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 9.02519 disease 4 +959 Fitness: 9.02519 Genotype: Fch1: A coadaptive 3.6 3.4 B coadaptive 4 4.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 9.02519 disease 4 +960 Fitness: 9.02519 Genotype: Fch1: A coadaptive 3.6 3.4 B coadaptive 4 4.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 9.02519 disease 4 +961 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 4.5 B coadaptive 8.6 8.2 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +962 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 4.5 B coadaptive 8.6 8.2 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +963 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 4.5 B coadaptive 8.6 8.2 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +964 Fitness: 14.0351 Genotype: Fch1: A coadaptive 8.9 3 B coadaptive 6.2 7.7 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 14.0351 disease 3 +965 Fitness: 14.0351 Genotype: Fch1: A coadaptive 8.9 3 B coadaptive 6.2 7.7 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 14.0351 disease 3 +966 Fitness: 14.0351 Genotype: Fch1: A coadaptive 8.9 3 B coadaptive 6.2 7.7 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 14.0351 disease 3 +967 Fitness: 3.25154 Genotype: Fch1: A coadaptive 2 3.9 B coadaptive 9.4 4.1 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 3.25154 disease 2.5 +968 Fitness: 3.25154 Genotype: Fch1: A coadaptive 2 3.9 B coadaptive 9.4 4.1 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 3.25154 disease 2.5 +969 Fitness: 3.25154 Genotype: Fch1: A coadaptive 2 3.9 B coadaptive 9.4 4.1 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 3.25154 disease 2.5 +970 Fitness: 5.30551 Genotype: Fch1: A coadaptive 6.7 2.4 B coadaptive 9.2 7.1 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 5.30551 disease 3 +971 Fitness: 5.30551 Genotype: Fch1: A coadaptive 6.7 2.4 B coadaptive 9.2 7.1 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 5.30551 disease 3 +972 Fitness: 5.30551 Genotype: Fch1: A coadaptive 6.7 2.4 B coadaptive 9.2 7.1 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 5.30551 disease 3 +973 Fitness: 6.23975 Genotype: Fch1: A coadaptive 5.5 0.3 B coadaptive 8.1 3.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.23975 disease 3.5 +974 Fitness: 6.23975 Genotype: Fch1: A coadaptive 5.5 0.3 B coadaptive 8.1 3.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.23975 disease 3.5 +975 Fitness: 6.23975 Genotype: Fch1: A coadaptive 5.5 0.3 B coadaptive 8.1 3.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.23975 disease 3.5 +976 Fitness: 3.242 Genotype: Fch1: A coadaptive 2.4 9 B coadaptive 3.5 1.1 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.242 disease 3.5 +977 Fitness: 3.242 Genotype: Fch1: A coadaptive 2.4 9 B coadaptive 3.5 1.1 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.242 disease 3.5 +978 Fitness: 3.242 Genotype: Fch1: A coadaptive 2.4 9 B coadaptive 3.5 1.1 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.242 disease 3.5 +979 Fitness: 5.28445 Genotype: Fch1: A coadaptive 7.6 9.8 B coadaptive 1.7 8.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 5.28445 disease 4 +980 Fitness: 5.28445 Genotype: Fch1: A coadaptive 7.6 9.8 B coadaptive 1.7 8.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 5.28445 disease 4 +981 Fitness: 5.28445 Genotype: Fch1: A coadaptive 7.6 9.8 B coadaptive 1.7 8.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 5.28445 disease 4 +982 Fitness: 13.3 Genotype: Fch1: A coadaptive 0.5 10 B coadaptive 6.6 6.1 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.3 disease 3.5 +983 Fitness: 13.3 Genotype: Fch1: A coadaptive 0.5 10 B coadaptive 6.6 6.1 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.3 disease 3.5 +984 Fitness: 13.3 Genotype: Fch1: A coadaptive 0.5 10 B coadaptive 6.6 6.1 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.3 disease 3.5 +985 Fitness: 2.96333 Genotype: Fch1: A coadaptive 1 4 B coadaptive 6.1 6.2 C disease 1 0 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 2.96333 disease 4 +986 Fitness: 2.96333 Genotype: Fch1: A coadaptive 1 4 B coadaptive 6.1 6.2 C disease 1 0 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 2.96333 disease 4 +987 Fitness: 2.96333 Genotype: Fch1: A coadaptive 1 4 B coadaptive 6.1 6.2 C disease 1 0 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 2.96333 disease 4 +988 Fitness: 3.53316 Genotype: Fch1: A coadaptive 3 6.5 B coadaptive 1.6 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 3.53316 disease 3 +989 Fitness: 3.53316 Genotype: Fch1: A coadaptive 3 6.5 B coadaptive 1.6 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 3.53316 disease 3 +990 Fitness: 3.53316 Genotype: Fch1: A coadaptive 3 6.5 B coadaptive 1.6 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 3.53316 disease 3 +991 Fitness: 14.3155 Genotype: Fch1: A coadaptive 5 8.8 B coadaptive 8.3 3.9 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.3155 disease 1.5 +992 Fitness: 14.3155 Genotype: Fch1: A coadaptive 5 8.8 B coadaptive 8.3 3.9 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.3155 disease 1.5 +993 Fitness: 14.3155 Genotype: Fch1: A coadaptive 5 8.8 B coadaptive 8.3 3.9 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.3155 disease 1.5 +994 Fitness: 2.00849 Genotype: Fch1: A coadaptive 9 9.5 B coadaptive 8 2.6 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 2.00849 disease 2.5 +995 Fitness: 2.00849 Genotype: Fch1: A coadaptive 9 9.5 B coadaptive 8 2.6 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 2.00849 disease 2.5 +996 Fitness: 2.00849 Genotype: Fch1: A coadaptive 9 9.5 B coadaptive 8 2.6 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 2.00849 disease 2.5 +997 Fitness: 5.48156 Genotype: Fch1: A coadaptive 2.6 5.4 B coadaptive 7.8 7.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.48156 disease 2 +998 Fitness: 5.48156 Genotype: Fch1: A coadaptive 2.6 5.4 B coadaptive 7.8 7.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.48156 disease 2 +999 Fitness: 5.48156 Genotype: Fch1: A coadaptive 2.6 5.4 B coadaptive 7.8 7.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.48156 disease 2 +1000 Fitness: 6.48917 Genotype: Fch1: A coadaptive 1.9 3.4 B coadaptive 7.5 1.1 C disease 0 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.48917 disease 3 +1001 Fitness: 6.48917 Genotype: Fch1: A coadaptive 1.9 3.4 B coadaptive 7.5 1.1 C disease 0 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.48917 disease 3 +1002 Fitness: 6.48917 Genotype: Fch1: A coadaptive 1.9 3.4 B coadaptive 7.5 1.1 C disease 0 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.48917 disease 3 +1003 Fitness: 12.5062 Genotype: Fch1: A coadaptive 9.3 1.3 B coadaptive 8.8 5.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.5062 disease 3 +1004 Fitness: 12.5062 Genotype: Fch1: A coadaptive 9.3 1.3 B coadaptive 8.8 5.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.5062 disease 3 +1005 Fitness: 12.5062 Genotype: Fch1: A coadaptive 9.3 1.3 B coadaptive 8.8 5.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.5062 disease 3 +1006 Fitness: 13.5082 Genotype: Fch1: A coadaptive 8.9 4.8 B coadaptive 9.3 1.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.5082 disease 3.5 +1007 Fitness: 13.5082 Genotype: Fch1: A coadaptive 8.9 4.8 B coadaptive 9.3 1.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.5082 disease 3.5 +1008 Fitness: 13.5082 Genotype: Fch1: A coadaptive 8.9 4.8 B coadaptive 9.3 1.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.5082 disease 3.5 +1009 Fitness: 1.31594 Genotype: Fch1: A coadaptive 4.2 0.4 B coadaptive 0 1.7 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.31594 disease 4 +1010 Fitness: 1.31594 Genotype: Fch1: A coadaptive 4.2 0.4 B coadaptive 0 1.7 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.31594 disease 4 +1011 Fitness: 1.31594 Genotype: Fch1: A coadaptive 4.2 0.4 B coadaptive 0 1.7 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.31594 disease 4 +1012 Fitness: 2.22115 Genotype: Fch1: A coadaptive 1.5 6.2 B coadaptive 1.1 1.6 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 2.22115 disease 3.5 +1013 Fitness: 2.22115 Genotype: Fch1: A coadaptive 1.5 6.2 B coadaptive 1.1 1.6 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 2.22115 disease 3.5 +1014 Fitness: 2.22115 Genotype: Fch1: A coadaptive 1.5 6.2 B coadaptive 1.1 1.6 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 2.22115 disease 3.5 +1015 Fitness: 8.15996 Genotype: Fch1: A coadaptive 6.5 0.9 B coadaptive 5.6 7.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.15996 disease 2.5 +1016 Fitness: 8.15996 Genotype: Fch1: A coadaptive 6.5 0.9 B coadaptive 5.6 7.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.15996 disease 2.5 +1017 Fitness: 8.15996 Genotype: Fch1: A coadaptive 6.5 0.9 B coadaptive 5.6 7.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.15996 disease 2.5 +1018 Fitness: 8.88478 Genotype: Fch1: A coadaptive 7.6 2.7 B coadaptive 4.9 2 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 8.88478 disease 3 +1019 Fitness: 8.88478 Genotype: Fch1: A coadaptive 7.6 2.7 B coadaptive 4.9 2 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 8.88478 disease 3 +1020 Fitness: 8.88478 Genotype: Fch1: A coadaptive 7.6 2.7 B coadaptive 4.9 2 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 8.88478 disease 3 +1021 Fitness: 8.52875 Genotype: Fch1: A coadaptive 0.1 6.7 B coadaptive 6.9 1.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.52875 disease 4 +1022 Fitness: 8.52875 Genotype: Fch1: A coadaptive 0.1 6.7 B coadaptive 6.9 1.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.52875 disease 4 +1023 Fitness: 8.52875 Genotype: Fch1: A coadaptive 0.1 6.7 B coadaptive 6.9 1.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.52875 disease 4 +1024 Fitness: 0 Genotype: Fch1: A coadaptive 9.5 8.3 B coadaptive 0.1 6.5 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1025 Fitness: 0 Genotype: Fch1: A coadaptive 9.5 8.3 B coadaptive 0.1 6.5 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1026 Fitness: 0 Genotype: Fch1: A coadaptive 9.5 8.3 B coadaptive 0.1 6.5 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1027 Fitness: 10.7112 Genotype: Fch1: A coadaptive 9.9 5.2 B coadaptive 8.9 1.5 C disease 1 1 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 10.7112 disease 2.5 +1028 Fitness: 10.7112 Genotype: Fch1: A coadaptive 9.9 5.2 B coadaptive 8.9 1.5 C disease 1 1 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 10.7112 disease 2.5 +1029 Fitness: 10.7112 Genotype: Fch1: A coadaptive 9.9 5.2 B coadaptive 8.9 1.5 C disease 1 1 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 10.7112 disease 2.5 +1030 Fitness: 10.3383 Genotype: Fch1: A coadaptive 6.8 9.4 B coadaptive 7.6 3.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 10.3383 disease 2 +1031 Fitness: 10.3383 Genotype: Fch1: A coadaptive 6.8 9.4 B coadaptive 7.6 3.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 10.3383 disease 2 +1032 Fitness: 10.3383 Genotype: Fch1: A coadaptive 6.8 9.4 B coadaptive 7.6 3.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 10.3383 disease 2 +1033 Fitness: 0 Genotype: Fch1: A coadaptive 5.8 8.3 B coadaptive 0.5 3.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1034 Fitness: 0 Genotype: Fch1: A coadaptive 5.8 8.3 B coadaptive 0.5 3.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1035 Fitness: 0 Genotype: Fch1: A coadaptive 5.8 8.3 B coadaptive 0.5 3.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1036 Fitness: 8.48209 Genotype: Fch1: A coadaptive 0.2 8.7 B coadaptive 0 6.6 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.48209 disease 2 +1037 Fitness: 8.48209 Genotype: Fch1: A coadaptive 0.2 8.7 B coadaptive 0 6.6 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.48209 disease 2 +1038 Fitness: 8.48209 Genotype: Fch1: A coadaptive 0.2 8.7 B coadaptive 0 6.6 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.48209 disease 2 +1039 Fitness: 5.1068 Genotype: Fch1: A coadaptive 5.5 0.9 B coadaptive 5.9 7.3 C disease 0 1 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.1068 disease 3.5 +1040 Fitness: 5.1068 Genotype: Fch1: A coadaptive 5.5 0.9 B coadaptive 5.9 7.3 C disease 0 1 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.1068 disease 3.5 +1041 Fitness: 5.1068 Genotype: Fch1: A coadaptive 5.5 0.9 B coadaptive 5.9 7.3 C disease 0 1 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.1068 disease 3.5 +1042 Fitness: 4.36515 Genotype: Fch1: A coadaptive 1.2 8.6 B coadaptive 1.2 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 4.36515 disease 2.5 +1043 Fitness: 4.36515 Genotype: Fch1: A coadaptive 1.2 8.6 B coadaptive 1.2 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 4.36515 disease 2.5 +1044 Fitness: 4.36515 Genotype: Fch1: A coadaptive 1.2 8.6 B coadaptive 1.2 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 4.36515 disease 2.5 +1045 Fitness: 9.39605 Genotype: Fch1: A coadaptive 1.6 5.6 B coadaptive 2.9 6.5 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.39605 disease 2.5 +1046 Fitness: 9.39605 Genotype: Fch1: A coadaptive 1.6 5.6 B coadaptive 2.9 6.5 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.39605 disease 2.5 +1047 Fitness: 9.39605 Genotype: Fch1: A coadaptive 1.6 5.6 B coadaptive 2.9 6.5 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.39605 disease 2.5 +1048 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 5.4 B coadaptive 2.2 2.5 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1049 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 5.4 B coadaptive 2.2 2.5 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1050 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 5.4 B coadaptive 2.2 2.5 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1051 Fitness: 13.1331 Genotype: Fch1: A coadaptive 5.2 5.5 B coadaptive 9.9 0.5 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.1331 disease 2.5 +1052 Fitness: 13.1331 Genotype: Fch1: A coadaptive 5.2 5.5 B coadaptive 9.9 0.5 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.1331 disease 2.5 +1053 Fitness: 13.1331 Genotype: Fch1: A coadaptive 5.2 5.5 B coadaptive 9.9 0.5 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.1331 disease 2.5 +1054 Fitness: 2.54144 Genotype: Fch1: A coadaptive 1.5 1.3 B coadaptive 2.3 5 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 2.54144 disease 3 +1055 Fitness: 2.54144 Genotype: Fch1: A coadaptive 1.5 1.3 B coadaptive 2.3 5 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 2.54144 disease 3 +1056 Fitness: 2.54144 Genotype: Fch1: A coadaptive 1.5 1.3 B coadaptive 2.3 5 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 2.54144 disease 3 +1057 Fitness: 12.7833 Genotype: Fch1: A coadaptive 9.6 5.2 B coadaptive 3.7 7.8 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.7833 disease 2 +1058 Fitness: 12.7833 Genotype: Fch1: A coadaptive 9.6 5.2 B coadaptive 3.7 7.8 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.7833 disease 2 +1059 Fitness: 12.7833 Genotype: Fch1: A coadaptive 9.6 5.2 B coadaptive 3.7 7.8 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.7833 disease 2 +1060 Fitness: 4.17707 Genotype: Fch1: A coadaptive 9 9.6 B coadaptive 4.5 7.2 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.17707 disease 2.5 +1061 Fitness: 4.17707 Genotype: Fch1: A coadaptive 9 9.6 B coadaptive 4.5 7.2 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.17707 disease 2.5 +1062 Fitness: 4.17707 Genotype: Fch1: A coadaptive 9 9.6 B coadaptive 4.5 7.2 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.17707 disease 2.5 +1063 Fitness: 7.03055 Genotype: Fch1: A coadaptive 2.3 3.5 B coadaptive 0.1 9.9 C disease 0 1 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.03055 disease 4 +1064 Fitness: 7.03055 Genotype: Fch1: A coadaptive 2.3 3.5 B coadaptive 0.1 9.9 C disease 0 1 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.03055 disease 4 +1065 Fitness: 7.03055 Genotype: Fch1: A coadaptive 2.3 3.5 B coadaptive 0.1 9.9 C disease 0 1 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.03055 disease 4 +1066 Fitness: 13.1761 Genotype: Fch1: A coadaptive 7.3 8.8 B coadaptive 5.6 9.5 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.1761 disease 3.5 +1067 Fitness: 13.1761 Genotype: Fch1: A coadaptive 7.3 8.8 B coadaptive 5.6 9.5 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.1761 disease 3.5 +1068 Fitness: 13.1761 Genotype: Fch1: A coadaptive 7.3 8.8 B coadaptive 5.6 9.5 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.1761 disease 3.5 +1069 Fitness: 11.5126 Genotype: Fch1: A coadaptive 7.4 8 B coadaptive 4 7.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 11.5126 disease 4 +1070 Fitness: 11.5126 Genotype: Fch1: A coadaptive 7.4 8 B coadaptive 4 7.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 11.5126 disease 4 +1071 Fitness: 11.5126 Genotype: Fch1: A coadaptive 7.4 8 B coadaptive 4 7.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 11.5126 disease 4 +1072 Fitness: 12.3794 Genotype: Fch1: A coadaptive 4.1 5.8 B coadaptive 9.6 3.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.3794 disease 3 +1073 Fitness: 12.3794 Genotype: Fch1: A coadaptive 4.1 5.8 B coadaptive 9.6 3.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.3794 disease 3 +1074 Fitness: 12.3794 Genotype: Fch1: A coadaptive 4.1 5.8 B coadaptive 9.6 3.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.3794 disease 3 +1075 Fitness: 13.4381 Genotype: Fch1: A coadaptive 9 2.6 B coadaptive 7.7 6.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.4381 disease 1.5 +1076 Fitness: 13.4381 Genotype: Fch1: A coadaptive 9 2.6 B coadaptive 7.7 6.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.4381 disease 1.5 +1077 Fitness: 13.4381 Genotype: Fch1: A coadaptive 9 2.6 B coadaptive 7.7 6.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.4381 disease 1.5 +1078 Fitness: 1.41258 Genotype: Fch1: A coadaptive 2.9 3.3 B coadaptive 0.3 1.6 C disease 0 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 1.41258 disease 3.5 +1079 Fitness: 1.41258 Genotype: Fch1: A coadaptive 2.9 3.3 B coadaptive 0.3 1.6 C disease 0 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 1.41258 disease 3.5 +1080 Fitness: 1.41258 Genotype: Fch1: A coadaptive 2.9 3.3 B coadaptive 0.3 1.6 C disease 0 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 1.41258 disease 3.5 +1081 Fitness: 4.56727 Genotype: Fch1: A coadaptive 4.4 0.2 B coadaptive 2.7 7.4 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.56727 disease 3.5 +1082 Fitness: 4.56727 Genotype: Fch1: A coadaptive 4.4 0.2 B coadaptive 2.7 7.4 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.56727 disease 3.5 +1083 Fitness: 4.56727 Genotype: Fch1: A coadaptive 4.4 0.2 B coadaptive 2.7 7.4 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.56727 disease 3.5 +1084 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.3 B coadaptive 1 8.6 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1085 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.3 B coadaptive 1 8.6 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1086 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.3 B coadaptive 1 8.6 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1087 Fitness: 5.68166 Genotype: Fch1: A coadaptive 4.4 5.9 B coadaptive 3.1 2.1 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 5.68166 disease 4 +1088 Fitness: 5.68166 Genotype: Fch1: A coadaptive 4.4 5.9 B coadaptive 3.1 2.1 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 5.68166 disease 4 +1089 Fitness: 5.68166 Genotype: Fch1: A coadaptive 4.4 5.9 B coadaptive 3.1 2.1 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 5.68166 disease 4 +1090 Fitness: 0.627743 Genotype: Fch1: A coadaptive 1.6 2.4 B coadaptive 8.8 3.3 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0.627743 disease 3.5 +1091 Fitness: 0.627743 Genotype: Fch1: A coadaptive 1.6 2.4 B coadaptive 8.8 3.3 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0.627743 disease 3.5 +1092 Fitness: 0.627743 Genotype: Fch1: A coadaptive 1.6 2.4 B coadaptive 8.8 3.3 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0.627743 disease 3.5 +1093 Fitness: 2.36472 Genotype: Fch1: A coadaptive 0.3 3.4 B coadaptive 0.8 2.3 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 2.36472 disease 1.5 +1094 Fitness: 2.36472 Genotype: Fch1: A coadaptive 0.3 3.4 B coadaptive 0.8 2.3 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 2.36472 disease 1.5 +1095 Fitness: 2.36472 Genotype: Fch1: A coadaptive 0.3 3.4 B coadaptive 0.8 2.3 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 2.36472 disease 1.5 +1096 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 1.8 B coadaptive 0.1 1 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1097 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 1.8 B coadaptive 0.1 1 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1098 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 1.8 B coadaptive 0.1 1 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1099 Fitness: 3.56484 Genotype: Fch1: A coadaptive 3.5 7 B coadaptive 8.5 9.5 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 3.56484 disease 3.5 +1100 Fitness: 3.56484 Genotype: Fch1: A coadaptive 3.5 7 B coadaptive 8.5 9.5 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 3.56484 disease 3.5 +1101 Fitness: 3.56484 Genotype: Fch1: A coadaptive 3.5 7 B coadaptive 8.5 9.5 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 3.56484 disease 3.5 +1102 Fitness: 9.90607 Genotype: Fch1: A coadaptive 9.9 1 B coadaptive 8.2 7.8 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.90607 disease 2.5 +1103 Fitness: 9.90607 Genotype: Fch1: A coadaptive 9.9 1 B coadaptive 8.2 7.8 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.90607 disease 2.5 +1104 Fitness: 9.90607 Genotype: Fch1: A coadaptive 9.9 1 B coadaptive 8.2 7.8 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.90607 disease 2.5 +1105 Fitness: 13.8542 Genotype: Fch1: A coadaptive 7.5 7.8 B coadaptive 7.2 7.9 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.8542 disease 3 +1106 Fitness: 13.8542 Genotype: Fch1: A coadaptive 7.5 7.8 B coadaptive 7.2 7.9 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.8542 disease 3 +1107 Fitness: 13.8542 Genotype: Fch1: A coadaptive 7.5 7.8 B coadaptive 7.2 7.9 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.8542 disease 3 +1108 Fitness: 5.31461 Genotype: Fch1: A coadaptive 7.2 8.3 B coadaptive 0.8 7.5 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.31461 disease 3 +1109 Fitness: 5.31461 Genotype: Fch1: A coadaptive 7.2 8.3 B coadaptive 0.8 7.5 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.31461 disease 3 +1110 Fitness: 5.31461 Genotype: Fch1: A coadaptive 7.2 8.3 B coadaptive 0.8 7.5 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.31461 disease 3 +1111 Fitness: 13.9678 Genotype: Fch1: A coadaptive 7.7 6.3 B coadaptive 3.2 8.7 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.9678 disease 2.5 +1112 Fitness: 13.9678 Genotype: Fch1: A coadaptive 7.7 6.3 B coadaptive 3.2 8.7 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.9678 disease 2.5 +1113 Fitness: 13.9678 Genotype: Fch1: A coadaptive 7.7 6.3 B coadaptive 3.2 8.7 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.9678 disease 2.5 +1114 Fitness: 3.80824 Genotype: Fch1: A coadaptive 3 9.9 B coadaptive 3.9 1.8 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.80824 disease 3.5 +1115 Fitness: 3.80824 Genotype: Fch1: A coadaptive 3 9.9 B coadaptive 3.9 1.8 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.80824 disease 3.5 +1116 Fitness: 3.80824 Genotype: Fch1: A coadaptive 3 9.9 B coadaptive 3.9 1.8 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.80824 disease 3.5 +1117 Fitness: 8.54495 Genotype: Fch1: A coadaptive 6.5 3.8 B coadaptive 8.4 7.7 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.54495 disease 3.5 +1118 Fitness: 8.54495 Genotype: Fch1: A coadaptive 6.5 3.8 B coadaptive 8.4 7.7 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.54495 disease 3.5 +1119 Fitness: 8.54495 Genotype: Fch1: A coadaptive 6.5 3.8 B coadaptive 8.4 7.7 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.54495 disease 3.5 +1120 Fitness: 10.704 Genotype: Fch1: A coadaptive 2.1 6.7 B coadaptive 10 2.9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.704 disease 3.5 +1121 Fitness: 10.704 Genotype: Fch1: A coadaptive 2.1 6.7 B coadaptive 10 2.9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.704 disease 3.5 +1122 Fitness: 10.704 Genotype: Fch1: A coadaptive 2.1 6.7 B coadaptive 10 2.9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.704 disease 3.5 +1123 Fitness: 11.3266 Genotype: Fch1: A coadaptive 4.5 9 B coadaptive 0.7 8.8 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.3266 disease 4 +1124 Fitness: 11.3266 Genotype: Fch1: A coadaptive 4.5 9 B coadaptive 0.7 8.8 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.3266 disease 4 +1125 Fitness: 11.3266 Genotype: Fch1: A coadaptive 4.5 9 B coadaptive 0.7 8.8 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.3266 disease 4 +1126 Fitness: 11.6723 Genotype: Fch1: A coadaptive 1.6 9.1 B coadaptive 9.2 5.6 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 11.6723 disease 3 +1127 Fitness: 11.6723 Genotype: Fch1: A coadaptive 1.6 9.1 B coadaptive 9.2 5.6 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 11.6723 disease 3 +1128 Fitness: 11.6723 Genotype: Fch1: A coadaptive 1.6 9.1 B coadaptive 9.2 5.6 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 11.6723 disease 3 +1129 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 0.2 1.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1130 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 0.2 1.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1131 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 0.2 1.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1132 Fitness: 6.66065 Genotype: Fch1: A coadaptive 7 3 B coadaptive 8.9 7.7 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.66065 disease 3.5 +1133 Fitness: 6.66065 Genotype: Fch1: A coadaptive 7 3 B coadaptive 8.9 7.7 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.66065 disease 3.5 +1134 Fitness: 6.66065 Genotype: Fch1: A coadaptive 7 3 B coadaptive 8.9 7.7 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.66065 disease 3.5 +1135 Fitness: 11.6821 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 6.1 4.7 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.6821 disease 4 +1136 Fitness: 11.6821 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 6.1 4.7 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.6821 disease 4 +1137 Fitness: 11.6821 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 6.1 4.7 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.6821 disease 4 +1138 Fitness: 11.4883 Genotype: Fch1: A coadaptive 3.6 5.4 B coadaptive 7.9 4.4 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.4883 disease 3 +1139 Fitness: 11.4883 Genotype: Fch1: A coadaptive 3.6 5.4 B coadaptive 7.9 4.4 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.4883 disease 3 +1140 Fitness: 11.4883 Genotype: Fch1: A coadaptive 3.6 5.4 B coadaptive 7.9 4.4 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.4883 disease 3 +1141 Fitness: 8.38987 Genotype: Fch1: A coadaptive 1.9 4.7 B coadaptive 4.4 4.1 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.38987 disease 4 +1142 Fitness: 8.38987 Genotype: Fch1: A coadaptive 1.9 4.7 B coadaptive 4.4 4.1 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.38987 disease 4 +1143 Fitness: 8.38987 Genotype: Fch1: A coadaptive 1.9 4.7 B coadaptive 4.4 4.1 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.38987 disease 4 +1144 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 0.6 B coadaptive 9.6 6.9 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1145 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 0.6 B coadaptive 9.6 6.9 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1146 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 0.6 B coadaptive 9.6 6.9 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1147 Fitness: 11.8976 Genotype: Fch1: A coadaptive 5.1 6.6 B coadaptive 7.9 1.2 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.8976 disease 3 +1148 Fitness: 11.8976 Genotype: Fch1: A coadaptive 5.1 6.6 B coadaptive 7.9 1.2 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.8976 disease 3 +1149 Fitness: 11.8976 Genotype: Fch1: A coadaptive 5.1 6.6 B coadaptive 7.9 1.2 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.8976 disease 3 +1150 Fitness: 0.272795 Genotype: Fch1: A coadaptive 8.2 5.5 B coadaptive 0.1 4.9 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0.272795 disease 3.5 +1151 Fitness: 0.272795 Genotype: Fch1: A coadaptive 8.2 5.5 B coadaptive 0.1 4.9 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0.272795 disease 3.5 +1152 Fitness: 0.272795 Genotype: Fch1: A coadaptive 8.2 5.5 B coadaptive 0.1 4.9 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0.272795 disease 3.5 +1153 Fitness: 6.54682 Genotype: Fch1: A coadaptive 6.1 0.1 B coadaptive 2.4 3.7 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 6.54682 disease 2 +1154 Fitness: 6.54682 Genotype: Fch1: A coadaptive 6.1 0.1 B coadaptive 2.4 3.7 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 6.54682 disease 2 +1155 Fitness: 6.54682 Genotype: Fch1: A coadaptive 6.1 0.1 B coadaptive 2.4 3.7 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 6.54682 disease 2 +1156 Fitness: 0.0254755 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 3.3 6.6 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.0254755 disease 1.5 +1157 Fitness: 0.0254755 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 3.3 6.6 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.0254755 disease 1.5 +1158 Fitness: 0.0254755 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 3.3 6.6 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.0254755 disease 1.5 +1159 Fitness: 11.114 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 4.3 4.9 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 11.114 disease 2.5 +1160 Fitness: 11.114 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 4.3 4.9 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 11.114 disease 2.5 +1161 Fitness: 11.114 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 4.3 4.9 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 11.114 disease 2.5 +1162 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 4.5 B coadaptive 7.5 7.1 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1163 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 4.5 B coadaptive 7.5 7.1 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1164 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 4.5 B coadaptive 7.5 7.1 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1165 Fitness: 9.33738 Genotype: Fch1: A coadaptive 3.9 3.3 B coadaptive 2.2 6.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.33738 disease 3 +1166 Fitness: 9.33738 Genotype: Fch1: A coadaptive 3.9 3.3 B coadaptive 2.2 6.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.33738 disease 3 +1167 Fitness: 9.33738 Genotype: Fch1: A coadaptive 3.9 3.3 B coadaptive 2.2 6.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.33738 disease 3 +1168 Fitness: 5.84845 Genotype: Fch1: A coadaptive 6.2 2.7 B coadaptive 5.9 10 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.84845 disease 3 +1169 Fitness: 5.84845 Genotype: Fch1: A coadaptive 6.2 2.7 B coadaptive 5.9 10 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.84845 disease 3 +1170 Fitness: 5.84845 Genotype: Fch1: A coadaptive 6.2 2.7 B coadaptive 5.9 10 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.84845 disease 3 +1171 Fitness: 3.62455 Genotype: Fch1: A coadaptive 3 1.2 B coadaptive 2.1 2.3 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 3.62455 disease 3 +1172 Fitness: 3.62455 Genotype: Fch1: A coadaptive 3 1.2 B coadaptive 2.1 2.3 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 3.62455 disease 3 +1173 Fitness: 3.62455 Genotype: Fch1: A coadaptive 3 1.2 B coadaptive 2.1 2.3 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 3.62455 disease 3 +1174 Fitness: 6.69611 Genotype: Fch1: A coadaptive 7.4 7 B coadaptive 5 2.9 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.69611 disease 3 +1175 Fitness: 6.69611 Genotype: Fch1: A coadaptive 7.4 7 B coadaptive 5 2.9 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.69611 disease 3 +1176 Fitness: 6.69611 Genotype: Fch1: A coadaptive 7.4 7 B coadaptive 5 2.9 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.69611 disease 3 +1177 Fitness: 12.9142 Genotype: Fch1: A coadaptive 8.1 4.9 B coadaptive 2.7 7.6 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.9142 disease 2 +1178 Fitness: 12.9142 Genotype: Fch1: A coadaptive 8.1 4.9 B coadaptive 2.7 7.6 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.9142 disease 2 +1179 Fitness: 12.9142 Genotype: Fch1: A coadaptive 8.1 4.9 B coadaptive 2.7 7.6 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.9142 disease 2 +1180 Fitness: 6.28514 Genotype: Fch1: A coadaptive 8 0.9 B coadaptive 3.9 1.3 C disease 0 0 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.28514 disease 2.5 +1181 Fitness: 6.28514 Genotype: Fch1: A coadaptive 8 0.9 B coadaptive 3.9 1.3 C disease 0 0 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.28514 disease 2.5 +1182 Fitness: 6.28514 Genotype: Fch1: A coadaptive 8 0.9 B coadaptive 3.9 1.3 C disease 0 0 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.28514 disease 2.5 +1183 Fitness: 11.8499 Genotype: Fch1: A coadaptive 9.3 1.3 B coadaptive 1.7 7.3 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.8499 disease 4 +1184 Fitness: 11.8499 Genotype: Fch1: A coadaptive 9.3 1.3 B coadaptive 1.7 7.3 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.8499 disease 4 +1185 Fitness: 11.8499 Genotype: Fch1: A coadaptive 9.3 1.3 B coadaptive 1.7 7.3 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.8499 disease 4 +1186 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.3 B coadaptive 5 8.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1187 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.3 B coadaptive 5 8.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1188 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.3 B coadaptive 5 8.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1189 Fitness: 12.1093 Genotype: Fch1: A coadaptive 1.8 9.1 B coadaptive 6.3 2.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 12.1093 disease 3.5 +1190 Fitness: 12.1093 Genotype: Fch1: A coadaptive 1.8 9.1 B coadaptive 6.3 2.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 12.1093 disease 3.5 +1191 Fitness: 12.1093 Genotype: Fch1: A coadaptive 1.8 9.1 B coadaptive 6.3 2.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 12.1093 disease 3.5 +1192 Fitness: 4.89172 Genotype: Fch1: A coadaptive 9.7 5.2 B coadaptive 2.6 5 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.89172 disease 3.5 +1193 Fitness: 4.89172 Genotype: Fch1: A coadaptive 9.7 5.2 B coadaptive 2.6 5 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.89172 disease 3.5 +1194 Fitness: 4.89172 Genotype: Fch1: A coadaptive 9.7 5.2 B coadaptive 2.6 5 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.89172 disease 3.5 +1195 Fitness: 13.1342 Genotype: Fch1: A coadaptive 8.3 3.4 B coadaptive 8.7 6 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.1342 disease 2.5 +1196 Fitness: 13.1342 Genotype: Fch1: A coadaptive 8.3 3.4 B coadaptive 8.7 6 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.1342 disease 2.5 +1197 Fitness: 13.1342 Genotype: Fch1: A coadaptive 8.3 3.4 B coadaptive 8.7 6 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.1342 disease 2.5 +1198 Fitness: 3.99018 Genotype: Fch1: A coadaptive 2.4 6.7 B coadaptive 0 4 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 3.99018 disease 3 +1199 Fitness: 3.99018 Genotype: Fch1: A coadaptive 2.4 6.7 B coadaptive 0 4 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 3.99018 disease 3 +1200 Fitness: 3.99018 Genotype: Fch1: A coadaptive 2.4 6.7 B coadaptive 0 4 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 3.99018 disease 3 +1201 Fitness: 11.5904 Genotype: Fch1: A coadaptive 2.2 6.6 B coadaptive 7.8 2.6 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.5904 disease 2.5 +1202 Fitness: 11.5904 Genotype: Fch1: A coadaptive 2.2 6.6 B coadaptive 7.8 2.6 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.5904 disease 2.5 +1203 Fitness: 11.5904 Genotype: Fch1: A coadaptive 2.2 6.6 B coadaptive 7.8 2.6 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.5904 disease 2.5 +1204 Fitness: 14.4298 Genotype: Fch1: A coadaptive 6.6 5.7 B coadaptive 9.1 2.8 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.4298 disease 2 +1205 Fitness: 14.4298 Genotype: Fch1: A coadaptive 6.6 5.7 B coadaptive 9.1 2.8 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.4298 disease 2 +1206 Fitness: 14.4298 Genotype: Fch1: A coadaptive 6.6 5.7 B coadaptive 9.1 2.8 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.4298 disease 2 +1207 Fitness: 6.71266 Genotype: Fch1: A coadaptive 6.2 0.1 B coadaptive 1.3 4.9 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 6.71266 disease 3.5 +1208 Fitness: 6.71266 Genotype: Fch1: A coadaptive 6.2 0.1 B coadaptive 1.3 4.9 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 6.71266 disease 3.5 +1209 Fitness: 6.71266 Genotype: Fch1: A coadaptive 6.2 0.1 B coadaptive 1.3 4.9 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 6.71266 disease 3.5 +1210 Fitness: 10.6785 Genotype: Fch1: A coadaptive 0.5 9.5 B coadaptive 6.8 1.3 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.6785 disease 2.5 +1211 Fitness: 10.6785 Genotype: Fch1: A coadaptive 0.5 9.5 B coadaptive 6.8 1.3 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.6785 disease 2.5 +1212 Fitness: 10.6785 Genotype: Fch1: A coadaptive 0.5 9.5 B coadaptive 6.8 1.3 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.6785 disease 2.5 +1213 Fitness: 10.6785 Genotype: Fch1: A coadaptive 2.7 5.4 B coadaptive 9.2 0.8 C disease 0 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 10.6785 disease 1.5 +1214 Fitness: 10.6785 Genotype: Fch1: A coadaptive 2.7 5.4 B coadaptive 9.2 0.8 C disease 0 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 10.6785 disease 1.5 +1215 Fitness: 10.6785 Genotype: Fch1: A coadaptive 2.7 5.4 B coadaptive 9.2 0.8 C disease 0 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 10.6785 disease 1.5 +1216 Fitness: 8.27262 Genotype: Fch1: A coadaptive 9.7 9 B coadaptive 7.9 7.4 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.27262 disease 4 +1217 Fitness: 8.27262 Genotype: Fch1: A coadaptive 9.7 9 B coadaptive 7.9 7.4 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.27262 disease 4 +1218 Fitness: 8.27262 Genotype: Fch1: A coadaptive 9.7 9 B coadaptive 7.9 7.4 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.27262 disease 4 +1219 Fitness: 10.9022 Genotype: Fch1: A coadaptive 4.8 8.5 B coadaptive 7.6 9.5 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 10.9022 disease 3.5 +1220 Fitness: 10.9022 Genotype: Fch1: A coadaptive 4.8 8.5 B coadaptive 7.6 9.5 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 10.9022 disease 3.5 +1221 Fitness: 10.9022 Genotype: Fch1: A coadaptive 4.8 8.5 B coadaptive 7.6 9.5 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 10.9022 disease 3.5 +1222 Fitness: 8.7584 Genotype: Fch1: A coadaptive 1.7 7.1 B coadaptive 5.8 8.6 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.7584 disease 4 +1223 Fitness: 8.7584 Genotype: Fch1: A coadaptive 1.7 7.1 B coadaptive 5.8 8.6 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.7584 disease 4 +1224 Fitness: 8.7584 Genotype: Fch1: A coadaptive 1.7 7.1 B coadaptive 5.8 8.6 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.7584 disease 4 +1225 Fitness: 13.839 Genotype: Fch1: A coadaptive 6.3 7.5 B coadaptive 7.6 4 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.839 disease 2.5 +1226 Fitness: 13.839 Genotype: Fch1: A coadaptive 6.3 7.5 B coadaptive 7.6 4 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.839 disease 2.5 +1227 Fitness: 13.839 Genotype: Fch1: A coadaptive 6.3 7.5 B coadaptive 7.6 4 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.839 disease 2.5 +1228 Fitness: 0.673964 Genotype: Fch1: A coadaptive 2.7 0.6 B coadaptive 6.1 4.8 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0.673964 disease 3 +1229 Fitness: 0.673964 Genotype: Fch1: A coadaptive 2.7 0.6 B coadaptive 6.1 4.8 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0.673964 disease 3 +1230 Fitness: 0.673964 Genotype: Fch1: A coadaptive 2.7 0.6 B coadaptive 6.1 4.8 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0.673964 disease 3 +1231 Fitness: 13.9331 Genotype: Fch1: A coadaptive 9 6.2 B coadaptive 9.2 4.2 C disease 1 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.9331 disease 3.5 +1232 Fitness: 13.9331 Genotype: Fch1: A coadaptive 9 6.2 B coadaptive 9.2 4.2 C disease 1 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.9331 disease 3.5 +1233 Fitness: 13.9331 Genotype: Fch1: A coadaptive 9 6.2 B coadaptive 9.2 4.2 C disease 1 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.9331 disease 3.5 +1234 Fitness: 0.37025 Genotype: Fch1: A coadaptive 0.9 1.9 B coadaptive 1.3 8.9 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0.37025 disease 3.5 +1235 Fitness: 0.37025 Genotype: Fch1: A coadaptive 0.9 1.9 B coadaptive 1.3 8.9 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0.37025 disease 3.5 +1236 Fitness: 0.37025 Genotype: Fch1: A coadaptive 0.9 1.9 B coadaptive 1.3 8.9 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0.37025 disease 3.5 +1237 Fitness: 9.27268 Genotype: Fch1: A coadaptive 7.4 0.3 B coadaptive 4 3.9 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.27268 disease 2.5 +1238 Fitness: 9.27268 Genotype: Fch1: A coadaptive 7.4 0.3 B coadaptive 4 3.9 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.27268 disease 2.5 +1239 Fitness: 9.27268 Genotype: Fch1: A coadaptive 7.4 0.3 B coadaptive 4 3.9 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.27268 disease 2.5 +1240 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 0.8 B coadaptive 3.1 9.2 C disease 1 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1241 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 0.8 B coadaptive 3.1 9.2 C disease 1 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1242 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 0.8 B coadaptive 3.1 9.2 C disease 1 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1243 Fitness: 0 Genotype: Fch1: A coadaptive 4.7 8.4 B coadaptive 3.6 0.8 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1244 Fitness: 0 Genotype: Fch1: A coadaptive 4.7 8.4 B coadaptive 3.6 0.8 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1245 Fitness: 0 Genotype: Fch1: A coadaptive 4.7 8.4 B coadaptive 3.6 0.8 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1246 Fitness: 5.95008 Genotype: Fch1: A coadaptive 3.4 2.4 B coadaptive 3.1 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 5.95008 disease 2.5 +1247 Fitness: 5.95008 Genotype: Fch1: A coadaptive 3.4 2.4 B coadaptive 3.1 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 5.95008 disease 2.5 +1248 Fitness: 5.95008 Genotype: Fch1: A coadaptive 3.4 2.4 B coadaptive 3.1 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 5.95008 disease 2.5 +1249 Fitness: 2.0821 Genotype: Fch1: A coadaptive 2.5 3.2 B coadaptive 8.4 5.4 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 2.0821 disease 3 +1250 Fitness: 2.0821 Genotype: Fch1: A coadaptive 2.5 3.2 B coadaptive 8.4 5.4 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 2.0821 disease 3 +1251 Fitness: 2.0821 Genotype: Fch1: A coadaptive 2.5 3.2 B coadaptive 8.4 5.4 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 2.0821 disease 3 +1252 Fitness: 2.982 Genotype: Fch1: A coadaptive 9.6 9.7 B coadaptive 8.2 4.2 C disease 0 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 2.982 disease 3.5 +1253 Fitness: 2.982 Genotype: Fch1: A coadaptive 9.6 9.7 B coadaptive 8.2 4.2 C disease 0 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 2.982 disease 3.5 +1254 Fitness: 2.982 Genotype: Fch1: A coadaptive 9.6 9.7 B coadaptive 8.2 4.2 C disease 0 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 2.982 disease 3.5 +1255 Fitness: 7.38405 Genotype: Fch1: A coadaptive 4.1 1.9 B coadaptive 1.3 6.5 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.38405 disease 3.5 +1256 Fitness: 7.38405 Genotype: Fch1: A coadaptive 4.1 1.9 B coadaptive 1.3 6.5 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.38405 disease 3.5 +1257 Fitness: 7.38405 Genotype: Fch1: A coadaptive 4.1 1.9 B coadaptive 1.3 6.5 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.38405 disease 3.5 +1258 Fitness: 6.34202 Genotype: Fch1: A coadaptive 6.9 0 B coadaptive 10 3.2 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.34202 disease 2.5 +1259 Fitness: 6.34202 Genotype: Fch1: A coadaptive 6.9 0 B coadaptive 10 3.2 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.34202 disease 2.5 +1260 Fitness: 6.34202 Genotype: Fch1: A coadaptive 6.9 0 B coadaptive 10 3.2 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.34202 disease 2.5 +1261 Fitness: 8.91786 Genotype: Fch1: A coadaptive 7.7 3.4 B coadaptive 5.2 1.9 C disease 0.5 0.5 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.91786 disease 2.5 +1262 Fitness: 8.91786 Genotype: Fch1: A coadaptive 7.7 3.4 B coadaptive 5.2 1.9 C disease 0.5 0.5 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.91786 disease 2.5 +1263 Fitness: 8.91786 Genotype: Fch1: A coadaptive 7.7 3.4 B coadaptive 5.2 1.9 C disease 0.5 0.5 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.91786 disease 2.5 +1264 Fitness: 0 Genotype: Fch1: A coadaptive 3 3.6 B coadaptive 9.8 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1265 Fitness: 0 Genotype: Fch1: A coadaptive 3 3.6 B coadaptive 9.8 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1266 Fitness: 0 Genotype: Fch1: A coadaptive 3 3.6 B coadaptive 9.8 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1267 Fitness: 10.1766 Genotype: Fch1: A coadaptive 8.9 7.6 B coadaptive 6.5 5.2 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.1766 disease 3 +1268 Fitness: 10.1766 Genotype: Fch1: A coadaptive 8.9 7.6 B coadaptive 6.5 5.2 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.1766 disease 3 +1269 Fitness: 10.1766 Genotype: Fch1: A coadaptive 8.9 7.6 B coadaptive 6.5 5.2 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.1766 disease 3 +1270 Fitness: 6.01813 Genotype: Fch1: A coadaptive 1.2 3.9 B coadaptive 2.1 5.1 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.01813 disease 3 +1271 Fitness: 6.01813 Genotype: Fch1: A coadaptive 1.2 3.9 B coadaptive 2.1 5.1 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.01813 disease 3 +1272 Fitness: 6.01813 Genotype: Fch1: A coadaptive 1.2 3.9 B coadaptive 2.1 5.1 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.01813 disease 3 +1273 Fitness: 7.50316 Genotype: Fch1: A coadaptive 3.4 9.3 B coadaptive 4.2 2.9 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 7.50316 disease 3.5 +1274 Fitness: 7.50316 Genotype: Fch1: A coadaptive 3.4 9.3 B coadaptive 4.2 2.9 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 7.50316 disease 3.5 +1275 Fitness: 7.50316 Genotype: Fch1: A coadaptive 3.4 9.3 B coadaptive 4.2 2.9 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 7.50316 disease 3.5 +1276 Fitness: 7.72102 Genotype: Fch1: A coadaptive 3.8 2.3 B coadaptive 5.4 3.2 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.72102 disease 3.5 +1277 Fitness: 7.72102 Genotype: Fch1: A coadaptive 3.8 2.3 B coadaptive 5.4 3.2 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.72102 disease 3.5 +1278 Fitness: 7.72102 Genotype: Fch1: A coadaptive 3.8 2.3 B coadaptive 5.4 3.2 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.72102 disease 3.5 +1279 Fitness: 12.9951 Genotype: Fch1: A coadaptive 4.8 5.4 B coadaptive 8.9 3.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.9951 disease 3 +1280 Fitness: 12.9951 Genotype: Fch1: A coadaptive 4.8 5.4 B coadaptive 8.9 3.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.9951 disease 3 +1281 Fitness: 12.9951 Genotype: Fch1: A coadaptive 4.8 5.4 B coadaptive 8.9 3.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.9951 disease 3 +1282 Fitness: 0 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 2.8 2.7 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1283 Fitness: 0 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 2.8 2.7 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1284 Fitness: 0 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 2.8 2.7 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1285 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 0 B coadaptive 8.9 7.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1286 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 0 B coadaptive 8.9 7.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1287 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 0 B coadaptive 8.9 7.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1288 Fitness: 0 Genotype: Fch1: A coadaptive 10 9.8 B coadaptive 2.3 5.2 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1289 Fitness: 0 Genotype: Fch1: A coadaptive 10 9.8 B coadaptive 2.3 5.2 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1290 Fitness: 0 Genotype: Fch1: A coadaptive 10 9.8 B coadaptive 2.3 5.2 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1291 Fitness: 13.7423 Genotype: Fch1: A coadaptive 7.9 6.2 B coadaptive 9 6.6 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 13.7423 disease 3 +1292 Fitness: 13.7423 Genotype: Fch1: A coadaptive 7.9 6.2 B coadaptive 9 6.6 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 13.7423 disease 3 +1293 Fitness: 13.7423 Genotype: Fch1: A coadaptive 7.9 6.2 B coadaptive 9 6.6 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 13.7423 disease 3 +1294 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8 B coadaptive 1.7 1.6 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +1295 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8 B coadaptive 1.7 1.6 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +1296 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8 B coadaptive 1.7 1.6 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +1297 Fitness: 10.5061 Genotype: Fch1: A coadaptive 0.6 7.4 B coadaptive 6.7 4.2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.5061 disease 2 +1298 Fitness: 10.5061 Genotype: Fch1: A coadaptive 0.6 7.4 B coadaptive 6.7 4.2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.5061 disease 2 +1299 Fitness: 10.5061 Genotype: Fch1: A coadaptive 0.6 7.4 B coadaptive 6.7 4.2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.5061 disease 2 +1300 Fitness: 10.5784 Genotype: Fch1: A coadaptive 3.7 4.5 B coadaptive 3.6 8 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.5784 disease 2 +1301 Fitness: 10.5784 Genotype: Fch1: A coadaptive 3.7 4.5 B coadaptive 3.6 8 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.5784 disease 2 +1302 Fitness: 10.5784 Genotype: Fch1: A coadaptive 3.7 4.5 B coadaptive 3.6 8 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.5784 disease 2 +1303 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 0.9 B coadaptive 9 6.3 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1304 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 0.9 B coadaptive 9 6.3 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1305 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 0.9 B coadaptive 9 6.3 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1306 Fitness: 11.7908 Genotype: Fch1: A coadaptive 5.8 3.4 B coadaptive 5.7 4.1 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7908 disease 3 +1307 Fitness: 11.7908 Genotype: Fch1: A coadaptive 5.8 3.4 B coadaptive 5.7 4.1 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7908 disease 3 +1308 Fitness: 11.7908 Genotype: Fch1: A coadaptive 5.8 3.4 B coadaptive 5.7 4.1 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7908 disease 3 +1309 Fitness: 6.48226 Genotype: Fch1: A coadaptive 3 2.4 B coadaptive 8 1.5 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 6.48226 disease 3.5 +1310 Fitness: 6.48226 Genotype: Fch1: A coadaptive 3 2.4 B coadaptive 8 1.5 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 6.48226 disease 3.5 +1311 Fitness: 6.48226 Genotype: Fch1: A coadaptive 3 2.4 B coadaptive 8 1.5 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 6.48226 disease 3.5 +1312 Fitness: 1.3524 Genotype: Fch1: A coadaptive 8.2 5.8 B coadaptive 3.4 2.2 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 1.3524 disease 3 +1313 Fitness: 1.3524 Genotype: Fch1: A coadaptive 8.2 5.8 B coadaptive 3.4 2.2 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 1.3524 disease 3 +1314 Fitness: 1.3524 Genotype: Fch1: A coadaptive 8.2 5.8 B coadaptive 3.4 2.2 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 1.3524 disease 3 +1315 Fitness: 11.6535 Genotype: Fch1: A coadaptive 2.2 7.5 B coadaptive 4.2 4.9 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 11.6535 disease 3.5 +1316 Fitness: 11.6535 Genotype: Fch1: A coadaptive 2.2 7.5 B coadaptive 4.2 4.9 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 11.6535 disease 3.5 +1317 Fitness: 11.6535 Genotype: Fch1: A coadaptive 2.2 7.5 B coadaptive 4.2 4.9 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 11.6535 disease 3.5 +1318 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.5 B coadaptive 3.6 7.2 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1319 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.5 B coadaptive 3.6 7.2 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1320 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.5 B coadaptive 3.6 7.2 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1321 Fitness: 10.6328 Genotype: Fch1: A coadaptive 2.7 6.7 B coadaptive 2.4 5.8 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.6328 disease 2.5 +1322 Fitness: 10.6328 Genotype: Fch1: A coadaptive 2.7 6.7 B coadaptive 2.4 5.8 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.6328 disease 2.5 +1323 Fitness: 10.6328 Genotype: Fch1: A coadaptive 2.7 6.7 B coadaptive 2.4 5.8 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.6328 disease 2.5 +1324 Fitness: 10.1781 Genotype: Fch1: A coadaptive 9 6.5 B coadaptive 5.6 4.9 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.1781 disease 2.5 +1325 Fitness: 10.1781 Genotype: Fch1: A coadaptive 9 6.5 B coadaptive 5.6 4.9 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.1781 disease 2.5 +1326 Fitness: 10.1781 Genotype: Fch1: A coadaptive 9 6.5 B coadaptive 5.6 4.9 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.1781 disease 2.5 +1327 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.3 B coadaptive 5.7 7.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1328 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.3 B coadaptive 5.7 7.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1329 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.3 B coadaptive 5.7 7.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1330 Fitness: 9.83744 Genotype: Fch1: A coadaptive 6.2 1.9 B coadaptive 2.8 5.4 C disease 0 1 D disease 0.5 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 9.83744 disease 3 +1331 Fitness: 9.83744 Genotype: Fch1: A coadaptive 6.2 1.9 B coadaptive 2.8 5.4 C disease 0 1 D disease 0.5 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 9.83744 disease 3 +1332 Fitness: 9.83744 Genotype: Fch1: A coadaptive 6.2 1.9 B coadaptive 2.8 5.4 C disease 0 1 D disease 0.5 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 9.83744 disease 3 +1333 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.1 B coadaptive 9.4 3 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1334 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.1 B coadaptive 9.4 3 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1335 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.1 B coadaptive 9.4 3 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1336 Fitness: 4.50686 Genotype: Fch1: A coadaptive 7.8 7.6 B coadaptive 4.5 3.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.50686 disease 3 +1337 Fitness: 4.50686 Genotype: Fch1: A coadaptive 7.8 7.6 B coadaptive 4.5 3.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.50686 disease 3 +1338 Fitness: 4.50686 Genotype: Fch1: A coadaptive 7.8 7.6 B coadaptive 4.5 3.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.50686 disease 3 +1339 Fitness: 7.38215 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 1.4 6.1 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 7.38215 disease 2 +1340 Fitness: 7.38215 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 1.4 6.1 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 7.38215 disease 2 +1341 Fitness: 7.38215 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 1.4 6.1 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 7.38215 disease 2 +1342 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 1.2 B coadaptive 3.9 5.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1343 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 1.2 B coadaptive 3.9 5.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1344 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 1.2 B coadaptive 3.9 5.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1345 Fitness: 13.3603 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.1 4.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3603 disease 3.5 +1346 Fitness: 13.3603 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.1 4.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3603 disease 3.5 +1347 Fitness: 13.3603 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.1 4.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3603 disease 3.5 +1348 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 9 B coadaptive 6.6 1.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1349 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 9 B coadaptive 6.6 1.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1350 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 9 B coadaptive 6.6 1.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1351 Fitness: 0.812194 Genotype: Fch1: A coadaptive 4.4 6.4 B coadaptive 1.1 2.2 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0.812194 disease 2.5 +1352 Fitness: 0.812194 Genotype: Fch1: A coadaptive 4.4 6.4 B coadaptive 1.1 2.2 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0.812194 disease 2.5 +1353 Fitness: 0.812194 Genotype: Fch1: A coadaptive 4.4 6.4 B coadaptive 1.1 2.2 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0.812194 disease 2.5 +1354 Fitness: 12.2457 Genotype: Fch1: A coadaptive 7.7 7.5 B coadaptive 6.3 5.2 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.2457 disease 3.5 +1355 Fitness: 12.2457 Genotype: Fch1: A coadaptive 7.7 7.5 B coadaptive 6.3 5.2 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.2457 disease 3.5 +1356 Fitness: 12.2457 Genotype: Fch1: A coadaptive 7.7 7.5 B coadaptive 6.3 5.2 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.2457 disease 3.5 +1357 Fitness: 9.29223 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 6.7 1.5 C disease 0 1 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.29223 disease 3 +1358 Fitness: 9.29223 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 6.7 1.5 C disease 0 1 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.29223 disease 3 +1359 Fitness: 9.29223 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 6.7 1.5 C disease 0 1 D disease 0.5 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.29223 disease 3 +1360 Fitness: 14.4202 Genotype: Fch1: A coadaptive 6.3 8.3 B coadaptive 7.5 7 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4202 disease 3 +1361 Fitness: 14.4202 Genotype: Fch1: A coadaptive 6.3 8.3 B coadaptive 7.5 7 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4202 disease 3 +1362 Fitness: 14.4202 Genotype: Fch1: A coadaptive 6.3 8.3 B coadaptive 7.5 7 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4202 disease 3 +1363 Fitness: 7.80178 Genotype: Fch1: A coadaptive 0.5 5.7 B coadaptive 5.5 2.8 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.80178 disease 3 +1364 Fitness: 7.80178 Genotype: Fch1: A coadaptive 0.5 5.7 B coadaptive 5.5 2.8 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.80178 disease 3 +1365 Fitness: 7.80178 Genotype: Fch1: A coadaptive 0.5 5.7 B coadaptive 5.5 2.8 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.80178 disease 3 +1366 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 1 B coadaptive 10 3.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1367 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 1 B coadaptive 10 3.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1368 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 1 B coadaptive 10 3.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1369 Fitness: 0.853215 Genotype: Fch1: A coadaptive 9.9 3.4 B coadaptive 2.7 2.2 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0.853215 disease 3 +1370 Fitness: 0.853215 Genotype: Fch1: A coadaptive 9.9 3.4 B coadaptive 2.7 2.2 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0.853215 disease 3 +1371 Fitness: 0.853215 Genotype: Fch1: A coadaptive 9.9 3.4 B coadaptive 2.7 2.2 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0.853215 disease 3 +1372 Fitness: 9.7751 Genotype: Fch1: A coadaptive 7.4 4.4 B coadaptive 5.4 2.4 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.7751 disease 1.5 +1373 Fitness: 9.7751 Genotype: Fch1: A coadaptive 7.4 4.4 B coadaptive 5.4 2.4 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.7751 disease 1.5 +1374 Fitness: 9.7751 Genotype: Fch1: A coadaptive 7.4 4.4 B coadaptive 5.4 2.4 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.7751 disease 1.5 +1375 Fitness: 12.1818 Genotype: Fch1: A coadaptive 5.8 6 B coadaptive 7.1 8.4 C disease 1 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.1818 disease 2.5 +1376 Fitness: 12.1818 Genotype: Fch1: A coadaptive 5.8 6 B coadaptive 7.1 8.4 C disease 1 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.1818 disease 2.5 +1377 Fitness: 12.1818 Genotype: Fch1: A coadaptive 5.8 6 B coadaptive 7.1 8.4 C disease 1 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.1818 disease 2.5 +1378 Fitness: 3.69363 Genotype: Fch1: A coadaptive 3.6 2.8 B coadaptive 0 3.5 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 3.69363 disease 4 +1379 Fitness: 3.69363 Genotype: Fch1: A coadaptive 3.6 2.8 B coadaptive 0 3.5 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 3.69363 disease 4 +1380 Fitness: 3.69363 Genotype: Fch1: A coadaptive 3.6 2.8 B coadaptive 0 3.5 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 3.69363 disease 4 +1381 Fitness: 11.8499 Genotype: Fch1: A coadaptive 8.2 2.4 B coadaptive 5.9 3.1 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.8499 disease 3.5 +1382 Fitness: 11.8499 Genotype: Fch1: A coadaptive 8.2 2.4 B coadaptive 5.9 3.1 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.8499 disease 3.5 +1383 Fitness: 11.8499 Genotype: Fch1: A coadaptive 8.2 2.4 B coadaptive 5.9 3.1 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.8499 disease 3.5 +1384 Fitness: 0.750306 Genotype: Fch1: A coadaptive 2.1 2.6 B coadaptive 0.8 0.4 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 0.750306 disease 3 +1385 Fitness: 0.750306 Genotype: Fch1: A coadaptive 2.1 2.6 B coadaptive 0.8 0.4 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 0.750306 disease 3 +1386 Fitness: 0.750306 Genotype: Fch1: A coadaptive 2.1 2.6 B coadaptive 0.8 0.4 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 0.750306 disease 3 +1387 Fitness: 7.6917 Genotype: Fch1: A coadaptive 7.6 6.9 B coadaptive 8.1 0.3 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.6917 disease 3 +1388 Fitness: 7.6917 Genotype: Fch1: A coadaptive 7.6 6.9 B coadaptive 8.1 0.3 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.6917 disease 3 +1389 Fitness: 7.6917 Genotype: Fch1: A coadaptive 7.6 6.9 B coadaptive 8.1 0.3 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.6917 disease 3 +1390 Fitness: 7.08885 Genotype: Fch1: A coadaptive 2.2 9.7 B coadaptive 4.4 2.1 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 7.08885 disease 2.5 +1391 Fitness: 7.08885 Genotype: Fch1: A coadaptive 2.2 9.7 B coadaptive 4.4 2.1 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 7.08885 disease 2.5 +1392 Fitness: 7.08885 Genotype: Fch1: A coadaptive 2.2 9.7 B coadaptive 4.4 2.1 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 7.08885 disease 2.5 +1393 Fitness: 8.99609 Genotype: Fch1: A coadaptive 5.3 1.7 B coadaptive 3.7 6.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.99609 disease 2.5 +1394 Fitness: 8.99609 Genotype: Fch1: A coadaptive 5.3 1.7 B coadaptive 3.7 6.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.99609 disease 2.5 +1395 Fitness: 8.99609 Genotype: Fch1: A coadaptive 5.3 1.7 B coadaptive 3.7 6.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.99609 disease 2.5 +1396 Fitness: 11.466 Genotype: Fch1: A coadaptive 3.7 5.5 B coadaptive 4.5 8.3 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 11.466 disease 2.5 +1397 Fitness: 11.466 Genotype: Fch1: A coadaptive 3.7 5.5 B coadaptive 4.5 8.3 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 11.466 disease 2.5 +1398 Fitness: 11.466 Genotype: Fch1: A coadaptive 3.7 5.5 B coadaptive 4.5 8.3 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 11.466 disease 2.5 +1399 Fitness: 1.2479 Genotype: Fch1: A coadaptive 7.9 9.2 B coadaptive 4.6 3.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 1.2479 disease 3.5 +1400 Fitness: 1.2479 Genotype: Fch1: A coadaptive 7.9 9.2 B coadaptive 4.6 3.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 1.2479 disease 3.5 +1401 Fitness: 1.2479 Genotype: Fch1: A coadaptive 7.9 9.2 B coadaptive 4.6 3.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 1.2479 disease 3.5 +1402 Fitness: 8.34476 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 7.3 7.8 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 8.34476 disease 3 +1403 Fitness: 8.34476 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 7.3 7.8 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 8.34476 disease 3 +1404 Fitness: 8.34476 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 7.3 7.8 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 8.34476 disease 3 +1405 Fitness: 7.8805 Genotype: Fch1: A coadaptive 4.8 1.8 B coadaptive 1.9 5.5 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.8805 disease 3 +1406 Fitness: 7.8805 Genotype: Fch1: A coadaptive 4.8 1.8 B coadaptive 1.9 5.5 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.8805 disease 3 +1407 Fitness: 7.8805 Genotype: Fch1: A coadaptive 4.8 1.8 B coadaptive 1.9 5.5 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.8805 disease 3 +1408 Fitness: 3.67438 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 6.7 0.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.67438 disease 3.5 +1409 Fitness: 3.67438 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 6.7 0.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.67438 disease 3.5 +1410 Fitness: 3.67438 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 6.7 0.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.67438 disease 3.5 +1411 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 5.3 B coadaptive 0.5 1.7 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1412 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 5.3 B coadaptive 0.5 1.7 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1413 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 5.3 B coadaptive 0.5 1.7 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1414 Fitness: 11.6366 Genotype: Fch1: A coadaptive 4.7 4.7 B coadaptive 5 4.3 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.6366 disease 3.5 +1415 Fitness: 11.6366 Genotype: Fch1: A coadaptive 4.7 4.7 B coadaptive 5 4.3 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.6366 disease 3.5 +1416 Fitness: 11.6366 Genotype: Fch1: A coadaptive 4.7 4.7 B coadaptive 5 4.3 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.6366 disease 3.5 +1417 Fitness: 14.4261 Genotype: Fch1: A coadaptive 7.2 6.5 B coadaptive 6.9 5.4 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 14.4261 disease 2.5 +1418 Fitness: 14.4261 Genotype: Fch1: A coadaptive 7.2 6.5 B coadaptive 6.9 5.4 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 14.4261 disease 2.5 +1419 Fitness: 14.4261 Genotype: Fch1: A coadaptive 7.2 6.5 B coadaptive 6.9 5.4 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 14.4261 disease 2.5 +1420 Fitness: 5.08998 Genotype: Fch1: A coadaptive 6.1 6.3 B coadaptive 1.5 4.4 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.08998 disease 2 +1421 Fitness: 5.08998 Genotype: Fch1: A coadaptive 6.1 6.3 B coadaptive 1.5 4.4 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.08998 disease 2 +1422 Fitness: 5.08998 Genotype: Fch1: A coadaptive 6.1 6.3 B coadaptive 1.5 4.4 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.08998 disease 2 +1423 Fitness: 3.43222 Genotype: Fch1: A coadaptive 1 2.7 B coadaptive 0.4 4.4 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.43222 disease 4 +1424 Fitness: 3.43222 Genotype: Fch1: A coadaptive 1 2.7 B coadaptive 0.4 4.4 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.43222 disease 4 +1425 Fitness: 3.43222 Genotype: Fch1: A coadaptive 1 2.7 B coadaptive 0.4 4.4 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.43222 disease 4 +1426 Fitness: 12.9959 Genotype: Fch1: A coadaptive 1.2 9 B coadaptive 9.9 0.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.9959 disease 2.5 +1427 Fitness: 12.9959 Genotype: Fch1: A coadaptive 1.2 9 B coadaptive 9.9 0.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.9959 disease 2.5 +1428 Fitness: 12.9959 Genotype: Fch1: A coadaptive 1.2 9 B coadaptive 9.9 0.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.9959 disease 2.5 +1429 Fitness: 9.09951 Genotype: Fch1: A coadaptive 5.4 5.7 B coadaptive 0.3 6.9 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 9.09951 disease 2.5 +1430 Fitness: 9.09951 Genotype: Fch1: A coadaptive 5.4 5.7 B coadaptive 0.3 6.9 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 9.09951 disease 2.5 +1431 Fitness: 9.09951 Genotype: Fch1: A coadaptive 5.4 5.7 B coadaptive 0.3 6.9 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 9.09951 disease 2.5 +1432 Fitness: 8.62023 Genotype: Fch1: A coadaptive 2.4 4.3 B coadaptive 7.3 2.7 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 8.62023 disease 3 +1433 Fitness: 8.62023 Genotype: Fch1: A coadaptive 2.4 4.3 B coadaptive 7.3 2.7 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 8.62023 disease 3 +1434 Fitness: 8.62023 Genotype: Fch1: A coadaptive 2.4 4.3 B coadaptive 7.3 2.7 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 8.62023 disease 3 +1435 Fitness: 12.7476 Genotype: Fch1: A coadaptive 6.1 6.5 B coadaptive 8.6 1.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.7476 disease 3 +1436 Fitness: 12.7476 Genotype: Fch1: A coadaptive 6.1 6.5 B coadaptive 8.6 1.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.7476 disease 3 +1437 Fitness: 12.7476 Genotype: Fch1: A coadaptive 6.1 6.5 B coadaptive 8.6 1.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.7476 disease 3 +1438 Fitness: 11.5827 Genotype: Fch1: A coadaptive 5.3 3.5 B coadaptive 3.2 8.1 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 11.5827 disease 3 +1439 Fitness: 11.5827 Genotype: Fch1: A coadaptive 5.3 3.5 B coadaptive 3.2 8.1 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 11.5827 disease 3 +1440 Fitness: 11.5827 Genotype: Fch1: A coadaptive 5.3 3.5 B coadaptive 3.2 8.1 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 11.5827 disease 3 +1441 Fitness: 8.99464 Genotype: Fch1: A coadaptive 4.2 4.2 B coadaptive 6.1 7.6 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.99464 disease 2.5 +1442 Fitness: 8.99464 Genotype: Fch1: A coadaptive 4.2 4.2 B coadaptive 6.1 7.6 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.99464 disease 2.5 +1443 Fitness: 8.99464 Genotype: Fch1: A coadaptive 4.2 4.2 B coadaptive 6.1 7.6 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.99464 disease 2.5 +1444 Fitness: 10.8059 Genotype: Fch1: A coadaptive 7.2 6.3 B coadaptive 8.4 0.8 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 10.8059 disease 3.5 +1445 Fitness: 10.8059 Genotype: Fch1: A coadaptive 7.2 6.3 B coadaptive 8.4 0.8 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 10.8059 disease 3.5 +1446 Fitness: 10.8059 Genotype: Fch1: A coadaptive 7.2 6.3 B coadaptive 8.4 0.8 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 10.8059 disease 3.5 +1447 Fitness: 9.7149 Genotype: Fch1: A coadaptive 0.4 7 B coadaptive 1.1 8.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 9.7149 disease 2.5 +1448 Fitness: 9.7149 Genotype: Fch1: A coadaptive 0.4 7 B coadaptive 1.1 8.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 9.7149 disease 2.5 +1449 Fitness: 9.7149 Genotype: Fch1: A coadaptive 0.4 7 B coadaptive 1.1 8.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 9.7149 disease 2.5 +1450 Fitness: 9.47863 Genotype: Fch1: A coadaptive 7.3 0.2 B coadaptive 3.3 8.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.47863 disease 3 +1451 Fitness: 9.47863 Genotype: Fch1: A coadaptive 7.3 0.2 B coadaptive 3.3 8.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.47863 disease 3 +1452 Fitness: 9.47863 Genotype: Fch1: A coadaptive 7.3 0.2 B coadaptive 3.3 8.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.47863 disease 3 +1453 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 4.9 B coadaptive 6.5 9.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1454 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 4.9 B coadaptive 6.5 9.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1455 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 4.9 B coadaptive 6.5 9.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1456 Fitness: 8.92569 Genotype: Fch1: A coadaptive 6.4 1.7 B coadaptive 4.3 2.9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 8.92569 disease 3.5 +1457 Fitness: 8.92569 Genotype: Fch1: A coadaptive 6.4 1.7 B coadaptive 4.3 2.9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 8.92569 disease 3.5 +1458 Fitness: 8.92569 Genotype: Fch1: A coadaptive 6.4 1.7 B coadaptive 4.3 2.9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 8.92569 disease 3.5 +1459 Fitness: 8.58005 Genotype: Fch1: A coadaptive 7.6 7.6 B coadaptive 9.3 0.1 C disease 1 0 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.58005 disease 3 +1460 Fitness: 8.58005 Genotype: Fch1: A coadaptive 7.6 7.6 B coadaptive 9.3 0.1 C disease 1 0 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.58005 disease 3 +1461 Fitness: 8.58005 Genotype: Fch1: A coadaptive 7.6 7.6 B coadaptive 9.3 0.1 C disease 1 0 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.58005 disease 3 +1462 Fitness: 10.1939 Genotype: Fch1: A coadaptive 2.7 6.2 B coadaptive 6.9 1.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.1939 disease 1.5 +1463 Fitness: 10.1939 Genotype: Fch1: A coadaptive 2.7 6.2 B coadaptive 6.9 1.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.1939 disease 1.5 +1464 Fitness: 10.1939 Genotype: Fch1: A coadaptive 2.7 6.2 B coadaptive 6.9 1.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.1939 disease 1.5 +1465 Fitness: 14.099 Genotype: Fch1: A coadaptive 3.2 8.1 B coadaptive 8.1 4.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.099 disease 3.5 +1466 Fitness: 14.099 Genotype: Fch1: A coadaptive 3.2 8.1 B coadaptive 8.1 4.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.099 disease 3.5 +1467 Fitness: 14.099 Genotype: Fch1: A coadaptive 3.2 8.1 B coadaptive 8.1 4.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.099 disease 3.5 +1468 Fitness: 14.4233 Genotype: Fch1: A coadaptive 8.2 5.5 B coadaptive 8.5 6.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.4233 disease 2.5 +1469 Fitness: 14.4233 Genotype: Fch1: A coadaptive 8.2 5.5 B coadaptive 8.5 6.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.4233 disease 2.5 +1470 Fitness: 14.4233 Genotype: Fch1: A coadaptive 8.2 5.5 B coadaptive 8.5 6.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.4233 disease 2.5 +1471 Fitness: 14.4546 Genotype: Fch1: A coadaptive 5.5 7.8 B coadaptive 5.2 9.3 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 14.4546 disease 3.5 +1472 Fitness: 14.4546 Genotype: Fch1: A coadaptive 5.5 7.8 B coadaptive 5.2 9.3 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 14.4546 disease 3.5 +1473 Fitness: 14.4546 Genotype: Fch1: A coadaptive 5.5 7.8 B coadaptive 5.2 9.3 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 14.4546 disease 3.5 +1474 Fitness: 7.87565 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 0.7 7.1 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.87565 disease 3.5 +1475 Fitness: 7.87565 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 0.7 7.1 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.87565 disease 3.5 +1476 Fitness: 7.87565 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 0.7 7.1 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.87565 disease 3.5 +1477 Fitness: 6.07328 Genotype: Fch1: A coadaptive 2.5 4.9 B coadaptive 0.4 4.7 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.07328 disease 2.5 +1478 Fitness: 6.07328 Genotype: Fch1: A coadaptive 2.5 4.9 B coadaptive 0.4 4.7 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.07328 disease 2.5 +1479 Fitness: 6.07328 Genotype: Fch1: A coadaptive 2.5 4.9 B coadaptive 0.4 4.7 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.07328 disease 2.5 diff --git a/DEC_GUI/DEC-0.0/generation.1.xls b/DEC_GUI/DEC-0.0/generation.1.xls new file mode 100644 index 0000000..e2b7d8e --- /dev/null +++ b/DEC_GUI/DEC-0.0/generation.1.xls @@ -0,0 +1,2002 @@ +Population size: 2001 +1 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 1.4 B coadaptive 8.2 2.1 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +2 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 1.4 B coadaptive 8.2 2.1 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +3 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 1.4 B coadaptive 8.2 2.1 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +4 Fitness: 7.09589 Genotype: Fch1: A coadaptive 3.3 8.8 B coadaptive 4.1 2.5 C disease 1 0 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.09589 disease 4 +5 Fitness: 7.09589 Genotype: Fch1: A coadaptive 3.3 8.8 B coadaptive 4.1 2.5 C disease 1 0 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.09589 disease 4 +6 Fitness: 7.09589 Genotype: Fch1: A coadaptive 3.3 8.8 B coadaptive 4.1 2.5 C disease 1 0 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.09589 disease 4 +7 Fitness: 5.22059 Genotype: Fch1: A coadaptive 3.8 0.8 B coadaptive 8.3 0.6 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.22059 disease 2.5 +8 Fitness: 5.22059 Genotype: Fch1: A coadaptive 3.8 0.8 B coadaptive 8.3 0.6 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.22059 disease 2.5 +9 Fitness: 5.22059 Genotype: Fch1: A coadaptive 3.8 0.8 B coadaptive 8.3 0.6 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.22059 disease 2.5 +10 Fitness: 1.3524 Genotype: Fch1: A coadaptive 6.7 7.3 B coadaptive 0.4 5.2 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 1.3524 disease 2.5 +11 Fitness: 1.3524 Genotype: Fch1: A coadaptive 6.7 7.3 B coadaptive 0.4 5.2 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 1.3524 disease 2.5 +12 Fitness: 1.3524 Genotype: Fch1: A coadaptive 6.7 7.3 B coadaptive 0.4 5.2 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 1.3524 disease 2.5 +13 Fitness: 14.7211 Genotype: Fch1: A coadaptive 8.8 3.9 B coadaptive 9.6 3.7 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.7211 disease 3 +14 Fitness: 14.7211 Genotype: Fch1: A coadaptive 8.8 3.9 B coadaptive 9.6 3.7 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.7211 disease 3 +15 Fitness: 14.7211 Genotype: Fch1: A coadaptive 8.8 3.9 B coadaptive 9.6 3.7 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.7211 disease 3 +16 Fitness: 11.3019 Genotype: Fch1: A coadaptive 7.7 5.3 B coadaptive 1.9 7.3 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 11.3019 disease 2 +17 Fitness: 11.3019 Genotype: Fch1: A coadaptive 7.7 5.3 B coadaptive 1.9 7.3 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 11.3019 disease 2 +18 Fitness: 11.3019 Genotype: Fch1: A coadaptive 7.7 5.3 B coadaptive 1.9 7.3 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 11.3019 disease 2 +19 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.7 B coadaptive 7.8 7 C disease 0 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2 +20 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.7 B coadaptive 7.8 7 C disease 0 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2 +21 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.7 B coadaptive 7.8 7 C disease 0 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2 +22 Fitness: 9.52162 Genotype: Fch1: A coadaptive 5.5 2.9 B coadaptive 6.1 7.2 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 9.52162 disease 2.5 +23 Fitness: 9.52162 Genotype: Fch1: A coadaptive 5.5 2.9 B coadaptive 6.1 7.2 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 9.52162 disease 2.5 +24 Fitness: 9.52162 Genotype: Fch1: A coadaptive 5.5 2.9 B coadaptive 6.1 7.2 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 9.52162 disease 2.5 +25 Fitness: 9.74375 Genotype: Fch1: A coadaptive 0.9 7 B coadaptive 6.4 5.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.74375 disease 3 +26 Fitness: 9.74375 Genotype: Fch1: A coadaptive 0.9 7 B coadaptive 6.4 5.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.74375 disease 3 +27 Fitness: 9.74375 Genotype: Fch1: A coadaptive 0.9 7 B coadaptive 6.4 5.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.74375 disease 3 +28 Fitness: 7.70559 Genotype: Fch1: A coadaptive 4.2 4.3 B coadaptive 4.8 1.3 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.70559 disease 3 +29 Fitness: 7.70559 Genotype: Fch1: A coadaptive 4.2 4.3 B coadaptive 4.8 1.3 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.70559 disease 3 +30 Fitness: 7.70559 Genotype: Fch1: A coadaptive 4.2 4.3 B coadaptive 4.8 1.3 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.70559 disease 3 +31 Fitness: 11.7159 Genotype: Fch1: A coadaptive 5.4 4.4 B coadaptive 8.6 5 C disease 0 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.7159 disease 2 +32 Fitness: 11.7159 Genotype: Fch1: A coadaptive 5.4 4.4 B coadaptive 8.6 5 C disease 0 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.7159 disease 2 +33 Fitness: 11.7159 Genotype: Fch1: A coadaptive 5.4 4.4 B coadaptive 8.6 5 C disease 0 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.7159 disease 2 +34 Fitness: 10.0684 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 5 7.8 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 10.0684 disease 3.5 +35 Fitness: 10.0684 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 5 7.8 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 10.0684 disease 3.5 +36 Fitness: 10.0684 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 5 7.8 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 10.0684 disease 3.5 +37 Fitness: 14.7149 Genotype: Fch1: A coadaptive 5.5 8.4 B coadaptive 6.3 7.7 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 14.7149 disease 3.5 +38 Fitness: 14.7149 Genotype: Fch1: A coadaptive 5.5 8.4 B coadaptive 6.3 7.7 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 14.7149 disease 3.5 +39 Fitness: 14.7149 Genotype: Fch1: A coadaptive 5.5 8.4 B coadaptive 6.3 7.7 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 14.7149 disease 3.5 +40 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 2.5 B coadaptive 9.3 9.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 2 +41 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 2.5 B coadaptive 9.3 9.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 2 +42 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 2.5 B coadaptive 9.3 9.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 2 +43 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 9 B coadaptive 3.5 0.6 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +44 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 9 B coadaptive 3.5 0.6 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +45 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 9 B coadaptive 3.5 0.6 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +46 Fitness: 2.9123 Genotype: Fch1: A coadaptive 9 10 B coadaptive 2.4 9.4 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.9123 disease 3.5 +47 Fitness: 2.9123 Genotype: Fch1: A coadaptive 9 10 B coadaptive 2.4 9.4 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.9123 disease 3.5 +48 Fitness: 2.9123 Genotype: Fch1: A coadaptive 9 10 B coadaptive 2.4 9.4 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.9123 disease 3.5 +49 Fitness: 7.4 Genotype: Fch1: A coadaptive 0 6 B coadaptive 4 6 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.4 disease 3.5 +50 Fitness: 7.4 Genotype: Fch1: A coadaptive 0 6 B coadaptive 4 6 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.4 disease 3.5 +51 Fitness: 7.4 Genotype: Fch1: A coadaptive 0 6 B coadaptive 4 6 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.4 disease 3.5 +52 Fitness: 8.58689 Genotype: Fch1: A coadaptive 7.2 7.3 B coadaptive 4 4.8 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.58689 disease 3 +53 Fitness: 8.58689 Genotype: Fch1: A coadaptive 7.2 7.3 B coadaptive 4 4.8 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.58689 disease 3 +54 Fitness: 8.58689 Genotype: Fch1: A coadaptive 7.2 7.3 B coadaptive 4 4.8 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.58689 disease 3 +55 Fitness: 14.0591 Genotype: Fch1: A coadaptive 4.1 7.3 B coadaptive 4 9 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 14.0591 disease 3.5 +56 Fitness: 14.0591 Genotype: Fch1: A coadaptive 4.1 7.3 B coadaptive 4 9 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 14.0591 disease 3.5 +57 Fitness: 14.0591 Genotype: Fch1: A coadaptive 4.1 7.3 B coadaptive 4 9 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 14.0591 disease 3.5 +58 Fitness: 14.3102 Genotype: Fch1: A coadaptive 8.5 3.6 B coadaptive 4.6 7.1 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 14.3102 disease 3.5 +59 Fitness: 14.3102 Genotype: Fch1: A coadaptive 8.5 3.6 B coadaptive 4.6 7.1 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 14.3102 disease 3.5 +60 Fitness: 14.3102 Genotype: Fch1: A coadaptive 8.5 3.6 B coadaptive 4.6 7.1 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 14.3102 disease 3.5 +61 Fitness: 4.78435 Genotype: Fch1: A coadaptive 3.7 2.2 B coadaptive 2.8 1.7 C disease 1 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.78435 disease 4 +62 Fitness: 4.78435 Genotype: Fch1: A coadaptive 3.7 2.2 B coadaptive 2.8 1.7 C disease 1 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.78435 disease 4 +63 Fitness: 4.78435 Genotype: Fch1: A coadaptive 3.7 2.2 B coadaptive 2.8 1.7 C disease 1 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.78435 disease 4 +64 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 0.4 B coadaptive 10 0.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2 +65 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 0.4 B coadaptive 10 0.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2 +66 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 0.4 B coadaptive 10 0.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2 +67 Fitness: 7.8651 Genotype: Fch1: A coadaptive 8.3 0.3 B coadaptive 2 4.2 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.8651 disease 3.5 +68 Fitness: 7.8651 Genotype: Fch1: A coadaptive 8.3 0.3 B coadaptive 2 4.2 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.8651 disease 3.5 +69 Fitness: 7.8651 Genotype: Fch1: A coadaptive 8.3 0.3 B coadaptive 2 4.2 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.8651 disease 3.5 +70 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2.2 B coadaptive 4.9 9.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +71 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2.2 B coadaptive 4.9 9.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +72 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2.2 B coadaptive 4.9 9.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +73 Fitness: 4.4564 Genotype: Fch1: A coadaptive 2.4 5.2 B coadaptive 1.1 2.9 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 4.4564 disease 3 +74 Fitness: 4.4564 Genotype: Fch1: A coadaptive 2.4 5.2 B coadaptive 1.1 2.9 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 4.4564 disease 3 +75 Fitness: 4.4564 Genotype: Fch1: A coadaptive 2.4 5.2 B coadaptive 1.1 2.9 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 4.4564 disease 3 +76 Fitness: 4.18843 Genotype: Fch1: A coadaptive 5 5.3 B coadaptive 3.9 0.6 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 4.18843 disease 2 +77 Fitness: 4.18843 Genotype: Fch1: A coadaptive 5 5.3 B coadaptive 3.9 0.6 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 4.18843 disease 2 +78 Fitness: 4.18843 Genotype: Fch1: A coadaptive 5 5.3 B coadaptive 3.9 0.6 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 4.18843 disease 2 +79 Fitness: 0 Genotype: Fch1: A coadaptive 8.9 6 B coadaptive 1.9 2 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +80 Fitness: 0 Genotype: Fch1: A coadaptive 8.9 6 B coadaptive 1.9 2 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +81 Fitness: 0 Genotype: Fch1: A coadaptive 8.9 6 B coadaptive 1.9 2 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +82 Fitness: 12.1906 Genotype: Fch1: A coadaptive 9.5 7.3 B coadaptive 6.5 9 C disease 0 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.1906 disease 3 +83 Fitness: 12.1906 Genotype: Fch1: A coadaptive 9.5 7.3 B coadaptive 6.5 9 C disease 0 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.1906 disease 3 +84 Fitness: 12.1906 Genotype: Fch1: A coadaptive 9.5 7.3 B coadaptive 6.5 9 C disease 0 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.1906 disease 3 +85 Fitness: 12.5812 Genotype: Fch1: A coadaptive 5.5 6.9 B coadaptive 7.3 2.5 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.5812 disease 3.5 +86 Fitness: 12.5812 Genotype: Fch1: A coadaptive 5.5 6.9 B coadaptive 7.3 2.5 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.5812 disease 3.5 +87 Fitness: 12.5812 Genotype: Fch1: A coadaptive 5.5 6.9 B coadaptive 7.3 2.5 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.5812 disease 3.5 +88 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 2 B coadaptive 5 9 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +89 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 2 B coadaptive 5 9 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +90 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 2 B coadaptive 5 9 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +91 Fitness: 5.04765 Genotype: Fch1: A coadaptive 4.1 1.9 B coadaptive 3.4 9.2 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.04765 disease 1.5 +92 Fitness: 5.04765 Genotype: Fch1: A coadaptive 4.1 1.9 B coadaptive 3.4 9.2 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.04765 disease 1.5 +93 Fitness: 5.04765 Genotype: Fch1: A coadaptive 4.1 1.9 B coadaptive 3.4 9.2 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.04765 disease 1.5 +94 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 7.3 B coadaptive 2.1 0.3 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +95 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 7.3 B coadaptive 2.1 0.3 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +96 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 7.3 B coadaptive 2.1 0.3 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +97 Fitness: 10.8713 Genotype: Fch1: A coadaptive 9.9 6.8 B coadaptive 7.8 4.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.8713 disease 3 +98 Fitness: 10.8713 Genotype: Fch1: A coadaptive 9.9 6.8 B coadaptive 7.8 4.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.8713 disease 3 +99 Fitness: 10.8713 Genotype: Fch1: A coadaptive 9.9 6.8 B coadaptive 7.8 4.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.8713 disease 3 +100 Fitness: 0.601426 Genotype: Fch1: A coadaptive 2.1 9.2 B coadaptive 2.9 0.6 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0.601426 disease 3 +101 Fitness: 0.601426 Genotype: Fch1: A coadaptive 2.1 9.2 B coadaptive 2.9 0.6 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0.601426 disease 3 +102 Fitness: 0.601426 Genotype: Fch1: A coadaptive 2.1 9.2 B coadaptive 2.9 0.6 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0.601426 disease 3 +103 Fitness: 10.2968 Genotype: Fch1: A coadaptive 7.4 5.9 B coadaptive 4.7 4.1 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.2968 disease 3.5 +104 Fitness: 10.2968 Genotype: Fch1: A coadaptive 7.4 5.9 B coadaptive 4.7 4.1 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.2968 disease 3.5 +105 Fitness: 10.2968 Genotype: Fch1: A coadaptive 7.4 5.9 B coadaptive 4.7 4.1 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.2968 disease 3.5 +106 Fitness: 10.6025 Genotype: Fch1: A coadaptive 8.2 0.3 B coadaptive 4.9 3.9 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 10.6025 disease 2 +107 Fitness: 10.6025 Genotype: Fch1: A coadaptive 8.2 0.3 B coadaptive 4.9 3.9 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 10.6025 disease 2 +108 Fitness: 10.6025 Genotype: Fch1: A coadaptive 8.2 0.3 B coadaptive 4.9 3.9 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 10.6025 disease 2 +109 Fitness: 13.0458 Genotype: Fch1: A coadaptive 6.2 4.6 B coadaptive 10 3.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.0458 disease 3.5 +110 Fitness: 13.0458 Genotype: Fch1: A coadaptive 6.2 4.6 B coadaptive 10 3.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.0458 disease 3.5 +111 Fitness: 13.0458 Genotype: Fch1: A coadaptive 6.2 4.6 B coadaptive 10 3.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.0458 disease 3.5 +112 Fitness: 11.7213 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 7.3 1.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.7213 disease 4 +113 Fitness: 11.7213 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 7.3 1.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.7213 disease 4 +114 Fitness: 11.7213 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 7.3 1.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.7213 disease 4 +115 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.2 B coadaptive 4 9.9 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +116 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.2 B coadaptive 4 9.9 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +117 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.2 B coadaptive 4 9.9 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +118 Fitness: 7.65095 Genotype: Fch1: A coadaptive 9.7 6.6 B coadaptive 7.4 2.7 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.65095 disease 3 +119 Fitness: 7.65095 Genotype: Fch1: A coadaptive 9.7 6.6 B coadaptive 7.4 2.7 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.65095 disease 3 +120 Fitness: 7.65095 Genotype: Fch1: A coadaptive 9.7 6.6 B coadaptive 7.4 2.7 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.65095 disease 3 +121 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.3 B coadaptive 4.2 2.1 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +122 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.3 B coadaptive 4.2 2.1 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +123 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.3 B coadaptive 4.2 2.1 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +124 Fitness: 7.25225 Genotype: Fch1: A coadaptive 3.4 7.5 B coadaptive 8.4 8.7 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.25225 disease 2 +125 Fitness: 7.25225 Genotype: Fch1: A coadaptive 3.4 7.5 B coadaptive 8.4 8.7 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.25225 disease 2 +126 Fitness: 7.25225 Genotype: Fch1: A coadaptive 3.4 7.5 B coadaptive 8.4 8.7 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.25225 disease 2 +127 Fitness: 4.25203 Genotype: Fch1: A coadaptive 3 7.1 B coadaptive 9.3 8.2 C disease 0.5 0 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.25203 disease 3 +128 Fitness: 4.25203 Genotype: Fch1: A coadaptive 3 7.1 B coadaptive 9.3 8.2 C disease 0.5 0 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.25203 disease 3 +129 Fitness: 4.25203 Genotype: Fch1: A coadaptive 3 7.1 B coadaptive 9.3 8.2 C disease 0.5 0 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.25203 disease 3 +130 Fitness: 12.9073 Genotype: Fch1: A coadaptive 4.8 5.4 B coadaptive 3.7 6.8 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.9073 disease 2.5 +131 Fitness: 12.9073 Genotype: Fch1: A coadaptive 4.8 5.4 B coadaptive 3.7 6.8 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.9073 disease 2.5 +132 Fitness: 12.9073 Genotype: Fch1: A coadaptive 4.8 5.4 B coadaptive 3.7 6.8 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.9073 disease 2.5 +133 Fitness: 11.6535 Genotype: Fch1: A coadaptive 9.7 0 B coadaptive 1.6 7.5 C disease 0 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.6535 disease 1.5 +134 Fitness: 11.6535 Genotype: Fch1: A coadaptive 9.7 0 B coadaptive 1.6 7.5 C disease 0 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.6535 disease 1.5 +135 Fitness: 11.6535 Genotype: Fch1: A coadaptive 9.7 0 B coadaptive 1.6 7.5 C disease 0 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.6535 disease 1.5 +136 Fitness: 5.49162 Genotype: Fch1: A coadaptive 8.2 3.9 B coadaptive 2.2 3.7 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.49162 disease 4 +137 Fitness: 5.49162 Genotype: Fch1: A coadaptive 8.2 3.9 B coadaptive 2.2 3.7 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.49162 disease 4 +138 Fitness: 5.49162 Genotype: Fch1: A coadaptive 8.2 3.9 B coadaptive 2.2 3.7 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.49162 disease 4 +139 Fitness: 5.70625 Genotype: Fch1: A coadaptive 1.2 6.8 B coadaptive 7.4 7.6 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 5.70625 disease 4 +140 Fitness: 5.70625 Genotype: Fch1: A coadaptive 1.2 6.8 B coadaptive 7.4 7.6 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 5.70625 disease 4 +141 Fitness: 5.70625 Genotype: Fch1: A coadaptive 1.2 6.8 B coadaptive 7.4 7.6 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 5.70625 disease 4 +142 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 2.2 B coadaptive 5.2 6.8 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +143 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 2.2 B coadaptive 5.2 6.8 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +144 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 2.2 B coadaptive 5.2 6.8 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +145 Fitness: 14.4696 Genotype: Fch1: A coadaptive 6.3 5.7 B coadaptive 7 5.3 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.4696 disease 2.5 +146 Fitness: 14.4696 Genotype: Fch1: A coadaptive 6.3 5.7 B coadaptive 7 5.3 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.4696 disease 2.5 +147 Fitness: 14.4696 Genotype: Fch1: A coadaptive 6.3 5.7 B coadaptive 7 5.3 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.4696 disease 2.5 +148 Fitness: 11.1382 Genotype: Fch1: A coadaptive 6.5 2.2 B coadaptive 7.3 2.1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.1382 disease 2.5 +149 Fitness: 11.1382 Genotype: Fch1: A coadaptive 6.5 2.2 B coadaptive 7.3 2.1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.1382 disease 2.5 +150 Fitness: 11.1382 Genotype: Fch1: A coadaptive 6.5 2.2 B coadaptive 7.3 2.1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.1382 disease 2.5 +151 Fitness: 3.52012 Genotype: Fch1: A coadaptive 1.1 7.4 B coadaptive 0.7 2.9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.52012 disease 3 +152 Fitness: 3.52012 Genotype: Fch1: A coadaptive 1.1 7.4 B coadaptive 0.7 2.9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.52012 disease 3 +153 Fitness: 3.52012 Genotype: Fch1: A coadaptive 1.1 7.4 B coadaptive 0.7 2.9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.52012 disease 3 +154 Fitness: 0.585431 Genotype: Fch1: A coadaptive 1 0.1 B coadaptive 4.4 0.6 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0.585431 disease 3 +155 Fitness: 0.585431 Genotype: Fch1: A coadaptive 1 0.1 B coadaptive 4.4 0.6 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0.585431 disease 3 +156 Fitness: 0.585431 Genotype: Fch1: A coadaptive 1 0.1 B coadaptive 4.4 0.6 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0.585431 disease 3 +157 Fitness: 11.3914 Genotype: Fch1: A coadaptive 5.3 6.2 B coadaptive 8.1 0.6 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.3914 disease 2.5 +158 Fitness: 11.3914 Genotype: Fch1: A coadaptive 5.3 6.2 B coadaptive 8.1 0.6 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.3914 disease 2.5 +159 Fitness: 11.3914 Genotype: Fch1: A coadaptive 5.3 6.2 B coadaptive 8.1 0.6 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.3914 disease 2.5 +160 Fitness: 13.3806 Genotype: Fch1: A coadaptive 6.4 4 B coadaptive 2.9 8.9 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.3806 disease 3 +161 Fitness: 13.3806 Genotype: Fch1: A coadaptive 6.4 4 B coadaptive 2.9 8.9 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.3806 disease 3 +162 Fitness: 13.3806 Genotype: Fch1: A coadaptive 6.4 4 B coadaptive 2.9 8.9 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.3806 disease 3 +163 Fitness: 12.8062 Genotype: Fch1: A coadaptive 5.5 4.5 B coadaptive 9.3 1.3 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.8062 disease 3 +164 Fitness: 12.8062 Genotype: Fch1: A coadaptive 5.5 4.5 B coadaptive 9.3 1.3 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.8062 disease 3 +165 Fitness: 12.8062 Genotype: Fch1: A coadaptive 5.5 4.5 B coadaptive 9.3 1.3 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.8062 disease 3 +166 Fitness: 14.0448 Genotype: Fch1: A coadaptive 6 5.4 B coadaptive 3 8.6 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.0448 disease 2 +167 Fitness: 14.0448 Genotype: Fch1: A coadaptive 6 5.4 B coadaptive 3 8.6 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.0448 disease 2 +168 Fitness: 14.0448 Genotype: Fch1: A coadaptive 6 5.4 B coadaptive 3 8.6 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.0448 disease 2 +169 Fitness: 6.88567 Genotype: Fch1: A coadaptive 3.3 2.4 B coadaptive 1.6 8.3 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 6.88567 disease 4 +170 Fitness: 6.88567 Genotype: Fch1: A coadaptive 3.3 2.4 B coadaptive 1.6 8.3 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 6.88567 disease 4 +171 Fitness: 6.88567 Genotype: Fch1: A coadaptive 3.3 2.4 B coadaptive 1.6 8.3 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 6.88567 disease 4 +172 Fitness: 13.9915 Genotype: Fch1: A coadaptive 3.1 8.6 B coadaptive 7.2 6.5 C disease 0 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.9915 disease 2 +173 Fitness: 13.9915 Genotype: Fch1: A coadaptive 3.1 8.6 B coadaptive 7.2 6.5 C disease 0 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.9915 disease 2 +174 Fitness: 13.9915 Genotype: Fch1: A coadaptive 3.1 8.6 B coadaptive 7.2 6.5 C disease 0 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.9915 disease 2 +175 Fitness: 3.48672 Genotype: Fch1: A coadaptive 10 1 B coadaptive 2.3 2.2 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.48672 disease 2.5 +176 Fitness: 3.48672 Genotype: Fch1: A coadaptive 10 1 B coadaptive 2.3 2.2 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.48672 disease 2.5 +177 Fitness: 3.48672 Genotype: Fch1: A coadaptive 10 1 B coadaptive 2.3 2.2 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.48672 disease 2.5 +178 Fitness: 2.75292 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 1.2 1.8 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 2.75292 disease 2.5 +179 Fitness: 2.75292 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 1.2 1.8 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 2.75292 disease 2.5 +180 Fitness: 2.75292 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 1.2 1.8 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 2.75292 disease 2.5 +181 Fitness: 13.7246 Genotype: Fch1: A coadaptive 6.6 5.3 B coadaptive 2.3 8.5 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.7246 disease 3.5 +182 Fitness: 13.7246 Genotype: Fch1: A coadaptive 6.6 5.3 B coadaptive 2.3 8.5 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.7246 disease 3.5 +183 Fitness: 13.7246 Genotype: Fch1: A coadaptive 6.6 5.3 B coadaptive 2.3 8.5 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.7246 disease 3.5 +184 Fitness: 7.14954 Genotype: Fch1: A coadaptive 7.4 1.1 B coadaptive 9 5.9 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 7.14954 disease 3 +185 Fitness: 7.14954 Genotype: Fch1: A coadaptive 7.4 1.1 B coadaptive 9 5.9 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 7.14954 disease 3 +186 Fitness: 7.14954 Genotype: Fch1: A coadaptive 7.4 1.1 B coadaptive 9 5.9 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 7.14954 disease 3 +187 Fitness: 10.0468 Genotype: Fch1: A coadaptive 8.7 2.4 B coadaptive 9.5 6.6 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.0468 disease 3 +188 Fitness: 10.0468 Genotype: Fch1: A coadaptive 8.7 2.4 B coadaptive 9.5 6.6 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.0468 disease 3 +189 Fitness: 10.0468 Genotype: Fch1: A coadaptive 8.7 2.4 B coadaptive 9.5 6.6 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.0468 disease 3 +190 Fitness: 6.40828 Genotype: Fch1: A coadaptive 0.3 5.2 B coadaptive 1.9 8.2 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 6.40828 disease 3 +191 Fitness: 6.40828 Genotype: Fch1: A coadaptive 0.3 5.2 B coadaptive 1.9 8.2 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 6.40828 disease 3 +192 Fitness: 6.40828 Genotype: Fch1: A coadaptive 0.3 5.2 B coadaptive 1.9 8.2 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 6.40828 disease 3 +193 Fitness: 2.04483 Genotype: Fch1: A coadaptive 2 1.5 B coadaptive 0.2 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 2.04483 disease 4 +194 Fitness: 2.04483 Genotype: Fch1: A coadaptive 2 1.5 B coadaptive 0.2 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 2.04483 disease 4 +195 Fitness: 2.04483 Genotype: Fch1: A coadaptive 2 1.5 B coadaptive 0.2 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 2.04483 disease 4 +196 Fitness: 8.40065 Genotype: Fch1: A coadaptive 6.7 0.3 B coadaptive 4.9 6.7 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.40065 disease 2.5 +197 Fitness: 8.40065 Genotype: Fch1: A coadaptive 6.7 0.3 B coadaptive 4.9 6.7 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.40065 disease 2.5 +198 Fitness: 8.40065 Genotype: Fch1: A coadaptive 6.7 0.3 B coadaptive 4.9 6.7 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.40065 disease 2.5 +199 Fitness: 12.5259 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 8.5 2.7 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 12.5259 disease 3.5 +200 Fitness: 12.5259 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 8.5 2.7 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 12.5259 disease 3.5 +201 Fitness: 12.5259 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 8.5 2.7 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 12.5259 disease 3.5 +202 Fitness: 7.35052 Genotype: Fch1: A coadaptive 6.9 7.9 B coadaptive 6.6 1.9 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 7.35052 disease 3 +203 Fitness: 7.35052 Genotype: Fch1: A coadaptive 6.9 7.9 B coadaptive 6.6 1.9 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 7.35052 disease 3 +204 Fitness: 7.35052 Genotype: Fch1: A coadaptive 6.9 7.9 B coadaptive 6.6 1.9 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 7.35052 disease 3 +205 Fitness: 2.56055 Genotype: Fch1: A coadaptive 8.2 7.2 B coadaptive 3.2 4 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 2.56055 disease 2.5 +206 Fitness: 2.56055 Genotype: Fch1: A coadaptive 8.2 7.2 B coadaptive 3.2 4 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 2.56055 disease 2.5 +207 Fitness: 2.56055 Genotype: Fch1: A coadaptive 8.2 7.2 B coadaptive 3.2 4 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 2.56055 disease 2.5 +208 Fitness: 9.26696 Genotype: Fch1: A coadaptive 2.4 4.7 B coadaptive 1.1 8.4 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.26696 disease 3 +209 Fitness: 9.26696 Genotype: Fch1: A coadaptive 2.4 4.7 B coadaptive 1.1 8.4 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.26696 disease 3 +210 Fitness: 9.26696 Genotype: Fch1: A coadaptive 2.4 4.7 B coadaptive 1.1 8.4 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.26696 disease 3 +211 Fitness: 10.9401 Genotype: Fch1: A coadaptive 0.6 7.8 B coadaptive 4.4 7.1 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 10.9401 disease 4 +212 Fitness: 10.9401 Genotype: Fch1: A coadaptive 0.6 7.8 B coadaptive 4.4 7.1 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 10.9401 disease 4 +213 Fitness: 10.9401 Genotype: Fch1: A coadaptive 0.6 7.8 B coadaptive 4.4 7.1 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 10.9401 disease 4 +214 Fitness: 7.1984 Genotype: Fch1: A coadaptive 6.8 5.6 B coadaptive 3.5 3.3 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.1984 disease 2.5 +215 Fitness: 7.1984 Genotype: Fch1: A coadaptive 6.8 5.6 B coadaptive 3.5 3.3 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.1984 disease 2.5 +216 Fitness: 7.1984 Genotype: Fch1: A coadaptive 6.8 5.6 B coadaptive 3.5 3.3 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.1984 disease 2.5 +217 Fitness: 8.912 Genotype: Fch1: A coadaptive 6.3 8.5 B coadaptive 4.6 4.6 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.912 disease 3 +218 Fitness: 8.912 Genotype: Fch1: A coadaptive 6.3 8.5 B coadaptive 4.6 4.6 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.912 disease 3 +219 Fitness: 8.912 Genotype: Fch1: A coadaptive 6.3 8.5 B coadaptive 4.6 4.6 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.912 disease 3 +220 Fitness: 4.43047 Genotype: Fch1: A coadaptive 3.3 1.2 B coadaptive 9.9 0.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 4.43047 disease 2.5 +221 Fitness: 4.43047 Genotype: Fch1: A coadaptive 3.3 1.2 B coadaptive 9.9 0.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 4.43047 disease 2.5 +222 Fitness: 4.43047 Genotype: Fch1: A coadaptive 3.3 1.2 B coadaptive 9.9 0.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 4.43047 disease 2.5 +223 Fitness: 8.69688 Genotype: Fch1: A coadaptive 0.4 7.1 B coadaptive 7.8 4.6 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 8.69688 disease 3 +224 Fitness: 8.69688 Genotype: Fch1: A coadaptive 0.4 7.1 B coadaptive 7.8 4.6 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 8.69688 disease 3 +225 Fitness: 8.69688 Genotype: Fch1: A coadaptive 0.4 7.1 B coadaptive 7.8 4.6 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 8.69688 disease 3 +226 Fitness: 0 Genotype: Fch1: A coadaptive 3.3 1.5 B coadaptive 9.7 9.1 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2 +227 Fitness: 0 Genotype: Fch1: A coadaptive 3.3 1.5 B coadaptive 9.7 9.1 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2 +228 Fitness: 0 Genotype: Fch1: A coadaptive 3.3 1.5 B coadaptive 9.7 9.1 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2 +229 Fitness: 13.9902 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 5.2 6.6 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.9902 disease 4 +230 Fitness: 13.9902 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 5.2 6.6 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.9902 disease 4 +231 Fitness: 13.9902 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 5.2 6.6 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.9902 disease 4 +232 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 0.9 B coadaptive 9.2 7.5 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +233 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 0.9 B coadaptive 9.2 7.5 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +234 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 0.9 B coadaptive 9.2 7.5 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +235 Fitness: 12.5306 Genotype: Fch1: A coadaptive 7 9.4 B coadaptive 3.7 10 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.5306 disease 3.5 +236 Fitness: 12.5306 Genotype: Fch1: A coadaptive 7 9.4 B coadaptive 3.7 10 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.5306 disease 3.5 +237 Fitness: 12.5306 Genotype: Fch1: A coadaptive 7 9.4 B coadaptive 3.7 10 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.5306 disease 3.5 +238 Fitness: 4.70388 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 2.6 1.7 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 4.70388 disease 2.5 +239 Fitness: 4.70388 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 2.6 1.7 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 4.70388 disease 2.5 +240 Fitness: 4.70388 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 2.6 1.7 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 4.70388 disease 2.5 +241 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.9 B coadaptive 0.6 7.7 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +242 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.9 B coadaptive 0.6 7.7 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +243 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.9 B coadaptive 0.6 7.7 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +244 Fitness: 9.09131 Genotype: Fch1: A coadaptive 7.3 5.5 B coadaptive 4.8 3.1 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.09131 disease 3 +245 Fitness: 9.09131 Genotype: Fch1: A coadaptive 7.3 5.5 B coadaptive 4.8 3.1 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.09131 disease 3 +246 Fitness: 9.09131 Genotype: Fch1: A coadaptive 7.3 5.5 B coadaptive 4.8 3.1 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.09131 disease 3 +247 Fitness: 11.7368 Genotype: Fch1: A coadaptive 8.7 0.5 B coadaptive 6.3 6.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.7368 disease 3 +248 Fitness: 11.7368 Genotype: Fch1: A coadaptive 8.7 0.5 B coadaptive 6.3 6.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.7368 disease 3 +249 Fitness: 11.7368 Genotype: Fch1: A coadaptive 8.7 0.5 B coadaptive 6.3 6.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.7368 disease 3 +250 Fitness: 12.0324 Genotype: Fch1: A coadaptive 5.3 7.1 B coadaptive 9.2 0.2 C disease 1 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.0324 disease 4 +251 Fitness: 12.0324 Genotype: Fch1: A coadaptive 5.3 7.1 B coadaptive 9.2 0.2 C disease 1 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.0324 disease 4 +252 Fitness: 12.0324 Genotype: Fch1: A coadaptive 5.3 7.1 B coadaptive 9.2 0.2 C disease 1 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.0324 disease 4 +253 Fitness: 8.73841 Genotype: Fch1: A coadaptive 7.2 4.2 B coadaptive 5.4 1.7 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.73841 disease 1.5 +254 Fitness: 8.73841 Genotype: Fch1: A coadaptive 7.2 4.2 B coadaptive 5.4 1.7 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.73841 disease 1.5 +255 Fitness: 8.73841 Genotype: Fch1: A coadaptive 7.2 4.2 B coadaptive 5.4 1.7 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.73841 disease 1.5 +256 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 6.5 B coadaptive 10 7.1 C disease 0 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +257 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 6.5 B coadaptive 10 7.1 C disease 0 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +258 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 6.5 B coadaptive 10 7.1 C disease 0 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +259 Fitness: 14.0904 Genotype: Fch1: A coadaptive 5.3 9.5 B coadaptive 8.6 6.5 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 14.0904 disease 3 +260 Fitness: 14.0904 Genotype: Fch1: A coadaptive 5.3 9.5 B coadaptive 8.6 6.5 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 14.0904 disease 3 +261 Fitness: 14.0904 Genotype: Fch1: A coadaptive 5.3 9.5 B coadaptive 8.6 6.5 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 14.0904 disease 3 +262 Fitness: 6.20077 Genotype: Fch1: A coadaptive 1.2 5.8 B coadaptive 1.6 3.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.20077 disease 3.5 +263 Fitness: 6.20077 Genotype: Fch1: A coadaptive 1.2 5.8 B coadaptive 1.6 3.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.20077 disease 3.5 +264 Fitness: 6.20077 Genotype: Fch1: A coadaptive 1.2 5.8 B coadaptive 1.6 3.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.20077 disease 3.5 +265 Fitness: 6.29843 Genotype: Fch1: A coadaptive 8.3 1.2 B coadaptive 2.1 3.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.29843 disease 2.5 +266 Fitness: 6.29843 Genotype: Fch1: A coadaptive 8.3 1.2 B coadaptive 2.1 3.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.29843 disease 2.5 +267 Fitness: 6.29843 Genotype: Fch1: A coadaptive 8.3 1.2 B coadaptive 2.1 3.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.29843 disease 2.5 +268 Fitness: 9.46979 Genotype: Fch1: A coadaptive 5.4 5.2 B coadaptive 6.8 0.5 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.46979 disease 2.5 +269 Fitness: 9.46979 Genotype: Fch1: A coadaptive 5.4 5.2 B coadaptive 6.8 0.5 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.46979 disease 2.5 +270 Fitness: 9.46979 Genotype: Fch1: A coadaptive 5.4 5.2 B coadaptive 6.8 0.5 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.46979 disease 2.5 +271 Fitness: 11.8338 Genotype: Fch1: A coadaptive 4.7 9 B coadaptive 9.6 7.2 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.8338 disease 3 +272 Fitness: 11.8338 Genotype: Fch1: A coadaptive 4.7 9 B coadaptive 9.6 7.2 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.8338 disease 3 +273 Fitness: 11.8338 Genotype: Fch1: A coadaptive 4.7 9 B coadaptive 9.6 7.2 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.8338 disease 3 +274 Fitness: 6.74609 Genotype: Fch1: A coadaptive 0.7 7.3 B coadaptive 5 9.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.74609 disease 2.5 +275 Fitness: 6.74609 Genotype: Fch1: A coadaptive 0.7 7.3 B coadaptive 5 9.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.74609 disease 2.5 +276 Fitness: 6.74609 Genotype: Fch1: A coadaptive 0.7 7.3 B coadaptive 5 9.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.74609 disease 2.5 +277 Fitness: 9.19861 Genotype: Fch1: A coadaptive 3.7 9 B coadaptive 1.3 6.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.19861 disease 2.5 +278 Fitness: 9.19861 Genotype: Fch1: A coadaptive 3.7 9 B coadaptive 1.3 6.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.19861 disease 2.5 +279 Fitness: 9.19861 Genotype: Fch1: A coadaptive 3.7 9 B coadaptive 1.3 6.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.19861 disease 2.5 +280 Fitness: 0 Genotype: Fch1: A coadaptive 4 0.8 B coadaptive 8.9 8.6 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +281 Fitness: 0 Genotype: Fch1: A coadaptive 4 0.8 B coadaptive 8.9 8.6 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +282 Fitness: 0 Genotype: Fch1: A coadaptive 4 0.8 B coadaptive 8.9 8.6 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +283 Fitness: 6.6398 Genotype: Fch1: A coadaptive 5.1 0.3 B coadaptive 5.9 2.3 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.6398 disease 4 +284 Fitness: 6.6398 Genotype: Fch1: A coadaptive 5.1 0.3 B coadaptive 5.9 2.3 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.6398 disease 4 +285 Fitness: 6.6398 Genotype: Fch1: A coadaptive 5.1 0.3 B coadaptive 5.9 2.3 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.6398 disease 4 +286 Fitness: 12.6564 Genotype: Fch1: A coadaptive 0.6 9.9 B coadaptive 5.9 7.8 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.6564 disease 3.5 +287 Fitness: 12.6564 Genotype: Fch1: A coadaptive 0.6 9.9 B coadaptive 5.9 7.8 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.6564 disease 3.5 +288 Fitness: 12.6564 Genotype: Fch1: A coadaptive 0.6 9.9 B coadaptive 5.9 7.8 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.6564 disease 3.5 +289 Fitness: 3.80615 Genotype: Fch1: A coadaptive 2.9 7.7 B coadaptive 9.3 8.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 3.80615 disease 3.5 +290 Fitness: 3.80615 Genotype: Fch1: A coadaptive 2.9 7.7 B coadaptive 9.3 8.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 3.80615 disease 3.5 +291 Fitness: 3.80615 Genotype: Fch1: A coadaptive 2.9 7.7 B coadaptive 9.3 8.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 3.80615 disease 3.5 +292 Fitness: 13.3354 Genotype: Fch1: A coadaptive 4.2 6.5 B coadaptive 5.4 7.7 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.3354 disease 3 +293 Fitness: 13.3354 Genotype: Fch1: A coadaptive 4.2 6.5 B coadaptive 5.4 7.7 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.3354 disease 3 +294 Fitness: 13.3354 Genotype: Fch1: A coadaptive 4.2 6.5 B coadaptive 5.4 7.7 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.3354 disease 3 +295 Fitness: 5.70237 Genotype: Fch1: A coadaptive 3.3 1.6 B coadaptive 3.5 5.6 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.70237 disease 3 +296 Fitness: 5.70237 Genotype: Fch1: A coadaptive 3.3 1.6 B coadaptive 3.5 5.6 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.70237 disease 3 +297 Fitness: 5.70237 Genotype: Fch1: A coadaptive 3.3 1.6 B coadaptive 3.5 5.6 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.70237 disease 3 +298 Fitness: 12.6894 Genotype: Fch1: A coadaptive 8.9 7.4 B coadaptive 9 4.7 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.6894 disease 3.5 +299 Fitness: 12.6894 Genotype: Fch1: A coadaptive 8.9 7.4 B coadaptive 9 4.7 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.6894 disease 3.5 +300 Fitness: 12.6894 Genotype: Fch1: A coadaptive 8.9 7.4 B coadaptive 9 4.7 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.6894 disease 3.5 +301 Fitness: 13.3819 Genotype: Fch1: A coadaptive 7.8 3.5 B coadaptive 7.1 6.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.3819 disease 4 +302 Fitness: 13.3819 Genotype: Fch1: A coadaptive 7.8 3.5 B coadaptive 7.1 6.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.3819 disease 4 +303 Fitness: 13.3819 Genotype: Fch1: A coadaptive 7.8 3.5 B coadaptive 7.1 6.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.3819 disease 4 +304 Fitness: 3.68382 Genotype: Fch1: A coadaptive 6.4 6.1 B coadaptive 1.7 3.7 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.68382 disease 3.5 +305 Fitness: 3.68382 Genotype: Fch1: A coadaptive 6.4 6.1 B coadaptive 1.7 3.7 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.68382 disease 3.5 +306 Fitness: 3.68382 Genotype: Fch1: A coadaptive 6.4 6.1 B coadaptive 1.7 3.7 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.68382 disease 3.5 +307 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.8 B coadaptive 9.1 7.1 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +308 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.8 B coadaptive 9.1 7.1 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +309 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.8 B coadaptive 9.1 7.1 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +310 Fitness: 2.63248 Genotype: Fch1: A coadaptive 8.3 3 B coadaptive 2 2.3 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 2.63248 disease 2.5 +311 Fitness: 2.63248 Genotype: Fch1: A coadaptive 8.3 3 B coadaptive 2 2.3 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 2.63248 disease 2.5 +312 Fitness: 2.63248 Genotype: Fch1: A coadaptive 8.3 3 B coadaptive 2 2.3 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 2.63248 disease 2.5 +313 Fitness: 11.9339 Genotype: Fch1: A coadaptive 8.9 8.1 B coadaptive 7.7 7.6 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 11.9339 disease 2.5 +314 Fitness: 11.9339 Genotype: Fch1: A coadaptive 8.9 8.1 B coadaptive 7.7 7.6 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 11.9339 disease 2.5 +315 Fitness: 11.9339 Genotype: Fch1: A coadaptive 8.9 8.1 B coadaptive 7.7 7.6 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 11.9339 disease 2.5 +316 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.1 B coadaptive 6.2 8.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +317 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.1 B coadaptive 6.2 8.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +318 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.1 B coadaptive 6.2 8.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +319 Fitness: 6.4256 Genotype: Fch1: A coadaptive 9.3 8.3 B coadaptive 5.2 6 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.4256 disease 3 +320 Fitness: 6.4256 Genotype: Fch1: A coadaptive 9.3 8.3 B coadaptive 5.2 6 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.4256 disease 3 +321 Fitness: 6.4256 Genotype: Fch1: A coadaptive 9.3 8.3 B coadaptive 5.2 6 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.4256 disease 3 +322 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 6.6 B coadaptive 1.5 2.8 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +323 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 6.6 B coadaptive 1.5 2.8 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +324 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 6.6 B coadaptive 1.5 2.8 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +325 Fitness: 4.91923 Genotype: Fch1: A coadaptive 1.6 2.7 B coadaptive 6.5 0.8 C disease 0 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.91923 disease 2.5 +326 Fitness: 4.91923 Genotype: Fch1: A coadaptive 1.6 2.7 B coadaptive 6.5 0.8 C disease 0 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.91923 disease 2.5 +327 Fitness: 4.91923 Genotype: Fch1: A coadaptive 1.6 2.7 B coadaptive 6.5 0.8 C disease 0 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.91923 disease 2.5 +328 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 1.7 B coadaptive 9.5 8.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +329 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 1.7 B coadaptive 9.5 8.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +330 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 1.7 B coadaptive 9.5 8.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +331 Fitness: 7.95738 Genotype: Fch1: A coadaptive 4.4 2.7 B coadaptive 2.1 4.8 C disease 1 1 D disease 1 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.95738 disease 4 +332 Fitness: 7.95738 Genotype: Fch1: A coadaptive 4.4 2.7 B coadaptive 2.1 4.8 C disease 1 1 D disease 1 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.95738 disease 4 +333 Fitness: 7.95738 Genotype: Fch1: A coadaptive 4.4 2.7 B coadaptive 2.1 4.8 C disease 1 1 D disease 1 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.95738 disease 4 +334 Fitness: 12.8995 Genotype: Fch1: A coadaptive 7.2 7.4 B coadaptive 7.5 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.8995 disease 2.5 +335 Fitness: 12.8995 Genotype: Fch1: A coadaptive 7.2 7.4 B coadaptive 7.5 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.8995 disease 2.5 +336 Fitness: 12.8995 Genotype: Fch1: A coadaptive 7.2 7.4 B coadaptive 7.5 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.8995 disease 2.5 +337 Fitness: 12.2389 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 1.3 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.2389 disease 2.5 +338 Fitness: 12.2389 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 1.3 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.2389 disease 2.5 +339 Fitness: 12.2389 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 1.3 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.2389 disease 2.5 +340 Fitness: 14.1649 Genotype: Fch1: A coadaptive 8.2 4.1 B coadaptive 4.9 6.5 C disease 0.5 1 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 14.1649 disease 3.5 +341 Fitness: 14.1649 Genotype: Fch1: A coadaptive 8.2 4.1 B coadaptive 4.9 6.5 C disease 0.5 1 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 14.1649 disease 3.5 +342 Fitness: 14.1649 Genotype: Fch1: A coadaptive 8.2 4.1 B coadaptive 4.9 6.5 C disease 0.5 1 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 14.1649 disease 3.5 +343 Fitness: 6.2944 Genotype: Fch1: A coadaptive 3 3 B coadaptive 2.3 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 6.2944 disease 2.5 +344 Fitness: 6.2944 Genotype: Fch1: A coadaptive 3 3 B coadaptive 2.3 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 6.2944 disease 2.5 +345 Fitness: 6.2944 Genotype: Fch1: A coadaptive 3 3 B coadaptive 2.3 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 6.2944 disease 2.5 +346 Fitness: 8.74044 Genotype: Fch1: A coadaptive 9.7 3.4 B coadaptive 5 2.9 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.74044 disease 3 +347 Fitness: 8.74044 Genotype: Fch1: A coadaptive 9.7 3.4 B coadaptive 5 2.9 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.74044 disease 3 +348 Fitness: 8.74044 Genotype: Fch1: A coadaptive 9.7 3.4 B coadaptive 5 2.9 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.74044 disease 3 +349 Fitness: 3.74141 Genotype: Fch1: A coadaptive 0.5 9 B coadaptive 1.3 2.7 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.74141 disease 4 +350 Fitness: 3.74141 Genotype: Fch1: A coadaptive 0.5 9 B coadaptive 1.3 2.7 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.74141 disease 4 +351 Fitness: 3.74141 Genotype: Fch1: A coadaptive 0.5 9 B coadaptive 1.3 2.7 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.74141 disease 4 +352 Fitness: 12.8084 Genotype: Fch1: A coadaptive 0.9 10 B coadaptive 8.9 5.2 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.8084 disease 4 +353 Fitness: 12.8084 Genotype: Fch1: A coadaptive 0.9 10 B coadaptive 8.9 5.2 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.8084 disease 4 +354 Fitness: 12.8084 Genotype: Fch1: A coadaptive 0.9 10 B coadaptive 8.9 5.2 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.8084 disease 4 +355 Fitness: 11.083 Genotype: Fch1: A coadaptive 9.6 0.6 B coadaptive 4.2 4.2 C disease 1 0 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.083 disease 3 +356 Fitness: 11.083 Genotype: Fch1: A coadaptive 9.6 0.6 B coadaptive 4.2 4.2 C disease 1 0 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.083 disease 3 +357 Fitness: 11.083 Genotype: Fch1: A coadaptive 9.6 0.6 B coadaptive 4.2 4.2 C disease 1 0 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.083 disease 3 +358 Fitness: 9.08945 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 2.9 4.1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.08945 disease 2.5 +359 Fitness: 9.08945 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 2.9 4.1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.08945 disease 2.5 +360 Fitness: 9.08945 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 2.9 4.1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.08945 disease 2.5 +361 Fitness: 7.08885 Genotype: Fch1: A coadaptive 9.7 2.2 B coadaptive 1.6 4.9 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.08885 disease 2 +362 Fitness: 7.08885 Genotype: Fch1: A coadaptive 9.7 2.2 B coadaptive 1.6 4.9 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.08885 disease 2 +363 Fitness: 7.08885 Genotype: Fch1: A coadaptive 9.7 2.2 B coadaptive 1.6 4.9 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.08885 disease 2 +364 Fitness: 12.7767 Genotype: Fch1: A coadaptive 2.2 9 B coadaptive 4.9 4.9 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.7767 disease 2 +365 Fitness: 12.7767 Genotype: Fch1: A coadaptive 2.2 9 B coadaptive 4.9 4.9 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.7767 disease 2 +366 Fitness: 12.7767 Genotype: Fch1: A coadaptive 2.2 9 B coadaptive 4.9 4.9 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.7767 disease 2 +367 Fitness: 7.87565 Genotype: Fch1: A coadaptive 7.8 0 B coadaptive 3.4 3 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.87565 disease 3 +368 Fitness: 7.87565 Genotype: Fch1: A coadaptive 7.8 0 B coadaptive 3.4 3 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.87565 disease 3 +369 Fitness: 7.87565 Genotype: Fch1: A coadaptive 7.8 0 B coadaptive 3.4 3 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.87565 disease 3 +370 Fitness: 11.4438 Genotype: Fch1: A coadaptive 7.7 1 B coadaptive 5.2 6.1 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.4438 disease 3.5 +371 Fitness: 11.4438 Genotype: Fch1: A coadaptive 7.7 1 B coadaptive 5.2 6.1 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.4438 disease 3.5 +372 Fitness: 11.4438 Genotype: Fch1: A coadaptive 7.7 1 B coadaptive 5.2 6.1 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.4438 disease 3.5 +373 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.7 B coadaptive 2.4 1.8 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +374 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.7 B coadaptive 2.4 1.8 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +375 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.7 B coadaptive 2.4 1.8 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +376 Fitness: 10.0752 Genotype: Fch1: A coadaptive 5.3 3 B coadaptive 6.8 1.5 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.0752 disease 3 +377 Fitness: 10.0752 Genotype: Fch1: A coadaptive 5.3 3 B coadaptive 6.8 1.5 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.0752 disease 3 +378 Fitness: 10.0752 Genotype: Fch1: A coadaptive 5.3 3 B coadaptive 6.8 1.5 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.0752 disease 3 +379 Fitness: 5.18103 Genotype: Fch1: A coadaptive 6.6 0.5 B coadaptive 1.7 2.8 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.18103 disease 2.5 +380 Fitness: 5.18103 Genotype: Fch1: A coadaptive 6.6 0.5 B coadaptive 1.7 2.8 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.18103 disease 2.5 +381 Fitness: 5.18103 Genotype: Fch1: A coadaptive 6.6 0.5 B coadaptive 1.7 2.8 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.18103 disease 2.5 +382 Fitness: 5.78348 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 2.7 2.4 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 5.78348 disease 2.5 +383 Fitness: 5.78348 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 2.7 2.4 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 5.78348 disease 2.5 +384 Fitness: 5.78348 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 2.7 2.4 C disease 0 0.5 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 5.78348 disease 2.5 +385 Fitness: 11.345 Genotype: Fch1: A coadaptive 7.3 8.2 B coadaptive 8.1 3.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.345 disease 3.5 +386 Fitness: 11.345 Genotype: Fch1: A coadaptive 7.3 8.2 B coadaptive 8.1 3.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.345 disease 3.5 +387 Fitness: 11.345 Genotype: Fch1: A coadaptive 7.3 8.2 B coadaptive 8.1 3.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.345 disease 3.5 +388 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 7.6 B coadaptive 6.2 0.3 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +389 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 7.6 B coadaptive 6.2 0.3 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +390 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 7.6 B coadaptive 6.2 0.3 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +391 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 3.7 B coadaptive 7.8 8.3 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +392 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 3.7 B coadaptive 7.8 8.3 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +393 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 3.7 B coadaptive 7.8 8.3 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +394 Fitness: 14.5589 Genotype: Fch1: A coadaptive 9.4 4.8 B coadaptive 7.6 5.5 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.5589 disease 2.5 +395 Fitness: 14.5589 Genotype: Fch1: A coadaptive 9.4 4.8 B coadaptive 7.6 5.5 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.5589 disease 2.5 +396 Fitness: 14.5589 Genotype: Fch1: A coadaptive 9.4 4.8 B coadaptive 7.6 5.5 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.5589 disease 2.5 +397 Fitness: 2.50094 Genotype: Fch1: A coadaptive 1 4.7 B coadaptive 9.3 4.3 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 2.50094 disease 2.5 +398 Fitness: 2.50094 Genotype: Fch1: A coadaptive 1 4.7 B coadaptive 9.3 4.3 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 2.50094 disease 2.5 +399 Fitness: 2.50094 Genotype: Fch1: A coadaptive 1 4.7 B coadaptive 9.3 4.3 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 2.50094 disease 2.5 +400 Fitness: 8.2838 Genotype: Fch1: A coadaptive 5.7 1 B coadaptive 6.5 4.4 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.2838 disease 3 +401 Fitness: 8.2838 Genotype: Fch1: A coadaptive 5.7 1 B coadaptive 6.5 4.4 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.2838 disease 3 +402 Fitness: 8.2838 Genotype: Fch1: A coadaptive 5.7 1 B coadaptive 6.5 4.4 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.2838 disease 3 +403 Fitness: 6.3703 Genotype: Fch1: A coadaptive 5.1 2.4 B coadaptive 2.6 2.7 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.3703 disease 3 +404 Fitness: 6.3703 Genotype: Fch1: A coadaptive 5.1 2.4 B coadaptive 2.6 2.7 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.3703 disease 3 +405 Fitness: 6.3703 Genotype: Fch1: A coadaptive 5.1 2.4 B coadaptive 2.6 2.7 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.3703 disease 3 +406 Fitness: 4.73686 Genotype: Fch1: A coadaptive 6.1 4.2 B coadaptive 9.9 7.6 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.73686 disease 2.5 +407 Fitness: 4.73686 Genotype: Fch1: A coadaptive 6.1 4.2 B coadaptive 9.9 7.6 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.73686 disease 2.5 +408 Fitness: 4.73686 Genotype: Fch1: A coadaptive 6.1 4.2 B coadaptive 9.9 7.6 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.73686 disease 2.5 +409 Fitness: 12.6312 Genotype: Fch1: A coadaptive 9 7.3 B coadaptive 5.5 8.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.6312 disease 3 +410 Fitness: 12.6312 Genotype: Fch1: A coadaptive 9 7.3 B coadaptive 5.5 8.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.6312 disease 3 +411 Fitness: 12.6312 Genotype: Fch1: A coadaptive 9 7.3 B coadaptive 5.5 8.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.6312 disease 3 +412 Fitness: 11.2198 Genotype: Fch1: A coadaptive 6 7.6 B coadaptive 9.4 0.1 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.2198 disease 2.5 +413 Fitness: 11.2198 Genotype: Fch1: A coadaptive 6 7.6 B coadaptive 9.4 0.1 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.2198 disease 2.5 +414 Fitness: 11.2198 Genotype: Fch1: A coadaptive 6 7.6 B coadaptive 9.4 0.1 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.2198 disease 2.5 +415 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 8.2 B coadaptive 0.1 6.2 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +416 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 8.2 B coadaptive 0.1 6.2 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +417 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 8.2 B coadaptive 0.1 6.2 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +418 Fitness: 5.54338 Genotype: Fch1: A coadaptive 7.7 2.5 B coadaptive 0.4 4.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 5.54338 disease 3 +419 Fitness: 5.54338 Genotype: Fch1: A coadaptive 7.7 2.5 B coadaptive 0.4 4.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 5.54338 disease 3 +420 Fitness: 5.54338 Genotype: Fch1: A coadaptive 7.7 2.5 B coadaptive 0.4 4.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 5.54338 disease 3 +421 Fitness: 7.42023 Genotype: Fch1: A coadaptive 6 6 B coadaptive 3.7 3 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 7.42023 disease 3.5 +422 Fitness: 7.42023 Genotype: Fch1: A coadaptive 6 6 B coadaptive 3.7 3 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 7.42023 disease 3.5 +423 Fitness: 7.42023 Genotype: Fch1: A coadaptive 6 6 B coadaptive 3.7 3 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 7.42023 disease 3.5 +424 Fitness: 7.82605 Genotype: Fch1: A coadaptive 2.2 6.2 B coadaptive 2.5 3.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.82605 disease 2.5 +425 Fitness: 7.82605 Genotype: Fch1: A coadaptive 2.2 6.2 B coadaptive 2.5 3.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.82605 disease 2.5 +426 Fitness: 7.82605 Genotype: Fch1: A coadaptive 2.2 6.2 B coadaptive 2.5 3.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.82605 disease 2.5 +427 Fitness: 14.5215 Genotype: Fch1: A coadaptive 7.3 4.8 B coadaptive 8.4 4.6 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.5215 disease 2 +428 Fitness: 14.5215 Genotype: Fch1: A coadaptive 7.3 4.8 B coadaptive 8.4 4.6 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.5215 disease 2 +429 Fitness: 14.5215 Genotype: Fch1: A coadaptive 7.3 4.8 B coadaptive 8.4 4.6 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.5215 disease 2 +430 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 2.7 0.7 C disease 0 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +431 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 2.7 0.7 C disease 0 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +432 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 2.7 0.7 C disease 0 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +433 Fitness: 12.5215 Genotype: Fch1: A coadaptive 6.3 5.5 B coadaptive 4.6 5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.5215 disease 2 +434 Fitness: 12.5215 Genotype: Fch1: A coadaptive 6.3 5.5 B coadaptive 4.6 5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.5215 disease 2 +435 Fitness: 12.5215 Genotype: Fch1: A coadaptive 6.3 5.5 B coadaptive 4.6 5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.5215 disease 2 +436 Fitness: 0 Genotype: Fch1: A coadaptive 9 10 B coadaptive 4.7 2.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +437 Fitness: 0 Genotype: Fch1: A coadaptive 9 10 B coadaptive 4.7 2.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +438 Fitness: 0 Genotype: Fch1: A coadaptive 9 10 B coadaptive 4.7 2.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +439 Fitness: 12.8192 Genotype: Fch1: A coadaptive 8.5 2.4 B coadaptive 6.7 3.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.8192 disease 3.5 +440 Fitness: 12.8192 Genotype: Fch1: A coadaptive 8.5 2.4 B coadaptive 6.7 3.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.8192 disease 3.5 +441 Fitness: 12.8192 Genotype: Fch1: A coadaptive 8.5 2.4 B coadaptive 6.7 3.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.8192 disease 3.5 +442 Fitness: 3.1316 Genotype: Fch1: A coadaptive 0.8 6.8 B coadaptive 0.6 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 3.1316 disease 3.5 +443 Fitness: 3.1316 Genotype: Fch1: A coadaptive 0.8 6.8 B coadaptive 0.6 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 3.1316 disease 3.5 +444 Fitness: 3.1316 Genotype: Fch1: A coadaptive 0.8 6.8 B coadaptive 0.6 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 3.1316 disease 3.5 +445 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.1 B coadaptive 7 6.2 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +446 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.1 B coadaptive 7 6.2 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +447 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.1 B coadaptive 7 6.2 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +448 Fitness: 8.90701 Genotype: Fch1: A coadaptive 9.1 4.2 B coadaptive 0.4 7.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 8.90701 disease 3.5 +449 Fitness: 8.90701 Genotype: Fch1: A coadaptive 9.1 4.2 B coadaptive 0.4 7.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 8.90701 disease 3.5 +450 Fitness: 8.90701 Genotype: Fch1: A coadaptive 9.1 4.2 B coadaptive 0.4 7.7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 8.90701 disease 3.5 +451 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 7.4 B coadaptive 9.6 9 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +452 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 7.4 B coadaptive 9.6 9 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +453 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 7.4 B coadaptive 9.6 9 C disease 0.5 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +454 Fitness: 8.19554 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 6.1 0.3 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.19554 disease 3 +455 Fitness: 8.19554 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 6.1 0.3 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.19554 disease 3 +456 Fitness: 8.19554 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 6.1 0.3 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.19554 disease 3 +457 Fitness: 1.52384 Genotype: Fch1: A coadaptive 2.2 1.1 B coadaptive 1.7 0.5 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.52384 disease 3.5 +458 Fitness: 1.52384 Genotype: Fch1: A coadaptive 2.2 1.1 B coadaptive 1.7 0.5 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.52384 disease 3.5 +459 Fitness: 1.52384 Genotype: Fch1: A coadaptive 2.2 1.1 B coadaptive 1.7 0.5 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.52384 disease 3.5 +460 Fitness: 10.1087 Genotype: Fch1: A coadaptive 6.9 1.2 B coadaptive 6.8 5.3 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.1087 disease 3.5 +461 Fitness: 10.1087 Genotype: Fch1: A coadaptive 6.9 1.2 B coadaptive 6.8 5.3 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.1087 disease 3.5 +462 Fitness: 10.1087 Genotype: Fch1: A coadaptive 6.9 1.2 B coadaptive 6.8 5.3 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.1087 disease 3.5 +463 Fitness: 13.553 Genotype: Fch1: A coadaptive 7.3 3.6 B coadaptive 9 4.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.553 disease 2.5 +464 Fitness: 13.553 Genotype: Fch1: A coadaptive 7.3 3.6 B coadaptive 9 4.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.553 disease 2.5 +465 Fitness: 13.553 Genotype: Fch1: A coadaptive 7.3 3.6 B coadaptive 9 4.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.553 disease 2.5 +466 Fitness: 0.255006 Genotype: Fch1: A coadaptive 0.4 2 B coadaptive 9.3 0.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0.255006 disease 3.5 +467 Fitness: 0.255006 Genotype: Fch1: A coadaptive 0.4 2 B coadaptive 9.3 0.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0.255006 disease 3.5 +468 Fitness: 0.255006 Genotype: Fch1: A coadaptive 0.4 2 B coadaptive 9.3 0.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0.255006 disease 3.5 +469 Fitness: 13.6912 Genotype: Fch1: A coadaptive 5.3 6.3 B coadaptive 8.6 2.2 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 13.6912 disease 3 +470 Fitness: 13.6912 Genotype: Fch1: A coadaptive 5.3 6.3 B coadaptive 8.6 2.2 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 13.6912 disease 3 +471 Fitness: 13.6912 Genotype: Fch1: A coadaptive 5.3 6.3 B coadaptive 8.6 2.2 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 13.6912 disease 3 +472 Fitness: 11.8506 Genotype: Fch1: A coadaptive 2.1 6.9 B coadaptive 2.4 8.9 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.8506 disease 3.5 +473 Fitness: 11.8506 Genotype: Fch1: A coadaptive 2.1 6.9 B coadaptive 2.4 8.9 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.8506 disease 3.5 +474 Fitness: 11.8506 Genotype: Fch1: A coadaptive 2.1 6.9 B coadaptive 2.4 8.9 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.8506 disease 3.5 +475 Fitness: 11.5126 Genotype: Fch1: A coadaptive 7.5 3.7 B coadaptive 8.7 6.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 11.5126 disease 1.5 +476 Fitness: 11.5126 Genotype: Fch1: A coadaptive 7.5 3.7 B coadaptive 8.7 6.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 11.5126 disease 1.5 +477 Fitness: 11.5126 Genotype: Fch1: A coadaptive 7.5 3.7 B coadaptive 8.7 6.7 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 11.5126 disease 1.5 +478 Fitness: 8.36623 Genotype: Fch1: A coadaptive 3.9 4.2 B coadaptive 3.7 3 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.36623 disease 3.5 +479 Fitness: 8.36623 Genotype: Fch1: A coadaptive 3.9 4.2 B coadaptive 3.7 3 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.36623 disease 3.5 +480 Fitness: 8.36623 Genotype: Fch1: A coadaptive 3.9 4.2 B coadaptive 3.7 3 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.36623 disease 3.5 +481 Fitness: 4.42023 Genotype: Fch1: A coadaptive 0.7 6 B coadaptive 5 9 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.42023 disease 2.5 +482 Fitness: 4.42023 Genotype: Fch1: A coadaptive 0.7 6 B coadaptive 5 9 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.42023 disease 2.5 +483 Fitness: 4.42023 Genotype: Fch1: A coadaptive 0.7 6 B coadaptive 5 9 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.42023 disease 2.5 +484 Fitness: 2.88568 Genotype: Fch1: A coadaptive 0.9 6.6 B coadaptive 6.4 9.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 2.88568 disease 3 +485 Fitness: 2.88568 Genotype: Fch1: A coadaptive 0.9 6.6 B coadaptive 6.4 9.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 2.88568 disease 3 +486 Fitness: 2.88568 Genotype: Fch1: A coadaptive 0.9 6.6 B coadaptive 6.4 9.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 2.88568 disease 3 +487 Fitness: 3.78695 Genotype: Fch1: A coadaptive 1.8 8.2 B coadaptive 1 3.2 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.78695 disease 3.5 +488 Fitness: 3.78695 Genotype: Fch1: A coadaptive 1.8 8.2 B coadaptive 1 3.2 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.78695 disease 3.5 +489 Fitness: 3.78695 Genotype: Fch1: A coadaptive 1.8 8.2 B coadaptive 1 3.2 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.78695 disease 3.5 +490 Fitness: 14.6781 Genotype: Fch1: A coadaptive 9.5 3.2 B coadaptive 6.8 5.7 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.6781 disease 2.5 +491 Fitness: 14.6781 Genotype: Fch1: A coadaptive 9.5 3.2 B coadaptive 6.8 5.7 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.6781 disease 2.5 +492 Fitness: 14.6781 Genotype: Fch1: A coadaptive 9.5 3.2 B coadaptive 6.8 5.7 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.6781 disease 2.5 +493 Fitness: 14.2821 Genotype: Fch1: A coadaptive 2.9 9.7 B coadaptive 9.3 2.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.2821 disease 3.5 +494 Fitness: 14.2821 Genotype: Fch1: A coadaptive 2.9 9.7 B coadaptive 9.3 2.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.2821 disease 3.5 +495 Fitness: 14.2821 Genotype: Fch1: A coadaptive 2.9 9.7 B coadaptive 9.3 2.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.2821 disease 3.5 +496 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 9.3 B coadaptive 1 3.8 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +497 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 9.3 B coadaptive 1 3.8 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +498 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 9.3 B coadaptive 1 3.8 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +499 Fitness: 10.6253 Genotype: Fch1: A coadaptive 4.9 8.6 B coadaptive 8.3 0.8 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 10.6253 disease 3.5 +500 Fitness: 10.6253 Genotype: Fch1: A coadaptive 4.9 8.6 B coadaptive 8.3 0.8 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 10.6253 disease 3.5 +501 Fitness: 10.6253 Genotype: Fch1: A coadaptive 4.9 8.6 B coadaptive 8.3 0.8 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 10.6253 disease 3.5 +502 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 0.5 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +503 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 0.5 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +504 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 0.5 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +505 Fitness: 9.13421 Genotype: Fch1: A coadaptive 6.4 4.2 B coadaptive 1.7 5.4 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.13421 disease 4 +506 Fitness: 9.13421 Genotype: Fch1: A coadaptive 6.4 4.2 B coadaptive 1.7 5.4 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.13421 disease 4 +507 Fitness: 9.13421 Genotype: Fch1: A coadaptive 6.4 4.2 B coadaptive 1.7 5.4 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.13421 disease 4 +508 Fitness: 6.1625 Genotype: Fch1: A coadaptive 2 3.5 B coadaptive 0.8 9.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.1625 disease 1.5 +509 Fitness: 6.1625 Genotype: Fch1: A coadaptive 2 3.5 B coadaptive 0.8 9.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.1625 disease 1.5 +510 Fitness: 6.1625 Genotype: Fch1: A coadaptive 2 3.5 B coadaptive 0.8 9.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.1625 disease 1.5 +511 Fitness: 0.497152 Genotype: Fch1: A coadaptive 1.8 3.2 B coadaptive 9.9 3.7 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 0.497152 disease 3 +512 Fitness: 0.497152 Genotype: Fch1: A coadaptive 1.8 3.2 B coadaptive 9.9 3.7 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 0.497152 disease 3 +513 Fitness: 0.497152 Genotype: Fch1: A coadaptive 1.8 3.2 B coadaptive 9.9 3.7 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 0.497152 disease 3 +514 Fitness: 13.9034 Genotype: Fch1: A coadaptive 7.6 6.1 B coadaptive 8.7 2.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 13.9034 disease 2.5 +515 Fitness: 13.9034 Genotype: Fch1: A coadaptive 7.6 6.1 B coadaptive 8.7 2.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 13.9034 disease 2.5 +516 Fitness: 13.9034 Genotype: Fch1: A coadaptive 7.6 6.1 B coadaptive 8.7 2.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 13.9034 disease 2.5 +517 Fitness: 12.516 Genotype: Fch1: A coadaptive 9.3 6.5 B coadaptive 5.2 7.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.516 disease 2.5 +518 Fitness: 12.516 Genotype: Fch1: A coadaptive 9.3 6.5 B coadaptive 5.2 7.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.516 disease 2.5 +519 Fitness: 12.516 Genotype: Fch1: A coadaptive 9.3 6.5 B coadaptive 5.2 7.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.516 disease 2.5 +520 Fitness: 10.5425 Genotype: Fch1: A coadaptive 6.8 8.5 B coadaptive 3.8 6.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.5425 disease 2.5 +521 Fitness: 10.5425 Genotype: Fch1: A coadaptive 6.8 8.5 B coadaptive 3.8 6.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.5425 disease 2.5 +522 Fitness: 10.5425 Genotype: Fch1: A coadaptive 6.8 8.5 B coadaptive 3.8 6.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.5425 disease 2.5 +523 Fitness: 13.7071 Genotype: Fch1: A coadaptive 9.6 1.5 B coadaptive 7.8 3.3 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 13.7071 disease 3 +524 Fitness: 13.7071 Genotype: Fch1: A coadaptive 9.6 1.5 B coadaptive 7.8 3.3 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 13.7071 disease 3 +525 Fitness: 13.7071 Genotype: Fch1: A coadaptive 9.6 1.5 B coadaptive 7.8 3.3 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 13.7071 disease 3 +526 Fitness: 6.3212 Genotype: Fch1: A coadaptive 4.4 0.8 B coadaptive 7.4 0.6 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 6.3212 disease 3.5 +527 Fitness: 6.3212 Genotype: Fch1: A coadaptive 4.4 0.8 B coadaptive 7.4 0.6 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 6.3212 disease 3.5 +528 Fitness: 6.3212 Genotype: Fch1: A coadaptive 4.4 0.8 B coadaptive 7.4 0.6 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 6.3212 disease 3.5 +529 Fitness: 13.7515 Genotype: Fch1: A coadaptive 7.2 3.9 B coadaptive 7.5 3.7 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.7515 disease 2.5 +530 Fitness: 13.7515 Genotype: Fch1: A coadaptive 7.2 3.9 B coadaptive 7.5 3.7 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.7515 disease 2.5 +531 Fitness: 13.7515 Genotype: Fch1: A coadaptive 7.2 3.9 B coadaptive 7.5 3.7 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.7515 disease 2.5 +532 Fitness: 6.95979 Genotype: Fch1: A coadaptive 7 3.5 B coadaptive 7.7 9.2 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 6.95979 disease 3.5 +533 Fitness: 6.95979 Genotype: Fch1: A coadaptive 7 3.5 B coadaptive 7.7 9.2 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 6.95979 disease 3.5 +534 Fitness: 6.95979 Genotype: Fch1: A coadaptive 7 3.5 B coadaptive 7.7 9.2 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 6.95979 disease 3.5 +535 Fitness: 4.15813 Genotype: Fch1: A coadaptive 2.3 1.6 B coadaptive 4.9 1.2 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.15813 disease 2.5 +536 Fitness: 4.15813 Genotype: Fch1: A coadaptive 2.3 1.6 B coadaptive 4.9 1.2 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.15813 disease 2.5 +537 Fitness: 4.15813 Genotype: Fch1: A coadaptive 2.3 1.6 B coadaptive 4.9 1.2 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.15813 disease 2.5 +538 Fitness: 4.55901 Genotype: Fch1: A coadaptive 0.1 4.3 B coadaptive 8.2 1.3 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 4.55901 disease 3.5 +539 Fitness: 4.55901 Genotype: Fch1: A coadaptive 0.1 4.3 B coadaptive 8.2 1.3 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 4.55901 disease 3.5 +540 Fitness: 4.55901 Genotype: Fch1: A coadaptive 0.1 4.3 B coadaptive 8.2 1.3 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 4.55901 disease 3.5 +541 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 9.2 B coadaptive 1.3 0.2 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +542 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 9.2 B coadaptive 1.3 0.2 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +543 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 9.2 B coadaptive 1.3 0.2 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +544 Fitness: 13.0987 Genotype: Fch1: A coadaptive 7.4 3.6 B coadaptive 3.9 6.3 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0987 disease 3 +545 Fitness: 13.0987 Genotype: Fch1: A coadaptive 7.4 3.6 B coadaptive 3.9 6.3 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0987 disease 3 +546 Fitness: 13.0987 Genotype: Fch1: A coadaptive 7.4 3.6 B coadaptive 3.9 6.3 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0987 disease 3 +547 Fitness: 2.10063 Genotype: Fch1: A coadaptive 7.7 5.4 B coadaptive 1.9 3.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 2.10063 disease 2.5 +548 Fitness: 2.10063 Genotype: Fch1: A coadaptive 7.7 5.4 B coadaptive 1.9 3.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 2.10063 disease 2.5 +549 Fitness: 2.10063 Genotype: Fch1: A coadaptive 7.7 5.4 B coadaptive 1.9 3.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 2.10063 disease 2.5 +550 Fitness: 12.0822 Genotype: Fch1: A coadaptive 10 3.7 B coadaptive 5.2 4.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 12.0822 disease 3 +551 Fitness: 12.0822 Genotype: Fch1: A coadaptive 10 3.7 B coadaptive 5.2 4.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 12.0822 disease 3 +552 Fitness: 12.0822 Genotype: Fch1: A coadaptive 10 3.7 B coadaptive 5.2 4.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 12.0822 disease 3 +553 Fitness: 9.62055 Genotype: Fch1: A coadaptive 2.2 5.2 B coadaptive 4.9 4.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 9.62055 disease 3.5 +554 Fitness: 9.62055 Genotype: Fch1: A coadaptive 2.2 5.2 B coadaptive 4.9 4.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 9.62055 disease 3.5 +555 Fitness: 9.62055 Genotype: Fch1: A coadaptive 2.2 5.2 B coadaptive 4.9 4.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 9.62055 disease 3.5 +556 Fitness: 1.09516 Genotype: Fch1: A coadaptive 0.7 3.6 B coadaptive 5.2 7.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 1.09516 disease 3.5 +557 Fitness: 1.09516 Genotype: Fch1: A coadaptive 0.7 3.6 B coadaptive 5.2 7.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 1.09516 disease 3.5 +558 Fitness: 1.09516 Genotype: Fch1: A coadaptive 0.7 3.6 B coadaptive 5.2 7.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 1.09516 disease 3.5 +559 Fitness: 0.552931 Genotype: Fch1: A coadaptive 0.5 3.1 B coadaptive 3.4 8.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0.552931 disease 2 +560 Fitness: 0.552931 Genotype: Fch1: A coadaptive 0.5 3.1 B coadaptive 3.4 8.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0.552931 disease 2 +561 Fitness: 0.552931 Genotype: Fch1: A coadaptive 0.5 3.1 B coadaptive 3.4 8.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0.552931 disease 2 +562 Fitness: 9.5366 Genotype: Fch1: A coadaptive 5.3 2 B coadaptive 6.8 3.5 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 9.5366 disease 2.5 +563 Fitness: 9.5366 Genotype: Fch1: A coadaptive 5.3 2 B coadaptive 6.8 3.5 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 9.5366 disease 2.5 +564 Fitness: 9.5366 Genotype: Fch1: A coadaptive 5.3 2 B coadaptive 6.8 3.5 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 9.5366 disease 2.5 +565 Fitness: 9.17304 Genotype: Fch1: A coadaptive 6.1 5.2 B coadaptive 4.4 2.9 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.17304 disease 4 +566 Fitness: 9.17304 Genotype: Fch1: A coadaptive 6.1 5.2 B coadaptive 4.4 2.9 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.17304 disease 4 +567 Fitness: 9.17304 Genotype: Fch1: A coadaptive 6.1 5.2 B coadaptive 4.4 2.9 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.17304 disease 4 +568 Fitness: 0 Genotype: Fch1: A coadaptive 7.2 7.1 B coadaptive 0.8 0.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +569 Fitness: 0 Genotype: Fch1: A coadaptive 7.2 7.1 B coadaptive 0.8 0.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +570 Fitness: 0 Genotype: Fch1: A coadaptive 7.2 7.1 B coadaptive 0.8 0.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +571 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 3.4 B coadaptive 9.3 9.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +572 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 3.4 B coadaptive 9.3 9.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +573 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 3.4 B coadaptive 9.3 9.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +574 Fitness: 9.78656 Genotype: Fch1: A coadaptive 6.2 2 B coadaptive 3.7 9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.78656 disease 2.5 +575 Fitness: 9.78656 Genotype: Fch1: A coadaptive 6.2 2 B coadaptive 3.7 9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.78656 disease 2.5 +576 Fitness: 9.78656 Genotype: Fch1: A coadaptive 6.2 2 B coadaptive 3.7 9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.78656 disease 2.5 +577 Fitness: 13.1467 Genotype: Fch1: A coadaptive 3.9 7.3 B coadaptive 9.9 0.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 13.1467 disease 1.5 +578 Fitness: 13.1467 Genotype: Fch1: A coadaptive 3.9 7.3 B coadaptive 9.9 0.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 13.1467 disease 1.5 +579 Fitness: 13.1467 Genotype: Fch1: A coadaptive 3.9 7.3 B coadaptive 9.9 0.3 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 13.1467 disease 1.5 +580 Fitness: 2.7392 Genotype: Fch1: A coadaptive 0 6.4 B coadaptive 8.2 6.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.7392 disease 3 +581 Fitness: 2.7392 Genotype: Fch1: A coadaptive 0 6.4 B coadaptive 8.2 6.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.7392 disease 3 +582 Fitness: 2.7392 Genotype: Fch1: A coadaptive 0 6.4 B coadaptive 8.2 6.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.7392 disease 3 +583 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 9.5 B coadaptive 3.5 1.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +584 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 9.5 B coadaptive 3.5 1.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +585 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 9.5 B coadaptive 3.5 1.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +586 Fitness: 0.39765 Genotype: Fch1: A coadaptive 0.2 1.2 B coadaptive 3.9 2.9 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0.39765 disease 3 +587 Fitness: 0.39765 Genotype: Fch1: A coadaptive 0.2 1.2 B coadaptive 3.9 2.9 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0.39765 disease 3 +588 Fitness: 0.39765 Genotype: Fch1: A coadaptive 0.2 1.2 B coadaptive 3.9 2.9 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0.39765 disease 3 +589 Fitness: 9.74008 Genotype: Fch1: A coadaptive 6 1.5 B coadaptive 9.4 1.4 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.74008 disease 3 +590 Fitness: 9.74008 Genotype: Fch1: A coadaptive 6 1.5 B coadaptive 9.4 1.4 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.74008 disease 3 +591 Fitness: 9.74008 Genotype: Fch1: A coadaptive 6 1.5 B coadaptive 9.4 1.4 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.74008 disease 3 +592 Fitness: 9.56812 Genotype: Fch1: A coadaptive 6.7 1.8 B coadaptive 4.9 2.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 9.56812 disease 3 +593 Fitness: 9.56812 Genotype: Fch1: A coadaptive 6.7 1.8 B coadaptive 4.9 2.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 9.56812 disease 3 +594 Fitness: 9.56812 Genotype: Fch1: A coadaptive 6.7 1.8 B coadaptive 4.9 2.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 9.56812 disease 3 +595 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 7.1 B coadaptive 9.7 8.2 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +596 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 7.1 B coadaptive 9.7 8.2 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +597 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 7.1 B coadaptive 9.7 8.2 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +598 Fitness: 8.77855 Genotype: Fch1: A coadaptive 6.8 0 B coadaptive 1.5 7.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 8.77855 disease 2 +599 Fitness: 8.77855 Genotype: Fch1: A coadaptive 6.8 0 B coadaptive 1.5 7.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 8.77855 disease 2 +600 Fitness: 8.77855 Genotype: Fch1: A coadaptive 6.8 0 B coadaptive 1.5 7.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 8.77855 disease 2 +601 Fitness: 13.2799 Genotype: Fch1: A coadaptive 7.3 6.8 B coadaptive 8.4 7.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.2799 disease 3 +602 Fitness: 13.2799 Genotype: Fch1: A coadaptive 7.3 6.8 B coadaptive 8.4 7.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.2799 disease 3 +603 Fitness: 13.2799 Genotype: Fch1: A coadaptive 7.3 6.8 B coadaptive 8.4 7.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.2799 disease 3 +604 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 6.9 B coadaptive 4.2 1.4 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +605 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 6.9 B coadaptive 4.2 1.4 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +606 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 6.9 B coadaptive 4.2 1.4 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +607 Fitness: 11.3169 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 3.7 6.1 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.3169 disease 2.5 +608 Fitness: 11.3169 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 3.7 6.1 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.3169 disease 2.5 +609 Fitness: 11.3169 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 3.7 6.1 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.3169 disease 2.5 +610 Fitness: 0.925419 Genotype: Fch1: A coadaptive 7.2 3.7 B coadaptive 2.1 1.3 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0.925419 disease 1.5 +611 Fitness: 0.925419 Genotype: Fch1: A coadaptive 7.2 3.7 B coadaptive 2.1 1.3 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0.925419 disease 1.5 +612 Fitness: 0.925419 Genotype: Fch1: A coadaptive 7.2 3.7 B coadaptive 2.1 1.3 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0.925419 disease 1.5 +613 Fitness: 12.9903 Genotype: Fch1: A coadaptive 8.9 2.5 B coadaptive 4.2 5.8 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9903 disease 1.5 +614 Fitness: 12.9903 Genotype: Fch1: A coadaptive 8.9 2.5 B coadaptive 4.2 5.8 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9903 disease 1.5 +615 Fitness: 12.9903 Genotype: Fch1: A coadaptive 8.9 2.5 B coadaptive 4.2 5.8 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9903 disease 1.5 +616 Fitness: 9.35407 Genotype: Fch1: A coadaptive 2.9 4.5 B coadaptive 7.2 1.3 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.35407 disease 2.5 +617 Fitness: 9.35407 Genotype: Fch1: A coadaptive 2.9 4.5 B coadaptive 7.2 1.3 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.35407 disease 2.5 +618 Fitness: 9.35407 Genotype: Fch1: A coadaptive 2.9 4.5 B coadaptive 7.2 1.3 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.35407 disease 2.5 +619 Fitness: 5.76029 Genotype: Fch1: A coadaptive 1.9 5.1 B coadaptive 7.8 5.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 5.76029 disease 3 +620 Fitness: 5.76029 Genotype: Fch1: A coadaptive 1.9 5.1 B coadaptive 7.8 5.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 5.76029 disease 3 +621 Fitness: 5.76029 Genotype: Fch1: A coadaptive 1.9 5.1 B coadaptive 7.8 5.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 5.76029 disease 3 +622 Fitness: 13.9671 Genotype: Fch1: A coadaptive 6 8.6 B coadaptive 6 6.5 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.9671 disease 3.5 +623 Fitness: 13.9671 Genotype: Fch1: A coadaptive 6 8.6 B coadaptive 6 6.5 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.9671 disease 3.5 +624 Fitness: 13.9671 Genotype: Fch1: A coadaptive 6 8.6 B coadaptive 6 6.5 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.9671 disease 3.5 +625 Fitness: 2.77379 Genotype: Fch1: A coadaptive 2.2 1.7 B coadaptive 1.7 1.8 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 2.77379 disease 3.5 +626 Fitness: 2.77379 Genotype: Fch1: A coadaptive 2.2 1.7 B coadaptive 1.7 1.8 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 2.77379 disease 3.5 +627 Fitness: 2.77379 Genotype: Fch1: A coadaptive 2.2 1.7 B coadaptive 1.7 1.8 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 2.77379 disease 3.5 +628 Fitness: 14.1066 Genotype: Fch1: A coadaptive 7.7 7.2 B coadaptive 9.6 5.4 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 14.1066 disease 2.5 +629 Fitness: 14.1066 Genotype: Fch1: A coadaptive 7.7 7.2 B coadaptive 9.6 5.4 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 14.1066 disease 2.5 +630 Fitness: 14.1066 Genotype: Fch1: A coadaptive 7.7 7.2 B coadaptive 9.6 5.4 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 14.1066 disease 2.5 +631 Fitness: 0.673963 Genotype: Fch1: A coadaptive 6.5 4.4 B coadaptive 2.3 1 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0.673963 disease 2 +632 Fitness: 0.673963 Genotype: Fch1: A coadaptive 6.5 4.4 B coadaptive 2.3 1 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0.673963 disease 2 +633 Fitness: 0.673963 Genotype: Fch1: A coadaptive 6.5 4.4 B coadaptive 2.3 1 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0.673963 disease 2 +634 Fitness: 5.69723 Genotype: Fch1: A coadaptive 2.1 3.3 B coadaptive 2.4 3.5 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.69723 disease 2.5 +635 Fitness: 5.69723 Genotype: Fch1: A coadaptive 2.1 3.3 B coadaptive 2.4 3.5 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.69723 disease 2.5 +636 Fitness: 5.69723 Genotype: Fch1: A coadaptive 2.1 3.3 B coadaptive 2.4 3.5 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.69723 disease 2.5 +637 Fitness: 10.6242 Genotype: Fch1: A coadaptive 7.1 4.9 B coadaptive 8.2 8.3 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.6242 disease 1.5 +638 Fitness: 10.6242 Genotype: Fch1: A coadaptive 7.1 4.9 B coadaptive 8.2 8.3 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.6242 disease 1.5 +639 Fitness: 10.6242 Genotype: Fch1: A coadaptive 7.1 4.9 B coadaptive 8.2 8.3 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.6242 disease 1.5 +640 Fitness: 7.5908 Genotype: Fch1: A coadaptive 4.5 4.3 B coadaptive 1.2 4.8 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.5908 disease 2 +641 Fitness: 7.5908 Genotype: Fch1: A coadaptive 4.5 4.3 B coadaptive 1.2 4.8 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.5908 disease 2 +642 Fitness: 7.5908 Genotype: Fch1: A coadaptive 4.5 4.3 B coadaptive 1.2 4.8 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.5908 disease 2 +643 Fitness: 8.81757 Genotype: Fch1: A coadaptive 2.7 4.1 B coadaptive 5.3 4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 8.81757 disease 3.5 +644 Fitness: 8.81757 Genotype: Fch1: A coadaptive 2.7 4.1 B coadaptive 5.3 4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 8.81757 disease 3.5 +645 Fitness: 8.81757 Genotype: Fch1: A coadaptive 2.7 4.1 B coadaptive 5.3 4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 8.81757 disease 3.5 +646 Fitness: 8.43138 Genotype: Fch1: A coadaptive 4.5 6.1 B coadaptive 1.3 5.4 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.43138 disease 2.5 +647 Fitness: 8.43138 Genotype: Fch1: A coadaptive 4.5 6.1 B coadaptive 1.3 5.4 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.43138 disease 2.5 +648 Fitness: 8.43138 Genotype: Fch1: A coadaptive 4.5 6.1 B coadaptive 1.3 5.4 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.43138 disease 2.5 +649 Fitness: 12.2339 Genotype: Fch1: A coadaptive 1 9.2 B coadaptive 2.2 7.3 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2339 disease 3 +650 Fitness: 12.2339 Genotype: Fch1: A coadaptive 1 9.2 B coadaptive 2.2 7.3 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2339 disease 3 +651 Fitness: 12.2339 Genotype: Fch1: A coadaptive 1 9.2 B coadaptive 2.2 7.3 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2339 disease 3 +652 Fitness: 12.9538 Genotype: Fch1: A coadaptive 8.4 5.1 B coadaptive 4.5 6.1 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9538 disease 3 +653 Fitness: 12.9538 Genotype: Fch1: A coadaptive 8.4 5.1 B coadaptive 4.5 6.1 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9538 disease 3 +654 Fitness: 12.9538 Genotype: Fch1: A coadaptive 8.4 5.1 B coadaptive 4.5 6.1 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9538 disease 3 +655 Fitness: 1.03828 Genotype: Fch1: A coadaptive 0.3 3.2 B coadaptive 6.7 4.3 C disease 0.5 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 1.03828 disease 2.5 +656 Fitness: 1.03828 Genotype: Fch1: A coadaptive 0.3 3.2 B coadaptive 6.7 4.3 C disease 0.5 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 1.03828 disease 2.5 +657 Fitness: 1.03828 Genotype: Fch1: A coadaptive 0.3 3.2 B coadaptive 6.7 4.3 C disease 0.5 1 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 1.03828 disease 2.5 +658 Fitness: 11.4124 Genotype: Fch1: A coadaptive 6.2 9.6 B coadaptive 5.6 6 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.4124 disease 2 +659 Fitness: 11.4124 Genotype: Fch1: A coadaptive 6.2 9.6 B coadaptive 5.6 6 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.4124 disease 2 +660 Fitness: 11.4124 Genotype: Fch1: A coadaptive 6.2 9.6 B coadaptive 5.6 6 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.4124 disease 2 +661 Fitness: 10.1519 Genotype: Fch1: A coadaptive 8.2 0.1 B coadaptive 0.2 8.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 10.1519 disease 3.5 +662 Fitness: 10.1519 Genotype: Fch1: A coadaptive 8.2 0.1 B coadaptive 0.2 8.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 10.1519 disease 3.5 +663 Fitness: 10.1519 Genotype: Fch1: A coadaptive 8.2 0.1 B coadaptive 0.2 8.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 10.1519 disease 3.5 +664 Fitness: 5.47825 Genotype: Fch1: A coadaptive 3.2 2.4 B coadaptive 4.3 1.1 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.47825 disease 3.5 +665 Fitness: 5.47825 Genotype: Fch1: A coadaptive 3.2 2.4 B coadaptive 4.3 1.1 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.47825 disease 3.5 +666 Fitness: 5.47825 Genotype: Fch1: A coadaptive 3.2 2.4 B coadaptive 4.3 1.1 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.47825 disease 3.5 +667 Fitness: 5.58035 Genotype: Fch1: A coadaptive 2 3 B coadaptive 4.1 2.3 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 5.58035 disease 3 +668 Fitness: 5.58035 Genotype: Fch1: A coadaptive 2 3 B coadaptive 4.1 2.3 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 5.58035 disease 3 +669 Fitness: 5.58035 Genotype: Fch1: A coadaptive 2 3 B coadaptive 4.1 2.3 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 5.58035 disease 3 +670 Fitness: 5.17607 Genotype: Fch1: A coadaptive 2.6 1.9 B coadaptive 7.3 1.1 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.17607 disease 2.5 +671 Fitness: 5.17607 Genotype: Fch1: A coadaptive 2.6 1.9 B coadaptive 7.3 1.1 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.17607 disease 2.5 +672 Fitness: 5.17607 Genotype: Fch1: A coadaptive 2.6 1.9 B coadaptive 7.3 1.1 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.17607 disease 2.5 +673 Fitness: 3.71625 Genotype: Fch1: A coadaptive 9.9 6.5 B coadaptive 1.5 7.1 C disease 1 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.71625 disease 2.5 +674 Fitness: 3.71625 Genotype: Fch1: A coadaptive 9.9 6.5 B coadaptive 1.5 7.1 C disease 1 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.71625 disease 2.5 +675 Fitness: 3.71625 Genotype: Fch1: A coadaptive 9.9 6.5 B coadaptive 1.5 7.1 C disease 1 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.71625 disease 2.5 +676 Fitness: 10.236 Genotype: Fch1: A coadaptive 9.6 6.8 B coadaptive 7.8 3.8 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 10.236 disease 1.5 +677 Fitness: 10.236 Genotype: Fch1: A coadaptive 9.6 6.8 B coadaptive 7.8 3.8 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 10.236 disease 1.5 +678 Fitness: 10.236 Genotype: Fch1: A coadaptive 9.6 6.8 B coadaptive 7.8 3.8 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 10.236 disease 1.5 +679 Fitness: 5.39192 Genotype: Fch1: A coadaptive 4.4 1.2 B coadaptive 2.1 3.2 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 5.39192 disease 4 +680 Fitness: 5.39192 Genotype: Fch1: A coadaptive 4.4 1.2 B coadaptive 2.1 3.2 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 5.39192 disease 4 +681 Fitness: 5.39192 Genotype: Fch1: A coadaptive 4.4 1.2 B coadaptive 2.1 3.2 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 5.39192 disease 4 +682 Fitness: 9.39761 Genotype: Fch1: A coadaptive 6.5 1.5 B coadaptive 7.7 5 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 9.39761 disease 3 +683 Fitness: 9.39761 Genotype: Fch1: A coadaptive 6.5 1.5 B coadaptive 7.7 5 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 9.39761 disease 3 +684 Fitness: 9.39761 Genotype: Fch1: A coadaptive 6.5 1.5 B coadaptive 7.7 5 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 9.39761 disease 3 +685 Fitness: 10.3386 Genotype: Fch1: A coadaptive 5.1 7.4 B coadaptive 1.2 7.2 C disease 0 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.3386 disease 4 +686 Fitness: 10.3386 Genotype: Fch1: A coadaptive 5.1 7.4 B coadaptive 1.2 7.2 C disease 0 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.3386 disease 4 +687 Fitness: 10.3386 Genotype: Fch1: A coadaptive 5.1 7.4 B coadaptive 1.2 7.2 C disease 0 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.3386 disease 4 +688 Fitness: 12.1144 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.6 1.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.1144 disease 3.5 +689 Fitness: 12.1144 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.6 1.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.1144 disease 3.5 +690 Fitness: 12.1144 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.6 1.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.1144 disease 3.5 +691 Fitness: 7.65079 Genotype: Fch1: A coadaptive 6.2 0.3 B coadaptive 4.9 2.3 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 7.65079 disease 3 +692 Fitness: 7.65079 Genotype: Fch1: A coadaptive 6.2 0.3 B coadaptive 4.9 2.3 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 7.65079 disease 3 +693 Fitness: 7.65079 Genotype: Fch1: A coadaptive 6.2 0.3 B coadaptive 4.9 2.3 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 7.65079 disease 3 +694 Fitness: 13.0114 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 3.9 7.9 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0114 disease 3 +695 Fitness: 13.0114 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 3.9 7.9 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0114 disease 3 +696 Fitness: 13.0114 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 3.9 7.9 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0114 disease 3 +697 Fitness: 10.6347 Genotype: Fch1: A coadaptive 8.9 2.1 B coadaptive 5.2 2.9 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 10.6347 disease 3.5 +698 Fitness: 10.6347 Genotype: Fch1: A coadaptive 8.9 2.1 B coadaptive 5.2 2.9 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 10.6347 disease 3.5 +699 Fitness: 10.6347 Genotype: Fch1: A coadaptive 8.9 2.1 B coadaptive 5.2 2.9 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 10.6347 disease 3.5 +700 Fitness: 9.33416 Genotype: Fch1: A coadaptive 0.6 7 B coadaptive 4.2 7.7 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.33416 disease 2 +701 Fitness: 9.33416 Genotype: Fch1: A coadaptive 0.6 7 B coadaptive 4.2 7.7 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.33416 disease 2 +702 Fitness: 9.33416 Genotype: Fch1: A coadaptive 0.6 7 B coadaptive 4.2 7.7 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.33416 disease 2 +703 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 3.5 B coadaptive 7.4 6.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +704 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 3.5 B coadaptive 7.4 6.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +705 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 3.5 B coadaptive 7.4 6.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +706 Fitness: 5.86569 Genotype: Fch1: A coadaptive 3 1.9 B coadaptive 1.5 6.6 C disease 1 0 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 5.86569 disease 3 +707 Fitness: 5.86569 Genotype: Fch1: A coadaptive 3 1.9 B coadaptive 1.5 6.6 C disease 1 0 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 5.86569 disease 3 +708 Fitness: 5.86569 Genotype: Fch1: A coadaptive 3 1.9 B coadaptive 1.5 6.6 C disease 1 0 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 5.86569 disease 3 +709 Fitness: 12.28 Genotype: Fch1: A coadaptive 7.6 6.2 B coadaptive 0.3 10 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.28 disease 2.5 +710 Fitness: 12.28 Genotype: Fch1: A coadaptive 7.6 6.2 B coadaptive 0.3 10 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.28 disease 2.5 +711 Fitness: 12.28 Genotype: Fch1: A coadaptive 7.6 6.2 B coadaptive 0.3 10 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.28 disease 2.5 +712 Fitness: 11.5093 Genotype: Fch1: A coadaptive 7.2 9.3 B coadaptive 5.4 7.3 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.5093 disease 4 +713 Fitness: 11.5093 Genotype: Fch1: A coadaptive 7.2 9.3 B coadaptive 5.4 7.3 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.5093 disease 4 +714 Fitness: 11.5093 Genotype: Fch1: A coadaptive 7.2 9.3 B coadaptive 5.4 7.3 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.5093 disease 4 +715 Fitness: 8.00359 Genotype: Fch1: A coadaptive 0.4 8.3 B coadaptive 8.7 6 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.00359 disease 2 +716 Fitness: 8.00359 Genotype: Fch1: A coadaptive 0.4 8.3 B coadaptive 8.7 6 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.00359 disease 2 +717 Fitness: 8.00359 Genotype: Fch1: A coadaptive 0.4 8.3 B coadaptive 8.7 6 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.00359 disease 2 +718 Fitness: 11.2348 Genotype: Fch1: A coadaptive 2.5 6.2 B coadaptive 4.7 4.9 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.2348 disease 3 +719 Fitness: 11.2348 Genotype: Fch1: A coadaptive 2.5 6.2 B coadaptive 4.7 4.9 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.2348 disease 3 +720 Fitness: 11.2348 Genotype: Fch1: A coadaptive 2.5 6.2 B coadaptive 4.7 4.9 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.2348 disease 3 +721 Fitness: 5.35879 Genotype: Fch1: A coadaptive 4.8 1.7 B coadaptive 4.6 8.6 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 5.35879 disease 3.5 +722 Fitness: 5.35879 Genotype: Fch1: A coadaptive 4.8 1.7 B coadaptive 4.6 8.6 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 5.35879 disease 3.5 +723 Fitness: 5.35879 Genotype: Fch1: A coadaptive 4.8 1.7 B coadaptive 4.6 8.6 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 5.35879 disease 3.5 +724 Fitness: 4.69112 Genotype: Fch1: A coadaptive 8.4 0.9 B coadaptive 7.8 8.9 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 4.69112 disease 3 +725 Fitness: 4.69112 Genotype: Fch1: A coadaptive 8.4 0.9 B coadaptive 7.8 8.9 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 4.69112 disease 3 +726 Fitness: 4.69112 Genotype: Fch1: A coadaptive 8.4 0.9 B coadaptive 7.8 8.9 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 4.69112 disease 3 +727 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.5 B coadaptive 6.2 5.4 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +728 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.5 B coadaptive 6.2 5.4 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +729 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.5 B coadaptive 6.2 5.4 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +730 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3 B coadaptive 3.3 9.3 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +731 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3 B coadaptive 3.3 9.3 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +732 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3 B coadaptive 3.3 9.3 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +733 Fitness: 13.4462 Genotype: Fch1: A coadaptive 6 4.8 B coadaptive 9.4 3.7 C disease 0.5 1 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.4462 disease 3.5 +734 Fitness: 13.4462 Genotype: Fch1: A coadaptive 6 4.8 B coadaptive 9.4 3.7 C disease 0.5 1 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.4462 disease 3.5 +735 Fitness: 13.4462 Genotype: Fch1: A coadaptive 6 4.8 B coadaptive 9.4 3.7 C disease 0.5 1 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.4462 disease 3.5 +736 Fitness: 13.8146 Genotype: Fch1: A coadaptive 6.9 7.9 B coadaptive 8.9 6.6 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 13.8146 disease 2.5 +737 Fitness: 13.8146 Genotype: Fch1: A coadaptive 6.9 7.9 B coadaptive 8.9 6.6 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 13.8146 disease 2.5 +738 Fitness: 13.8146 Genotype: Fch1: A coadaptive 6.9 7.9 B coadaptive 8.9 6.6 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 13.8146 disease 2.5 +739 Fitness: 13.5136 Genotype: Fch1: A coadaptive 6.9 5.8 B coadaptive 6.6 4.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.5136 disease 3.5 +740 Fitness: 13.5136 Genotype: Fch1: A coadaptive 6.9 5.8 B coadaptive 6.6 4.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.5136 disease 3.5 +741 Fitness: 13.5136 Genotype: Fch1: A coadaptive 6.9 5.8 B coadaptive 6.6 4.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.5136 disease 3.5 +742 Fitness: 6.17341 Genotype: Fch1: A coadaptive 3.2 2.7 B coadaptive 5.7 5.8 C disease 0 0 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 6.17341 disease 2 +743 Fitness: 6.17341 Genotype: Fch1: A coadaptive 3.2 2.7 B coadaptive 5.7 5.8 C disease 0 0 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 6.17341 disease 2 +744 Fitness: 6.17341 Genotype: Fch1: A coadaptive 3.2 2.7 B coadaptive 5.7 5.8 C disease 0 0 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 6.17341 disease 2 +745 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 7.8 B coadaptive 0.8 3.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +746 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 7.8 B coadaptive 0.8 3.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +747 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 7.8 B coadaptive 0.8 3.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +748 Fitness: 4.51863 Genotype: Fch1: A coadaptive 1.4 4.4 B coadaptive 2.1 2.2 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 4.51863 disease 2.5 +749 Fitness: 4.51863 Genotype: Fch1: A coadaptive 1.4 4.4 B coadaptive 2.1 2.2 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 4.51863 disease 2.5 +750 Fitness: 4.51863 Genotype: Fch1: A coadaptive 1.4 4.4 B coadaptive 2.1 2.2 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 4.51863 disease 2.5 +751 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.5 B coadaptive 7.8 3.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +752 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.5 B coadaptive 7.8 3.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +753 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.5 B coadaptive 7.8 3.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +754 Fitness: 9.00214 Genotype: Fch1: A coadaptive 8.9 3.6 B coadaptive 4.2 3.5 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.00214 disease 3 +755 Fitness: 9.00214 Genotype: Fch1: A coadaptive 8.9 3.6 B coadaptive 4.2 3.5 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.00214 disease 3 +756 Fitness: 9.00214 Genotype: Fch1: A coadaptive 8.9 3.6 B coadaptive 4.2 3.5 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.00214 disease 3 +757 Fitness: 5.50496 Genotype: Fch1: A coadaptive 2 3.7 B coadaptive 3.4 8.3 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 5.50496 disease 3 +758 Fitness: 5.50496 Genotype: Fch1: A coadaptive 2 3.7 B coadaptive 3.4 8.3 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 5.50496 disease 3 +759 Fitness: 5.50496 Genotype: Fch1: A coadaptive 2 3.7 B coadaptive 3.4 8.3 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 5.50496 disease 3 +760 Fitness: 2.14886 Genotype: Fch1: A coadaptive 2.5 1.1 B coadaptive 9.6 0.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 2.14886 disease 3 +761 Fitness: 2.14886 Genotype: Fch1: A coadaptive 2.5 1.1 B coadaptive 9.6 0.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 2.14886 disease 3 +762 Fitness: 2.14886 Genotype: Fch1: A coadaptive 2.5 1.1 B coadaptive 9.6 0.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 2.14886 disease 3 +763 Fitness: 9.19318 Genotype: Fch1: A coadaptive 7.3 1 B coadaptive 9 4.4 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.19318 disease 3.5 +764 Fitness: 9.19318 Genotype: Fch1: A coadaptive 7.3 1 B coadaptive 9 4.4 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.19318 disease 3.5 +765 Fitness: 9.19318 Genotype: Fch1: A coadaptive 7.3 1 B coadaptive 9 4.4 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.19318 disease 3.5 +766 Fitness: 13.7515 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 9.7 1.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.7515 disease 2 +767 Fitness: 13.7515 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 9.7 1.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.7515 disease 2 +768 Fitness: 13.7515 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 9.7 1.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.7515 disease 2 +769 Fitness: 10.6424 Genotype: Fch1: A coadaptive 6.9 1.4 B coadaptive 2.5 9.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.6424 disease 3 +770 Fitness: 10.6424 Genotype: Fch1: A coadaptive 6.9 1.4 B coadaptive 2.5 9.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.6424 disease 3 +771 Fitness: 10.6424 Genotype: Fch1: A coadaptive 6.9 1.4 B coadaptive 2.5 9.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.6424 disease 3 +772 Fitness: 2.2724 Genotype: Fch1: A coadaptive 9.2 3.2 B coadaptive 0.6 4.2 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 2.2724 disease 3 +773 Fitness: 2.2724 Genotype: Fch1: A coadaptive 9.2 3.2 B coadaptive 0.6 4.2 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 2.2724 disease 3 +774 Fitness: 2.2724 Genotype: Fch1: A coadaptive 9.2 3.2 B coadaptive 0.6 4.2 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 2.2724 disease 3 +775 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 7.5 B coadaptive 9.9 9.2 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +776 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 7.5 B coadaptive 9.9 9.2 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +777 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 7.5 B coadaptive 9.9 9.2 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +778 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 0.4 B coadaptive 9.6 9.3 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +779 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 0.4 B coadaptive 9.6 9.3 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +780 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 0.4 B coadaptive 9.6 9.3 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +781 Fitness: 12.3179 Genotype: Fch1: A coadaptive 0.7 9.5 B coadaptive 5 4.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.3179 disease 3.5 +782 Fitness: 12.3179 Genotype: Fch1: A coadaptive 0.7 9.5 B coadaptive 5 4.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.3179 disease 3.5 +783 Fitness: 12.3179 Genotype: Fch1: A coadaptive 0.7 9.5 B coadaptive 5 4.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.3179 disease 3.5 +784 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 5.8 9.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +785 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 5.8 9.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +786 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 5.8 9.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +787 Fitness: 8.912 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 6.5 8.3 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.912 disease 3 +788 Fitness: 8.912 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 6.5 8.3 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.912 disease 3 +789 Fitness: 8.912 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 6.5 8.3 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.912 disease 3 +790 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 3.9 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +791 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 3.9 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +792 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 3.9 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +793 Fitness: 3.83367 Genotype: Fch1: A coadaptive 5.1 6.6 B coadaptive 2.7 2.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.83367 disease 3 +794 Fitness: 3.83367 Genotype: Fch1: A coadaptive 5.1 6.6 B coadaptive 2.7 2.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.83367 disease 3 +795 Fitness: 3.83367 Genotype: Fch1: A coadaptive 5.1 6.6 B coadaptive 2.7 2.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.83367 disease 3 +796 Fitness: 5.27232 Genotype: Fch1: A coadaptive 5.7 6 B coadaptive 1.9 3.7 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.27232 disease 3.5 +797 Fitness: 5.27232 Genotype: Fch1: A coadaptive 5.7 6 B coadaptive 1.9 3.7 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.27232 disease 3.5 +798 Fitness: 5.27232 Genotype: Fch1: A coadaptive 5.7 6 B coadaptive 1.9 3.7 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.27232 disease 3.5 +799 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.2 B coadaptive 9.1 3.9 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +800 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.2 B coadaptive 9.1 3.9 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +801 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.2 B coadaptive 9.1 3.9 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +802 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 1.2 B coadaptive 8.2 5.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +803 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 1.2 B coadaptive 8.2 5.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +804 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 1.2 B coadaptive 8.2 5.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +805 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 9.1 B coadaptive 1.1 0 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +806 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 9.1 B coadaptive 1.1 0 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +807 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 9.1 B coadaptive 1.1 0 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +808 Fitness: 8.32439 Genotype: Fch1: A coadaptive 0.2 6.3 B coadaptive 6.6 2.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.32439 disease 2 +809 Fitness: 8.32439 Genotype: Fch1: A coadaptive 0.2 6.3 B coadaptive 6.6 2.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.32439 disease 2 +810 Fitness: 8.32439 Genotype: Fch1: A coadaptive 0.2 6.3 B coadaptive 6.6 2.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.32439 disease 2 +811 Fitness: 14.0076 Genotype: Fch1: A coadaptive 9 2.3 B coadaptive 6.6 6.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0076 disease 2.5 +812 Fitness: 14.0076 Genotype: Fch1: A coadaptive 9 2.3 B coadaptive 6.6 6.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0076 disease 2.5 +813 Fitness: 14.0076 Genotype: Fch1: A coadaptive 9 2.3 B coadaptive 6.6 6.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0076 disease 2.5 +814 Fitness: 5.616 Genotype: Fch1: A coadaptive 3 4.2 B coadaptive 1.8 3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 5.616 disease 4 +815 Fitness: 5.616 Genotype: Fch1: A coadaptive 3 4.2 B coadaptive 1.8 3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 5.616 disease 4 +816 Fitness: 5.616 Genotype: Fch1: A coadaptive 3 4.2 B coadaptive 1.8 3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 5.616 disease 4 +817 Fitness: 4.83481 Genotype: Fch1: A coadaptive 6.1 0.2 B coadaptive 3.7 0.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.83481 disease 2.5 +818 Fitness: 4.83481 Genotype: Fch1: A coadaptive 6.1 0.2 B coadaptive 3.7 0.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.83481 disease 2.5 +819 Fitness: 4.83481 Genotype: Fch1: A coadaptive 6.1 0.2 B coadaptive 3.7 0.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.83481 disease 2.5 +820 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.2 B coadaptive 5 3.2 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +821 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.2 B coadaptive 5 3.2 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +822 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.2 B coadaptive 5 3.2 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +823 Fitness: 6.53721 Genotype: Fch1: A coadaptive 2.7 3.3 B coadaptive 4.8 1.5 C disease 1 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 6.53721 disease 3.5 +824 Fitness: 6.53721 Genotype: Fch1: A coadaptive 2.7 3.3 B coadaptive 4.8 1.5 C disease 1 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 6.53721 disease 3.5 +825 Fitness: 6.53721 Genotype: Fch1: A coadaptive 2.7 3.3 B coadaptive 4.8 1.5 C disease 1 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 6.53721 disease 3.5 +826 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.6 B coadaptive 5.1 4.4 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +827 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.6 B coadaptive 5.1 4.4 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +828 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.6 B coadaptive 5.1 4.4 C disease 0 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +829 Fitness: 12.3804 Genotype: Fch1: A coadaptive 5.8 8.8 B coadaptive 4.1 6.9 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.3804 disease 3 +830 Fitness: 12.3804 Genotype: Fch1: A coadaptive 5.8 8.8 B coadaptive 4.1 6.9 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.3804 disease 3 +831 Fitness: 12.3804 Genotype: Fch1: A coadaptive 5.8 8.8 B coadaptive 4.1 6.9 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.3804 disease 3 +832 Fitness: 11.7881 Genotype: Fch1: A coadaptive 8.9 0.1 B coadaptive 4.6 7 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 11.7881 disease 3 +833 Fitness: 11.7881 Genotype: Fch1: A coadaptive 8.9 0.1 B coadaptive 4.6 7 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 11.7881 disease 3 +834 Fitness: 11.7881 Genotype: Fch1: A coadaptive 8.9 0.1 B coadaptive 4.6 7 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 11.7881 disease 3 +835 Fitness: 4.0057 Genotype: Fch1: A coadaptive 2.1 2.9 B coadaptive 0.4 3.8 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.0057 disease 2.5 +836 Fitness: 4.0057 Genotype: Fch1: A coadaptive 2.1 2.9 B coadaptive 0.4 3.8 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.0057 disease 2.5 +837 Fitness: 4.0057 Genotype: Fch1: A coadaptive 2.1 2.9 B coadaptive 0.4 3.8 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.0057 disease 2.5 +838 Fitness: 8.48459 Genotype: Fch1: A coadaptive 6.1 6.1 B coadaptive 4.4 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.48459 disease 3 +839 Fitness: 8.48459 Genotype: Fch1: A coadaptive 6.1 6.1 B coadaptive 4.4 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.48459 disease 3 +840 Fitness: 8.48459 Genotype: Fch1: A coadaptive 6.1 6.1 B coadaptive 4.4 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.48459 disease 3 +841 Fitness: 5.54006 Genotype: Fch1: A coadaptive 7.6 0.6 B coadaptive 0.1 4.6 C disease 0 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.54006 disease 1.5 +842 Fitness: 5.54006 Genotype: Fch1: A coadaptive 7.6 0.6 B coadaptive 0.1 4.6 C disease 0 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.54006 disease 1.5 +843 Fitness: 5.54006 Genotype: Fch1: A coadaptive 7.6 0.6 B coadaptive 0.1 4.6 C disease 0 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.54006 disease 1.5 +844 Fitness: 0.666699 Genotype: Fch1: A coadaptive 6.2 8.8 B coadaptive 3.7 2.5 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0.666699 disease 3 +845 Fitness: 0.666699 Genotype: Fch1: A coadaptive 6.2 8.8 B coadaptive 3.7 2.5 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0.666699 disease 3 +846 Fitness: 0.666699 Genotype: Fch1: A coadaptive 6.2 8.8 B coadaptive 3.7 2.5 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0.666699 disease 3 +847 Fitness: 9.14248 Genotype: Fch1: A coadaptive 0.5 6.8 B coadaptive 6.3 2 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.14248 disease 2 +848 Fitness: 9.14248 Genotype: Fch1: A coadaptive 0.5 6.8 B coadaptive 6.3 2 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.14248 disease 2 +849 Fitness: 9.14248 Genotype: Fch1: A coadaptive 0.5 6.8 B coadaptive 6.3 2 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.14248 disease 2 +850 Fitness: 3.77894 Genotype: Fch1: A coadaptive 4.3 7.8 B coadaptive 3.5 1.7 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.77894 disease 2.5 +851 Fitness: 3.77894 Genotype: Fch1: A coadaptive 4.3 7.8 B coadaptive 3.5 1.7 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.77894 disease 2.5 +852 Fitness: 3.77894 Genotype: Fch1: A coadaptive 4.3 7.8 B coadaptive 3.5 1.7 C disease 1 0 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.77894 disease 2.5 +853 Fitness: 5.94082 Genotype: Fch1: A coadaptive 9 4.3 B coadaptive 5.5 1.3 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.94082 disease 3 +854 Fitness: 5.94082 Genotype: Fch1: A coadaptive 9 4.3 B coadaptive 5.5 1.3 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.94082 disease 3 +855 Fitness: 5.94082 Genotype: Fch1: A coadaptive 9 4.3 B coadaptive 5.5 1.3 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.94082 disease 3 +856 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 2.3 B coadaptive 0.1 2.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +857 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 2.3 B coadaptive 0.1 2.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +858 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 2.3 B coadaptive 0.1 2.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +859 Fitness: 14.1001 Genotype: Fch1: A coadaptive 6 7.5 B coadaptive 9 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.1001 disease 2.5 +860 Fitness: 14.1001 Genotype: Fch1: A coadaptive 6 7.5 B coadaptive 9 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.1001 disease 2.5 +861 Fitness: 14.1001 Genotype: Fch1: A coadaptive 6 7.5 B coadaptive 9 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.1001 disease 2.5 +862 Fitness: 7.31967 Genotype: Fch1: A coadaptive 2.4 7.3 B coadaptive 1.1 4.8 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 7.31967 disease 3.5 +863 Fitness: 7.31967 Genotype: Fch1: A coadaptive 2.4 7.3 B coadaptive 1.1 4.8 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 7.31967 disease 3.5 +864 Fitness: 7.31967 Genotype: Fch1: A coadaptive 2.4 7.3 B coadaptive 1.1 4.8 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 7.31967 disease 3.5 +865 Fitness: 6.68784 Genotype: Fch1: A coadaptive 8.6 8.7 B coadaptive 4.6 6.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.68784 disease 2.5 +866 Fitness: 6.68784 Genotype: Fch1: A coadaptive 8.6 8.7 B coadaptive 4.6 6.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.68784 disease 2.5 +867 Fitness: 6.68784 Genotype: Fch1: A coadaptive 8.6 8.7 B coadaptive 4.6 6.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.68784 disease 2.5 +868 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 8.4 9.7 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +869 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 8.4 9.7 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +870 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 8.4 9.7 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +871 Fitness: 14.7284 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 6.6 6.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.7284 disease 4 +872 Fitness: 14.7284 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 6.6 6.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.7284 disease 4 +873 Fitness: 14.7284 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 6.6 6.7 C disease 0 1 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.7284 disease 4 +874 Fitness: 11.2829 Genotype: Fch1: A coadaptive 7 2.1 B coadaptive 3.7 5.4 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.2829 disease 2.5 +875 Fitness: 11.2829 Genotype: Fch1: A coadaptive 7 2.1 B coadaptive 3.7 5.4 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.2829 disease 2.5 +876 Fitness: 11.2829 Genotype: Fch1: A coadaptive 7 2.1 B coadaptive 3.7 5.4 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.2829 disease 2.5 +877 Fitness: 0.635881 Genotype: Fch1: A coadaptive 10 1.5 B coadaptive 9.4 10 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0.635881 disease 1.5 +878 Fitness: 0.635881 Genotype: Fch1: A coadaptive 10 1.5 B coadaptive 9.4 10 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0.635881 disease 1.5 +879 Fitness: 0.635881 Genotype: Fch1: A coadaptive 10 1.5 B coadaptive 9.4 10 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0.635881 disease 1.5 +880 Fitness: 0.549869 Genotype: Fch1: A coadaptive 9.9 5.9 B coadaptive 2.8 4.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0.549869 disease 3.5 +881 Fitness: 0.549869 Genotype: Fch1: A coadaptive 9.9 5.9 B coadaptive 2.8 4.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0.549869 disease 3.5 +882 Fitness: 0.549869 Genotype: Fch1: A coadaptive 9.9 5.9 B coadaptive 2.8 4.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0.549869 disease 3.5 +883 Fitness: 1.3793 Genotype: Fch1: A coadaptive 3.4 1.2 B coadaptive 9.7 2.9 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 1.3793 disease 4 +884 Fitness: 1.3793 Genotype: Fch1: A coadaptive 3.4 1.2 B coadaptive 9.7 2.9 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 1.3793 disease 4 +885 Fitness: 1.3793 Genotype: Fch1: A coadaptive 3.4 1.2 B coadaptive 9.7 2.9 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 1.3793 disease 4 +886 Fitness: 1.54318 Genotype: Fch1: A coadaptive 6.5 6.6 B coadaptive 2.3 2.7 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 1.54318 disease 1.5 +887 Fitness: 1.54318 Genotype: Fch1: A coadaptive 6.5 6.6 B coadaptive 2.3 2.7 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 1.54318 disease 1.5 +888 Fitness: 1.54318 Genotype: Fch1: A coadaptive 6.5 6.6 B coadaptive 2.3 2.7 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 1.54318 disease 1.5 +889 Fitness: 6.96117 Genotype: Fch1: A coadaptive 1.4 4.7 B coadaptive 8.5 2.6 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.96117 disease 2 +890 Fitness: 6.96117 Genotype: Fch1: A coadaptive 1.4 4.7 B coadaptive 8.5 2.6 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.96117 disease 2 +891 Fitness: 6.96117 Genotype: Fch1: A coadaptive 1.4 4.7 B coadaptive 8.5 2.6 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.96117 disease 2 +892 Fitness: 14.4213 Genotype: Fch1: A coadaptive 4.7 8.5 B coadaptive 9.6 4.9 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4213 disease 4 +893 Fitness: 14.4213 Genotype: Fch1: A coadaptive 4.7 8.5 B coadaptive 9.6 4.9 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4213 disease 4 +894 Fitness: 14.4213 Genotype: Fch1: A coadaptive 4.7 8.5 B coadaptive 9.6 4.9 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4213 disease 4 +895 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.4 B coadaptive 6.4 7.8 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 2 +896 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.4 B coadaptive 6.4 7.8 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 2 +897 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.4 B coadaptive 6.4 7.8 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 2 +898 Fitness: 14.372 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 8.3 3.9 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.372 disease 3 +899 Fitness: 14.372 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 8.3 3.9 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.372 disease 3 +900 Fitness: 14.372 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 8.3 3.9 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.372 disease 3 +901 Fitness: 13.6143 Genotype: Fch1: A coadaptive 8.4 3.2 B coadaptive 4.5 9.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 13.6143 disease 3.5 +902 Fitness: 13.6143 Genotype: Fch1: A coadaptive 8.4 3.2 B coadaptive 4.5 9.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 13.6143 disease 3.5 +903 Fitness: 13.6143 Genotype: Fch1: A coadaptive 8.4 3.2 B coadaptive 4.5 9.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 13.6143 disease 3.5 +904 Fitness: 1.4323 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 4 1 C disease 0 0 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 1.4323 disease 2 +905 Fitness: 1.4323 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 4 1 C disease 0 0 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 1.4323 disease 2 +906 Fitness: 1.4323 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 4 1 C disease 0 0 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 1.4323 disease 2 +907 Fitness: 10.0813 Genotype: Fch1: A coadaptive 8.3 2.7 B coadaptive 7.1 8.9 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 10.0813 disease 3.5 +908 Fitness: 10.0813 Genotype: Fch1: A coadaptive 8.3 2.7 B coadaptive 7.1 8.9 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 10.0813 disease 3.5 +909 Fitness: 10.0813 Genotype: Fch1: A coadaptive 8.3 2.7 B coadaptive 7.1 8.9 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 10.0813 disease 3.5 +910 Fitness: 11.4955 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 4.3 6.3 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.4955 disease 3.5 +911 Fitness: 11.4955 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 4.3 6.3 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.4955 disease 3.5 +912 Fitness: 11.4955 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 4.3 6.3 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.4955 disease 3.5 +913 Fitness: 0.0831996 Genotype: Fch1: A coadaptive 7.6 1.6 B coadaptive 8.7 9.3 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.0831996 disease 2.5 +914 Fitness: 0.0831996 Genotype: Fch1: A coadaptive 7.6 1.6 B coadaptive 8.7 9.3 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.0831996 disease 2.5 +915 Fitness: 0.0831996 Genotype: Fch1: A coadaptive 7.6 1.6 B coadaptive 8.7 9.3 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.0831996 disease 2.5 +916 Fitness: 9.0284 Genotype: Fch1: A coadaptive 7.6 4.2 B coadaptive 2 5.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 9.0284 disease 2.5 +917 Fitness: 9.0284 Genotype: Fch1: A coadaptive 7.6 4.2 B coadaptive 2 5.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 9.0284 disease 2.5 +918 Fitness: 9.0284 Genotype: Fch1: A coadaptive 7.6 4.2 B coadaptive 2 5.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 9.0284 disease 2.5 +919 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.3 B coadaptive 9.9 6.7 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +920 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.3 B coadaptive 9.9 6.7 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +921 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.3 B coadaptive 9.9 6.7 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +922 Fitness: 12.1491 Genotype: Fch1: A coadaptive 7.5 2.4 B coadaptive 7.9 5.4 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.1491 disease 3.5 +923 Fitness: 12.1491 Genotype: Fch1: A coadaptive 7.5 2.4 B coadaptive 7.9 5.4 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.1491 disease 3.5 +924 Fitness: 12.1491 Genotype: Fch1: A coadaptive 7.5 2.4 B coadaptive 7.9 5.4 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.1491 disease 3.5 +925 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 9.4 B coadaptive 4.9 0.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +926 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 9.4 B coadaptive 4.9 0.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +927 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 9.4 B coadaptive 4.9 0.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +928 Fitness: 13.118 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 6 5.4 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.118 disease 2.5 +929 Fitness: 13.118 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 6 5.4 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.118 disease 2.5 +930 Fitness: 13.118 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 6 5.4 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.118 disease 2.5 +931 Fitness: 11.3353 Genotype: Fch1: A coadaptive 2.6 7.1 B coadaptive 9.2 4.6 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.3353 disease 3.5 +932 Fitness: 11.3353 Genotype: Fch1: A coadaptive 2.6 7.1 B coadaptive 9.2 4.6 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.3353 disease 3.5 +933 Fitness: 11.3353 Genotype: Fch1: A coadaptive 2.6 7.1 B coadaptive 9.2 4.6 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 11.3353 disease 3.5 +934 Fitness: 11.5485 Genotype: Fch1: A coadaptive 9 3.9 B coadaptive 2.7 6.6 C disease 1 1 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.5485 disease 3 +935 Fitness: 11.5485 Genotype: Fch1: A coadaptive 9 3.9 B coadaptive 2.7 6.6 C disease 1 1 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.5485 disease 3 +936 Fitness: 11.5485 Genotype: Fch1: A coadaptive 9 3.9 B coadaptive 2.7 6.6 C disease 1 1 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.5485 disease 3 +937 Fitness: 11.8256 Genotype: Fch1: A coadaptive 9 1.8 B coadaptive 4.9 9.9 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 11.8256 disease 2 +938 Fitness: 11.8256 Genotype: Fch1: A coadaptive 9 1.8 B coadaptive 4.9 9.9 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 11.8256 disease 2 +939 Fitness: 11.8256 Genotype: Fch1: A coadaptive 9 1.8 B coadaptive 4.9 9.9 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 11.8256 disease 2 +940 Fitness: 4.97842 Genotype: Fch1: A coadaptive 9.9 6.7 B coadaptive 2.2 7.1 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 4.97842 disease 3.5 +941 Fitness: 4.97842 Genotype: Fch1: A coadaptive 9.9 6.7 B coadaptive 2.2 7.1 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 4.97842 disease 3.5 +942 Fitness: 4.97842 Genotype: Fch1: A coadaptive 9.9 6.7 B coadaptive 2.2 7.1 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 4.97842 disease 3.5 +943 Fitness: 5.3868 Genotype: Fch1: A coadaptive 6.6 5 B coadaptive 1.7 3.9 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 5.3868 disease 2.5 +944 Fitness: 5.3868 Genotype: Fch1: A coadaptive 6.6 5 B coadaptive 1.7 3.9 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 5.3868 disease 2.5 +945 Fitness: 5.3868 Genotype: Fch1: A coadaptive 6.6 5 B coadaptive 1.7 3.9 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 5.3868 disease 2.5 +946 Fitness: 5.98365 Genotype: Fch1: A coadaptive 1.4 4.2 B coadaptive 9.3 1.7 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.98365 disease 2.5 +947 Fitness: 5.98365 Genotype: Fch1: A coadaptive 1.4 4.2 B coadaptive 9.3 1.7 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.98365 disease 2.5 +948 Fitness: 5.98365 Genotype: Fch1: A coadaptive 1.4 4.2 B coadaptive 9.3 1.7 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.98365 disease 2.5 +949 Fitness: 13.1073 Genotype: Fch1: A coadaptive 0.4 9.9 B coadaptive 9.3 1.5 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.1073 disease 2 +950 Fitness: 13.1073 Genotype: Fch1: A coadaptive 0.4 9.9 B coadaptive 9.3 1.5 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.1073 disease 2 +951 Fitness: 13.1073 Genotype: Fch1: A coadaptive 0.4 9.9 B coadaptive 9.3 1.5 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.1073 disease 2 +952 Fitness: 1.98992 Genotype: Fch1: A coadaptive 8.4 9.9 B coadaptive 7.8 2.5 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.98992 disease 3 +953 Fitness: 1.98992 Genotype: Fch1: A coadaptive 8.4 9.9 B coadaptive 7.8 2.5 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.98992 disease 3 +954 Fitness: 1.98992 Genotype: Fch1: A coadaptive 8.4 9.9 B coadaptive 7.8 2.5 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.98992 disease 3 +955 Fitness: 14.6494 Genotype: Fch1: A coadaptive 5.7 7.4 B coadaptive 6.8 7.2 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 14.6494 disease 3.5 +956 Fitness: 14.6494 Genotype: Fch1: A coadaptive 5.7 7.4 B coadaptive 6.8 7.2 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 14.6494 disease 3.5 +957 Fitness: 14.6494 Genotype: Fch1: A coadaptive 5.7 7.4 B coadaptive 6.8 7.2 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 14.6494 disease 3.5 +958 Fitness: 1.54833 Genotype: Fch1: A coadaptive 0.3 1.6 B coadaptive 1.9 3.3 C disease 1 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 1.54833 disease 3.5 +959 Fitness: 1.54833 Genotype: Fch1: A coadaptive 0.3 1.6 B coadaptive 1.9 3.3 C disease 1 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 1.54833 disease 3.5 +960 Fitness: 1.54833 Genotype: Fch1: A coadaptive 0.3 1.6 B coadaptive 1.9 3.3 C disease 1 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 1.54833 disease 3.5 +961 Fitness: 11.8037 Genotype: Fch1: A coadaptive 3.7 7.7 B coadaptive 6.7 8.7 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 11.8037 disease 2 +962 Fitness: 11.8037 Genotype: Fch1: A coadaptive 3.7 7.7 B coadaptive 6.7 8.7 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 11.8037 disease 2 +963 Fitness: 11.8037 Genotype: Fch1: A coadaptive 3.7 7.7 B coadaptive 6.7 8.7 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 11.8037 disease 2 +964 Fitness: 10.4478 Genotype: Fch1: A coadaptive 6.8 7 B coadaptive 1.5 7.7 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.4478 disease 2 +965 Fitness: 10.4478 Genotype: Fch1: A coadaptive 6.8 7 B coadaptive 1.5 7.7 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.4478 disease 2 +966 Fitness: 10.4478 Genotype: Fch1: A coadaptive 6.8 7 B coadaptive 1.5 7.7 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.4478 disease 2 +967 Fitness: 13.0786 Genotype: Fch1: A coadaptive 8.8 1.9 B coadaptive 6.9 6.6 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.0786 disease 2 +968 Fitness: 13.0786 Genotype: Fch1: A coadaptive 8.8 1.9 B coadaptive 6.9 6.6 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.0786 disease 2 +969 Fitness: 13.0786 Genotype: Fch1: A coadaptive 8.8 1.9 B coadaptive 6.9 6.6 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.0786 disease 2 +970 Fitness: 0.848 Genotype: Fch1: A coadaptive 9 7.4 B coadaptive 4.7 2.9 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0.848 disease 3.5 +971 Fitness: 0.848 Genotype: Fch1: A coadaptive 9 7.4 B coadaptive 4.7 2.9 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0.848 disease 3.5 +972 Fitness: 0.848 Genotype: Fch1: A coadaptive 9 7.4 B coadaptive 4.7 2.9 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0.848 disease 3.5 +973 Fitness: 11.2429 Genotype: Fch1: A coadaptive 6.1 2.4 B coadaptive 6.6 4 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2429 disease 2.5 +974 Fitness: 11.2429 Genotype: Fch1: A coadaptive 6.1 2.4 B coadaptive 6.6 4 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2429 disease 2.5 +975 Fitness: 11.2429 Genotype: Fch1: A coadaptive 6.1 2.4 B coadaptive 6.6 4 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2429 disease 2.5 +976 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 9.7 B coadaptive 0.4 7.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +977 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 9.7 B coadaptive 0.4 7.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +978 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 9.7 B coadaptive 0.4 7.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +979 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.6 B coadaptive 6.1 9.2 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +980 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.6 B coadaptive 6.1 9.2 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +981 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.6 B coadaptive 6.1 9.2 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +982 Fitness: 11.8246 Genotype: Fch1: A coadaptive 6.9 6.9 B coadaptive 6.8 3.2 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.8246 disease 2.5 +983 Fitness: 11.8246 Genotype: Fch1: A coadaptive 6.9 6.9 B coadaptive 6.8 3.2 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.8246 disease 2.5 +984 Fitness: 11.8246 Genotype: Fch1: A coadaptive 6.9 6.9 B coadaptive 6.8 3.2 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.8246 disease 2.5 +985 Fitness: 0.454918 Genotype: Fch1: A coadaptive 0.4 3.8 B coadaptive 9.3 3.2 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0.454918 disease 3.5 +986 Fitness: 0.454918 Genotype: Fch1: A coadaptive 0.4 3.8 B coadaptive 9.3 3.2 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0.454918 disease 3.5 +987 Fitness: 0.454918 Genotype: Fch1: A coadaptive 0.4 3.8 B coadaptive 9.3 3.2 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0.454918 disease 3.5 +988 Fitness: 5.49509 Genotype: Fch1: A coadaptive 1.2 3.7 B coadaptive 1.6 8 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.49509 disease 3.5 +989 Fitness: 5.49509 Genotype: Fch1: A coadaptive 1.2 3.7 B coadaptive 1.6 8 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.49509 disease 3.5 +990 Fitness: 5.49509 Genotype: Fch1: A coadaptive 1.2 3.7 B coadaptive 1.6 8 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.49509 disease 3.5 +991 Fitness: 12.033 Genotype: Fch1: A coadaptive 8.5 0.8 B coadaptive 4.9 7.2 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.033 disease 3 +992 Fitness: 12.033 Genotype: Fch1: A coadaptive 8.5 0.8 B coadaptive 4.9 7.2 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.033 disease 3 +993 Fitness: 12.033 Genotype: Fch1: A coadaptive 8.5 0.8 B coadaptive 4.9 7.2 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.033 disease 3 +994 Fitness: 10.6393 Genotype: Fch1: A coadaptive 7.4 1 B coadaptive 2.9 6.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.6393 disease 2 +995 Fitness: 10.6393 Genotype: Fch1: A coadaptive 7.4 1 B coadaptive 2.9 6.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.6393 disease 2 +996 Fitness: 10.6393 Genotype: Fch1: A coadaptive 7.4 1 B coadaptive 2.9 6.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.6393 disease 2 +997 Fitness: 14.4928 Genotype: Fch1: A coadaptive 6.5 6.3 B coadaptive 5 7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 14.4928 disease 4 +998 Fitness: 14.4928 Genotype: Fch1: A coadaptive 6.5 6.3 B coadaptive 5 7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 14.4928 disease 4 +999 Fitness: 14.4928 Genotype: Fch1: A coadaptive 6.5 6.3 B coadaptive 5 7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 14.4928 disease 4 +1000 Fitness: 10.5953 Genotype: Fch1: A coadaptive 4.2 8.2 B coadaptive 5.4 3.1 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.5953 disease 3.5 +1001 Fitness: 10.5953 Genotype: Fch1: A coadaptive 4.2 8.2 B coadaptive 5.4 3.1 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.5953 disease 3.5 +1002 Fitness: 10.5953 Genotype: Fch1: A coadaptive 4.2 8.2 B coadaptive 5.4 3.1 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.5953 disease 3.5 +1003 Fitness: 14.2806 Genotype: Fch1: A coadaptive 6.2 8.6 B coadaptive 5.6 7.8 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.2806 disease 3 +1004 Fitness: 14.2806 Genotype: Fch1: A coadaptive 6.2 8.6 B coadaptive 5.6 7.8 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.2806 disease 3 +1005 Fitness: 14.2806 Genotype: Fch1: A coadaptive 6.2 8.6 B coadaptive 5.6 7.8 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.2806 disease 3 +1006 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 1.2 B coadaptive 8 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1007 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 1.2 B coadaptive 8 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1008 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 1.2 B coadaptive 8 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1009 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 7.2 B coadaptive 3.1 0.8 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1010 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 7.2 B coadaptive 3.1 0.8 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1011 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 7.2 B coadaptive 3.1 0.8 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1012 Fitness: 3.27305 Genotype: Fch1: A coadaptive 0.1 3.2 B coadaptive 1.3 4.2 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.27305 disease 3.5 +1013 Fitness: 3.27305 Genotype: Fch1: A coadaptive 0.1 3.2 B coadaptive 1.3 4.2 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.27305 disease 3.5 +1014 Fitness: 3.27305 Genotype: Fch1: A coadaptive 0.1 3.2 B coadaptive 1.3 4.2 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.27305 disease 3.5 +1015 Fitness: 9.37665 Genotype: Fch1: A coadaptive 9 6 B coadaptive 6.6 3 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.37665 disease 3 +1016 Fitness: 9.37665 Genotype: Fch1: A coadaptive 9 6 B coadaptive 6.6 3 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.37665 disease 3 +1017 Fitness: 9.37665 Genotype: Fch1: A coadaptive 9 6 B coadaptive 6.6 3 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.37665 disease 3 +1018 Fitness: 13.6064 Genotype: Fch1: A coadaptive 1.6 9.4 B coadaptive 5.6 7.6 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.6064 disease 3 +1019 Fitness: 13.6064 Genotype: Fch1: A coadaptive 1.6 9.4 B coadaptive 5.6 7.6 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.6064 disease 3 +1020 Fitness: 13.6064 Genotype: Fch1: A coadaptive 1.6 9.4 B coadaptive 5.6 7.6 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.6064 disease 3 +1021 Fitness: 4.32236 Genotype: Fch1: A coadaptive 8 5.5 B coadaptive 1.3 5 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 4.32236 disease 3 +1022 Fitness: 4.32236 Genotype: Fch1: A coadaptive 8 5.5 B coadaptive 1.3 5 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 4.32236 disease 3 +1023 Fitness: 4.32236 Genotype: Fch1: A coadaptive 8 5.5 B coadaptive 1.3 5 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 4.32236 disease 3 +1024 Fitness: 11.4274 Genotype: Fch1: A coadaptive 9 0 B coadaptive 4.2 8.2 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.4274 disease 4 +1025 Fitness: 11.4274 Genotype: Fch1: A coadaptive 9 0 B coadaptive 4.2 8.2 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.4274 disease 4 +1026 Fitness: 11.4274 Genotype: Fch1: A coadaptive 9 0 B coadaptive 4.2 8.2 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.4274 disease 4 +1027 Fitness: 13.0216 Genotype: Fch1: A coadaptive 5.5 5.1 B coadaptive 7.7 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.0216 disease 3 +1028 Fitness: 13.0216 Genotype: Fch1: A coadaptive 5.5 5.1 B coadaptive 7.7 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.0216 disease 3 +1029 Fitness: 13.0216 Genotype: Fch1: A coadaptive 5.5 5.1 B coadaptive 7.7 2.6 C disease 0.5 1 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.0216 disease 3 +1030 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.3 B coadaptive 6.1 7.5 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1031 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.3 B coadaptive 6.1 7.5 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1032 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.3 B coadaptive 6.1 7.5 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1033 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 1.8 B coadaptive 6.8 9.5 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1034 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 1.8 B coadaptive 6.8 9.5 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1035 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 1.8 B coadaptive 6.8 9.5 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1036 Fitness: 3.49803 Genotype: Fch1: A coadaptive 7.2 0.9 B coadaptive 0.8 2.7 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 3.49803 disease 2 +1037 Fitness: 3.49803 Genotype: Fch1: A coadaptive 7.2 0.9 B coadaptive 0.8 2.7 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 3.49803 disease 2 +1038 Fitness: 3.49803 Genotype: Fch1: A coadaptive 7.2 0.9 B coadaptive 0.8 2.7 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 3.49803 disease 2 +1039 Fitness: 3.15156 Genotype: Fch1: A coadaptive 8.8 6.7 B coadaptive 2.6 4.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.15156 disease 3 +1040 Fitness: 3.15156 Genotype: Fch1: A coadaptive 8.8 6.7 B coadaptive 2.6 4.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.15156 disease 3 +1041 Fitness: 3.15156 Genotype: Fch1: A coadaptive 8.8 6.7 B coadaptive 2.6 4.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.15156 disease 3 +1042 Fitness: 13.0794 Genotype: Fch1: A coadaptive 5.7 8.2 B coadaptive 6.5 9.6 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.0794 disease 3 +1043 Fitness: 13.0794 Genotype: Fch1: A coadaptive 5.7 8.2 B coadaptive 6.5 9.6 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.0794 disease 3 +1044 Fitness: 13.0794 Genotype: Fch1: A coadaptive 5.7 8.2 B coadaptive 6.5 9.6 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.0794 disease 3 +1045 Fitness: 4.07926 Genotype: Fch1: A coadaptive 0.9 2.9 B coadaptive 3.3 3 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.07926 disease 4 +1046 Fitness: 4.07926 Genotype: Fch1: A coadaptive 0.9 2.9 B coadaptive 3.3 3 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.07926 disease 4 +1047 Fitness: 4.07926 Genotype: Fch1: A coadaptive 0.9 2.9 B coadaptive 3.3 3 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.07926 disease 4 +1048 Fitness: 0.53062 Genotype: Fch1: A coadaptive 6.8 9.7 B coadaptive 5.3 2.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.53062 disease 3.5 +1049 Fitness: 0.53062 Genotype: Fch1: A coadaptive 6.8 9.7 B coadaptive 5.3 2.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.53062 disease 3.5 +1050 Fitness: 0.53062 Genotype: Fch1: A coadaptive 6.8 9.7 B coadaptive 5.3 2.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.53062 disease 3.5 +1051 Fitness: 10.7536 Genotype: Fch1: A coadaptive 8.1 0.5 B coadaptive 6.8 2.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 10.7536 disease 3 +1052 Fitness: 10.7536 Genotype: Fch1: A coadaptive 8.1 0.5 B coadaptive 6.8 2.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 10.7536 disease 3 +1053 Fitness: 10.7536 Genotype: Fch1: A coadaptive 8.1 0.5 B coadaptive 6.8 2.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 10.7536 disease 3 +1054 Fitness: 10.917 Genotype: Fch1: A coadaptive 5.4 6.5 B coadaptive 2.7 5.8 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.917 disease 2.5 +1055 Fitness: 10.917 Genotype: Fch1: A coadaptive 5.4 6.5 B coadaptive 2.7 5.8 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.917 disease 2.5 +1056 Fitness: 10.917 Genotype: Fch1: A coadaptive 5.4 6.5 B coadaptive 2.7 5.8 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.917 disease 2.5 +1057 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 3.3 B coadaptive 9.9 9.9 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1058 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 3.3 B coadaptive 9.9 9.9 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1059 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 3.3 B coadaptive 9.9 9.9 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1060 Fitness: 9.33174 Genotype: Fch1: A coadaptive 5.4 8.5 B coadaptive 2 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.33174 disease 2.5 +1061 Fitness: 9.33174 Genotype: Fch1: A coadaptive 5.4 8.5 B coadaptive 2 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.33174 disease 2.5 +1062 Fitness: 9.33174 Genotype: Fch1: A coadaptive 5.4 8.5 B coadaptive 2 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.33174 disease 2.5 +1063 Fitness: 11.1671 Genotype: Fch1: A coadaptive 8.2 8.9 B coadaptive 9.4 4.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1671 disease 2.5 +1064 Fitness: 11.1671 Genotype: Fch1: A coadaptive 8.2 8.9 B coadaptive 9.4 4.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1671 disease 2.5 +1065 Fitness: 11.1671 Genotype: Fch1: A coadaptive 8.2 8.9 B coadaptive 9.4 4.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1671 disease 2.5 +1066 Fitness: 1.00813 Genotype: Fch1: A coadaptive 0.4 1.7 B coadaptive 0.9 7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.00813 disease 2.5 +1067 Fitness: 1.00813 Genotype: Fch1: A coadaptive 0.4 1.7 B coadaptive 0.9 7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.00813 disease 2.5 +1068 Fitness: 1.00813 Genotype: Fch1: A coadaptive 0.4 1.7 B coadaptive 0.9 7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.00813 disease 2.5 +1069 Fitness: 6.12265 Genotype: Fch1: A coadaptive 0.9 4.4 B coadaptive 4.9 5 C disease 0 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.12265 disease 2 +1070 Fitness: 6.12265 Genotype: Fch1: A coadaptive 0.9 4.4 B coadaptive 4.9 5 C disease 0 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.12265 disease 2 +1071 Fitness: 6.12265 Genotype: Fch1: A coadaptive 0.9 4.4 B coadaptive 4.9 5 C disease 0 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.12265 disease 2 +1072 Fitness: 13.9297 Genotype: Fch1: A coadaptive 3.3 8.2 B coadaptive 4.1 9.4 C disease 1 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.9297 disease 4 +1073 Fitness: 13.9297 Genotype: Fch1: A coadaptive 3.3 8.2 B coadaptive 4.1 9.4 C disease 1 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.9297 disease 4 +1074 Fitness: 13.9297 Genotype: Fch1: A coadaptive 3.3 8.2 B coadaptive 4.1 9.4 C disease 1 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.9297 disease 4 +1075 Fitness: 10.8196 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 1.9 6.3 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.8196 disease 2.5 +1076 Fitness: 10.8196 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 1.9 6.3 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.8196 disease 2.5 +1077 Fitness: 10.8196 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 1.9 6.3 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.8196 disease 2.5 +1078 Fitness: 1.57728 Genotype: Fch1: A coadaptive 2.5 3.1 B coadaptive 5.8 8.1 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.57728 disease 1.5 +1079 Fitness: 1.57728 Genotype: Fch1: A coadaptive 2.5 3.1 B coadaptive 5.8 8.1 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.57728 disease 1.5 +1080 Fitness: 1.57728 Genotype: Fch1: A coadaptive 2.5 3.1 B coadaptive 5.8 8.1 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.57728 disease 1.5 +1081 Fitness: 0 Genotype: Fch1: A coadaptive 5.6 8.8 B coadaptive 0.9 0.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1082 Fitness: 0 Genotype: Fch1: A coadaptive 5.6 8.8 B coadaptive 0.9 0.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1083 Fitness: 0 Genotype: Fch1: A coadaptive 5.6 8.8 B coadaptive 0.9 0.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1084 Fitness: 7.44291 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 4 2.5 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.44291 disease 3 +1085 Fitness: 7.44291 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 4 2.5 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.44291 disease 3 +1086 Fitness: 7.44291 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 4 2.5 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.44291 disease 3 +1087 Fitness: 8.73779 Genotype: Fch1: A coadaptive 9.2 2.2 B coadaptive 7.3 9.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 8.73779 disease 4 +1088 Fitness: 8.73779 Genotype: Fch1: A coadaptive 9.2 2.2 B coadaptive 7.3 9.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 8.73779 disease 4 +1089 Fitness: 8.73779 Genotype: Fch1: A coadaptive 9.2 2.2 B coadaptive 7.3 9.6 C disease 0.5 1 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 8.73779 disease 4 +1090 Fitness: 1.32396 Genotype: Fch1: A coadaptive 2 0.3 B coadaptive 4.1 3.9 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.32396 disease 1.5 +1091 Fitness: 1.32396 Genotype: Fch1: A coadaptive 2 0.3 B coadaptive 4.1 3.9 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.32396 disease 1.5 +1092 Fitness: 1.32396 Genotype: Fch1: A coadaptive 2 0.3 B coadaptive 4.1 3.9 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.32396 disease 1.5 +1093 Fitness: 14.2448 Genotype: Fch1: A coadaptive 9.5 3.8 B coadaptive 6.5 8.3 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.2448 disease 2.5 +1094 Fitness: 14.2448 Genotype: Fch1: A coadaptive 9.5 3.8 B coadaptive 6.5 8.3 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.2448 disease 2.5 +1095 Fitness: 14.2448 Genotype: Fch1: A coadaptive 9.5 3.8 B coadaptive 6.5 8.3 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.2448 disease 2.5 +1096 Fitness: 11.9398 Genotype: Fch1: A coadaptive 0.8 8.5 B coadaptive 8.6 3.7 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.9398 disease 3.5 +1097 Fitness: 11.9398 Genotype: Fch1: A coadaptive 0.8 8.5 B coadaptive 8.6 3.7 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.9398 disease 3.5 +1098 Fitness: 11.9398 Genotype: Fch1: A coadaptive 0.8 8.5 B coadaptive 8.6 3.7 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 11.9398 disease 3.5 +1099 Fitness: 5.91112 Genotype: Fch1: A coadaptive 1.9 4.5 B coadaptive 4.1 1.2 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.91112 disease 2.5 +1100 Fitness: 5.91112 Genotype: Fch1: A coadaptive 1.9 4.5 B coadaptive 4.1 1.2 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.91112 disease 2.5 +1101 Fitness: 5.91112 Genotype: Fch1: A coadaptive 1.9 4.5 B coadaptive 4.1 1.2 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.91112 disease 2.5 +1102 Fitness: 6.49512 Genotype: Fch1: A coadaptive 6.6 1.8 B coadaptive 2.8 2.5 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.49512 disease 3 +1103 Fitness: 6.49512 Genotype: Fch1: A coadaptive 6.6 1.8 B coadaptive 2.8 2.5 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.49512 disease 3 +1104 Fitness: 6.49512 Genotype: Fch1: A coadaptive 6.6 1.8 B coadaptive 2.8 2.5 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.49512 disease 3 +1105 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 6.2 B coadaptive 1.9 0.6 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2 +1106 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 6.2 B coadaptive 1.9 0.6 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2 +1107 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 6.2 B coadaptive 1.9 0.6 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2 +1108 Fitness: 5.05265 Genotype: Fch1: A coadaptive 2.7 2.2 B coadaptive 5.8 4.5 C disease 0 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.05265 disease 2.5 +1109 Fitness: 5.05265 Genotype: Fch1: A coadaptive 2.7 2.2 B coadaptive 5.8 4.5 C disease 0 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.05265 disease 2.5 +1110 Fitness: 5.05265 Genotype: Fch1: A coadaptive 2.7 2.2 B coadaptive 5.8 4.5 C disease 0 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.05265 disease 2.5 +1111 Fitness: 5.16154 Genotype: Fch1: A coadaptive 3.6 1.7 B coadaptive 3.5 1.8 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 5.16154 disease 3 +1112 Fitness: 5.16154 Genotype: Fch1: A coadaptive 3.6 1.7 B coadaptive 3.5 1.8 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 5.16154 disease 3 +1113 Fitness: 5.16154 Genotype: Fch1: A coadaptive 3.6 1.7 B coadaptive 3.5 1.8 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 5.16154 disease 3 +1114 Fitness: 13.4467 Genotype: Fch1: A coadaptive 5.3 9.4 B coadaptive 8.1 3.9 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 13.4467 disease 3.5 +1115 Fitness: 13.4467 Genotype: Fch1: A coadaptive 5.3 9.4 B coadaptive 8.1 3.9 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 13.4467 disease 3.5 +1116 Fitness: 13.4467 Genotype: Fch1: A coadaptive 5.3 9.4 B coadaptive 8.1 3.9 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 13.4467 disease 3.5 +1117 Fitness: 4.00781 Genotype: Fch1: A coadaptive 0.4 4.1 B coadaptive 9.3 1.2 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.00781 disease 2 +1118 Fitness: 4.00781 Genotype: Fch1: A coadaptive 0.4 4.1 B coadaptive 9.3 1.2 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.00781 disease 2 +1119 Fitness: 4.00781 Genotype: Fch1: A coadaptive 0.4 4.1 B coadaptive 9.3 1.2 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.00781 disease 2 +1120 Fitness: 1.9064 Genotype: Fch1: A coadaptive 6 7.2 B coadaptive 1.2 4 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 1.9064 disease 2 +1121 Fitness: 1.9064 Genotype: Fch1: A coadaptive 6 7.2 B coadaptive 1.2 4 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 1.9064 disease 2 +1122 Fitness: 1.9064 Genotype: Fch1: A coadaptive 6 7.2 B coadaptive 1.2 4 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 1.9064 disease 2 +1123 Fitness: 9.63192 Genotype: Fch1: A coadaptive 9 8.3 B coadaptive 5.5 7.1 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.63192 disease 3 +1124 Fitness: 9.63192 Genotype: Fch1: A coadaptive 9 8.3 B coadaptive 5.5 7.1 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.63192 disease 3 +1125 Fitness: 9.63192 Genotype: Fch1: A coadaptive 9 8.3 B coadaptive 5.5 7.1 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.63192 disease 3 +1126 Fitness: 10.1282 Genotype: Fch1: A coadaptive 3.7 7.7 B coadaptive 6.7 9.6 C disease 0.5 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 10.1282 disease 2.5 +1127 Fitness: 10.1282 Genotype: Fch1: A coadaptive 3.7 7.7 B coadaptive 6.7 9.6 C disease 0.5 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 10.1282 disease 2.5 +1128 Fitness: 10.1282 Genotype: Fch1: A coadaptive 3.7 7.7 B coadaptive 6.7 9.6 C disease 0.5 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 10.1282 disease 2.5 +1129 Fitness: 8.26306 Genotype: Fch1: A coadaptive 2.4 9.6 B coadaptive 1.1 6 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 8.26306 disease 2 +1130 Fitness: 8.26306 Genotype: Fch1: A coadaptive 2.4 9.6 B coadaptive 1.1 6 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 8.26306 disease 2 +1131 Fitness: 8.26306 Genotype: Fch1: A coadaptive 2.4 9.6 B coadaptive 1.1 6 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 8.26306 disease 2 +1132 Fitness: 0.406081 Genotype: Fch1: A coadaptive 1.4 0.5 B coadaptive 2.1 6.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0.406081 disease 3 +1133 Fitness: 0.406081 Genotype: Fch1: A coadaptive 1.4 0.5 B coadaptive 2.1 6.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0.406081 disease 3 +1134 Fitness: 0.406081 Genotype: Fch1: A coadaptive 1.4 0.5 B coadaptive 2.1 6.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0.406081 disease 3 +1135 Fitness: 6.94297 Genotype: Fch1: A coadaptive 6.1 8.9 B coadaptive 6.6 1.9 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.94297 disease 4 +1136 Fitness: 6.94297 Genotype: Fch1: A coadaptive 6.1 8.9 B coadaptive 6.6 1.9 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.94297 disease 4 +1137 Fitness: 6.94297 Genotype: Fch1: A coadaptive 6.1 8.9 B coadaptive 6.6 1.9 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.94297 disease 4 +1138 Fitness: 0.785544 Genotype: Fch1: A coadaptive 2.3 0.2 B coadaptive 2.6 6.6 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.785544 disease 2 +1139 Fitness: 0.785544 Genotype: Fch1: A coadaptive 2.3 0.2 B coadaptive 2.6 6.6 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.785544 disease 2 +1140 Fitness: 0.785544 Genotype: Fch1: A coadaptive 2.3 0.2 B coadaptive 2.6 6.6 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.785544 disease 2 +1141 Fitness: 14.5836 Genotype: Fch1: A coadaptive 9.9 2.3 B coadaptive 2.8 9.9 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 14.5836 disease 3 +1142 Fitness: 14.5836 Genotype: Fch1: A coadaptive 9.9 2.3 B coadaptive 2.8 9.9 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 14.5836 disease 3 +1143 Fitness: 14.5836 Genotype: Fch1: A coadaptive 9.9 2.3 B coadaptive 2.8 9.9 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 14.5836 disease 3 +1144 Fitness: 8.71526 Genotype: Fch1: A coadaptive 0.4 6.4 B coadaptive 9.3 1 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.71526 disease 2 +1145 Fitness: 8.71526 Genotype: Fch1: A coadaptive 0.4 6.4 B coadaptive 9.3 1 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.71526 disease 2 +1146 Fitness: 8.71526 Genotype: Fch1: A coadaptive 0.4 6.4 B coadaptive 9.3 1 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.71526 disease 2 +1147 Fitness: 13.6789 Genotype: Fch1: A coadaptive 8.3 4.5 B coadaptive 2.1 8.8 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.6789 disease 3 +1148 Fitness: 13.6789 Genotype: Fch1: A coadaptive 8.3 4.5 B coadaptive 2.1 8.8 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.6789 disease 3 +1149 Fitness: 13.6789 Genotype: Fch1: A coadaptive 8.3 4.5 B coadaptive 2.1 8.8 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.6789 disease 3 +1150 Fitness: 4.01274 Genotype: Fch1: A coadaptive 1.8 5.1 B coadaptive 2.5 1.2 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.01274 disease 4 +1151 Fitness: 4.01274 Genotype: Fch1: A coadaptive 1.8 5.1 B coadaptive 2.5 1.2 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.01274 disease 4 +1152 Fitness: 4.01274 Genotype: Fch1: A coadaptive 1.8 5.1 B coadaptive 2.5 1.2 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.01274 disease 4 +1153 Fitness: 14.0368 Genotype: Fch1: A coadaptive 6.5 8.1 B coadaptive 5 7.6 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 14.0368 disease 3.5 +1154 Fitness: 14.0368 Genotype: Fch1: A coadaptive 6.5 8.1 B coadaptive 5 7.6 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 14.0368 disease 3.5 +1155 Fitness: 14.0368 Genotype: Fch1: A coadaptive 6.5 8.1 B coadaptive 5 7.6 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 14.0368 disease 3.5 +1156 Fitness: 7.45933 Genotype: Fch1: A coadaptive 4.1 6.2 B coadaptive 1.2 4.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 7.45933 disease 2 +1157 Fitness: 7.45933 Genotype: Fch1: A coadaptive 4.1 6.2 B coadaptive 1.2 4.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 7.45933 disease 2 +1158 Fitness: 7.45933 Genotype: Fch1: A coadaptive 4.1 6.2 B coadaptive 1.2 4.9 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 7.45933 disease 2 +1159 Fitness: 0.110869 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 0.1 8.9 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.110869 disease 2.5 +1160 Fitness: 0.110869 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 0.1 8.9 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.110869 disease 2.5 +1161 Fitness: 0.110869 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 0.1 8.9 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.110869 disease 2.5 +1162 Fitness: 1.34395 Genotype: Fch1: A coadaptive 5.5 7.7 B coadaptive 3.1 1.9 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 1.34395 disease 3 +1163 Fitness: 1.34395 Genotype: Fch1: A coadaptive 5.5 7.7 B coadaptive 3.1 1.9 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 1.34395 disease 3 +1164 Fitness: 1.34395 Genotype: Fch1: A coadaptive 5.5 7.7 B coadaptive 3.1 1.9 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 1.34395 disease 3 +1165 Fitness: 11.7027 Genotype: Fch1: A coadaptive 1.2 7.9 B coadaptive 3.2 6.6 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7027 disease 2.5 +1166 Fitness: 11.7027 Genotype: Fch1: A coadaptive 1.2 7.9 B coadaptive 3.2 6.6 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7027 disease 2.5 +1167 Fitness: 11.7027 Genotype: Fch1: A coadaptive 1.2 7.9 B coadaptive 3.2 6.6 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7027 disease 2.5 +1168 Fitness: 6.34673 Genotype: Fch1: A coadaptive 7.2 0.8 B coadaptive 7.5 7.2 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.34673 disease 2.5 +1169 Fitness: 6.34673 Genotype: Fch1: A coadaptive 7.2 0.8 B coadaptive 7.5 7.2 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.34673 disease 2.5 +1170 Fitness: 6.34673 Genotype: Fch1: A coadaptive 7.2 0.8 B coadaptive 7.5 7.2 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.34673 disease 2.5 +1171 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.7 B coadaptive 2.9 1.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1172 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.7 B coadaptive 2.9 1.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1173 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.7 B coadaptive 2.9 1.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1174 Fitness: 4.138 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 8.4 8.4 C disease 0 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 4.138 disease 1.5 +1175 Fitness: 4.138 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 8.4 8.4 C disease 0 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 4.138 disease 1.5 +1176 Fitness: 4.138 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 8.4 8.4 C disease 0 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 4.138 disease 1.5 +1177 Fitness: 3.86758 Genotype: Fch1: A coadaptive 2.4 1.8 B coadaptive 8 1.9 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.86758 disease 3.5 +1178 Fitness: 3.86758 Genotype: Fch1: A coadaptive 2.4 1.8 B coadaptive 8 1.9 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.86758 disease 3.5 +1179 Fitness: 3.86758 Genotype: Fch1: A coadaptive 2.4 1.8 B coadaptive 8 1.9 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.86758 disease 3.5 +1180 Fitness: 10.069 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 8.3 4.3 C disease 0 0.5 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.069 disease 3.5 +1181 Fitness: 10.069 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 8.3 4.3 C disease 0 0.5 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.069 disease 3.5 +1182 Fitness: 10.069 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 8.3 4.3 C disease 0 0.5 D disease 1 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.069 disease 3.5 +1183 Fitness: 6.38105 Genotype: Fch1: A coadaptive 8.3 9.7 B coadaptive 7.3 4.5 C disease 0 1 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 6.38105 disease 3 +1184 Fitness: 6.38105 Genotype: Fch1: A coadaptive 8.3 9.7 B coadaptive 7.3 4.5 C disease 0 1 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 6.38105 disease 3 +1185 Fitness: 6.38105 Genotype: Fch1: A coadaptive 8.3 9.7 B coadaptive 7.3 4.5 C disease 0 1 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 6.38105 disease 3 +1186 Fitness: 1.28594 Genotype: Fch1: A coadaptive 8 4.5 B coadaptive 2.1 2.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 1.28594 disease 2 +1187 Fitness: 1.28594 Genotype: Fch1: A coadaptive 8 4.5 B coadaptive 2.1 2.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 1.28594 disease 2 +1188 Fitness: 1.28594 Genotype: Fch1: A coadaptive 8 4.5 B coadaptive 2.1 2.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 1.28594 disease 2 +1189 Fitness: 5.91112 Genotype: Fch1: A coadaptive 2.9 2.4 B coadaptive 6.3 0.1 C disease 1 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.91112 disease 3 +1190 Fitness: 5.91112 Genotype: Fch1: A coadaptive 2.9 2.4 B coadaptive 6.3 0.1 C disease 1 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.91112 disease 3 +1191 Fitness: 5.91112 Genotype: Fch1: A coadaptive 2.9 2.4 B coadaptive 6.3 0.1 C disease 1 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.91112 disease 3 +1192 Fitness: 7.90031 Genotype: Fch1: A coadaptive 6.2 8.9 B coadaptive 3.4 5.6 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.90031 disease 3 +1193 Fitness: 7.90031 Genotype: Fch1: A coadaptive 6.2 8.9 B coadaptive 3.4 5.6 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.90031 disease 3 +1194 Fitness: 7.90031 Genotype: Fch1: A coadaptive 6.2 8.9 B coadaptive 3.4 5.6 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.90031 disease 3 +1195 Fitness: 10.4066 Genotype: Fch1: A coadaptive 5.6 2.3 B coadaptive 8.1 1.8 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 10.4066 disease 3.5 +1196 Fitness: 10.4066 Genotype: Fch1: A coadaptive 5.6 2.3 B coadaptive 8.1 1.8 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 10.4066 disease 3.5 +1197 Fitness: 10.4066 Genotype: Fch1: A coadaptive 5.6 2.3 B coadaptive 8.1 1.8 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 10.4066 disease 3.5 +1198 Fitness: 0.860244 Genotype: Fch1: A coadaptive 9.9 3.8 B coadaptive 2.3 2.9 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0.860244 disease 1.5 +1199 Fitness: 0.860244 Genotype: Fch1: A coadaptive 9.9 3.8 B coadaptive 2.3 2.9 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0.860244 disease 1.5 +1200 Fitness: 0.860244 Genotype: Fch1: A coadaptive 9.9 3.8 B coadaptive 2.3 2.9 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0.860244 disease 1.5 +1201 Fitness: 7.29641 Genotype: Fch1: A coadaptive 1.7 4.6 B coadaptive 8.5 2.7 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.29641 disease 2.5 +1202 Fitness: 7.29641 Genotype: Fch1: A coadaptive 1.7 4.6 B coadaptive 8.5 2.7 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.29641 disease 2.5 +1203 Fitness: 7.29641 Genotype: Fch1: A coadaptive 1.7 4.6 B coadaptive 8.5 2.7 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.29641 disease 2.5 +1204 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.7 B coadaptive 2.1 3.6 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +1205 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.7 B coadaptive 2.1 3.6 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +1206 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.7 B coadaptive 2.1 3.6 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +1207 Fitness: 12.3756 Genotype: Fch1: A coadaptive 5.5 6.1 B coadaptive 7.7 7.5 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.3756 disease 3 +1208 Fitness: 12.3756 Genotype: Fch1: A coadaptive 5.5 6.1 B coadaptive 7.7 7.5 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.3756 disease 3 +1209 Fitness: 12.3756 Genotype: Fch1: A coadaptive 5.5 6.1 B coadaptive 7.7 7.5 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.3756 disease 3 +1210 Fitness: 3.96502 Genotype: Fch1: A coadaptive 1.8 4.6 B coadaptive 0.6 3.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 3.96502 disease 2.5 +1211 Fitness: 3.96502 Genotype: Fch1: A coadaptive 1.8 4.6 B coadaptive 0.6 3.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 3.96502 disease 2.5 +1212 Fitness: 3.96502 Genotype: Fch1: A coadaptive 1.8 4.6 B coadaptive 0.6 3.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 3.96502 disease 2.5 +1213 Fitness: 1.6901 Genotype: Fch1: A coadaptive 7.5 1.9 B coadaptive 1.7 1.3 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 1.6901 disease 3 +1214 Fitness: 1.6901 Genotype: Fch1: A coadaptive 7.5 1.9 B coadaptive 1.7 1.3 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 1.6901 disease 3 +1215 Fitness: 1.6901 Genotype: Fch1: A coadaptive 7.5 1.9 B coadaptive 1.7 1.3 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 1.6901 disease 3 +1216 Fitness: 11.032 Genotype: Fch1: A coadaptive 7.2 8.3 B coadaptive 3.5 7.5 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.032 disease 3 +1217 Fitness: 11.032 Genotype: Fch1: A coadaptive 7.2 8.3 B coadaptive 3.5 7.5 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.032 disease 3 +1218 Fitness: 11.032 Genotype: Fch1: A coadaptive 7.2 8.3 B coadaptive 3.5 7.5 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.032 disease 3 +1219 Fitness: 13.9295 Genotype: Fch1: A coadaptive 5.5 6.2 B coadaptive 6.9 6.9 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.9295 disease 1.5 +1220 Fitness: 13.9295 Genotype: Fch1: A coadaptive 5.5 6.2 B coadaptive 6.9 6.9 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.9295 disease 1.5 +1221 Fitness: 13.9295 Genotype: Fch1: A coadaptive 5.5 6.2 B coadaptive 6.9 6.9 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.9295 disease 1.5 +1222 Fitness: 13.1872 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 9.5 0.9 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.1872 disease 4 +1223 Fitness: 13.1872 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 9.5 0.9 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.1872 disease 4 +1224 Fitness: 13.1872 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 9.5 0.9 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.1872 disease 4 +1225 Fitness: 13.6805 Genotype: Fch1: A coadaptive 9.3 1.6 B coadaptive 6.2 5.1 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6805 disease 3.5 +1226 Fitness: 13.6805 Genotype: Fch1: A coadaptive 9.3 1.6 B coadaptive 6.2 5.1 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6805 disease 3.5 +1227 Fitness: 13.6805 Genotype: Fch1: A coadaptive 9.3 1.6 B coadaptive 6.2 5.1 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6805 disease 3.5 +1228 Fitness: 13.1211 Genotype: Fch1: A coadaptive 8.8 5.1 B coadaptive 6.4 4.6 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.1211 disease 3.5 +1229 Fitness: 13.1211 Genotype: Fch1: A coadaptive 8.8 5.1 B coadaptive 6.4 4.6 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.1211 disease 3.5 +1230 Fitness: 13.1211 Genotype: Fch1: A coadaptive 8.8 5.1 B coadaptive 6.4 4.6 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.1211 disease 3.5 +1231 Fitness: 14.1748 Genotype: Fch1: A coadaptive 2.4 9.5 B coadaptive 3.3 8.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.1748 disease 2 +1232 Fitness: 14.1748 Genotype: Fch1: A coadaptive 2.4 9.5 B coadaptive 3.3 8.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.1748 disease 2 +1233 Fitness: 14.1748 Genotype: Fch1: A coadaptive 2.4 9.5 B coadaptive 3.3 8.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.1748 disease 2 +1234 Fitness: 5.41809 Genotype: Fch1: A coadaptive 3.6 1.7 B coadaptive 2.4 8.5 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.41809 disease 2.5 +1235 Fitness: 5.41809 Genotype: Fch1: A coadaptive 3.6 1.7 B coadaptive 2.4 8.5 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.41809 disease 2.5 +1236 Fitness: 5.41809 Genotype: Fch1: A coadaptive 3.6 1.7 B coadaptive 2.4 8.5 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.41809 disease 2.5 +1237 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 9.3 B coadaptive 1.2 2 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1238 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 9.3 B coadaptive 1.2 2 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1239 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 9.3 B coadaptive 1.2 2 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1240 Fitness: 13.3921 Genotype: Fch1: A coadaptive 7.1 8.7 B coadaptive 3.7 10 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3921 disease 3.5 +1241 Fitness: 13.3921 Genotype: Fch1: A coadaptive 7.1 8.7 B coadaptive 3.7 10 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3921 disease 3.5 +1242 Fitness: 13.3921 Genotype: Fch1: A coadaptive 7.1 8.7 B coadaptive 3.7 10 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3921 disease 3.5 +1243 Fitness: 5.1152 Genotype: Fch1: A coadaptive 0.9 6.7 B coadaptive 7.9 6.9 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.1152 disease 2.5 +1244 Fitness: 5.1152 Genotype: Fch1: A coadaptive 0.9 6.7 B coadaptive 7.9 6.9 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.1152 disease 2.5 +1245 Fitness: 5.1152 Genotype: Fch1: A coadaptive 0.9 6.7 B coadaptive 7.9 6.9 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.1152 disease 2.5 +1246 Fitness: 3.10629 Genotype: Fch1: A coadaptive 5.8 9.5 B coadaptive 4.4 2.9 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 3.10629 disease 2.5 +1247 Fitness: 3.10629 Genotype: Fch1: A coadaptive 5.8 9.5 B coadaptive 4.4 2.9 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 3.10629 disease 2.5 +1248 Fitness: 3.10629 Genotype: Fch1: A coadaptive 5.8 9.5 B coadaptive 4.4 2.9 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 3.10629 disease 2.5 +1249 Fitness: 3.45217 Genotype: Fch1: A coadaptive 3.8 5.2 B coadaptive 0 3.7 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.45217 disease 3 +1250 Fitness: 3.45217 Genotype: Fch1: A coadaptive 3.8 5.2 B coadaptive 0 3.7 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.45217 disease 3 +1251 Fitness: 3.45217 Genotype: Fch1: A coadaptive 3.8 5.2 B coadaptive 0 3.7 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.45217 disease 3 +1252 Fitness: 11.0627 Genotype: Fch1: A coadaptive 5.6 3.3 B coadaptive 6.8 2.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.0627 disease 2.5 +1253 Fitness: 11.0627 Genotype: Fch1: A coadaptive 5.6 3.3 B coadaptive 6.8 2.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.0627 disease 2.5 +1254 Fitness: 11.0627 Genotype: Fch1: A coadaptive 5.6 3.3 B coadaptive 6.8 2.2 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.0627 disease 2.5 +1255 Fitness: 8.97572 Genotype: Fch1: A coadaptive 4.6 2.3 B coadaptive 4.1 5.4 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.97572 disease 3.5 +1256 Fitness: 8.97572 Genotype: Fch1: A coadaptive 4.6 2.3 B coadaptive 4.1 5.4 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.97572 disease 3.5 +1257 Fitness: 8.97572 Genotype: Fch1: A coadaptive 4.6 2.3 B coadaptive 4.1 5.4 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.97572 disease 3.5 +1258 Fitness: 10.5365 Genotype: Fch1: A coadaptive 7.8 6.9 B coadaptive 9.6 8.1 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.5365 disease 3 +1259 Fitness: 10.5365 Genotype: Fch1: A coadaptive 7.8 6.9 B coadaptive 9.6 8.1 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.5365 disease 3 +1260 Fitness: 10.5365 Genotype: Fch1: A coadaptive 7.8 6.9 B coadaptive 9.6 8.1 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.5365 disease 3 +1261 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.3 B coadaptive 8.8 4.5 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1262 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.3 B coadaptive 8.8 4.5 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1263 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.3 B coadaptive 8.8 4.5 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1264 Fitness: 12.8818 Genotype: Fch1: A coadaptive 1.4 8.7 B coadaptive 7.7 2.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 12.8818 disease 3.5 +1265 Fitness: 12.8818 Genotype: Fch1: A coadaptive 1.4 8.7 B coadaptive 7.7 2.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 12.8818 disease 3.5 +1266 Fitness: 12.8818 Genotype: Fch1: A coadaptive 1.4 8.7 B coadaptive 7.7 2.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 12.8818 disease 3.5 +1267 Fitness: 3.10187 Genotype: Fch1: A coadaptive 1.1 6.6 B coadaptive 1 2.2 C disease 0 0 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.10187 disease 2.5 +1268 Fitness: 3.10187 Genotype: Fch1: A coadaptive 1.1 6.6 B coadaptive 1 2.2 C disease 0 0 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.10187 disease 2.5 +1269 Fitness: 3.10187 Genotype: Fch1: A coadaptive 1.1 6.6 B coadaptive 1 2.2 C disease 0 0 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.10187 disease 2.5 +1270 Fitness: 8.67063 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 6.6 0.1 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.67063 disease 3 +1271 Fitness: 8.67063 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 6.6 0.1 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.67063 disease 3 +1272 Fitness: 8.67063 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 6.6 0.1 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.67063 disease 3 +1273 Fitness: 10.5051 Genotype: Fch1: A coadaptive 7.2 6.7 B coadaptive 7 2.3 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 10.5051 disease 3.5 +1274 Fitness: 10.5051 Genotype: Fch1: A coadaptive 7.2 6.7 B coadaptive 7 2.3 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 10.5051 disease 3.5 +1275 Fitness: 10.5051 Genotype: Fch1: A coadaptive 7.2 6.7 B coadaptive 7 2.3 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 10.5051 disease 3.5 +1276 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 7.5 B coadaptive 4.4 1.7 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1277 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 7.5 B coadaptive 4.4 1.7 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1278 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 7.5 B coadaptive 4.4 1.7 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1279 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 10 B coadaptive 2.4 2.2 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1280 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 10 B coadaptive 2.4 2.2 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1281 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 10 B coadaptive 2.4 2.2 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1282 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3.2 B coadaptive 9.2 8.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1283 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3.2 B coadaptive 9.2 8.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1284 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3.2 B coadaptive 9.2 8.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1285 Fitness: 6.69803 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 1.6 4 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.69803 disease 3 +1286 Fitness: 6.69803 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 1.6 4 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.69803 disease 3 +1287 Fitness: 6.69803 Genotype: Fch1: A coadaptive 6.5 3.4 B coadaptive 1.6 4 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.69803 disease 3 +1288 Fitness: 3.41875 Genotype: Fch1: A coadaptive 4.8 0.2 B coadaptive 9.3 2.7 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.41875 disease 3.5 +1289 Fitness: 3.41875 Genotype: Fch1: A coadaptive 4.8 0.2 B coadaptive 9.3 2.7 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.41875 disease 3.5 +1290 Fitness: 3.41875 Genotype: Fch1: A coadaptive 4.8 0.2 B coadaptive 9.3 2.7 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.41875 disease 3.5 +1291 Fitness: 5.58854 Genotype: Fch1: A coadaptive 2.7 6.7 B coadaptive 4.9 0 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 5.58854 disease 3.5 +1292 Fitness: 5.58854 Genotype: Fch1: A coadaptive 2.7 6.7 B coadaptive 4.9 0 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 5.58854 disease 3.5 +1293 Fitness: 5.58854 Genotype: Fch1: A coadaptive 2.7 6.7 B coadaptive 4.9 0 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 5.58854 disease 3.5 +1294 Fitness: 8.6705 Genotype: Fch1: A coadaptive 0.9 5.8 B coadaptive 5.9 3.4 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.6705 disease 2.5 +1295 Fitness: 8.6705 Genotype: Fch1: A coadaptive 0.9 5.8 B coadaptive 5.9 3.4 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.6705 disease 2.5 +1296 Fitness: 8.6705 Genotype: Fch1: A coadaptive 0.9 5.8 B coadaptive 5.9 3.4 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.6705 disease 2.5 +1297 Fitness: 2.2964 Genotype: Fch1: A coadaptive 1.3 5.7 B coadaptive 2.3 0.3 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.2964 disease 2 +1298 Fitness: 2.2964 Genotype: Fch1: A coadaptive 1.3 5.7 B coadaptive 2.3 0.3 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.2964 disease 2 +1299 Fitness: 2.2964 Genotype: Fch1: A coadaptive 1.3 5.7 B coadaptive 2.3 0.3 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.2964 disease 2 +1300 Fitness: 14.4261 Genotype: Fch1: A coadaptive 5.8 6.5 B coadaptive 9.6 4.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 14.4261 disease 3 +1301 Fitness: 14.4261 Genotype: Fch1: A coadaptive 5.8 6.5 B coadaptive 9.6 4.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 14.4261 disease 3 +1302 Fitness: 14.4261 Genotype: Fch1: A coadaptive 5.8 6.5 B coadaptive 9.6 4.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 14.4261 disease 3 +1303 Fitness: 9.25117 Genotype: Fch1: A coadaptive 1.8 8.3 B coadaptive 0.1 7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.25117 disease 2 +1304 Fitness: 9.25117 Genotype: Fch1: A coadaptive 1.8 8.3 B coadaptive 0.1 7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.25117 disease 2 +1305 Fitness: 9.25117 Genotype: Fch1: A coadaptive 1.8 8.3 B coadaptive 0.1 7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 9.25117 disease 2 +1306 Fitness: 3.01405 Genotype: Fch1: A coadaptive 9.9 3 B coadaptive 3.9 1.5 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 3.01405 disease 3.5 +1307 Fitness: 3.01405 Genotype: Fch1: A coadaptive 9.9 3 B coadaptive 3.9 1.5 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 3.01405 disease 3.5 +1308 Fitness: 3.01405 Genotype: Fch1: A coadaptive 9.9 3 B coadaptive 3.9 1.5 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 3.01405 disease 3.5 +1309 Fitness: 3.50469 Genotype: Fch1: A coadaptive 3.4 0.1 B coadaptive 0.2 5.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.50469 disease 2 +1310 Fitness: 3.50469 Genotype: Fch1: A coadaptive 3.4 0.1 B coadaptive 0.2 5.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.50469 disease 2 +1311 Fitness: 3.50469 Genotype: Fch1: A coadaptive 3.4 0.1 B coadaptive 0.2 5.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.50469 disease 2 +1312 Fitness: 13.6449 Genotype: Fch1: A coadaptive 6.6 7.2 B coadaptive 7.9 3.5 C disease 0 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6449 disease 1.5 +1313 Fitness: 13.6449 Genotype: Fch1: A coadaptive 6.6 7.2 B coadaptive 7.9 3.5 C disease 0 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6449 disease 1.5 +1314 Fitness: 13.6449 Genotype: Fch1: A coadaptive 6.6 7.2 B coadaptive 7.9 3.5 C disease 0 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6449 disease 1.5 +1315 Fitness: 5.6402 Genotype: Fch1: A coadaptive 3.3 2.4 B coadaptive 2.2 3.3 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.6402 disease 2.5 +1316 Fitness: 5.6402 Genotype: Fch1: A coadaptive 3.3 2.4 B coadaptive 2.2 3.3 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.6402 disease 2.5 +1317 Fitness: 5.6402 Genotype: Fch1: A coadaptive 3.3 2.4 B coadaptive 2.2 3.3 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 5.6402 disease 2.5 +1318 Fitness: 11.6164 Genotype: Fch1: A coadaptive 9.1 2.6 B coadaptive 6.3 2.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.6164 disease 2.5 +1319 Fitness: 11.6164 Genotype: Fch1: A coadaptive 9.1 2.6 B coadaptive 6.3 2.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.6164 disease 2.5 +1320 Fitness: 11.6164 Genotype: Fch1: A coadaptive 9.1 2.6 B coadaptive 6.3 2.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.6164 disease 2.5 +1321 Fitness: 12.92 Genotype: Fch1: A coadaptive 9.5 1.2 B coadaptive 6.8 6.9 C disease 0 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 12.92 disease 3 +1322 Fitness: 12.92 Genotype: Fch1: A coadaptive 9.5 1.2 B coadaptive 6.8 6.9 C disease 0 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 12.92 disease 3 +1323 Fitness: 12.92 Genotype: Fch1: A coadaptive 9.5 1.2 B coadaptive 6.8 6.9 C disease 0 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 12.92 disease 3 +1324 Fitness: 6.95723 Genotype: Fch1: A coadaptive 7.5 2.4 B coadaptive 7.6 8.8 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 6.95723 disease 2.5 +1325 Fitness: 6.95723 Genotype: Fch1: A coadaptive 7.5 2.4 B coadaptive 7.6 8.8 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 6.95723 disease 2.5 +1326 Fitness: 6.95723 Genotype: Fch1: A coadaptive 7.5 2.4 B coadaptive 7.6 8.8 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 6.95723 disease 2.5 +1327 Fitness: 7.95963 Genotype: Fch1: A coadaptive 8.4 7.1 B coadaptive 3.6 5.8 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.95963 disease 3.5 +1328 Fitness: 7.95963 Genotype: Fch1: A coadaptive 8.4 7.1 B coadaptive 3.6 5.8 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.95963 disease 3.5 +1329 Fitness: 7.95963 Genotype: Fch1: A coadaptive 8.4 7.1 B coadaptive 3.6 5.8 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.95963 disease 3.5 +1330 Fitness: 6.7064 Genotype: Fch1: A coadaptive 7.6 6.4 B coadaptive 6.5 1.1 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.7064 disease 3.5 +1331 Fitness: 6.7064 Genotype: Fch1: A coadaptive 7.6 6.4 B coadaptive 6.5 1.1 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.7064 disease 3.5 +1332 Fitness: 6.7064 Genotype: Fch1: A coadaptive 7.6 6.4 B coadaptive 6.5 1.1 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.7064 disease 3.5 +1333 Fitness: 6.74609 Genotype: Fch1: A coadaptive 6.7 7.8 B coadaptive 2.8 5.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.74609 disease 4 +1334 Fitness: 6.74609 Genotype: Fch1: A coadaptive 6.7 7.8 B coadaptive 2.8 5.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.74609 disease 4 +1335 Fitness: 6.74609 Genotype: Fch1: A coadaptive 6.7 7.8 B coadaptive 2.8 5.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.74609 disease 4 +1336 Fitness: 9.7048 Genotype: Fch1: A coadaptive 4.5 5.7 B coadaptive 3.6 3.8 C disease 1 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.7048 disease 2.5 +1337 Fitness: 9.7048 Genotype: Fch1: A coadaptive 4.5 5.7 B coadaptive 3.6 3.8 C disease 1 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.7048 disease 2.5 +1338 Fitness: 9.7048 Genotype: Fch1: A coadaptive 4.5 5.7 B coadaptive 3.6 3.8 C disease 1 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.7048 disease 2.5 +1339 Fitness: 12.5517 Genotype: Fch1: A coadaptive 1.5 8.1 B coadaptive 3.6 7.4 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.5517 disease 4 +1340 Fitness: 12.5517 Genotype: Fch1: A coadaptive 1.5 8.1 B coadaptive 3.6 7.4 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.5517 disease 4 +1341 Fitness: 12.5517 Genotype: Fch1: A coadaptive 1.5 8.1 B coadaptive 3.6 7.4 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.5517 disease 4 +1342 Fitness: 3.1672 Genotype: Fch1: A coadaptive 0.1 8.3 B coadaptive 9.4 7 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 3.1672 disease 4 +1343 Fitness: 3.1672 Genotype: Fch1: A coadaptive 0.1 8.3 B coadaptive 9.4 7 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 3.1672 disease 4 +1344 Fitness: 3.1672 Genotype: Fch1: A coadaptive 0.1 8.3 B coadaptive 9.4 7 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 3.1672 disease 4 +1345 Fitness: 6.25514 Genotype: Fch1: A coadaptive 7.5 7 B coadaptive 6.3 1.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.25514 disease 2.5 +1346 Fitness: 6.25514 Genotype: Fch1: A coadaptive 7.5 7 B coadaptive 6.3 1.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.25514 disease 2.5 +1347 Fitness: 6.25514 Genotype: Fch1: A coadaptive 7.5 7 B coadaptive 6.3 1.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.25514 disease 2.5 +1348 Fitness: 9.1832 Genotype: Fch1: A coadaptive 6 6.9 B coadaptive 7.1 0.9 C disease 1 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.1832 disease 3 +1349 Fitness: 9.1832 Genotype: Fch1: A coadaptive 6 6.9 B coadaptive 7.1 0.9 C disease 1 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.1832 disease 3 +1350 Fitness: 9.1832 Genotype: Fch1: A coadaptive 6 6.9 B coadaptive 7.1 0.9 C disease 1 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.1832 disease 3 +1351 Fitness: 10.4664 Genotype: Fch1: A coadaptive 9.2 7.8 B coadaptive 4.6 8.1 C disease 0.5 1 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.4664 disease 4 +1352 Fitness: 10.4664 Genotype: Fch1: A coadaptive 9.2 7.8 B coadaptive 4.6 8.1 C disease 0.5 1 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.4664 disease 4 +1353 Fitness: 10.4664 Genotype: Fch1: A coadaptive 9.2 7.8 B coadaptive 4.6 8.1 C disease 0.5 1 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.4664 disease 4 +1354 Fitness: 14.3678 Genotype: Fch1: A coadaptive 4.7 7.2 B coadaptive 5 7 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 14.3678 disease 3.5 +1355 Fitness: 14.3678 Genotype: Fch1: A coadaptive 4.7 7.2 B coadaptive 5 7 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 14.3678 disease 3.5 +1356 Fitness: 14.3678 Genotype: Fch1: A coadaptive 4.7 7.2 B coadaptive 5 7 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 14.3678 disease 3.5 +1357 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 3.5 B coadaptive 0.3 0.1 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1358 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 3.5 B coadaptive 0.3 0.1 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1359 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 3.5 B coadaptive 0.3 0.1 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1360 Fitness: 13.1841 Genotype: Fch1: A coadaptive 7 5.4 B coadaptive 1.1 9.2 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.1841 disease 2.5 +1361 Fitness: 13.1841 Genotype: Fch1: A coadaptive 7 5.4 B coadaptive 1.1 9.2 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.1841 disease 2.5 +1362 Fitness: 13.1841 Genotype: Fch1: A coadaptive 7 5.4 B coadaptive 1.1 9.2 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.1841 disease 2.5 +1363 Fitness: 13.2692 Genotype: Fch1: A coadaptive 5.5 5.7 B coadaptive 8.5 5.5 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.2692 disease 2.5 +1364 Fitness: 13.2692 Genotype: Fch1: A coadaptive 5.5 5.7 B coadaptive 8.5 5.5 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.2692 disease 2.5 +1365 Fitness: 13.2692 Genotype: Fch1: A coadaptive 5.5 5.7 B coadaptive 8.5 5.5 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.2692 disease 2.5 +1366 Fitness: 1.26909 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 2 0.6 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 1.26909 disease 2.5 +1367 Fitness: 1.26909 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 2 0.6 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 1.26909 disease 2.5 +1368 Fitness: 1.26909 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 2 0.6 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 1.26909 disease 2.5 +1369 Fitness: 3.8772 Genotype: Fch1: A coadaptive 4 0.4 B coadaptive 5.1 5.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.8772 disease 3.5 +1370 Fitness: 3.8772 Genotype: Fch1: A coadaptive 4 0.4 B coadaptive 5.1 5.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.8772 disease 3.5 +1371 Fitness: 3.8772 Genotype: Fch1: A coadaptive 4 0.4 B coadaptive 5.1 5.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.8772 disease 3.5 +1372 Fitness: 2.38373 Genotype: Fch1: A coadaptive 0 5.1 B coadaptive 8.2 4.6 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.38373 disease 2.5 +1373 Fitness: 2.38373 Genotype: Fch1: A coadaptive 0 5.1 B coadaptive 8.2 4.6 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.38373 disease 2.5 +1374 Fitness: 2.38373 Genotype: Fch1: A coadaptive 0 5.1 B coadaptive 8.2 4.6 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.38373 disease 2.5 +1375 Fitness: 13.2405 Genotype: Fch1: A coadaptive 8.3 6.2 B coadaptive 9.4 2.2 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.2405 disease 3 +1376 Fitness: 13.2405 Genotype: Fch1: A coadaptive 8.3 6.2 B coadaptive 9.4 2.2 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.2405 disease 3 +1377 Fitness: 13.2405 Genotype: Fch1: A coadaptive 8.3 6.2 B coadaptive 9.4 2.2 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.2405 disease 3 +1378 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.7 B coadaptive 10 3.6 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1379 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.7 B coadaptive 10 3.6 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1380 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.7 B coadaptive 10 3.6 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1381 Fitness: 12.5158 Genotype: Fch1: A coadaptive 8.3 1.8 B coadaptive 5.9 7.3 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.5158 disease 3 +1382 Fitness: 12.5158 Genotype: Fch1: A coadaptive 8.3 1.8 B coadaptive 5.9 7.3 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.5158 disease 3 +1383 Fitness: 12.5158 Genotype: Fch1: A coadaptive 8.3 1.8 B coadaptive 5.9 7.3 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.5158 disease 3 +1384 Fitness: 12.5365 Genotype: Fch1: A coadaptive 8.5 1.1 B coadaptive 9.9 1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.5365 disease 2 +1385 Fitness: 12.5365 Genotype: Fch1: A coadaptive 8.5 1.1 B coadaptive 9.9 1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.5365 disease 2 +1386 Fitness: 12.5365 Genotype: Fch1: A coadaptive 8.5 1.1 B coadaptive 9.9 1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.5365 disease 2 +1387 Fitness: 7.90216 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 6 0.5 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.90216 disease 2 +1388 Fitness: 7.90216 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 6 0.5 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.90216 disease 2 +1389 Fitness: 7.90216 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 6 0.5 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.90216 disease 2 +1390 Fitness: 13.5788 Genotype: Fch1: A coadaptive 1.6 9.1 B coadaptive 5.1 6.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.5788 disease 3 +1391 Fitness: 13.5788 Genotype: Fch1: A coadaptive 1.6 9.1 B coadaptive 5.1 6.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.5788 disease 3 +1392 Fitness: 13.5788 Genotype: Fch1: A coadaptive 1.6 9.1 B coadaptive 5.1 6.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.5788 disease 3 +1393 Fitness: 9.09187 Genotype: Fch1: A coadaptive 3.7 6.4 B coadaptive 5.9 1.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.09187 disease 2 +1394 Fitness: 9.09187 Genotype: Fch1: A coadaptive 3.7 6.4 B coadaptive 5.9 1.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.09187 disease 2 +1395 Fitness: 9.09187 Genotype: Fch1: A coadaptive 3.7 6.4 B coadaptive 5.9 1.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.09187 disease 2 +1396 Fitness: 7.15406 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 2.2 5.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 7.15406 disease 2.5 +1397 Fitness: 7.15406 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 2.2 5.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 7.15406 disease 2.5 +1398 Fitness: 7.15406 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 2.2 5.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 7.15406 disease 2.5 +1399 Fitness: 10.6523 Genotype: Fch1: A coadaptive 7.9 8.3 B coadaptive 4.6 7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.6523 disease 2 +1400 Fitness: 10.6523 Genotype: Fch1: A coadaptive 7.9 8.3 B coadaptive 4.6 7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.6523 disease 2 +1401 Fitness: 10.6523 Genotype: Fch1: A coadaptive 7.9 8.3 B coadaptive 4.6 7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.6523 disease 2 +1402 Fitness: 10.5909 Genotype: Fch1: A coadaptive 9.9 7.3 B coadaptive 7.1 9.9 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5909 disease 3 +1403 Fitness: 10.5909 Genotype: Fch1: A coadaptive 9.9 7.3 B coadaptive 7.1 9.9 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5909 disease 3 +1404 Fitness: 10.5909 Genotype: Fch1: A coadaptive 9.9 7.3 B coadaptive 7.1 9.9 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5909 disease 3 +1405 Fitness: 8.063 Genotype: Fch1: A coadaptive 9.6 8.6 B coadaptive 8.9 8.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.063 disease 2.5 +1406 Fitness: 8.063 Genotype: Fch1: A coadaptive 9.6 8.6 B coadaptive 8.9 8.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.063 disease 2.5 +1407 Fitness: 8.063 Genotype: Fch1: A coadaptive 9.6 8.6 B coadaptive 8.9 8.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.063 disease 2.5 +1408 Fitness: 2.91931 Genotype: Fch1: A coadaptive 2.8 0.2 B coadaptive 3.5 3.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.91931 disease 2 +1409 Fitness: 2.91931 Genotype: Fch1: A coadaptive 2.8 0.2 B coadaptive 3.5 3.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.91931 disease 2 +1410 Fitness: 2.91931 Genotype: Fch1: A coadaptive 2.8 0.2 B coadaptive 3.5 3.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.91931 disease 2 +1411 Fitness: 13.8504 Genotype: Fch1: A coadaptive 5.7 5.6 B coadaptive 6.5 6.8 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 13.8504 disease 2.5 +1412 Fitness: 13.8504 Genotype: Fch1: A coadaptive 5.7 5.6 B coadaptive 6.5 6.8 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 13.8504 disease 2.5 +1413 Fitness: 13.8504 Genotype: Fch1: A coadaptive 5.7 5.6 B coadaptive 6.5 6.8 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 13.8504 disease 2.5 +1414 Fitness: 10.7984 Genotype: Fch1: A coadaptive 5 3.4 B coadaptive 5.3 4 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.7984 disease 3 +1415 Fitness: 10.7984 Genotype: Fch1: A coadaptive 5 3.4 B coadaptive 5.3 4 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.7984 disease 3 +1416 Fitness: 10.7984 Genotype: Fch1: A coadaptive 5 3.4 B coadaptive 5.3 4 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.7984 disease 3 +1417 Fitness: 1.5552 Genotype: Fch1: A coadaptive 7.4 3.4 B coadaptive 3.4 0.2 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 1.5552 disease 2.5 +1418 Fitness: 1.5552 Genotype: Fch1: A coadaptive 7.4 3.4 B coadaptive 3.4 0.2 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 1.5552 disease 2.5 +1419 Fitness: 1.5552 Genotype: Fch1: A coadaptive 7.4 3.4 B coadaptive 3.4 0.2 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 1.5552 disease 2.5 +1420 Fitness: 6.79415 Genotype: Fch1: A coadaptive 8 7.4 B coadaptive 2.1 6.7 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.79415 disease 2.5 +1421 Fitness: 6.79415 Genotype: Fch1: A coadaptive 8 7.4 B coadaptive 2.1 6.7 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.79415 disease 2.5 +1422 Fitness: 6.79415 Genotype: Fch1: A coadaptive 8 7.4 B coadaptive 2.1 6.7 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.79415 disease 2.5 +1423 Fitness: 5.05031 Genotype: Fch1: A coadaptive 9.8 7.6 B coadaptive 1 9.3 C disease 0 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 5.05031 disease 4 +1424 Fitness: 5.05031 Genotype: Fch1: A coadaptive 9.8 7.6 B coadaptive 1 9.3 C disease 0 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 5.05031 disease 4 +1425 Fitness: 5.05031 Genotype: Fch1: A coadaptive 9.8 7.6 B coadaptive 1 9.3 C disease 0 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 5.05031 disease 4 +1426 Fitness: 14.3155 Genotype: Fch1: A coadaptive 3.7 8.5 B coadaptive 3.9 9.9 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3155 disease 3.5 +1427 Fitness: 14.3155 Genotype: Fch1: A coadaptive 3.7 8.5 B coadaptive 3.9 9.9 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3155 disease 3.5 +1428 Fitness: 14.3155 Genotype: Fch1: A coadaptive 3.7 8.5 B coadaptive 3.9 9.9 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3155 disease 3.5 +1429 Fitness: 10.1391 Genotype: Fch1: A coadaptive 6.1 7 B coadaptive 5.4 3.2 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.1391 disease 3.5 +1430 Fitness: 10.1391 Genotype: Fch1: A coadaptive 6.1 7 B coadaptive 5.4 3.2 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.1391 disease 3.5 +1431 Fitness: 10.1391 Genotype: Fch1: A coadaptive 6.1 7 B coadaptive 5.4 3.2 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.1391 disease 3.5 +1432 Fitness: 12.3976 Genotype: Fch1: A coadaptive 9.4 6.6 B coadaptive 3 9.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.3976 disease 3.5 +1433 Fitness: 12.3976 Genotype: Fch1: A coadaptive 9.4 6.6 B coadaptive 3 9.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.3976 disease 3.5 +1434 Fitness: 12.3976 Genotype: Fch1: A coadaptive 9.4 6.6 B coadaptive 3 9.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.3976 disease 3.5 +1435 Fitness: 12.4993 Genotype: Fch1: A coadaptive 9.6 3.8 B coadaptive 7.3 2.9 C disease 0 0 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 12.4993 disease 2 +1436 Fitness: 12.4993 Genotype: Fch1: A coadaptive 9.6 3.8 B coadaptive 7.3 2.9 C disease 0 0 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 12.4993 disease 2 +1437 Fitness: 12.4993 Genotype: Fch1: A coadaptive 9.6 3.8 B coadaptive 7.3 2.9 C disease 0 0 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 12.4993 disease 2 +1438 Fitness: 0 Genotype: Fch1: A coadaptive 3 1.2 B coadaptive 9 4.5 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1439 Fitness: 0 Genotype: Fch1: A coadaptive 3 1.2 B coadaptive 9 4.5 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1440 Fitness: 0 Genotype: Fch1: A coadaptive 3 1.2 B coadaptive 9 4.5 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1441 Fitness: 5.30551 Genotype: Fch1: A coadaptive 6.8 9.5 B coadaptive 1.1 8 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.30551 disease 2.5 +1442 Fitness: 5.30551 Genotype: Fch1: A coadaptive 6.8 9.5 B coadaptive 1.1 8 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.30551 disease 2.5 +1443 Fitness: 5.30551 Genotype: Fch1: A coadaptive 6.8 9.5 B coadaptive 1.1 8 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.30551 disease 2.5 +1444 Fitness: 12.0625 Genotype: Fch1: A coadaptive 5.4 4.5 B coadaptive 5.9 7.5 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.0625 disease 1.5 +1445 Fitness: 12.0625 Genotype: Fch1: A coadaptive 5.4 4.5 B coadaptive 5.9 7.5 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.0625 disease 1.5 +1446 Fitness: 12.0625 Genotype: Fch1: A coadaptive 5.4 4.5 B coadaptive 5.9 7.5 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.0625 disease 1.5 +1447 Fitness: 2.716 Genotype: Fch1: A coadaptive 1.7 1.2 B coadaptive 1.2 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 2.716 disease 3 +1448 Fitness: 2.716 Genotype: Fch1: A coadaptive 1.7 1.2 B coadaptive 1.2 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 2.716 disease 3 +1449 Fitness: 2.716 Genotype: Fch1: A coadaptive 1.7 1.2 B coadaptive 1.2 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 2.716 disease 3 +1450 Fitness: 4.79903 Genotype: Fch1: A coadaptive 1.6 4.3 B coadaptive 6 6.6 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 4.79903 disease 2.5 +1451 Fitness: 4.79903 Genotype: Fch1: A coadaptive 1.6 4.3 B coadaptive 6 6.6 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 4.79903 disease 2.5 +1452 Fitness: 4.79903 Genotype: Fch1: A coadaptive 1.6 4.3 B coadaptive 6 6.6 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 4.79903 disease 2.5 +1453 Fitness: 9.14248 Genotype: Fch1: A coadaptive 3.6 3.7 B coadaptive 2.4 5.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.14248 disease 2 +1454 Fitness: 9.14248 Genotype: Fch1: A coadaptive 3.6 3.7 B coadaptive 2.4 5.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.14248 disease 2 +1455 Fitness: 9.14248 Genotype: Fch1: A coadaptive 3.6 3.7 B coadaptive 2.4 5.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.14248 disease 2 +1456 Fitness: 14.3803 Genotype: Fch1: A coadaptive 5.6 9.1 B coadaptive 6.3 8.2 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.3803 disease 4 +1457 Fitness: 14.3803 Genotype: Fch1: A coadaptive 5.6 9.1 B coadaptive 6.3 8.2 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.3803 disease 4 +1458 Fitness: 14.3803 Genotype: Fch1: A coadaptive 5.6 9.1 B coadaptive 6.3 8.2 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.3803 disease 4 +1459 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 4.6 B coadaptive 0.4 3.1 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1460 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 4.6 B coadaptive 0.4 3.1 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1461 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 4.6 B coadaptive 0.4 3.1 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1462 Fitness: 2.54964 Genotype: Fch1: A coadaptive 1.1 1.6 B coadaptive 3.2 2.3 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 2.54964 disease 2.5 +1463 Fitness: 2.54964 Genotype: Fch1: A coadaptive 1.1 1.6 B coadaptive 3.2 2.3 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 2.54964 disease 2.5 +1464 Fitness: 2.54964 Genotype: Fch1: A coadaptive 1.1 1.6 B coadaptive 3.2 2.3 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 2.54964 disease 2.5 +1465 Fitness: 2.89504 Genotype: Fch1: A coadaptive 2.8 5.8 B coadaptive 0 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 2.89504 disease 2.5 +1466 Fitness: 2.89504 Genotype: Fch1: A coadaptive 2.8 5.8 B coadaptive 0 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 2.89504 disease 2.5 +1467 Fitness: 2.89504 Genotype: Fch1: A coadaptive 2.8 5.8 B coadaptive 0 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 2.89504 disease 2.5 +1468 Fitness: 7.30405 Genotype: Fch1: A coadaptive 3.6 9.1 B coadaptive 9 9.2 C disease 1 1 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.30405 disease 3.5 +1469 Fitness: 7.30405 Genotype: Fch1: A coadaptive 3.6 9.1 B coadaptive 9 9.2 C disease 1 1 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.30405 disease 3.5 +1470 Fitness: 7.30405 Genotype: Fch1: A coadaptive 3.6 9.1 B coadaptive 9 9.2 C disease 1 1 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.30405 disease 3.5 +1471 Fitness: 5.72774 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 4.1 8 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.72774 disease 3 +1472 Fitness: 5.72774 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 4.1 8 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.72774 disease 3 +1473 Fitness: 5.72774 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 4.1 8 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.72774 disease 3 +1474 Fitness: 8.8252 Genotype: Fch1: A coadaptive 1.2 5.6 B coadaptive 1.5 8.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.8252 disease 3 +1475 Fitness: 8.8252 Genotype: Fch1: A coadaptive 1.2 5.6 B coadaptive 1.5 8.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.8252 disease 3 +1476 Fitness: 8.8252 Genotype: Fch1: A coadaptive 1.2 5.6 B coadaptive 1.5 8.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.8252 disease 3 +1477 Fitness: 10.1079 Genotype: Fch1: A coadaptive 5.9 2.8 B coadaptive 5.6 7.7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 10.1079 disease 2 +1478 Fitness: 10.1079 Genotype: Fch1: A coadaptive 5.9 2.8 B coadaptive 5.6 7.7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 10.1079 disease 2 +1479 Fitness: 10.1079 Genotype: Fch1: A coadaptive 5.9 2.8 B coadaptive 5.6 7.7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 10.1079 disease 2 +1480 Fitness: 13.3062 Genotype: Fch1: A coadaptive 5.9 9.1 B coadaptive 7.8 8.2 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.3062 disease 4 +1481 Fitness: 13.3062 Genotype: Fch1: A coadaptive 5.9 9.1 B coadaptive 7.8 8.2 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.3062 disease 4 +1482 Fitness: 13.3062 Genotype: Fch1: A coadaptive 5.9 9.1 B coadaptive 7.8 8.2 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.3062 disease 4 +1483 Fitness: 13.6156 Genotype: Fch1: A coadaptive 4 6.7 B coadaptive 6.1 6.2 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.6156 disease 3.5 +1484 Fitness: 13.6156 Genotype: Fch1: A coadaptive 4 6.7 B coadaptive 6.1 6.2 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.6156 disease 3.5 +1485 Fitness: 13.6156 Genotype: Fch1: A coadaptive 4 6.7 B coadaptive 6.1 6.2 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.6156 disease 3.5 +1486 Fitness: 12.6811 Genotype: Fch1: A coadaptive 6.2 5.2 B coadaptive 1.1 8.6 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 12.6811 disease 3 +1487 Fitness: 12.6811 Genotype: Fch1: A coadaptive 6.2 5.2 B coadaptive 1.1 8.6 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 12.6811 disease 3 +1488 Fitness: 12.6811 Genotype: Fch1: A coadaptive 6.2 5.2 B coadaptive 1.1 8.6 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 12.6811 disease 3 +1489 Fitness: 11.5351 Genotype: Fch1: A coadaptive 5.6 9.5 B coadaptive 2.9 8 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.5351 disease 2 +1490 Fitness: 11.5351 Genotype: Fch1: A coadaptive 5.6 9.5 B coadaptive 2.9 8 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.5351 disease 2 +1491 Fitness: 11.5351 Genotype: Fch1: A coadaptive 5.6 9.5 B coadaptive 2.9 8 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.5351 disease 2 +1492 Fitness: 5.39192 Genotype: Fch1: A coadaptive 3.3 2.3 B coadaptive 0.3 5 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 5.39192 disease 2 +1493 Fitness: 5.39192 Genotype: Fch1: A coadaptive 3.3 2.3 B coadaptive 0.3 5 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 5.39192 disease 2 +1494 Fitness: 5.39192 Genotype: Fch1: A coadaptive 3.3 2.3 B coadaptive 0.3 5 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 5.39192 disease 2 +1495 Fitness: 11.7632 Genotype: Fch1: A coadaptive 7 2.6 B coadaptive 8.5 0.8 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.7632 disease 3 +1496 Fitness: 11.7632 Genotype: Fch1: A coadaptive 7 2.6 B coadaptive 8.5 0.8 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.7632 disease 3 +1497 Fitness: 11.7632 Genotype: Fch1: A coadaptive 7 2.6 B coadaptive 8.5 0.8 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.7632 disease 3 +1498 Fitness: 14.7898 Genotype: Fch1: A coadaptive 7.5 5.5 B coadaptive 6.1 7.2 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.7898 disease 3 +1499 Fitness: 14.7898 Genotype: Fch1: A coadaptive 7.5 5.5 B coadaptive 6.1 7.2 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.7898 disease 3 +1500 Fitness: 14.7898 Genotype: Fch1: A coadaptive 7.5 5.5 B coadaptive 6.1 7.2 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.7898 disease 3 +1501 Fitness: 10.7118 Genotype: Fch1: A coadaptive 6.5 8.9 B coadaptive 4.3 6.4 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 10.7118 disease 3.5 +1502 Fitness: 10.7118 Genotype: Fch1: A coadaptive 6.5 8.9 B coadaptive 4.3 6.4 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 10.7118 disease 3.5 +1503 Fitness: 10.7118 Genotype: Fch1: A coadaptive 6.5 8.9 B coadaptive 4.3 6.4 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 10.7118 disease 3.5 +1504 Fitness: 5.08088 Genotype: Fch1: A coadaptive 5.2 2.3 B coadaptive 2.6 1.8 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 5.08088 disease 3.5 +1505 Fitness: 5.08088 Genotype: Fch1: A coadaptive 5.2 2.3 B coadaptive 2.6 1.8 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 5.08088 disease 3.5 +1506 Fitness: 5.08088 Genotype: Fch1: A coadaptive 5.2 2.3 B coadaptive 2.6 1.8 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 5.08088 disease 3.5 +1507 Fitness: 12.0647 Genotype: Fch1: A coadaptive 7.5 9.3 B coadaptive 7.6 6.5 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 12.0647 disease 3 +1508 Fitness: 12.0647 Genotype: Fch1: A coadaptive 7.5 9.3 B coadaptive 7.6 6.5 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 12.0647 disease 3 +1509 Fitness: 12.0647 Genotype: Fch1: A coadaptive 7.5 9.3 B coadaptive 7.6 6.5 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 12.0647 disease 3 +1510 Fitness: 13.3695 Genotype: Fch1: A coadaptive 9.7 5.8 B coadaptive 8.2 4.8 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3695 disease 2.5 +1511 Fitness: 13.3695 Genotype: Fch1: A coadaptive 9.7 5.8 B coadaptive 8.2 4.8 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3695 disease 2.5 +1512 Fitness: 13.3695 Genotype: Fch1: A coadaptive 9.7 5.8 B coadaptive 8.2 4.8 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3695 disease 2.5 +1513 Fitness: 11.5141 Genotype: Fch1: A coadaptive 0 9 B coadaptive 8.9 0.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.5141 disease 3 +1514 Fitness: 11.5141 Genotype: Fch1: A coadaptive 0 9 B coadaptive 8.9 0.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.5141 disease 3 +1515 Fitness: 11.5141 Genotype: Fch1: A coadaptive 0 9 B coadaptive 8.9 0.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.5141 disease 3 +1516 Fitness: 10.0756 Genotype: Fch1: A coadaptive 5.8 1.9 B coadaptive 3.4 6.1 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.0756 disease 2.5 +1517 Fitness: 10.0756 Genotype: Fch1: A coadaptive 5.8 1.9 B coadaptive 3.4 6.1 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.0756 disease 2.5 +1518 Fitness: 10.0756 Genotype: Fch1: A coadaptive 5.8 1.9 B coadaptive 3.4 6.1 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.0756 disease 2.5 +1519 Fitness: 7.37725 Genotype: Fch1: A coadaptive 1.9 4.3 B coadaptive 6.1 4.7 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 7.37725 disease 3.5 +1520 Fitness: 7.37725 Genotype: Fch1: A coadaptive 1.9 4.3 B coadaptive 6.1 4.7 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 7.37725 disease 3.5 +1521 Fitness: 7.37725 Genotype: Fch1: A coadaptive 1.9 4.3 B coadaptive 6.1 4.7 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 7.37725 disease 3.5 +1522 Fitness: 12.7857 Genotype: Fch1: A coadaptive 2.4 7.9 B coadaptive 5.9 7.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.7857 disease 2.5 +1523 Fitness: 12.7857 Genotype: Fch1: A coadaptive 2.4 7.9 B coadaptive 5.9 7.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.7857 disease 2.5 +1524 Fitness: 12.7857 Genotype: Fch1: A coadaptive 2.4 7.9 B coadaptive 5.9 7.3 C disease 1 0 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.7857 disease 2.5 +1525 Fitness: 7.25152 Genotype: Fch1: A coadaptive 2.4 3.9 B coadaptive 6.7 0.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 7.25152 disease 3.5 +1526 Fitness: 7.25152 Genotype: Fch1: A coadaptive 2.4 3.9 B coadaptive 6.7 0.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 7.25152 disease 3.5 +1527 Fitness: 7.25152 Genotype: Fch1: A coadaptive 2.4 3.9 B coadaptive 6.7 0.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 7.25152 disease 3.5 +1528 Fitness: 13.3696 Genotype: Fch1: A coadaptive 6.5 3.9 B coadaptive 8.6 3.4 C disease 0 0 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3696 disease 2.5 +1529 Fitness: 13.3696 Genotype: Fch1: A coadaptive 6.5 3.9 B coadaptive 8.6 3.4 C disease 0 0 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3696 disease 2.5 +1530 Fitness: 13.3696 Genotype: Fch1: A coadaptive 6.5 3.9 B coadaptive 8.6 3.4 C disease 0 0 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.3696 disease 2.5 +1531 Fitness: 11.2822 Genotype: Fch1: A coadaptive 6.2 3.3 B coadaptive 6.9 1.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.2822 disease 2.5 +1532 Fitness: 11.2822 Genotype: Fch1: A coadaptive 6.2 3.3 B coadaptive 6.9 1.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.2822 disease 2.5 +1533 Fitness: 11.2822 Genotype: Fch1: A coadaptive 6.2 3.3 B coadaptive 6.9 1.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.2822 disease 2.5 +1534 Fitness: 6.56989 Genotype: Fch1: A coadaptive 5.6 0.1 B coadaptive 8.1 2.4 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.56989 disease 2.5 +1535 Fitness: 6.56989 Genotype: Fch1: A coadaptive 5.6 0.1 B coadaptive 8.1 2.4 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.56989 disease 2.5 +1536 Fitness: 6.56989 Genotype: Fch1: A coadaptive 5.6 0.1 B coadaptive 8.1 2.4 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.56989 disease 2.5 +1537 Fitness: 6.43352 Genotype: Fch1: A coadaptive 5.2 5.5 B coadaptive 1.2 4.5 C disease 1 0 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 6.43352 disease 4 +1538 Fitness: 6.43352 Genotype: Fch1: A coadaptive 5.2 5.5 B coadaptive 1.2 4.5 C disease 1 0 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 6.43352 disease 4 +1539 Fitness: 6.43352 Genotype: Fch1: A coadaptive 5.2 5.5 B coadaptive 1.2 4.5 C disease 1 0 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 6.43352 disease 4 +1540 Fitness: 9.9392 Genotype: Fch1: A coadaptive 5.5 8.1 B coadaptive 7.2 1.6 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.9392 disease 3.5 +1541 Fitness: 9.9392 Genotype: Fch1: A coadaptive 5.5 8.1 B coadaptive 7.2 1.6 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.9392 disease 3.5 +1542 Fitness: 9.9392 Genotype: Fch1: A coadaptive 5.5 8.1 B coadaptive 7.2 1.6 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.9392 disease 3.5 +1543 Fitness: 12.0552 Genotype: Fch1: A coadaptive 8.3 1.9 B coadaptive 5.9 3.4 C disease 0.5 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 12.0552 disease 3.5 +1544 Fitness: 12.0552 Genotype: Fch1: A coadaptive 8.3 1.9 B coadaptive 5.9 3.4 C disease 0.5 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 12.0552 disease 3.5 +1545 Fitness: 12.0552 Genotype: Fch1: A coadaptive 8.3 1.9 B coadaptive 5.9 3.4 C disease 0.5 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 12.0552 disease 3.5 +1546 Fitness: 9.64512 Genotype: Fch1: A coadaptive 4.7 4.6 B coadaptive 4.3 3.1 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.64512 disease 3.5 +1547 Fitness: 9.64512 Genotype: Fch1: A coadaptive 4.7 4.6 B coadaptive 4.3 3.1 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.64512 disease 3.5 +1548 Fitness: 9.64512 Genotype: Fch1: A coadaptive 4.7 4.6 B coadaptive 4.3 3.1 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.64512 disease 3.5 +1549 Fitness: 5.49725 Genotype: Fch1: A coadaptive 1.6 3.1 B coadaptive 5.1 2.2 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 5.49725 disease 4 +1550 Fitness: 5.49725 Genotype: Fch1: A coadaptive 1.6 3.1 B coadaptive 5.1 2.2 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 5.49725 disease 4 +1551 Fitness: 5.49725 Genotype: Fch1: A coadaptive 1.6 3.1 B coadaptive 5.1 2.2 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 5.49725 disease 4 +1552 Fitness: 9.0828 Genotype: Fch1: A coadaptive 3 5.4 B coadaptive 5 2.2 C disease 0 0 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 9.0828 disease 3 +1553 Fitness: 9.0828 Genotype: Fch1: A coadaptive 3 5.4 B coadaptive 5 2.2 C disease 0 0 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 9.0828 disease 3 +1554 Fitness: 9.0828 Genotype: Fch1: A coadaptive 3 5.4 B coadaptive 5 2.2 C disease 0 0 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 9.0828 disease 3 +1555 Fitness: 8.32614 Genotype: Fch1: A coadaptive 1.8 8 B coadaptive 4.8 1.7 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.32614 disease 3 +1556 Fitness: 8.32614 Genotype: Fch1: A coadaptive 1.8 8 B coadaptive 4.8 1.7 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.32614 disease 3 +1557 Fitness: 8.32614 Genotype: Fch1: A coadaptive 1.8 8 B coadaptive 4.8 1.7 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.32614 disease 3 +1558 Fitness: 11.0321 Genotype: Fch1: A coadaptive 0.1 8.4 B coadaptive 0.9 8.7 C disease 0.5 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.0321 disease 2 +1559 Fitness: 11.0321 Genotype: Fch1: A coadaptive 0.1 8.4 B coadaptive 0.9 8.7 C disease 0.5 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.0321 disease 2 +1560 Fitness: 11.0321 Genotype: Fch1: A coadaptive 0.1 8.4 B coadaptive 0.9 8.7 C disease 0.5 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.0321 disease 2 +1561 Fitness: 14.6072 Genotype: Fch1: A coadaptive 2.8 9.6 B coadaptive 3.5 8.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.6072 disease 2 +1562 Fitness: 14.6072 Genotype: Fch1: A coadaptive 2.8 9.6 B coadaptive 3.5 8.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.6072 disease 2 +1563 Fitness: 14.6072 Genotype: Fch1: A coadaptive 2.8 9.6 B coadaptive 3.5 8.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.6072 disease 2 +1564 Fitness: 11.3607 Genotype: Fch1: A coadaptive 8.3 2.8 B coadaptive 7 8.4 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.3607 disease 4 +1565 Fitness: 11.3607 Genotype: Fch1: A coadaptive 8.3 2.8 B coadaptive 7 8.4 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.3607 disease 4 +1566 Fitness: 11.3607 Genotype: Fch1: A coadaptive 8.3 2.8 B coadaptive 7 8.4 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.3607 disease 4 +1567 Fitness: 6.86935 Genotype: Fch1: A coadaptive 1.2 5.2 B coadaptive 3.3 8.6 C disease 0 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 6.86935 disease 3 +1568 Fitness: 6.86935 Genotype: Fch1: A coadaptive 1.2 5.2 B coadaptive 3.3 8.6 C disease 0 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 6.86935 disease 3 +1569 Fitness: 6.86935 Genotype: Fch1: A coadaptive 1.2 5.2 B coadaptive 3.3 8.6 C disease 0 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 6.86935 disease 3 +1570 Fitness: 7.30445 Genotype: Fch1: A coadaptive 4.8 9.4 B coadaptive 0.4 7.6 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.30445 disease 2.5 +1571 Fitness: 7.30445 Genotype: Fch1: A coadaptive 4.8 9.4 B coadaptive 0.4 7.6 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.30445 disease 2.5 +1572 Fitness: 7.30445 Genotype: Fch1: A coadaptive 4.8 9.4 B coadaptive 0.4 7.6 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.30445 disease 2.5 +1573 Fitness: 4.05811 Genotype: Fch1: A coadaptive 3.7 9.8 B coadaptive 3.9 2.3 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.05811 disease 3.5 +1574 Fitness: 4.05811 Genotype: Fch1: A coadaptive 3.7 9.8 B coadaptive 3.9 2.3 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.05811 disease 3.5 +1575 Fitness: 4.05811 Genotype: Fch1: A coadaptive 3.7 9.8 B coadaptive 3.9 2.3 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.05811 disease 3.5 +1576 Fitness: 11.7892 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 8.5 1.8 C disease 1 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.7892 disease 2.5 +1577 Fitness: 11.7892 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 8.5 1.8 C disease 1 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.7892 disease 2.5 +1578 Fitness: 11.7892 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 8.5 1.8 C disease 1 1 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.7892 disease 2.5 +1579 Fitness: 0 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 1.9 4.8 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1580 Fitness: 0 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 1.9 4.8 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1581 Fitness: 0 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 1.9 4.8 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1582 Fitness: 3.62967 Genotype: Fch1: A coadaptive 9.3 8 B coadaptive 5.9 3.7 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.62967 disease 3 +1583 Fitness: 3.62967 Genotype: Fch1: A coadaptive 9.3 8 B coadaptive 5.9 3.7 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.62967 disease 3 +1584 Fitness: 3.62967 Genotype: Fch1: A coadaptive 9.3 8 B coadaptive 5.9 3.7 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.62967 disease 3 +1585 Fitness: 11.4746 Genotype: Fch1: A coadaptive 5.8 6.7 B coadaptive 9.5 6.9 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.4746 disease 2.5 +1586 Fitness: 11.4746 Genotype: Fch1: A coadaptive 5.8 6.7 B coadaptive 9.5 6.9 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.4746 disease 2.5 +1587 Fitness: 11.4746 Genotype: Fch1: A coadaptive 5.8 6.7 B coadaptive 9.5 6.9 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.4746 disease 2.5 +1588 Fitness: 3.60855 Genotype: Fch1: A coadaptive 8 1 B coadaptive 8.6 8.2 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 3.60855 disease 2 +1589 Fitness: 3.60855 Genotype: Fch1: A coadaptive 8 1 B coadaptive 8.6 8.2 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 3.60855 disease 2 +1590 Fitness: 3.60855 Genotype: Fch1: A coadaptive 8 1 B coadaptive 8.6 8.2 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 3.60855 disease 2 +1591 Fitness: 8.98115 Genotype: Fch1: A coadaptive 5.4 2.8 B coadaptive 7.2 0 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 8.98115 disease 3 +1592 Fitness: 8.98115 Genotype: Fch1: A coadaptive 5.4 2.8 B coadaptive 7.2 0 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 8.98115 disease 3 +1593 Fitness: 8.98115 Genotype: Fch1: A coadaptive 5.4 2.8 B coadaptive 7.2 0 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 8.98115 disease 3 +1594 Fitness: 13.4673 Genotype: Fch1: A coadaptive 9 2.7 B coadaptive 7.3 3.2 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.4673 disease 2 +1595 Fitness: 13.4673 Genotype: Fch1: A coadaptive 9 2.7 B coadaptive 7.3 3.2 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.4673 disease 2 +1596 Fitness: 13.4673 Genotype: Fch1: A coadaptive 9 2.7 B coadaptive 7.3 3.2 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 13.4673 disease 2 +1597 Fitness: 4.8884 Genotype: Fch1: A coadaptive 0.8 8 B coadaptive 2.3 2.1 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.8884 disease 3.5 +1598 Fitness: 4.8884 Genotype: Fch1: A coadaptive 0.8 8 B coadaptive 2.3 2.1 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.8884 disease 3.5 +1599 Fitness: 4.8884 Genotype: Fch1: A coadaptive 0.8 8 B coadaptive 2.3 2.1 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.8884 disease 3.5 +1600 Fitness: 1.20274 Genotype: Fch1: A coadaptive 2.9 7.6 B coadaptive 3.2 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 1.20274 disease 3.5 +1601 Fitness: 1.20274 Genotype: Fch1: A coadaptive 2.9 7.6 B coadaptive 3.2 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 1.20274 disease 3.5 +1602 Fitness: 1.20274 Genotype: Fch1: A coadaptive 2.9 7.6 B coadaptive 3.2 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 1.20274 disease 3.5 +1603 Fitness: 13.8013 Genotype: Fch1: A coadaptive 6.9 4 B coadaptive 5.8 6.1 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 13.8013 disease 3.5 +1604 Fitness: 13.8013 Genotype: Fch1: A coadaptive 6.9 4 B coadaptive 5.8 6.1 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 13.8013 disease 3.5 +1605 Fitness: 13.8013 Genotype: Fch1: A coadaptive 6.9 4 B coadaptive 5.8 6.1 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 13.8013 disease 3.5 +1606 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 0 B coadaptive 7.1 10 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1607 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 0 B coadaptive 7.1 10 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1608 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 0 B coadaptive 7.1 10 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1609 Fitness: 10.5768 Genotype: Fch1: A coadaptive 7.5 8.4 B coadaptive 9 8.7 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 10.5768 disease 2 +1610 Fitness: 10.5768 Genotype: Fch1: A coadaptive 7.5 8.4 B coadaptive 9 8.7 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 10.5768 disease 2 +1611 Fitness: 10.5768 Genotype: Fch1: A coadaptive 7.5 8.4 B coadaptive 9 8.7 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 10.5768 disease 2 +1612 Fitness: 5.96334 Genotype: Fch1: A coadaptive 3.4 7.3 B coadaptive 7.5 9.9 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.96334 disease 2.5 +1613 Fitness: 5.96334 Genotype: Fch1: A coadaptive 3.4 7.3 B coadaptive 7.5 9.9 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.96334 disease 2.5 +1614 Fitness: 5.96334 Genotype: Fch1: A coadaptive 3.4 7.3 B coadaptive 7.5 9.9 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.96334 disease 2.5 +1615 Fitness: 11.5485 Genotype: Fch1: A coadaptive 5.6 7.3 B coadaptive 2.9 6.4 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 11.5485 disease 3.5 +1616 Fitness: 11.5485 Genotype: Fch1: A coadaptive 5.6 7.3 B coadaptive 2.9 6.4 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 11.5485 disease 3.5 +1617 Fitness: 11.5485 Genotype: Fch1: A coadaptive 5.6 7.3 B coadaptive 2.9 6.4 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 11.5485 disease 3.5 +1618 Fitness: 3.54684 Genotype: Fch1: A coadaptive 3.4 0.7 B coadaptive 0.8 3.6 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.54684 disease 2 +1619 Fitness: 3.54684 Genotype: Fch1: A coadaptive 3.4 0.7 B coadaptive 0.8 3.6 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.54684 disease 2 +1620 Fitness: 3.54684 Genotype: Fch1: A coadaptive 3.4 0.7 B coadaptive 0.8 3.6 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.54684 disease 2 +1621 Fitness: 2.5 Genotype: Fch1: A coadaptive 5.4 0.6 B coadaptive 7.9 6.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.5 disease 3 +1622 Fitness: 2.5 Genotype: Fch1: A coadaptive 5.4 0.6 B coadaptive 7.9 6.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.5 disease 3 +1623 Fitness: 2.5 Genotype: Fch1: A coadaptive 5.4 0.6 B coadaptive 7.9 6.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.5 disease 3 +1624 Fitness: 5.73344 Genotype: Fch1: A coadaptive 0.9 4 B coadaptive 3.9 5.1 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 5.73344 disease 2 +1625 Fitness: 5.73344 Genotype: Fch1: A coadaptive 0.9 4 B coadaptive 3.9 5.1 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 5.73344 disease 2 +1626 Fitness: 5.73344 Genotype: Fch1: A coadaptive 0.9 4 B coadaptive 3.9 5.1 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 5.73344 disease 2 +1627 Fitness: 11.032 Genotype: Fch1: A coadaptive 8.5 2.5 B coadaptive 7.6 7.9 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.032 disease 2.5 +1628 Fitness: 11.032 Genotype: Fch1: A coadaptive 8.5 2.5 B coadaptive 7.6 7.9 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.032 disease 2.5 +1629 Fitness: 11.032 Genotype: Fch1: A coadaptive 8.5 2.5 B coadaptive 7.6 7.9 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.032 disease 2.5 +1630 Fitness: 10.3728 Genotype: Fch1: A coadaptive 3.9 5.4 B coadaptive 2.1 5.9 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.3728 disease 3 +1631 Fitness: 10.3728 Genotype: Fch1: A coadaptive 3.9 5.4 B coadaptive 2.1 5.9 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.3728 disease 3 +1632 Fitness: 10.3728 Genotype: Fch1: A coadaptive 3.9 5.4 B coadaptive 2.1 5.9 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.3728 disease 3 +1633 Fitness: 14.0228 Genotype: Fch1: A coadaptive 6.7 5.7 B coadaptive 2.4 8.8 C disease 0.5 0 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.0228 disease 1.5 +1634 Fitness: 14.0228 Genotype: Fch1: A coadaptive 6.7 5.7 B coadaptive 2.4 8.8 C disease 0.5 0 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.0228 disease 1.5 +1635 Fitness: 14.0228 Genotype: Fch1: A coadaptive 6.7 5.7 B coadaptive 2.4 8.8 C disease 0.5 0 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.0228 disease 1.5 +1636 Fitness: 0 Genotype: Fch1: A coadaptive 1 0 B coadaptive 10 10 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1637 Fitness: 0 Genotype: Fch1: A coadaptive 1 0 B coadaptive 10 10 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1638 Fitness: 0 Genotype: Fch1: A coadaptive 1 0 B coadaptive 10 10 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1639 Fitness: 7.55029 Genotype: Fch1: A coadaptive 5.3 0.9 B coadaptive 0.5 10 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.55029 disease 2.5 +1640 Fitness: 7.55029 Genotype: Fch1: A coadaptive 5.3 0.9 B coadaptive 0.5 10 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.55029 disease 2.5 +1641 Fitness: 7.55029 Genotype: Fch1: A coadaptive 5.3 0.9 B coadaptive 0.5 10 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.55029 disease 2.5 +1642 Fitness: 12.3444 Genotype: Fch1: A coadaptive 4.2 6.6 B coadaptive 6.1 8.3 C disease 0 0 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.3444 disease 2 +1643 Fitness: 12.3444 Genotype: Fch1: A coadaptive 4.2 6.6 B coadaptive 6.1 8.3 C disease 0 0 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.3444 disease 2 +1644 Fitness: 12.3444 Genotype: Fch1: A coadaptive 4.2 6.6 B coadaptive 6.1 8.3 C disease 0 0 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.3444 disease 2 +1645 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.4 B coadaptive 2 8.5 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1646 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.4 B coadaptive 2 8.5 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1647 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.4 B coadaptive 2 8.5 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1648 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 8.3 B coadaptive 4.1 0.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1649 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 8.3 B coadaptive 4.1 0.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1650 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 8.3 B coadaptive 4.1 0.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1651 Fitness: 14.3259 Genotype: Fch1: A coadaptive 2.5 9.7 B coadaptive 7.3 4.4 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.3259 disease 2 +1652 Fitness: 14.3259 Genotype: Fch1: A coadaptive 2.5 9.7 B coadaptive 7.3 4.4 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.3259 disease 2 +1653 Fitness: 14.3259 Genotype: Fch1: A coadaptive 2.5 9.7 B coadaptive 7.3 4.4 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.3259 disease 2 +1654 Fitness: 14.0479 Genotype: Fch1: A coadaptive 2.7 9.1 B coadaptive 3.2 8.1 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 14.0479 disease 2.5 +1655 Fitness: 14.0479 Genotype: Fch1: A coadaptive 2.7 9.1 B coadaptive 3.2 8.1 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 14.0479 disease 2.5 +1656 Fitness: 14.0479 Genotype: Fch1: A coadaptive 2.7 9.1 B coadaptive 3.2 8.1 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 14.0479 disease 2.5 +1657 Fitness: 10.4344 Genotype: Fch1: A coadaptive 3.7 4.8 B coadaptive 5.9 6.7 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 10.4344 disease 2 +1658 Fitness: 10.4344 Genotype: Fch1: A coadaptive 3.7 4.8 B coadaptive 5.9 6.7 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 10.4344 disease 2 +1659 Fitness: 10.4344 Genotype: Fch1: A coadaptive 3.7 4.8 B coadaptive 5.9 6.7 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 10.4344 disease 2 +1660 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0.3 B coadaptive 4.8 9.9 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1661 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0.3 B coadaptive 4.8 9.9 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1662 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0.3 B coadaptive 4.8 9.9 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1663 Fitness: 3.4187 Genotype: Fch1: A coadaptive 3 0.8 B coadaptive 1.5 3.1 C disease 1 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 3.4187 disease 3.5 +1664 Fitness: 3.4187 Genotype: Fch1: A coadaptive 3 0.8 B coadaptive 1.5 3.1 C disease 1 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 3.4187 disease 3.5 +1665 Fitness: 3.4187 Genotype: Fch1: A coadaptive 3 0.8 B coadaptive 1.5 3.1 C disease 1 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 3.4187 disease 3.5 +1666 Fitness: 14.3538 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 10 1.8 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.3538 disease 3 +1667 Fitness: 14.3538 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 10 1.8 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.3538 disease 3 +1668 Fitness: 14.3538 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 10 1.8 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.3538 disease 3 +1669 Fitness: 8.65539 Genotype: Fch1: A coadaptive 0.7 6.2 B coadaptive 7.5 3.4 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.65539 disease 3 +1670 Fitness: 8.65539 Genotype: Fch1: A coadaptive 0.7 6.2 B coadaptive 7.5 3.4 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.65539 disease 3 +1671 Fitness: 8.65539 Genotype: Fch1: A coadaptive 0.7 6.2 B coadaptive 7.5 3.4 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.65539 disease 3 +1672 Fitness: 9.03307 Genotype: Fch1: A coadaptive 2 5.6 B coadaptive 0.9 6.8 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.03307 disease 3.5 +1673 Fitness: 9.03307 Genotype: Fch1: A coadaptive 2 5.6 B coadaptive 0.9 6.8 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.03307 disease 3.5 +1674 Fitness: 9.03307 Genotype: Fch1: A coadaptive 2 5.6 B coadaptive 0.9 6.8 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.03307 disease 3.5 +1675 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 4.5 B coadaptive 8.7 7.5 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 1.5 +1676 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 4.5 B coadaptive 8.7 7.5 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 1.5 +1677 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 4.5 B coadaptive 8.7 7.5 C disease 0 0 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 1.5 +1678 Fitness: 8.05596 Genotype: Fch1: A coadaptive 6.3 0 B coadaptive 1.3 7.7 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 8.05596 disease 3 +1679 Fitness: 8.05596 Genotype: Fch1: A coadaptive 6.3 0 B coadaptive 1.3 7.7 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 8.05596 disease 3 +1680 Fitness: 8.05596 Genotype: Fch1: A coadaptive 6.3 0 B coadaptive 1.3 7.7 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 8.05596 disease 3 +1681 Fitness: 5.74686 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 2 3.3 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.74686 disease 2.5 +1682 Fitness: 5.74686 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 2 3.3 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.74686 disease 2.5 +1683 Fitness: 5.74686 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 2 3.3 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.74686 disease 2.5 +1684 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.9 B coadaptive 3.3 8.5 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1685 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.9 B coadaptive 3.3 8.5 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1686 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.9 B coadaptive 3.3 8.5 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1687 Fitness: 11.1913 Genotype: Fch1: A coadaptive 8.7 0.6 B coadaptive 10 3.3 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1913 disease 3 +1688 Fitness: 11.1913 Genotype: Fch1: A coadaptive 8.7 0.6 B coadaptive 10 3.3 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1913 disease 3 +1689 Fitness: 11.1913 Genotype: Fch1: A coadaptive 8.7 0.6 B coadaptive 10 3.3 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1913 disease 3 +1690 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 0 B coadaptive 8 7.7 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1691 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 0 B coadaptive 8 7.7 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1692 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 0 B coadaptive 8 7.7 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1693 Fitness: 13.5136 Genotype: Fch1: A coadaptive 3.7 7 B coadaptive 6.6 6.1 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.5136 disease 1.5 +1694 Fitness: 13.5136 Genotype: Fch1: A coadaptive 3.7 7 B coadaptive 6.6 6.1 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.5136 disease 1.5 +1695 Fitness: 13.5136 Genotype: Fch1: A coadaptive 3.7 7 B coadaptive 6.6 6.1 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.5136 disease 1.5 +1696 Fitness: 14.576 Genotype: Fch1: A coadaptive 5.8 7.8 B coadaptive 4.8 9.6 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 14.576 disease 3 +1697 Fitness: 14.576 Genotype: Fch1: A coadaptive 5.8 7.8 B coadaptive 4.8 9.6 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 14.576 disease 3 +1698 Fitness: 14.576 Genotype: Fch1: A coadaptive 5.8 7.8 B coadaptive 4.8 9.6 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 14.576 disease 3 +1699 Fitness: 6.51871 Genotype: Fch1: A coadaptive 9 8.5 B coadaptive 3.5 7.6 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 6.51871 disease 3.5 +1700 Fitness: 6.51871 Genotype: Fch1: A coadaptive 9 8.5 B coadaptive 3.5 7.6 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 6.51871 disease 3.5 +1701 Fitness: 6.51871 Genotype: Fch1: A coadaptive 9 8.5 B coadaptive 3.5 7.6 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 6.51871 disease 3.5 +1702 Fitness: 9.24286 Genotype: Fch1: A coadaptive 6.7 0.6 B coadaptive 6.9 1.6 C disease 1 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 9.24286 disease 2.5 +1703 Fitness: 9.24286 Genotype: Fch1: A coadaptive 6.7 0.6 B coadaptive 6.9 1.6 C disease 1 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 9.24286 disease 2.5 +1704 Fitness: 9.24286 Genotype: Fch1: A coadaptive 6.7 0.6 B coadaptive 6.9 1.6 C disease 1 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 9.24286 disease 2.5 +1705 Fitness: 14.2721 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 8.8 3 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 14.2721 disease 3 +1706 Fitness: 14.2721 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 8.8 3 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 14.2721 disease 3 +1707 Fitness: 14.2721 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 8.8 3 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 14.2721 disease 3 +1708 Fitness: 11.6 Genotype: Fch1: A coadaptive 0.6 9.4 B coadaptive 9.6 4.4 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.6 disease 3.5 +1709 Fitness: 11.6 Genotype: Fch1: A coadaptive 0.6 9.4 B coadaptive 9.6 4.4 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.6 disease 3.5 +1710 Fitness: 11.6 Genotype: Fch1: A coadaptive 0.6 9.4 B coadaptive 9.6 4.4 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.6 disease 3.5 +1711 Fitness: 14.4468 Genotype: Fch1: A coadaptive 9 4.5 B coadaptive 7.9 6.7 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.4468 disease 2 +1712 Fitness: 14.4468 Genotype: Fch1: A coadaptive 9 4.5 B coadaptive 7.9 6.7 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.4468 disease 2 +1713 Fitness: 14.4468 Genotype: Fch1: A coadaptive 9 4.5 B coadaptive 7.9 6.7 C disease 0 0 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.4468 disease 2 +1714 Fitness: 4.77376 Genotype: Fch1: A coadaptive 2.3 2.4 B coadaptive 5.4 0.1 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.77376 disease 3.5 +1715 Fitness: 4.77376 Genotype: Fch1: A coadaptive 2.3 2.4 B coadaptive 5.4 0.1 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.77376 disease 3.5 +1716 Fitness: 4.77376 Genotype: Fch1: A coadaptive 2.3 2.4 B coadaptive 5.4 0.1 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 4.77376 disease 3.5 +1717 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 7.4 B coadaptive 9.4 8.9 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +1718 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 7.4 B coadaptive 9.4 8.9 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +1719 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 7.4 B coadaptive 9.4 8.9 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +1720 Fitness: 6.49286 Genotype: Fch1: A coadaptive 1.8 3.8 B coadaptive 1.9 8.4 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.49286 disease 3.5 +1721 Fitness: 6.49286 Genotype: Fch1: A coadaptive 1.8 3.8 B coadaptive 1.9 8.4 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.49286 disease 3.5 +1722 Fitness: 6.49286 Genotype: Fch1: A coadaptive 1.8 3.8 B coadaptive 1.9 8.4 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.49286 disease 3.5 +1723 Fitness: 12.8977 Genotype: Fch1: A coadaptive 4.9 6.8 B coadaptive 6.5 8.4 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 12.8977 disease 3 +1724 Fitness: 12.8977 Genotype: Fch1: A coadaptive 4.9 6.8 B coadaptive 6.5 8.4 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 12.8977 disease 3 +1725 Fitness: 12.8977 Genotype: Fch1: A coadaptive 4.9 6.8 B coadaptive 6.5 8.4 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 12.8977 disease 3 +1726 Fitness: 13.4219 Genotype: Fch1: A coadaptive 6.2 6.1 B coadaptive 5.1 5.4 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 13.4219 disease 3 +1727 Fitness: 13.4219 Genotype: Fch1: A coadaptive 6.2 6.1 B coadaptive 5.1 5.4 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 13.4219 disease 3 +1728 Fitness: 13.4219 Genotype: Fch1: A coadaptive 6.2 6.1 B coadaptive 5.1 5.4 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 13.4219 disease 3 +1729 Fitness: 8.7478 Genotype: Fch1: A coadaptive 5.7 1.2 B coadaptive 3.8 6.9 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.7478 disease 2.5 +1730 Fitness: 8.7478 Genotype: Fch1: A coadaptive 5.7 1.2 B coadaptive 3.8 6.9 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.7478 disease 2.5 +1731 Fitness: 8.7478 Genotype: Fch1: A coadaptive 5.7 1.2 B coadaptive 3.8 6.9 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.7478 disease 2.5 +1732 Fitness: 13.3695 Genotype: Fch1: A coadaptive 6.5 6.5 B coadaptive 8.6 6.9 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.3695 disease 2.5 +1733 Fitness: 13.3695 Genotype: Fch1: A coadaptive 6.5 6.5 B coadaptive 8.6 6.9 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.3695 disease 2.5 +1734 Fitness: 13.3695 Genotype: Fch1: A coadaptive 6.5 6.5 B coadaptive 8.6 6.9 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.3695 disease 2.5 +1735 Fitness: 7.8516 Genotype: Fch1: A coadaptive 8.1 2.7 B coadaptive 7.4 9.4 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 7.8516 disease 4 +1736 Fitness: 7.8516 Genotype: Fch1: A coadaptive 8.1 2.7 B coadaptive 7.4 9.4 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 7.8516 disease 4 +1737 Fitness: 7.8516 Genotype: Fch1: A coadaptive 8.1 2.7 B coadaptive 7.4 9.4 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 7.8516 disease 4 +1738 Fitness: 0.6104 Genotype: Fch1: A coadaptive 3 10 B coadaptive 1.5 3.1 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0.6104 disease 4 +1739 Fitness: 0.6104 Genotype: Fch1: A coadaptive 3 10 B coadaptive 1.5 3.1 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0.6104 disease 4 +1740 Fitness: 0.6104 Genotype: Fch1: A coadaptive 3 10 B coadaptive 1.5 3.1 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0.6104 disease 4 +1741 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 0.9 B coadaptive 9 9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1742 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 0.9 B coadaptive 9 9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1743 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 0.9 B coadaptive 9 9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1744 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 3.7 B coadaptive 2.4 1.6 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1745 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 3.7 B coadaptive 2.4 1.6 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1746 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 3.7 B coadaptive 2.4 1.6 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1747 Fitness: 13.144 Genotype: Fch1: A coadaptive 9.4 0.9 B coadaptive 3 7.9 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.144 disease 3 +1748 Fitness: 13.144 Genotype: Fch1: A coadaptive 9.4 0.9 B coadaptive 3 7.9 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.144 disease 3 +1749 Fitness: 13.144 Genotype: Fch1: A coadaptive 9.4 0.9 B coadaptive 3 7.9 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.144 disease 3 +1750 Fitness: 7.46755 Genotype: Fch1: A coadaptive 8 9.7 B coadaptive 3.7 8.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.46755 disease 2.5 +1751 Fitness: 7.46755 Genotype: Fch1: A coadaptive 8 9.7 B coadaptive 3.7 8.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.46755 disease 2.5 +1752 Fitness: 7.46755 Genotype: Fch1: A coadaptive 8 9.7 B coadaptive 3.7 8.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.46755 disease 2.5 +1753 Fitness: 2.65865 Genotype: Fch1: A coadaptive 1.4 1.4 B coadaptive 3.1 2.3 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 2.65865 disease 4 +1754 Fitness: 2.65865 Genotype: Fch1: A coadaptive 1.4 1.4 B coadaptive 3.1 2.3 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 2.65865 disease 4 +1755 Fitness: 2.65865 Genotype: Fch1: A coadaptive 1.4 1.4 B coadaptive 3.1 2.3 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 2.65865 disease 4 +1756 Fitness: 4.97724 Genotype: Fch1: A coadaptive 5.6 8.9 B coadaptive 6.3 1 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 4.97724 disease 4 +1757 Fitness: 4.97724 Genotype: Fch1: A coadaptive 5.6 8.9 B coadaptive 6.3 1 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 4.97724 disease 4 +1758 Fitness: 4.97724 Genotype: Fch1: A coadaptive 5.6 8.9 B coadaptive 6.3 1 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 4.97724 disease 4 +1759 Fitness: 7.84717 Genotype: Fch1: A coadaptive 4.6 3.9 B coadaptive 4.1 2.1 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.84717 disease 3.5 +1760 Fitness: 7.84717 Genotype: Fch1: A coadaptive 4.6 3.9 B coadaptive 4.1 2.1 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.84717 disease 3.5 +1761 Fitness: 7.84717 Genotype: Fch1: A coadaptive 4.6 3.9 B coadaptive 4.1 2.1 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.84717 disease 3.5 +1762 Fitness: 9.02585 Genotype: Fch1: A coadaptive 6.7 3.7 B coadaptive 5.4 1.6 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 9.02585 disease 3 +1763 Fitness: 9.02585 Genotype: Fch1: A coadaptive 6.7 3.7 B coadaptive 5.4 1.6 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 9.02585 disease 3 +1764 Fitness: 9.02585 Genotype: Fch1: A coadaptive 6.7 3.7 B coadaptive 5.4 1.6 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 9.02585 disease 3 +1765 Fitness: 5.37551 Genotype: Fch1: A coadaptive 2.4 3.1 B coadaptive 9.2 2.2 C disease 0 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 5.37551 disease 3 +1766 Fitness: 5.37551 Genotype: Fch1: A coadaptive 2.4 3.1 B coadaptive 9.2 2.2 C disease 0 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 5.37551 disease 3 +1767 Fitness: 5.37551 Genotype: Fch1: A coadaptive 2.4 3.1 B coadaptive 9.2 2.2 C disease 0 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 5.37551 disease 3 +1768 Fitness: 12.6828 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 9.9 6.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.6828 disease 2.5 +1769 Fitness: 12.6828 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 9.9 6.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.6828 disease 2.5 +1770 Fitness: 12.6828 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 9.9 6.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.6828 disease 2.5 +1771 Fitness: 12.4494 Genotype: Fch1: A coadaptive 9.9 0.1 B coadaptive 3.9 9.2 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.4494 disease 2 +1772 Fitness: 12.4494 Genotype: Fch1: A coadaptive 9.9 0.1 B coadaptive 3.9 9.2 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.4494 disease 2 +1773 Fitness: 12.4494 Genotype: Fch1: A coadaptive 9.9 0.1 B coadaptive 3.9 9.2 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.4494 disease 2 +1774 Fitness: 14.5429 Genotype: Fch1: A coadaptive 6.6 5.5 B coadaptive 7.8 4.9 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 14.5429 disease 3 +1775 Fitness: 14.5429 Genotype: Fch1: A coadaptive 6.6 5.5 B coadaptive 7.8 4.9 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 14.5429 disease 3 +1776 Fitness: 14.5429 Genotype: Fch1: A coadaptive 6.6 5.5 B coadaptive 7.8 4.9 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 14.5429 disease 3 +1777 Fitness: 12.3489 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 9 0.7 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 12.3489 disease 3 +1778 Fitness: 12.3489 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 9 0.7 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 12.3489 disease 3 +1779 Fitness: 12.3489 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 9 0.7 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 12.3489 disease 3 +1780 Fitness: 5.52708 Genotype: Fch1: A coadaptive 4.4 9 B coadaptive 5.4 1.3 C disease 0.5 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 5.52708 disease 3 +1781 Fitness: 5.52708 Genotype: Fch1: A coadaptive 4.4 9 B coadaptive 5.4 1.3 C disease 0.5 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 5.52708 disease 3 +1782 Fitness: 5.52708 Genotype: Fch1: A coadaptive 4.4 9 B coadaptive 5.4 1.3 C disease 0.5 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 5.52708 disease 3 +1783 Fitness: 6.46045 Genotype: Fch1: A coadaptive 4.2 1.8 B coadaptive 6.1 0.1 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.46045 disease 2 +1784 Fitness: 6.46045 Genotype: Fch1: A coadaptive 4.2 1.8 B coadaptive 6.1 0.1 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.46045 disease 2 +1785 Fitness: 6.46045 Genotype: Fch1: A coadaptive 4.2 1.8 B coadaptive 6.1 0.1 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.46045 disease 2 +1786 Fitness: 7.07556 Genotype: Fch1: A coadaptive 0 8.3 B coadaptive 7.7 7 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.07556 disease 2.5 +1787 Fitness: 7.07556 Genotype: Fch1: A coadaptive 0 8.3 B coadaptive 7.7 7 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.07556 disease 2.5 +1788 Fitness: 7.07556 Genotype: Fch1: A coadaptive 0 8.3 B coadaptive 7.7 7 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.07556 disease 2.5 +1789 Fitness: 9.96688 Genotype: Fch1: A coadaptive 8.2 6.8 B coadaptive 6 3.9 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 9.96688 disease 3.5 +1790 Fitness: 9.96688 Genotype: Fch1: A coadaptive 8.2 6.8 B coadaptive 6 3.9 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 9.96688 disease 3.5 +1791 Fitness: 9.96688 Genotype: Fch1: A coadaptive 8.2 6.8 B coadaptive 6 3.9 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 9.96688 disease 3.5 +1792 Fitness: 8.6104 Genotype: Fch1: A coadaptive 6.4 2 B coadaptive 5.9 0.9 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.6104 disease 2 +1793 Fitness: 8.6104 Genotype: Fch1: A coadaptive 6.4 2 B coadaptive 5.9 0.9 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.6104 disease 2 +1794 Fitness: 8.6104 Genotype: Fch1: A coadaptive 6.4 2 B coadaptive 5.9 0.9 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.6104 disease 2 +1795 Fitness: 10.4517 Genotype: Fch1: A coadaptive 9.5 5.8 B coadaptive 8.2 9.6 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.4517 disease 4 +1796 Fitness: 10.4517 Genotype: Fch1: A coadaptive 9.5 5.8 B coadaptive 8.2 9.6 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.4517 disease 4 +1797 Fitness: 10.4517 Genotype: Fch1: A coadaptive 9.5 5.8 B coadaptive 8.2 9.6 C disease 1 0 D disease 0 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.4517 disease 4 +1798 Fitness: 10.6616 Genotype: Fch1: A coadaptive 8.1 1.8 B coadaptive 7.5 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 10.6616 disease 3 +1799 Fitness: 10.6616 Genotype: Fch1: A coadaptive 8.1 1.8 B coadaptive 7.5 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 10.6616 disease 3 +1800 Fitness: 10.6616 Genotype: Fch1: A coadaptive 8.1 1.8 B coadaptive 7.5 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 10.6616 disease 3 +1801 Fitness: 8.56236 Genotype: Fch1: A coadaptive 4.2 8.7 B coadaptive 4.1 3.6 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 8.56236 disease 2.5 +1802 Fitness: 8.56236 Genotype: Fch1: A coadaptive 4.2 8.7 B coadaptive 4.1 3.6 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 8.56236 disease 2.5 +1803 Fitness: 8.56236 Genotype: Fch1: A coadaptive 4.2 8.7 B coadaptive 4.1 3.6 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 8.56236 disease 2.5 +1804 Fitness: 6.09018 Genotype: Fch1: A coadaptive 1 8.1 B coadaptive 7.9 8.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 6.09018 disease 3 +1805 Fitness: 6.09018 Genotype: Fch1: A coadaptive 1 8.1 B coadaptive 7.9 8.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 6.09018 disease 3 +1806 Fitness: 6.09018 Genotype: Fch1: A coadaptive 1 8.1 B coadaptive 7.9 8.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 6.09018 disease 3 +1807 Fitness: 3.49802 Genotype: Fch1: A coadaptive 1.6 1.9 B coadaptive 2.3 5.8 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 3.49802 disease 2 +1808 Fitness: 3.49802 Genotype: Fch1: A coadaptive 1.6 1.9 B coadaptive 2.3 5.8 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 3.49802 disease 2 +1809 Fitness: 3.49802 Genotype: Fch1: A coadaptive 1.6 1.9 B coadaptive 2.3 5.8 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 3.49802 disease 2 +1810 Fitness: 11.3178 Genotype: Fch1: A coadaptive 9.4 0 B coadaptive 0 8.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.3178 disease 2.5 +1811 Fitness: 11.3178 Genotype: Fch1: A coadaptive 9.4 0 B coadaptive 0 8.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.3178 disease 2.5 +1812 Fitness: 11.3178 Genotype: Fch1: A coadaptive 9.4 0 B coadaptive 0 8.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.3178 disease 2.5 +1813 Fitness: 4.84555 Genotype: Fch1: A coadaptive 9.8 1 B coadaptive 1.7 3.3 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 4.84555 disease 4 +1814 Fitness: 4.84555 Genotype: Fch1: A coadaptive 9.8 1 B coadaptive 1.7 3.3 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 4.84555 disease 4 +1815 Fitness: 4.84555 Genotype: Fch1: A coadaptive 9.8 1 B coadaptive 1.7 3.3 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 4.84555 disease 4 +1816 Fitness: 14.6521 Genotype: Fch1: A coadaptive 8.8 5.4 B coadaptive 5.6 7.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 14.6521 disease 3.5 +1817 Fitness: 14.6521 Genotype: Fch1: A coadaptive 8.8 5.4 B coadaptive 5.6 7.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 14.6521 disease 3.5 +1818 Fitness: 14.6521 Genotype: Fch1: A coadaptive 8.8 5.4 B coadaptive 5.6 7.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 14.6521 disease 3.5 +1819 Fitness: 2.68342 Genotype: Fch1: A coadaptive 1.2 2.5 B coadaptive 2.1 7.9 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 2.68342 disease 3 +1820 Fitness: 2.68342 Genotype: Fch1: A coadaptive 1.2 2.5 B coadaptive 2.1 7.9 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 2.68342 disease 3 +1821 Fitness: 2.68342 Genotype: Fch1: A coadaptive 1.2 2.5 B coadaptive 2.1 7.9 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 2.68342 disease 3 +1822 Fitness: 12.475 Genotype: Fch1: A coadaptive 9.3 0.9 B coadaptive 4.2 5.6 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.475 disease 3.5 +1823 Fitness: 12.475 Genotype: Fch1: A coadaptive 9.3 0.9 B coadaptive 4.2 5.6 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.475 disease 3.5 +1824 Fitness: 12.475 Genotype: Fch1: A coadaptive 9.3 0.9 B coadaptive 4.2 5.6 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.475 disease 3.5 +1825 Fitness: 6.82241 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 4.6 2.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 6.82241 disease 3.5 +1826 Fitness: 6.82241 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 4.6 2.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 6.82241 disease 3.5 +1827 Fitness: 6.82241 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 4.6 2.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 6.82241 disease 3.5 +1828 Fitness: 12.6811 Genotype: Fch1: A coadaptive 3.9 7.5 B coadaptive 0.7 9 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.6811 disease 2.5 +1829 Fitness: 12.6811 Genotype: Fch1: A coadaptive 3.9 7.5 B coadaptive 0.7 9 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.6811 disease 2.5 +1830 Fitness: 12.6811 Genotype: Fch1: A coadaptive 3.9 7.5 B coadaptive 0.7 9 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.6811 disease 2.5 +1831 Fitness: 8.88305 Genotype: Fch1: A coadaptive 6.2 0.8 B coadaptive 4.6 6.2 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.88305 disease 2.5 +1832 Fitness: 8.88305 Genotype: Fch1: A coadaptive 6.2 0.8 B coadaptive 4.6 6.2 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.88305 disease 2.5 +1833 Fitness: 8.88305 Genotype: Fch1: A coadaptive 6.2 0.8 B coadaptive 4.6 6.2 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.88305 disease 2.5 +1834 Fitness: 5.92532 Genotype: Fch1: A coadaptive 9.1 5.8 B coadaptive 4.7 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.92532 disease 3.5 +1835 Fitness: 5.92532 Genotype: Fch1: A coadaptive 9.1 5.8 B coadaptive 4.7 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.92532 disease 3.5 +1836 Fitness: 5.92532 Genotype: Fch1: A coadaptive 9.1 5.8 B coadaptive 4.7 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.92532 disease 3.5 +1837 Fitness: 10.2462 Genotype: Fch1: A coadaptive 8.2 9.1 B coadaptive 5 8.1 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 10.2462 disease 3.5 +1838 Fitness: 10.2462 Genotype: Fch1: A coadaptive 8.2 9.1 B coadaptive 5 8.1 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 10.2462 disease 3.5 +1839 Fitness: 10.2462 Genotype: Fch1: A coadaptive 8.2 9.1 B coadaptive 5 8.1 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 10.2462 disease 3.5 +1840 Fitness: 2.24656 Genotype: Fch1: A coadaptive 8.8 9.5 B coadaptive 2.4 8 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.24656 disease 2 +1841 Fitness: 2.24656 Genotype: Fch1: A coadaptive 8.8 9.5 B coadaptive 2.4 8 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.24656 disease 2 +1842 Fitness: 2.24656 Genotype: Fch1: A coadaptive 8.8 9.5 B coadaptive 2.4 8 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.24656 disease 2 +1843 Fitness: 1.88711 Genotype: Fch1: A coadaptive 9.6 7.9 B coadaptive 1.9 7.3 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 1.88711 disease 3.5 +1844 Fitness: 1.88711 Genotype: Fch1: A coadaptive 9.6 7.9 B coadaptive 1.9 7.3 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 1.88711 disease 3.5 +1845 Fitness: 1.88711 Genotype: Fch1: A coadaptive 9.6 7.9 B coadaptive 1.9 7.3 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 1.88711 disease 3.5 +1846 Fitness: 4.4891 Genotype: Fch1: A coadaptive 1.3 3.3 B coadaptive 9.9 0.3 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 4.4891 disease 2 +1847 Fitness: 4.4891 Genotype: Fch1: A coadaptive 1.3 3.3 B coadaptive 9.9 0.3 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 4.4891 disease 2 +1848 Fitness: 4.4891 Genotype: Fch1: A coadaptive 1.3 3.3 B coadaptive 9.9 0.3 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 4.4891 disease 2 +1849 Fitness: 4.13244 Genotype: Fch1: A coadaptive 1.8 7.4 B coadaptive 0.7 3.4 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.13244 disease 3.5 +1850 Fitness: 4.13244 Genotype: Fch1: A coadaptive 1.8 7.4 B coadaptive 0.7 3.4 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.13244 disease 3.5 +1851 Fitness: 4.13244 Genotype: Fch1: A coadaptive 1.8 7.4 B coadaptive 0.7 3.4 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.13244 disease 3.5 +1852 Fitness: 9.01484 Genotype: Fch1: A coadaptive 6 8.5 B coadaptive 1.4 7.6 C disease 0 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 9.01484 disease 2 +1853 Fitness: 9.01484 Genotype: Fch1: A coadaptive 6 8.5 B coadaptive 1.4 7.6 C disease 0 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 9.01484 disease 2 +1854 Fitness: 9.01484 Genotype: Fch1: A coadaptive 6 8.5 B coadaptive 1.4 7.6 C disease 0 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 9.01484 disease 2 +1855 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 3.8 B coadaptive 0 0.1 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1856 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 3.8 B coadaptive 0 0.1 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1857 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 3.8 B coadaptive 0 0.1 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1858 Fitness: 5.19211 Genotype: Fch1: A coadaptive 7 6.3 B coadaptive 5 1.5 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.19211 disease 3 +1859 Fitness: 5.19211 Genotype: Fch1: A coadaptive 7 6.3 B coadaptive 5 1.5 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.19211 disease 3 +1860 Fitness: 5.19211 Genotype: Fch1: A coadaptive 7 6.3 B coadaptive 5 1.5 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.19211 disease 3 +1861 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.9 B coadaptive 9 7.9 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1862 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.9 B coadaptive 9 7.9 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1863 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.9 B coadaptive 9 7.9 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1864 Fitness: 14.2568 Genotype: Fch1: A coadaptive 9 2.7 B coadaptive 9.9 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.2568 disease 2 +1865 Fitness: 14.2568 Genotype: Fch1: A coadaptive 9 2.7 B coadaptive 9.9 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.2568 disease 2 +1866 Fitness: 14.2568 Genotype: Fch1: A coadaptive 9 2.7 B coadaptive 9.9 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.2568 disease 2 +1867 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 9.6 B coadaptive 1.8 4.5 C disease 1 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1868 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 9.6 B coadaptive 1.8 4.5 C disease 1 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1869 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 9.6 B coadaptive 1.8 4.5 C disease 1 0.5 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1870 Fitness: 8.49283 Genotype: Fch1: A coadaptive 5 1.9 B coadaptive 4.5 3.4 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.49283 disease 3.5 +1871 Fitness: 8.49283 Genotype: Fch1: A coadaptive 5 1.9 B coadaptive 4.5 3.4 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.49283 disease 3.5 +1872 Fitness: 8.49283 Genotype: Fch1: A coadaptive 5 1.9 B coadaptive 4.5 3.4 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.49283 disease 3.5 +1873 Fitness: 0.641656 Genotype: Fch1: A coadaptive 2 1.4 B coadaptive 3.4 7.7 C disease 0 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0.641656 disease 2.5 +1874 Fitness: 0.641656 Genotype: Fch1: A coadaptive 2 1.4 B coadaptive 3.4 7.7 C disease 0 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0.641656 disease 2.5 +1875 Fitness: 0.641656 Genotype: Fch1: A coadaptive 2 1.4 B coadaptive 3.4 7.7 C disease 0 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0.641656 disease 2.5 +1876 Fitness: 9.71297 Genotype: Fch1: A coadaptive 3.5 3.9 B coadaptive 0.1 10 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 9.71297 disease 3.5 +1877 Fitness: 9.71297 Genotype: Fch1: A coadaptive 3.5 3.9 B coadaptive 0.1 10 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 9.71297 disease 3.5 +1878 Fitness: 9.71297 Genotype: Fch1: A coadaptive 3.5 3.9 B coadaptive 0.1 10 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 9.71297 disease 3.5 +1879 Fitness: 12.6452 Genotype: Fch1: A coadaptive 2.9 7.5 B coadaptive 3.6 6.3 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.6452 disease 2 +1880 Fitness: 12.6452 Genotype: Fch1: A coadaptive 2.9 7.5 B coadaptive 3.6 6.3 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.6452 disease 2 +1881 Fitness: 12.6452 Genotype: Fch1: A coadaptive 2.9 7.5 B coadaptive 3.6 6.3 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.6452 disease 2 +1882 Fitness: 8.65291 Genotype: Fch1: A coadaptive 0.4 8.7 B coadaptive 3.1 3.6 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.65291 disease 3.5 +1883 Fitness: 8.65291 Genotype: Fch1: A coadaptive 0.4 8.7 B coadaptive 3.1 3.6 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.65291 disease 3.5 +1884 Fitness: 8.65291 Genotype: Fch1: A coadaptive 0.4 8.7 B coadaptive 3.1 3.6 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.65291 disease 3.5 +1885 Fitness: 2.89286 Genotype: Fch1: A coadaptive 0.2 2.9 B coadaptive 2.7 5.1 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.89286 disease 4 +1886 Fitness: 2.89286 Genotype: Fch1: A coadaptive 0.2 2.9 B coadaptive 2.7 5.1 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.89286 disease 4 +1887 Fitness: 2.89286 Genotype: Fch1: A coadaptive 0.2 2.9 B coadaptive 2.7 5.1 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.89286 disease 4 +1888 Fitness: 12.3717 Genotype: Fch1: A coadaptive 6.2 5.7 B coadaptive 9.2 0.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.3717 disease 3 +1889 Fitness: 12.3717 Genotype: Fch1: A coadaptive 6.2 5.7 B coadaptive 9.2 0.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.3717 disease 3 +1890 Fitness: 12.3717 Genotype: Fch1: A coadaptive 6.2 5.7 B coadaptive 9.2 0.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.3717 disease 3 +1891 Fitness: 13.1875 Genotype: Fch1: A coadaptive 9.7 5.4 B coadaptive 4.4 7.8 C disease 0.5 0.5 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.1875 disease 2 +1892 Fitness: 13.1875 Genotype: Fch1: A coadaptive 9.7 5.4 B coadaptive 4.4 7.8 C disease 0.5 0.5 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.1875 disease 2 +1893 Fitness: 13.1875 Genotype: Fch1: A coadaptive 9.7 5.4 B coadaptive 4.4 7.8 C disease 0.5 0.5 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.1875 disease 2 +1894 Fitness: 10.4097 Genotype: Fch1: A coadaptive 4.3 6.3 B coadaptive 6.6 1.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.4097 disease 2.5 +1895 Fitness: 10.4097 Genotype: Fch1: A coadaptive 4.3 6.3 B coadaptive 6.6 1.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.4097 disease 2.5 +1896 Fitness: 10.4097 Genotype: Fch1: A coadaptive 4.3 6.3 B coadaptive 6.6 1.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.4097 disease 2.5 +1897 Fitness: 12.7476 Genotype: Fch1: A coadaptive 6.7 5.9 B coadaptive 4.7 5.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.7476 disease 3 +1898 Fitness: 12.7476 Genotype: Fch1: A coadaptive 6.7 5.9 B coadaptive 4.7 5.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.7476 disease 3 +1899 Fitness: 12.7476 Genotype: Fch1: A coadaptive 6.7 5.9 B coadaptive 4.7 5.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 12.7476 disease 3 +1900 Fitness: 5.70731 Genotype: Fch1: A coadaptive 2.9 1.9 B coadaptive 5.1 2.8 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 5.70731 disease 3.5 +1901 Fitness: 5.70731 Genotype: Fch1: A coadaptive 2.9 1.9 B coadaptive 5.1 2.8 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 5.70731 disease 3.5 +1902 Fitness: 5.70731 Genotype: Fch1: A coadaptive 2.9 1.9 B coadaptive 5.1 2.8 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 5.70731 disease 3.5 +1903 Fitness: 13.862 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 7.7 6.6 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.862 disease 1.5 +1904 Fitness: 13.862 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 7.7 6.6 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.862 disease 1.5 +1905 Fitness: 13.862 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 7.7 6.6 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.862 disease 1.5 +1906 Fitness: 12.6175 Genotype: Fch1: A coadaptive 8.3 1.7 B coadaptive 6.5 3.7 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.6175 disease 2 +1907 Fitness: 12.6175 Genotype: Fch1: A coadaptive 8.3 1.7 B coadaptive 6.5 3.7 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.6175 disease 2 +1908 Fitness: 12.6175 Genotype: Fch1: A coadaptive 8.3 1.7 B coadaptive 6.5 3.7 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.6175 disease 2 +1909 Fitness: 12.946 Genotype: Fch1: A coadaptive 8.9 3.9 B coadaptive 5.7 10 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.946 disease 2.5 +1910 Fitness: 12.946 Genotype: Fch1: A coadaptive 8.9 3.9 B coadaptive 5.7 10 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.946 disease 2.5 +1911 Fitness: 12.946 Genotype: Fch1: A coadaptive 8.9 3.9 B coadaptive 5.7 10 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.946 disease 2.5 +1912 Fitness: 0 Genotype: Fch1: A coadaptive 7 0.9 B coadaptive 8.5 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1913 Fitness: 0 Genotype: Fch1: A coadaptive 7 0.9 B coadaptive 8.5 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1914 Fitness: 0 Genotype: Fch1: A coadaptive 7 0.9 B coadaptive 8.5 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1915 Fitness: 14.396 Genotype: Fch1: A coadaptive 7.6 5.7 B coadaptive 6.5 5.5 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 14.396 disease 3.5 +1916 Fitness: 14.396 Genotype: Fch1: A coadaptive 7.6 5.7 B coadaptive 6.5 5.5 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 14.396 disease 3.5 +1917 Fitness: 14.396 Genotype: Fch1: A coadaptive 7.6 5.7 B coadaptive 6.5 5.5 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 14.396 disease 3.5 +1918 Fitness: 5.8016 Genotype: Fch1: A coadaptive 0.2 5.4 B coadaptive 3.3 7.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.8016 disease 2.5 +1919 Fitness: 5.8016 Genotype: Fch1: A coadaptive 0.2 5.4 B coadaptive 3.3 7.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.8016 disease 2.5 +1920 Fitness: 5.8016 Genotype: Fch1: A coadaptive 0.2 5.4 B coadaptive 3.3 7.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.8016 disease 2.5 +1921 Fitness: 5.37993 Genotype: Fch1: A coadaptive 4.6 2.9 B coadaptive 1 3.6 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 5.37993 disease 2.5 +1922 Fitness: 5.37993 Genotype: Fch1: A coadaptive 4.6 2.9 B coadaptive 1 3.6 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 5.37993 disease 2.5 +1923 Fitness: 5.37993 Genotype: Fch1: A coadaptive 4.6 2.9 B coadaptive 1 3.6 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 5.37993 disease 2.5 +1924 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 1.8 B coadaptive 8.3 7.3 C disease 1 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1925 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 1.8 B coadaptive 8.3 7.3 C disease 1 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1926 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 1.8 B coadaptive 8.3 7.3 C disease 1 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1927 Fitness: 9.03172 Genotype: Fch1: A coadaptive 4.8 9.3 B coadaptive 6.7 2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.03172 disease 2.5 +1928 Fitness: 9.03172 Genotype: Fch1: A coadaptive 4.8 9.3 B coadaptive 6.7 2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.03172 disease 2.5 +1929 Fitness: 9.03172 Genotype: Fch1: A coadaptive 4.8 9.3 B coadaptive 6.7 2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 9.03172 disease 2.5 +1930 Fitness: 6.02545 Genotype: Fch1: A coadaptive 7.7 2.7 B coadaptive 2.5 2.9 C disease 1 0 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 6.02545 disease 3 +1931 Fitness: 6.02545 Genotype: Fch1: A coadaptive 7.7 2.7 B coadaptive 2.5 2.9 C disease 1 0 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 6.02545 disease 3 +1932 Fitness: 6.02545 Genotype: Fch1: A coadaptive 7.7 2.7 B coadaptive 2.5 2.9 C disease 1 0 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 6.02545 disease 3 +1933 Fitness: 7.68697 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 1.6 4.5 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 7.68697 disease 2.5 +1934 Fitness: 7.68697 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 1.6 4.5 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 7.68697 disease 2.5 +1935 Fitness: 7.68697 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 1.6 4.5 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 7.68697 disease 2.5 +1936 Fitness: 6.01216 Genotype: Fch1: A coadaptive 6.6 0.1 B coadaptive 7.8 5.3 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 6.01216 disease 2.5 +1937 Fitness: 6.01216 Genotype: Fch1: A coadaptive 6.6 0.1 B coadaptive 7.8 5.3 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 6.01216 disease 2.5 +1938 Fitness: 6.01216 Genotype: Fch1: A coadaptive 6.6 0.1 B coadaptive 7.8 5.3 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 6.01216 disease 2.5 +1939 Fitness: 12.3489 Genotype: Fch1: A coadaptive 6.5 3.2 B coadaptive 6.9 3.2 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3489 disease 1.5 +1940 Fitness: 12.3489 Genotype: Fch1: A coadaptive 6.5 3.2 B coadaptive 6.9 3.2 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3489 disease 1.5 +1941 Fitness: 12.3489 Genotype: Fch1: A coadaptive 6.5 3.2 B coadaptive 6.9 3.2 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3489 disease 1.5 +1942 Fitness: 14.6242 Genotype: Fch1: A coadaptive 8.7 5 B coadaptive 2.9 9.8 C disease 0.5 0.5 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.6242 disease 3.5 +1943 Fitness: 14.6242 Genotype: Fch1: A coadaptive 8.7 5 B coadaptive 2.9 9.8 C disease 0.5 0.5 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.6242 disease 3.5 +1944 Fitness: 14.6242 Genotype: Fch1: A coadaptive 8.7 5 B coadaptive 2.9 9.8 C disease 0.5 0.5 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.6242 disease 3.5 +1945 Fitness: 11.1561 Genotype: Fch1: A coadaptive 8.5 2.8 B coadaptive 0.1 8.4 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.1561 disease 3 +1946 Fitness: 11.1561 Genotype: Fch1: A coadaptive 8.5 2.8 B coadaptive 0.1 8.4 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.1561 disease 3 +1947 Fitness: 11.1561 Genotype: Fch1: A coadaptive 8.5 2.8 B coadaptive 0.1 8.4 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.1561 disease 3 +1948 Fitness: 5.50836 Genotype: Fch1: A coadaptive 5.2 1.7 B coadaptive 10 3.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 5.50836 disease 2 +1949 Fitness: 5.50836 Genotype: Fch1: A coadaptive 5.2 1.7 B coadaptive 10 3.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 5.50836 disease 2 +1950 Fitness: 5.50836 Genotype: Fch1: A coadaptive 5.2 1.7 B coadaptive 10 3.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 5.50836 disease 2 +1951 Fitness: 4.16425 Genotype: Fch1: A coadaptive 6.4 0.8 B coadaptive 1.5 2.3 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.16425 disease 2.5 +1952 Fitness: 4.16425 Genotype: Fch1: A coadaptive 6.4 0.8 B coadaptive 1.5 2.3 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.16425 disease 2.5 +1953 Fitness: 4.16425 Genotype: Fch1: A coadaptive 6.4 0.8 B coadaptive 1.5 2.3 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.16425 disease 2.5 +1954 Fitness: 12.2744 Genotype: Fch1: A coadaptive 9 1.3 B coadaptive 0.7 8.8 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.2744 disease 3 +1955 Fitness: 12.2744 Genotype: Fch1: A coadaptive 9 1.3 B coadaptive 0.7 8.8 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.2744 disease 3 +1956 Fitness: 12.2744 Genotype: Fch1: A coadaptive 9 1.3 B coadaptive 0.7 8.8 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.2744 disease 3 +1957 Fitness: 11.8662 Genotype: Fch1: A coadaptive 3.4 5.7 B coadaptive 2.7 9.1 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 11.8662 disease 2.5 +1958 Fitness: 11.8662 Genotype: Fch1: A coadaptive 3.4 5.7 B coadaptive 2.7 9.1 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 11.8662 disease 2.5 +1959 Fitness: 11.8662 Genotype: Fch1: A coadaptive 3.4 5.7 B coadaptive 2.7 9.1 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 11.8662 disease 2.5 +1960 Fitness: 6.41118 Genotype: Fch1: A coadaptive 4.7 1.7 B coadaptive 8 4.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 6.41118 disease 3 +1961 Fitness: 6.41118 Genotype: Fch1: A coadaptive 4.7 1.7 B coadaptive 8 4.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 6.41118 disease 3 +1962 Fitness: 6.41118 Genotype: Fch1: A coadaptive 4.7 1.7 B coadaptive 8 4.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 6.41118 disease 3 +1963 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 5.4 B coadaptive 2.5 1.5 C disease 0 1 D disease 1 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1964 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 5.4 B coadaptive 2.5 1.5 C disease 0 1 D disease 1 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1965 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 5.4 B coadaptive 2.5 1.5 C disease 0 1 D disease 1 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1966 Fitness: 0.544881 Genotype: Fch1: A coadaptive 8.8 7.6 B coadaptive 6.4 1.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0.544881 disease 3 +1967 Fitness: 0.544881 Genotype: Fch1: A coadaptive 8.8 7.6 B coadaptive 6.4 1.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0.544881 disease 3 +1968 Fitness: 0.544881 Genotype: Fch1: A coadaptive 8.8 7.6 B coadaptive 6.4 1.1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0.544881 disease 3 +1969 Fitness: 13.5461 Genotype: Fch1: A coadaptive 3 9.6 B coadaptive 6.2 4.5 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.5461 disease 3.5 +1970 Fitness: 13.5461 Genotype: Fch1: A coadaptive 3 9.6 B coadaptive 6.2 4.5 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.5461 disease 3.5 +1971 Fitness: 13.5461 Genotype: Fch1: A coadaptive 3 9.6 B coadaptive 6.2 4.5 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.5461 disease 3.5 +1972 Fitness: 1.80163 Genotype: Fch1: A coadaptive 3.2 0.3 B coadaptive 8.4 2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.80163 disease 2 +1973 Fitness: 1.80163 Genotype: Fch1: A coadaptive 3.2 0.3 B coadaptive 8.4 2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.80163 disease 2 +1974 Fitness: 1.80163 Genotype: Fch1: A coadaptive 3.2 0.3 B coadaptive 8.4 2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.80163 disease 2 +1975 Fitness: 13.586 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 6.5 4.7 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.586 disease 3 +1976 Fitness: 13.586 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 6.5 4.7 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.586 disease 3 +1977 Fitness: 13.586 Genotype: Fch1: A coadaptive 5.2 5.6 B coadaptive 6.5 4.7 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.586 disease 3 +1978 Fitness: 12.5657 Genotype: Fch1: A coadaptive 6.4 6.3 B coadaptive 6.7 3.2 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 12.5657 disease 3 +1979 Fitness: 12.5657 Genotype: Fch1: A coadaptive 6.4 6.3 B coadaptive 6.7 3.2 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 12.5657 disease 3 +1980 Fitness: 12.5657 Genotype: Fch1: A coadaptive 6.4 6.3 B coadaptive 6.7 3.2 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 12.5657 disease 3 +1981 Fitness: 9.06963 Genotype: Fch1: A coadaptive 8 2.8 B coadaptive 8.6 7.7 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.06963 disease 2 +1982 Fitness: 9.06963 Genotype: Fch1: A coadaptive 8 2.8 B coadaptive 8.6 7.7 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.06963 disease 2 +1983 Fitness: 9.06963 Genotype: Fch1: A coadaptive 8 2.8 B coadaptive 8.6 7.7 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.06963 disease 2 +1984 Fitness: 2.1675 Genotype: Fch1: A coadaptive 6.2 1.2 B coadaptive 1.1 1.5 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 2.1675 disease 2.5 +1985 Fitness: 2.1675 Genotype: Fch1: A coadaptive 6.2 1.2 B coadaptive 1.1 1.5 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 2.1675 disease 2.5 +1986 Fitness: 2.1675 Genotype: Fch1: A coadaptive 6.2 1.2 B coadaptive 1.1 1.5 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 2.1675 disease 2.5 +1987 Fitness: 2.11994 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 2.8 1.6 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.11994 disease 1.5 +1988 Fitness: 2.11994 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 2.8 1.6 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.11994 disease 1.5 +1989 Fitness: 2.11994 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 2.8 1.6 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.11994 disease 1.5 +1990 Fitness: 10.1697 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 5.7 9.4 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 10.1697 disease 2.5 +1991 Fitness: 10.1697 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 5.7 9.4 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 10.1697 disease 2.5 +1992 Fitness: 10.1697 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 5.7 9.4 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 10.1697 disease 2.5 +1993 Fitness: 13.9707 Genotype: Fch1: A coadaptive 5.1 6.3 B coadaptive 9.8 1.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.9707 disease 3 +1994 Fitness: 13.9707 Genotype: Fch1: A coadaptive 5.1 6.3 B coadaptive 9.8 1.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.9707 disease 3 +1995 Fitness: 13.9707 Genotype: Fch1: A coadaptive 5.1 6.3 B coadaptive 9.8 1.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 13.9707 disease 3 +1996 Fitness: 5.72774 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 4.1 8 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.72774 disease 3 +1997 Fitness: 5.72774 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 4.1 8 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.72774 disease 3 +1998 Fitness: 5.72774 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 4.1 8 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.72774 disease 3 +1999 Fitness: 8.7539 Genotype: Fch1: A coadaptive 1.9 10 B coadaptive 1.3 6 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 8.7539 disease 3 +2000 Fitness: 8.7539 Genotype: Fch1: A coadaptive 1.9 10 B coadaptive 1.3 6 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 8.7539 disease 3 +2001 Fitness: 8.7539 Genotype: Fch1: A coadaptive 1.9 10 B coadaptive 1.3 6 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 8.7539 disease 3 diff --git a/DEC_GUI/DEC-0.0/generation.2.xls b/DEC_GUI/DEC-0.0/generation.2.xls new file mode 100644 index 0000000..7c7bf3a --- /dev/null +++ b/DEC_GUI/DEC-0.0/generation.2.xls @@ -0,0 +1,2002 @@ +Population size: 2001 +1 Fitness: 11.6819 Genotype: Fch1: A coadaptive 1.2 7.7 B coadaptive 1.6 8.7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.6819 disease 4 +2 Fitness: 11.6819 Genotype: Fch1: A coadaptive 1.2 7.7 B coadaptive 1.6 8.7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.6819 disease 4 +3 Fitness: 11.6819 Genotype: Fch1: A coadaptive 1.2 7.7 B coadaptive 1.6 8.7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.6819 disease 4 +4 Fitness: 7.64032 Genotype: Fch1: A coadaptive 3.9 2.2 B coadaptive 3.7 4.5 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 7.64032 disease 2 +5 Fitness: 7.64032 Genotype: Fch1: A coadaptive 3.9 2.2 B coadaptive 3.7 4.5 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 7.64032 disease 2 +6 Fitness: 7.64032 Genotype: Fch1: A coadaptive 3.9 2.2 B coadaptive 3.7 4.5 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 7.64032 disease 2 +7 Fitness: 7.84717 Genotype: Fch1: A coadaptive 4.4 4.1 B coadaptive 5 1.2 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.84717 disease 3 +8 Fitness: 7.84717 Genotype: Fch1: A coadaptive 4.4 4.1 B coadaptive 5 1.2 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.84717 disease 3 +9 Fitness: 7.84717 Genotype: Fch1: A coadaptive 4.4 4.1 B coadaptive 5 1.2 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.84717 disease 3 +10 Fitness: 6.54854 Genotype: Fch1: A coadaptive 10 7.7 B coadaptive 9.4 9.6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.54854 disease 3.5 +11 Fitness: 6.54854 Genotype: Fch1: A coadaptive 10 7.7 B coadaptive 9.4 9.6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.54854 disease 3.5 +12 Fitness: 6.54854 Genotype: Fch1: A coadaptive 10 7.7 B coadaptive 9.4 9.6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 6.54854 disease 3.5 +13 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.5 B coadaptive 0.9 6.1 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 1.5 +14 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.5 B coadaptive 0.9 6.1 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 1.5 +15 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.5 B coadaptive 0.9 6.1 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 1.5 +16 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 2.3 B coadaptive 9 9.9 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +17 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 2.3 B coadaptive 9 9.9 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +18 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 2.3 B coadaptive 9 9.9 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +19 Fitness: 5.73664 Genotype: Fch1: A coadaptive 6.8 5.1 B coadaptive 4.7 1.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.73664 disease 2.5 +20 Fitness: 5.73664 Genotype: Fch1: A coadaptive 6.8 5.1 B coadaptive 4.7 1.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.73664 disease 2.5 +21 Fitness: 5.73664 Genotype: Fch1: A coadaptive 6.8 5.1 B coadaptive 4.7 1.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.73664 disease 2.5 +22 Fitness: 1.7804 Genotype: Fch1: A coadaptive 0.2 6.2 B coadaptive 9.9 4.9 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.7804 disease 1.5 +23 Fitness: 1.7804 Genotype: Fch1: A coadaptive 0.2 6.2 B coadaptive 9.9 4.9 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.7804 disease 1.5 +24 Fitness: 1.7804 Genotype: Fch1: A coadaptive 0.2 6.2 B coadaptive 9.9 4.9 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.7804 disease 1.5 +25 Fitness: 7.24587 Genotype: Fch1: A coadaptive 0 7.9 B coadaptive 7.5 6.6 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.24587 disease 2.5 +26 Fitness: 7.24587 Genotype: Fch1: A coadaptive 0 7.9 B coadaptive 7.5 6.6 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.24587 disease 2.5 +27 Fitness: 7.24587 Genotype: Fch1: A coadaptive 0 7.9 B coadaptive 7.5 6.6 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.24587 disease 2.5 +28 Fitness: 13.8971 Genotype: Fch1: A coadaptive 7.4 5.8 B coadaptive 2.9 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.8971 disease 2.5 +29 Fitness: 13.8971 Genotype: Fch1: A coadaptive 7.4 5.8 B coadaptive 2.9 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.8971 disease 2.5 +30 Fitness: 13.8971 Genotype: Fch1: A coadaptive 7.4 5.8 B coadaptive 2.9 8.4 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.8971 disease 2.5 +31 Fitness: 7.24375 Genotype: Fch1: A coadaptive 5.4 1.7 B coadaptive 8.6 4.3 C disease 0 0 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.24375 disease 3 +32 Fitness: 7.24375 Genotype: Fch1: A coadaptive 5.4 1.7 B coadaptive 8.6 4.3 C disease 0 0 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.24375 disease 3 +33 Fitness: 7.24375 Genotype: Fch1: A coadaptive 5.4 1.7 B coadaptive 8.6 4.3 C disease 0 0 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.24375 disease 3 +34 Fitness: 3.63203 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 5.9 0.1 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 3.63203 disease 3.5 +35 Fitness: 3.63203 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 5.9 0.1 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 3.63203 disease 3.5 +36 Fitness: 3.63203 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 5.9 0.1 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 3.63203 disease 3.5 +37 Fitness: 3.33872 Genotype: Fch1: A coadaptive 7.9 3.8 B coadaptive 1.9 2.9 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.33872 disease 3.5 +38 Fitness: 3.33872 Genotype: Fch1: A coadaptive 7.9 3.8 B coadaptive 1.9 2.9 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.33872 disease 3.5 +39 Fitness: 3.33872 Genotype: Fch1: A coadaptive 7.9 3.8 B coadaptive 1.9 2.9 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.33872 disease 3.5 +40 Fitness: 0.0111463 Genotype: Fch1: A coadaptive 8.5 8.7 B coadaptive 4.6 3.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0.0111463 disease 2 +41 Fitness: 0.0111463 Genotype: Fch1: A coadaptive 8.5 8.7 B coadaptive 4.6 3.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0.0111463 disease 2 +42 Fitness: 0.0111463 Genotype: Fch1: A coadaptive 8.5 8.7 B coadaptive 4.6 3.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0.0111463 disease 2 +43 Fitness: 13.8863 Genotype: Fch1: A coadaptive 9.4 1.9 B coadaptive 10 1.3 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.8863 disease 3 +44 Fitness: 13.8863 Genotype: Fch1: A coadaptive 9.4 1.9 B coadaptive 10 1.3 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.8863 disease 3 +45 Fitness: 13.8863 Genotype: Fch1: A coadaptive 9.4 1.9 B coadaptive 10 1.3 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.8863 disease 3 +46 Fitness: 0 Genotype: Fch1: A coadaptive 4.2 6.9 B coadaptive 1.7 0.9 C disease 0 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +47 Fitness: 0 Genotype: Fch1: A coadaptive 4.2 6.9 B coadaptive 1.7 0.9 C disease 0 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +48 Fitness: 0 Genotype: Fch1: A coadaptive 4.2 6.9 B coadaptive 1.7 0.9 C disease 0 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +49 Fitness: 5.47389 Genotype: Fch1: A coadaptive 5.2 5.1 B coadaptive 0.5 4.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 5.47389 disease 3 +50 Fitness: 5.47389 Genotype: Fch1: A coadaptive 5.2 5.1 B coadaptive 0.5 4.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 5.47389 disease 3 +51 Fitness: 5.47389 Genotype: Fch1: A coadaptive 5.2 5.1 B coadaptive 0.5 4.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 5.47389 disease 3 +52 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9.3 B coadaptive 7.8 2 C disease 1 1 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +53 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9.3 B coadaptive 7.8 2 C disease 1 1 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +54 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9.3 B coadaptive 7.8 2 C disease 1 1 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +55 Fitness: 0.21555 Genotype: Fch1: A coadaptive 6.1 9.5 B coadaptive 3.7 2.9 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.21555 disease 3.5 +56 Fitness: 0.21555 Genotype: Fch1: A coadaptive 6.1 9.5 B coadaptive 3.7 2.9 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.21555 disease 3.5 +57 Fitness: 0.21555 Genotype: Fch1: A coadaptive 6.1 9.5 B coadaptive 3.7 2.9 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0.21555 disease 3.5 +58 Fitness: 5.52938 Genotype: Fch1: A coadaptive 6.6 3.3 B coadaptive 2.8 2.2 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 5.52938 disease 3 +59 Fitness: 5.52938 Genotype: Fch1: A coadaptive 6.6 3.3 B coadaptive 2.8 2.2 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 5.52938 disease 3 +60 Fitness: 5.52938 Genotype: Fch1: A coadaptive 6.6 3.3 B coadaptive 2.8 2.2 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 5.52938 disease 3 +61 Fitness: 1.0918 Genotype: Fch1: A coadaptive 3.4 1.3 B coadaptive 8.4 4.5 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 1.0918 disease 2.5 +62 Fitness: 1.0918 Genotype: Fch1: A coadaptive 3.4 1.3 B coadaptive 8.4 4.5 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 1.0918 disease 2.5 +63 Fitness: 1.0918 Genotype: Fch1: A coadaptive 3.4 1.3 B coadaptive 8.4 4.5 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 1.0918 disease 2.5 +64 Fitness: 4.57576 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 4.2 0.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.57576 disease 3.5 +65 Fitness: 4.57576 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 4.2 0.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.57576 disease 3.5 +66 Fitness: 4.57576 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 4.2 0.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.57576 disease 3.5 +67 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 7.5 B coadaptive 1.8 1.7 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +68 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 7.5 B coadaptive 1.8 1.7 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +69 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 7.5 B coadaptive 1.8 1.7 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +70 Fitness: 3.00933 Genotype: Fch1: A coadaptive 7.6 3.4 B coadaptive 0.3 4 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 3.00933 disease 3.5 +71 Fitness: 3.00933 Genotype: Fch1: A coadaptive 7.6 3.4 B coadaptive 0.3 4 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 3.00933 disease 3.5 +72 Fitness: 3.00933 Genotype: Fch1: A coadaptive 7.6 3.4 B coadaptive 0.3 4 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 3.00933 disease 3.5 +73 Fitness: 12.9312 Genotype: Fch1: A coadaptive 4.2 5.8 B coadaptive 7.6 3.4 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.9312 disease 3 +74 Fitness: 12.9312 Genotype: Fch1: A coadaptive 4.2 5.8 B coadaptive 7.6 3.4 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.9312 disease 3 +75 Fitness: 12.9312 Genotype: Fch1: A coadaptive 4.2 5.8 B coadaptive 7.6 3.4 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.9312 disease 3 +76 Fitness: 8.99666 Genotype: Fch1: A coadaptive 6.2 6.5 B coadaptive 3.7 4.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 8.99666 disease 3.5 +77 Fitness: 8.99666 Genotype: Fch1: A coadaptive 6.2 6.5 B coadaptive 3.7 4.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 8.99666 disease 3.5 +78 Fitness: 8.99666 Genotype: Fch1: A coadaptive 6.2 6.5 B coadaptive 3.7 4.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 8.99666 disease 3.5 +79 Fitness: 1.37656 Genotype: Fch1: A coadaptive 2.4 0.1 B coadaptive 3.2 5.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.37656 disease 2.5 +80 Fitness: 1.37656 Genotype: Fch1: A coadaptive 2.4 0.1 B coadaptive 3.2 5.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.37656 disease 2.5 +81 Fitness: 1.37656 Genotype: Fch1: A coadaptive 2.4 0.1 B coadaptive 3.2 5.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.37656 disease 2.5 +82 Fitness: 2.36472 Genotype: Fch1: A coadaptive 1.1 2.6 B coadaptive 0.5 2.6 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 2.36472 disease 3.5 +83 Fitness: 2.36472 Genotype: Fch1: A coadaptive 1.1 2.6 B coadaptive 0.5 2.6 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 2.36472 disease 3.5 +84 Fitness: 2.36472 Genotype: Fch1: A coadaptive 1.1 2.6 B coadaptive 0.5 2.6 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 2.36472 disease 3.5 +85 Fitness: 0 Genotype: Fch1: A coadaptive 3.7 2.4 B coadaptive 6.7 8.8 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +86 Fitness: 0 Genotype: Fch1: A coadaptive 3.7 2.4 B coadaptive 6.7 8.8 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +87 Fitness: 0 Genotype: Fch1: A coadaptive 3.7 2.4 B coadaptive 6.7 8.8 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +88 Fitness: 13.5623 Genotype: Fch1: A coadaptive 3.2 7.8 B coadaptive 5.7 5.2 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 13.5623 disease 2 +89 Fitness: 13.5623 Genotype: Fch1: A coadaptive 3.2 7.8 B coadaptive 5.7 5.2 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 13.5623 disease 2 +90 Fitness: 13.5623 Genotype: Fch1: A coadaptive 3.2 7.8 B coadaptive 5.7 5.2 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 13.5623 disease 2 +91 Fitness: 9.8869 Genotype: Fch1: A coadaptive 3.5 8.3 B coadaptive 9.7 7 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.8869 disease 2 +92 Fitness: 9.8869 Genotype: Fch1: A coadaptive 3.5 8.3 B coadaptive 9.7 7 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.8869 disease 2 +93 Fitness: 9.8869 Genotype: Fch1: A coadaptive 3.5 8.3 B coadaptive 9.7 7 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.8869 disease 2 +94 Fitness: 0.0130748 Genotype: Fch1: A coadaptive 0.8 6.9 B coadaptive 0.6 0.9 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0.0130748 disease 3.5 +95 Fitness: 0.0130748 Genotype: Fch1: A coadaptive 0.8 6.9 B coadaptive 0.6 0.9 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0.0130748 disease 3.5 +96 Fitness: 0.0130748 Genotype: Fch1: A coadaptive 0.8 6.9 B coadaptive 0.6 0.9 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0.0130748 disease 3.5 +97 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 0.2 0.1 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2 +98 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 0.2 0.1 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2 +99 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.5 B coadaptive 0.2 0.1 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2 +100 Fitness: 11.3218 Genotype: Fch1: A coadaptive 3.1 8.6 B coadaptive 8.1 0.6 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.3218 disease 1.5 +101 Fitness: 11.3218 Genotype: Fch1: A coadaptive 3.1 8.6 B coadaptive 8.1 0.6 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.3218 disease 1.5 +102 Fitness: 11.3218 Genotype: Fch1: A coadaptive 3.1 8.6 B coadaptive 8.1 0.6 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.3218 disease 1.5 +103 Fitness: 2.53829 Genotype: Fch1: A coadaptive 7.3 5.1 B coadaptive 0.3 4.6 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.53829 disease 2.5 +104 Fitness: 2.53829 Genotype: Fch1: A coadaptive 7.3 5.1 B coadaptive 0.3 4.6 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.53829 disease 2.5 +105 Fitness: 2.53829 Genotype: Fch1: A coadaptive 7.3 5.1 B coadaptive 0.3 4.6 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.53829 disease 2.5 +106 Fitness: 2.4584 Genotype: Fch1: A coadaptive 1.8 1.8 B coadaptive 2.7 7.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 2.4584 disease 3 +107 Fitness: 2.4584 Genotype: Fch1: A coadaptive 1.8 1.8 B coadaptive 2.7 7.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 2.4584 disease 3 +108 Fitness: 2.4584 Genotype: Fch1: A coadaptive 1.8 1.8 B coadaptive 2.7 7.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 2.4584 disease 3 +109 Fitness: 8.4692 Genotype: Fch1: A coadaptive 3.7 9.1 B coadaptive 1.3 6.3 C disease 1 1 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.4692 disease 2.5 +110 Fitness: 8.4692 Genotype: Fch1: A coadaptive 3.7 9.1 B coadaptive 1.3 6.3 C disease 1 1 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.4692 disease 2.5 +111 Fitness: 8.4692 Genotype: Fch1: A coadaptive 3.7 9.1 B coadaptive 1.3 6.3 C disease 1 1 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.4692 disease 2.5 +112 Fitness: 12.4562 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 5.4 5.7 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.4562 disease 2.5 +113 Fitness: 12.4562 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 5.4 5.7 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.4562 disease 2.5 +114 Fitness: 12.4562 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 5.4 5.7 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.4562 disease 2.5 +115 Fitness: 14.7383 Genotype: Fch1: A coadaptive 4.1 8.6 B coadaptive 4 8.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.7383 disease 2.5 +116 Fitness: 14.7383 Genotype: Fch1: A coadaptive 4.1 8.6 B coadaptive 4 8.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.7383 disease 2.5 +117 Fitness: 14.7383 Genotype: Fch1: A coadaptive 4.1 8.6 B coadaptive 4 8.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.7383 disease 2.5 +118 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 3.4 B coadaptive 8.2 4 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +119 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 3.4 B coadaptive 8.2 4 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +120 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 3.4 B coadaptive 8.2 4 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +121 Fitness: 11.2453 Genotype: Fch1: A coadaptive 1.2 7.4 B coadaptive 3.2 6.7 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2453 disease 4 +122 Fitness: 11.2453 Genotype: Fch1: A coadaptive 1.2 7.4 B coadaptive 3.2 6.7 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2453 disease 4 +123 Fitness: 11.2453 Genotype: Fch1: A coadaptive 1.2 7.4 B coadaptive 3.2 6.7 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2453 disease 4 +124 Fitness: 12.6359 Genotype: Fch1: A coadaptive 7.5 7 B coadaptive 7.9 3.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 12.6359 disease 3 +125 Fitness: 12.6359 Genotype: Fch1: A coadaptive 7.5 7 B coadaptive 7.9 3.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 12.6359 disease 3 +126 Fitness: 12.6359 Genotype: Fch1: A coadaptive 7.5 7 B coadaptive 7.9 3.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 12.6359 disease 3 +127 Fitness: 13.4709 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 7.3 4.5 C disease 1 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 13.4709 disease 3 +128 Fitness: 13.4709 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 7.3 4.5 C disease 1 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 13.4709 disease 3 +129 Fitness: 13.4709 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 7.3 4.5 C disease 1 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 13.4709 disease 3 +130 Fitness: 0 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 9.3 7.5 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +131 Fitness: 0 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 9.3 7.5 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +132 Fitness: 0 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 9.3 7.5 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +133 Fitness: 12.2048 Genotype: Fch1: A coadaptive 7.8 3.7 B coadaptive 3.4 5.9 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.2048 disease 4 +134 Fitness: 12.2048 Genotype: Fch1: A coadaptive 7.8 3.7 B coadaptive 3.4 5.9 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.2048 disease 4 +135 Fitness: 12.2048 Genotype: Fch1: A coadaptive 7.8 3.7 B coadaptive 3.4 5.9 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.2048 disease 4 +136 Fitness: 2.36538 Genotype: Fch1: A coadaptive 1 1.6 B coadaptive 4.4 2.3 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 2.36538 disease 3 +137 Fitness: 2.36538 Genotype: Fch1: A coadaptive 1 1.6 B coadaptive 4.4 2.3 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 2.36538 disease 3 +138 Fitness: 2.36538 Genotype: Fch1: A coadaptive 1 1.6 B coadaptive 4.4 2.3 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 2.36538 disease 3 +139 Fitness: 7.5267 Genotype: Fch1: A coadaptive 9.5 9.1 B coadaptive 4.6 9.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 7.5267 disease 3 +140 Fitness: 7.5267 Genotype: Fch1: A coadaptive 9.5 9.1 B coadaptive 4.6 9.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 7.5267 disease 3 +141 Fitness: 7.5267 Genotype: Fch1: A coadaptive 9.5 9.1 B coadaptive 4.6 9.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 7.5267 disease 3 +142 Fitness: 11.5612 Genotype: Fch1: A coadaptive 6 2.8 B coadaptive 3.7 7.7 C disease 0 0 D disease 0 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 11.5612 disease 2.5 +143 Fitness: 11.5612 Genotype: Fch1: A coadaptive 6 2.8 B coadaptive 3.7 7.7 C disease 0 0 D disease 0 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 11.5612 disease 2.5 +144 Fitness: 11.5612 Genotype: Fch1: A coadaptive 6 2.8 B coadaptive 3.7 7.7 C disease 0 0 D disease 0 1 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 11.5612 disease 2.5 +145 Fitness: 12.3132 Genotype: Fch1: A coadaptive 4.2 5.2 B coadaptive 3 8.6 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.3132 disease 3 +146 Fitness: 12.3132 Genotype: Fch1: A coadaptive 4.2 5.2 B coadaptive 3 8.6 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.3132 disease 3 +147 Fitness: 12.3132 Genotype: Fch1: A coadaptive 4.2 5.2 B coadaptive 3 8.6 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.3132 disease 3 +148 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.3 B coadaptive 7 5 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +149 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.3 B coadaptive 7 5 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +150 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.3 B coadaptive 7 5 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +151 Fitness: 5.07877 Genotype: Fch1: A coadaptive 6.8 8.9 B coadaptive 2 6.4 C disease 0 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 5.07877 disease 2 +152 Fitness: 5.07877 Genotype: Fch1: A coadaptive 6.8 8.9 B coadaptive 2 6.4 C disease 0 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 5.07877 disease 2 +153 Fitness: 5.07877 Genotype: Fch1: A coadaptive 6.8 8.9 B coadaptive 2 6.4 C disease 0 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 5.07877 disease 2 +154 Fitness: 12.6359 Genotype: Fch1: A coadaptive 8.7 5.8 B coadaptive 6.3 4.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.6359 disease 2.5 +155 Fitness: 12.6359 Genotype: Fch1: A coadaptive 8.7 5.8 B coadaptive 6.3 4.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.6359 disease 2.5 +156 Fitness: 12.6359 Genotype: Fch1: A coadaptive 8.7 5.8 B coadaptive 6.3 4.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.6359 disease 2.5 +157 Fitness: 2.23256 Genotype: Fch1: A coadaptive 1.2 1.9 B coadaptive 2.9 6.1 C disease 1 0 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.23256 disease 2.5 +158 Fitness: 2.23256 Genotype: Fch1: A coadaptive 1.2 1.9 B coadaptive 2.9 6.1 C disease 1 0 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.23256 disease 2.5 +159 Fitness: 2.23256 Genotype: Fch1: A coadaptive 1.2 1.9 B coadaptive 2.9 6.1 C disease 1 0 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.23256 disease 2.5 +160 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 3.9 B coadaptive 3.9 0.2 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +161 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 3.9 B coadaptive 3.9 0.2 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +162 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 3.9 B coadaptive 3.9 0.2 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +163 Fitness: 4.92213 Genotype: Fch1: A coadaptive 4.2 0.1 B coadaptive 5.4 2.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.92213 disease 2.5 +164 Fitness: 4.92213 Genotype: Fch1: A coadaptive 4.2 0.1 B coadaptive 5.4 2.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.92213 disease 2.5 +165 Fitness: 4.92213 Genotype: Fch1: A coadaptive 4.2 0.1 B coadaptive 5.4 2.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.92213 disease 2.5 +166 Fitness: 10.3539 Genotype: Fch1: A coadaptive 3.9 8.1 B coadaptive 6.6 1.6 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.3539 disease 4 +167 Fitness: 10.3539 Genotype: Fch1: A coadaptive 3.9 8.1 B coadaptive 6.6 1.6 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.3539 disease 4 +168 Fitness: 10.3539 Genotype: Fch1: A coadaptive 3.9 8.1 B coadaptive 6.6 1.6 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.3539 disease 4 +169 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 3.1 B coadaptive 1.5 2.2 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +170 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 3.1 B coadaptive 1.5 2.2 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +171 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 3.1 B coadaptive 1.5 2.2 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +172 Fitness: 10.1831 Genotype: Fch1: A coadaptive 1.9 8.4 B coadaptive 6.6 8.7 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.1831 disease 2 +173 Fitness: 10.1831 Genotype: Fch1: A coadaptive 1.9 8.4 B coadaptive 6.6 8.7 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.1831 disease 2 +174 Fitness: 10.1831 Genotype: Fch1: A coadaptive 1.9 8.4 B coadaptive 6.6 8.7 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 10.1831 disease 2 +175 Fitness: 7.58755 Genotype: Fch1: A coadaptive 3.8 2.8 B coadaptive 3.2 8.4 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.58755 disease 4 +176 Fitness: 7.58755 Genotype: Fch1: A coadaptive 3.8 2.8 B coadaptive 3.2 8.4 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.58755 disease 4 +177 Fitness: 7.58755 Genotype: Fch1: A coadaptive 3.8 2.8 B coadaptive 3.2 8.4 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.58755 disease 4 +178 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 9.8 B coadaptive 3.1 2.3 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +179 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 9.8 B coadaptive 3.1 2.3 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +180 Fitness: 0 Genotype: Fch1: A coadaptive 8.2 9.8 B coadaptive 3.1 2.3 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +181 Fitness: 7.21175 Genotype: Fch1: A coadaptive 9.4 8 B coadaptive 7.6 3.7 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.21175 disease 3.5 +182 Fitness: 7.21175 Genotype: Fch1: A coadaptive 9.4 8 B coadaptive 7.6 3.7 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.21175 disease 3.5 +183 Fitness: 7.21175 Genotype: Fch1: A coadaptive 9.4 8 B coadaptive 7.6 3.7 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.21175 disease 3.5 +184 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1 B coadaptive 2.7 8.2 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +185 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1 B coadaptive 2.7 8.2 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +186 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1 B coadaptive 2.7 8.2 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +187 Fitness: 4.62367 Genotype: Fch1: A coadaptive 0.5 8 B coadaptive 2.1 2.1 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.62367 disease 3.5 +188 Fitness: 4.62367 Genotype: Fch1: A coadaptive 0.5 8 B coadaptive 2.1 2.1 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.62367 disease 3.5 +189 Fitness: 4.62367 Genotype: Fch1: A coadaptive 0.5 8 B coadaptive 2.1 2.1 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.62367 disease 3.5 +190 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 0 B coadaptive 5 10 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +191 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 0 B coadaptive 5 10 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +192 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 0 B coadaptive 5 10 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +193 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 7.3 B coadaptive 9.6 9.9 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +194 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 7.3 B coadaptive 9.6 9.9 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +195 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 7.3 B coadaptive 9.6 9.9 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +196 Fitness: 1.09825 Genotype: Fch1: A coadaptive 1.8 0.6 B coadaptive 2.5 6.1 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 1.09825 disease 3 +197 Fitness: 1.09825 Genotype: Fch1: A coadaptive 1.8 0.6 B coadaptive 2.5 6.1 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 1.09825 disease 3 +198 Fitness: 1.09825 Genotype: Fch1: A coadaptive 1.8 0.6 B coadaptive 2.5 6.1 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 1.09825 disease 3 +199 Fitness: 14.7228 Genotype: Fch1: A coadaptive 8.3 5.4 B coadaptive 7.1 5.9 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 14.7228 disease 3 +200 Fitness: 14.7228 Genotype: Fch1: A coadaptive 8.3 5.4 B coadaptive 7.1 5.9 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 14.7228 disease 3 +201 Fitness: 14.7228 Genotype: Fch1: A coadaptive 8.3 5.4 B coadaptive 7.1 5.9 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 14.7228 disease 3 +202 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0 B coadaptive 9.9 10 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +203 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0 B coadaptive 9.9 10 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +204 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0 B coadaptive 9.9 10 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +205 Fitness: 12.7902 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 1.9 8.5 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 12.7902 disease 2.5 +206 Fitness: 12.7902 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 1.9 8.5 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 12.7902 disease 2.5 +207 Fitness: 12.7902 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 1.9 8.5 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 12.7902 disease 2.5 +208 Fitness: 13.6904 Genotype: Fch1: A coadaptive 1.7 9.1 B coadaptive 4.3 8.1 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.6904 disease 2.5 +209 Fitness: 13.6904 Genotype: Fch1: A coadaptive 1.7 9.1 B coadaptive 4.3 8.1 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.6904 disease 2.5 +210 Fitness: 13.6904 Genotype: Fch1: A coadaptive 1.7 9.1 B coadaptive 4.3 8.1 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 13.6904 disease 2.5 +211 Fitness: 2.19735 Genotype: Fch1: A coadaptive 4.6 0.3 B coadaptive 2.7 9.9 C disease 1 1 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.19735 disease 3.5 +212 Fitness: 2.19735 Genotype: Fch1: A coadaptive 4.6 0.3 B coadaptive 2.7 9.9 C disease 1 1 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.19735 disease 3.5 +213 Fitness: 2.19735 Genotype: Fch1: A coadaptive 4.6 0.3 B coadaptive 2.7 9.9 C disease 1 1 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.19735 disease 3.5 +214 Fitness: 13.1841 Genotype: Fch1: A coadaptive 6.2 6.2 B coadaptive 6.9 3.4 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.1841 disease 1.5 +215 Fitness: 13.1841 Genotype: Fch1: A coadaptive 6.2 6.2 B coadaptive 6.9 3.4 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.1841 disease 1.5 +216 Fitness: 13.1841 Genotype: Fch1: A coadaptive 6.2 6.2 B coadaptive 6.9 3.4 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.1841 disease 1.5 +217 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 0 B coadaptive 10 7.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +218 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 0 B coadaptive 10 7.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +219 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 0 B coadaptive 10 7.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +220 Fitness: 0.814699 Genotype: Fch1: A coadaptive 6.9 0.9 B coadaptive 8.1 8.5 C disease 1 1 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0.814699 disease 2.5 +221 Fitness: 0.814699 Genotype: Fch1: A coadaptive 6.9 0.9 B coadaptive 8.1 8.5 C disease 1 1 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0.814699 disease 2.5 +222 Fitness: 0.814699 Genotype: Fch1: A coadaptive 6.9 0.9 B coadaptive 8.1 8.5 C disease 1 1 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0.814699 disease 2.5 +223 Fitness: 0.995082 Genotype: Fch1: A coadaptive 10 7 B coadaptive 2.2 6.1 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0.995082 disease 2 +224 Fitness: 0.995082 Genotype: Fch1: A coadaptive 10 7 B coadaptive 2.2 6.1 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0.995082 disease 2 +225 Fitness: 0.995082 Genotype: Fch1: A coadaptive 10 7 B coadaptive 2.2 6.1 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0.995082 disease 2 +226 Fitness: 1.38684 Genotype: Fch1: A coadaptive 5.7 0.6 B coadaptive 0.3 1.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 1.38684 disease 3 +227 Fitness: 1.38684 Genotype: Fch1: A coadaptive 5.7 0.6 B coadaptive 0.3 1.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 1.38684 disease 3 +228 Fitness: 1.38684 Genotype: Fch1: A coadaptive 5.7 0.6 B coadaptive 0.3 1.6 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 1.38684 disease 3 +229 Fitness: 9.59272 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 3.3 4.4 C disease 0 0 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 9.59272 disease 2 +230 Fitness: 9.59272 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 3.3 4.4 C disease 0 0 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 9.59272 disease 2 +231 Fitness: 9.59272 Genotype: Fch1: A coadaptive 2.4 9.4 B coadaptive 3.3 4.4 C disease 0 0 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 9.59272 disease 2 +232 Fitness: 14.7395 Genotype: Fch1: A coadaptive 5.7 7.4 B coadaptive 3.8 8.9 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.7395 disease 2.5 +233 Fitness: 14.7395 Genotype: Fch1: A coadaptive 5.7 7.4 B coadaptive 3.8 8.9 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.7395 disease 2.5 +234 Fitness: 14.7395 Genotype: Fch1: A coadaptive 5.7 7.4 B coadaptive 3.8 8.9 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.7395 disease 2.5 +235 Fitness: 14.6096 Genotype: Fch1: A coadaptive 7.2 6.1 B coadaptive 7 5.4 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 14.6096 disease 3.5 +236 Fitness: 14.6096 Genotype: Fch1: A coadaptive 7.2 6.1 B coadaptive 7 5.4 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 14.6096 disease 3.5 +237 Fitness: 14.6096 Genotype: Fch1: A coadaptive 7.2 6.1 B coadaptive 7 5.4 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 14.6096 disease 3.5 +238 Fitness: 11.3803 Genotype: Fch1: A coadaptive 6.2 6.5 B coadaptive 2.2 6.9 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.3803 disease 3.5 +239 Fitness: 11.3803 Genotype: Fch1: A coadaptive 6.2 6.5 B coadaptive 2.2 6.9 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.3803 disease 3.5 +240 Fitness: 11.3803 Genotype: Fch1: A coadaptive 6.2 6.5 B coadaptive 2.2 6.9 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.3803 disease 3.5 +241 Fitness: 9.56176 Genotype: Fch1: A coadaptive 6.4 0.9 B coadaptive 1.1 9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.56176 disease 1.5 +242 Fitness: 9.56176 Genotype: Fch1: A coadaptive 6.4 0.9 B coadaptive 1.1 9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.56176 disease 1.5 +243 Fitness: 9.56176 Genotype: Fch1: A coadaptive 6.4 0.9 B coadaptive 1.1 9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.56176 disease 1.5 +244 Fitness: 14.5554 Genotype: Fch1: A coadaptive 3.4 9.7 B coadaptive 4 8.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.5554 disease 3 +245 Fitness: 14.5554 Genotype: Fch1: A coadaptive 3.4 9.7 B coadaptive 4 8.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.5554 disease 3 +246 Fitness: 14.5554 Genotype: Fch1: A coadaptive 3.4 9.7 B coadaptive 4 8.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.5554 disease 3 +247 Fitness: 10.5318 Genotype: Fch1: A coadaptive 6.6 8.9 B coadaptive 9.7 1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 10.5318 disease 3.5 +248 Fitness: 10.5318 Genotype: Fch1: A coadaptive 6.6 8.9 B coadaptive 9.7 1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 10.5318 disease 3.5 +249 Fitness: 10.5318 Genotype: Fch1: A coadaptive 6.6 8.9 B coadaptive 9.7 1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 10.5318 disease 3.5 +250 Fitness: 8.48329 Genotype: Fch1: A coadaptive 3.7 3.1 B coadaptive 5.9 2.2 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.48329 disease 2.5 +251 Fitness: 8.48329 Genotype: Fch1: A coadaptive 3.7 3.1 B coadaptive 5.9 2.2 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.48329 disease 2.5 +252 Fitness: 8.48329 Genotype: Fch1: A coadaptive 3.7 3.1 B coadaptive 5.9 2.2 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.48329 disease 2.5 +253 Fitness: 8.9792 Genotype: Fch1: A coadaptive 2.4 5.5 B coadaptive 8 4.9 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.9792 disease 2.5 +254 Fitness: 8.9792 Genotype: Fch1: A coadaptive 2.4 5.5 B coadaptive 8 4.9 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.9792 disease 2.5 +255 Fitness: 8.9792 Genotype: Fch1: A coadaptive 2.4 5.5 B coadaptive 8 4.9 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.9792 disease 2.5 +256 Fitness: 7.2166 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 5 1.3 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.2166 disease 2.5 +257 Fitness: 7.2166 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 5 1.3 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.2166 disease 2.5 +258 Fitness: 7.2166 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 5 1.3 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.2166 disease 2.5 +259 Fitness: 10.787 Genotype: Fch1: A coadaptive 5.8 6.8 B coadaptive 4.8 3.9 C disease 0 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 10.787 disease 3 +260 Fitness: 10.787 Genotype: Fch1: A coadaptive 5.8 6.8 B coadaptive 4.8 3.9 C disease 0 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 10.787 disease 3 +261 Fitness: 10.787 Genotype: Fch1: A coadaptive 5.8 6.8 B coadaptive 4.8 3.9 C disease 0 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 10.787 disease 3 +262 Fitness: 2.26078 Genotype: Fch1: A coadaptive 3.3 1.8 B coadaptive 1.9 0.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 2.26078 disease 2 +263 Fitness: 2.26078 Genotype: Fch1: A coadaptive 3.3 1.8 B coadaptive 1.9 0.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 2.26078 disease 2 +264 Fitness: 2.26078 Genotype: Fch1: A coadaptive 3.3 1.8 B coadaptive 1.9 0.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 2.26078 disease 2 +265 Fitness: 13.2297 Genotype: Fch1: A coadaptive 3.1 8.1 B coadaptive 2.2 8.1 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.2297 disease 3 +266 Fitness: 13.2297 Genotype: Fch1: A coadaptive 3.1 8.1 B coadaptive 2.2 8.1 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.2297 disease 3 +267 Fitness: 13.2297 Genotype: Fch1: A coadaptive 3.1 8.1 B coadaptive 2.2 8.1 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 13.2297 disease 3 +268 Fitness: 13.2157 Genotype: Fch1: A coadaptive 9.4 1 B coadaptive 7.6 3.3 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.2157 disease 3.5 +269 Fitness: 13.2157 Genotype: Fch1: A coadaptive 9.4 1 B coadaptive 7.6 3.3 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.2157 disease 3.5 +270 Fitness: 13.2157 Genotype: Fch1: A coadaptive 9.4 1 B coadaptive 7.6 3.3 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.2157 disease 3.5 +271 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.9 B coadaptive 8.2 5.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +272 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.9 B coadaptive 8.2 5.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +273 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.9 B coadaptive 8.2 5.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +274 Fitness: 10.5768 Genotype: Fch1: A coadaptive 8.4 7.5 B coadaptive 8.7 9 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.5768 disease 2.5 +275 Fitness: 10.5768 Genotype: Fch1: A coadaptive 8.4 7.5 B coadaptive 8.7 9 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.5768 disease 2.5 +276 Fitness: 10.5768 Genotype: Fch1: A coadaptive 8.4 7.5 B coadaptive 8.7 9 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.5768 disease 2.5 +277 Fitness: 11.0444 Genotype: Fch1: A coadaptive 2.5 9.1 B coadaptive 7.9 8.1 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.0444 disease 3 +278 Fitness: 11.0444 Genotype: Fch1: A coadaptive 2.5 9.1 B coadaptive 7.9 8.1 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.0444 disease 3 +279 Fitness: 11.0444 Genotype: Fch1: A coadaptive 2.5 9.1 B coadaptive 7.9 8.1 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.0444 disease 3 +280 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 3.3 B coadaptive 0.5 0.3 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +281 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 3.3 B coadaptive 0.5 0.3 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +282 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 3.3 B coadaptive 0.5 0.3 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +283 Fitness: 4.9447 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 1.8 7.6 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 4.9447 disease 2.5 +284 Fitness: 4.9447 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 1.8 7.6 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 4.9447 disease 2.5 +285 Fitness: 4.9447 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 1.8 7.6 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 4.9447 disease 2.5 +286 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 0.9 B coadaptive 3.3 7.9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +287 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 0.9 B coadaptive 3.3 7.9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +288 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 0.9 B coadaptive 3.3 7.9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +289 Fitness: 7.42349 Genotype: Fch1: A coadaptive 9.4 1.9 B coadaptive 3 3.4 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.42349 disease 3 +290 Fitness: 7.42349 Genotype: Fch1: A coadaptive 9.4 1.9 B coadaptive 3 3.4 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.42349 disease 3 +291 Fitness: 7.42349 Genotype: Fch1: A coadaptive 9.4 1.9 B coadaptive 3 3.4 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 7.42349 disease 3 +292 Fitness: 2.62909 Genotype: Fch1: A coadaptive 6.8 3.9 B coadaptive 8.4 10 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 2.62909 disease 3.5 +293 Fitness: 2.62909 Genotype: Fch1: A coadaptive 6.8 3.9 B coadaptive 8.4 10 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 2.62909 disease 3.5 +294 Fitness: 2.62909 Genotype: Fch1: A coadaptive 6.8 3.9 B coadaptive 8.4 10 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 2.62909 disease 3.5 +295 Fitness: 7.37838 Genotype: Fch1: A coadaptive 3.7 2.9 B coadaptive 1.6 5.1 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.37838 disease 2.5 +296 Fitness: 7.37838 Genotype: Fch1: A coadaptive 3.7 2.9 B coadaptive 1.6 5.1 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.37838 disease 2.5 +297 Fitness: 7.37838 Genotype: Fch1: A coadaptive 3.7 2.9 B coadaptive 1.6 5.1 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.37838 disease 2.5 +298 Fitness: 0.847569 Genotype: Fch1: A coadaptive 3.7 6.3 B coadaptive 1.6 1.3 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.847569 disease 3 +299 Fitness: 0.847569 Genotype: Fch1: A coadaptive 3.7 6.3 B coadaptive 1.6 1.3 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.847569 disease 3 +300 Fitness: 0.847569 Genotype: Fch1: A coadaptive 3.7 6.3 B coadaptive 1.6 1.3 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.847569 disease 3 +301 Fitness: 2.21349 Genotype: Fch1: A coadaptive 1.8 1.9 B coadaptive 0.1 2.8 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.21349 disease 2.5 +302 Fitness: 2.21349 Genotype: Fch1: A coadaptive 1.8 1.9 B coadaptive 0.1 2.8 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.21349 disease 2.5 +303 Fitness: 2.21349 Genotype: Fch1: A coadaptive 1.8 1.9 B coadaptive 0.1 2.8 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.21349 disease 2.5 +304 Fitness: 14.616 Genotype: Fch1: A coadaptive 8.7 3.9 B coadaptive 3.6 10 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.616 disease 1.5 +305 Fitness: 14.616 Genotype: Fch1: A coadaptive 8.7 3.9 B coadaptive 3.6 10 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.616 disease 1.5 +306 Fitness: 14.616 Genotype: Fch1: A coadaptive 8.7 3.9 B coadaptive 3.6 10 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.616 disease 1.5 +307 Fitness: 4.32236 Genotype: Fch1: A coadaptive 0.9 5.4 B coadaptive 5.6 7.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.32236 disease 3 +308 Fitness: 4.32236 Genotype: Fch1: A coadaptive 0.9 5.4 B coadaptive 5.6 7.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.32236 disease 3 +309 Fitness: 4.32236 Genotype: Fch1: A coadaptive 0.9 5.4 B coadaptive 5.6 7.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.32236 disease 3 +310 Fitness: 11.8195 Genotype: Fch1: A coadaptive 9.5 1.8 B coadaptive 8 7.3 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.8195 disease 2.5 +311 Fitness: 11.8195 Genotype: Fch1: A coadaptive 9.5 1.8 B coadaptive 8 7.3 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.8195 disease 2.5 +312 Fitness: 11.8195 Genotype: Fch1: A coadaptive 9.5 1.8 B coadaptive 8 7.3 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.8195 disease 2.5 +313 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.9 B coadaptive 7.9 4.5 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +314 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.9 B coadaptive 7.9 4.5 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +315 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.9 B coadaptive 7.9 4.5 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +316 Fitness: 12.0225 Genotype: Fch1: A coadaptive 7.5 5 B coadaptive 6.3 9.8 C disease 0 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.0225 disease 3.5 +317 Fitness: 12.0225 Genotype: Fch1: A coadaptive 7.5 5 B coadaptive 6.3 9.8 C disease 0 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.0225 disease 3.5 +318 Fitness: 12.0225 Genotype: Fch1: A coadaptive 7.5 5 B coadaptive 6.3 9.8 C disease 0 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.0225 disease 3.5 +319 Fitness: 3.84199 Genotype: Fch1: A coadaptive 1.9 1.7 B coadaptive 2.8 3.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.84199 disease 3.5 +320 Fitness: 3.84199 Genotype: Fch1: A coadaptive 1.9 1.7 B coadaptive 2.8 3.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.84199 disease 3.5 +321 Fitness: 3.84199 Genotype: Fch1: A coadaptive 1.9 1.7 B coadaptive 2.8 3.7 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.84199 disease 3.5 +322 Fitness: 7.92106 Genotype: Fch1: A coadaptive 5.4 5.7 B coadaptive 7.9 9.1 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 7.92106 disease 3.5 +323 Fitness: 7.92106 Genotype: Fch1: A coadaptive 5.4 5.7 B coadaptive 7.9 9.1 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 7.92106 disease 3.5 +324 Fitness: 7.92106 Genotype: Fch1: A coadaptive 5.4 5.7 B coadaptive 7.9 9.1 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 7.92106 disease 3.5 +325 Fitness: 3.23988 Genotype: Fch1: A coadaptive 3.2 7.6 B coadaptive 3.2 1.1 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 3.23988 disease 3.5 +326 Fitness: 3.23988 Genotype: Fch1: A coadaptive 3.2 7.6 B coadaptive 3.2 1.1 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 3.23988 disease 3.5 +327 Fitness: 3.23988 Genotype: Fch1: A coadaptive 3.2 7.6 B coadaptive 3.2 1.1 C disease 0 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 3.23988 disease 3.5 +328 Fitness: 6.75231 Genotype: Fch1: A coadaptive 5.7 0.3 B coadaptive 9.1 2 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 6.75231 disease 3 +329 Fitness: 6.75231 Genotype: Fch1: A coadaptive 5.7 0.3 B coadaptive 9.1 2 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 6.75231 disease 3 +330 Fitness: 6.75231 Genotype: Fch1: A coadaptive 5.7 0.3 B coadaptive 9.1 2 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 6.75231 disease 3 +331 Fitness: 11.9938 Genotype: Fch1: A coadaptive 6.3 2.8 B coadaptive 3.2 7.7 C disease 0 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.9938 disease 3 +332 Fitness: 11.9938 Genotype: Fch1: A coadaptive 6.3 2.8 B coadaptive 3.2 7.7 C disease 0 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.9938 disease 3 +333 Fitness: 11.9938 Genotype: Fch1: A coadaptive 6.3 2.8 B coadaptive 3.2 7.7 C disease 0 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.9938 disease 3 +334 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3.9 B coadaptive 8 9.4 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +335 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3.9 B coadaptive 8 9.4 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +336 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3.9 B coadaptive 8 9.4 C disease 0.5 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +337 Fitness: 6.85463 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 3.7 8 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.85463 disease 2.5 +338 Fitness: 6.85463 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 3.7 8 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.85463 disease 2.5 +339 Fitness: 6.85463 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 3.7 8 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.85463 disease 2.5 +340 Fitness: 13.0664 Genotype: Fch1: A coadaptive 1.9 8.8 B coadaptive 7.8 2.5 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.0664 disease 4 +341 Fitness: 13.0664 Genotype: Fch1: A coadaptive 1.9 8.8 B coadaptive 7.8 2.5 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.0664 disease 4 +342 Fitness: 13.0664 Genotype: Fch1: A coadaptive 1.9 8.8 B coadaptive 7.8 2.5 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.0664 disease 4 +343 Fitness: 11.7755 Genotype: Fch1: A coadaptive 7.3 5.3 B coadaptive 9 7.3 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.7755 disease 3 +344 Fitness: 11.7755 Genotype: Fch1: A coadaptive 7.3 5.3 B coadaptive 9 7.3 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.7755 disease 3 +345 Fitness: 11.7755 Genotype: Fch1: A coadaptive 7.3 5.3 B coadaptive 9 7.3 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.7755 disease 3 +346 Fitness: 6.17929 Genotype: Fch1: A coadaptive 5.3 7 B coadaptive 0.6 5.7 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 6.17929 disease 2 +347 Fitness: 6.17929 Genotype: Fch1: A coadaptive 5.3 7 B coadaptive 0.6 5.7 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 6.17929 disease 2 +348 Fitness: 6.17929 Genotype: Fch1: A coadaptive 5.3 7 B coadaptive 0.6 5.7 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 6.17929 disease 2 +349 Fitness: 10.8648 Genotype: Fch1: A coadaptive 6.8 1.9 B coadaptive 4.7 7.8 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 10.8648 disease 3.5 +350 Fitness: 10.8648 Genotype: Fch1: A coadaptive 6.8 1.9 B coadaptive 4.7 7.8 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 10.8648 disease 3.5 +351 Fitness: 10.8648 Genotype: Fch1: A coadaptive 6.8 1.9 B coadaptive 4.7 7.8 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 10.8648 disease 3.5 +352 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 9 B coadaptive 2.7 0.6 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +353 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 9 B coadaptive 2.7 0.6 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +354 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 9 B coadaptive 2.7 0.6 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +355 Fitness: 12.4055 Genotype: Fch1: A coadaptive 6.8 7.3 B coadaptive 7.6 9 C disease 0 0.5 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.4055 disease 2.5 +356 Fitness: 12.4055 Genotype: Fch1: A coadaptive 6.8 7.3 B coadaptive 7.6 9 C disease 0 0.5 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.4055 disease 2.5 +357 Fitness: 12.4055 Genotype: Fch1: A coadaptive 6.8 7.3 B coadaptive 7.6 9 C disease 0 0.5 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.4055 disease 2.5 +358 Fitness: 4.36515 Genotype: Fch1: A coadaptive 4 0.4 B coadaptive 8.9 0.9 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.36515 disease 3 +359 Fitness: 4.36515 Genotype: Fch1: A coadaptive 4 0.4 B coadaptive 8.9 0.9 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.36515 disease 3 +360 Fitness: 4.36515 Genotype: Fch1: A coadaptive 4 0.4 B coadaptive 8.9 0.9 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.36515 disease 3 +361 Fitness: 13.4302 Genotype: Fch1: A coadaptive 5.3 5.2 B coadaptive 8.5 2.9 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.4302 disease 2.5 +362 Fitness: 13.4302 Genotype: Fch1: A coadaptive 5.3 5.2 B coadaptive 8.5 2.9 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.4302 disease 2.5 +363 Fitness: 13.4302 Genotype: Fch1: A coadaptive 5.3 5.2 B coadaptive 8.5 2.9 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.4302 disease 2.5 +364 Fitness: 3.67596 Genotype: Fch1: A coadaptive 7.2 6.9 B coadaptive 4 2.5 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 3.67596 disease 2.5 +365 Fitness: 3.67596 Genotype: Fch1: A coadaptive 7.2 6.9 B coadaptive 4 2.5 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 3.67596 disease 2.5 +366 Fitness: 3.67596 Genotype: Fch1: A coadaptive 7.2 6.9 B coadaptive 4 2.5 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 3.67596 disease 2.5 +367 Fitness: 11.2297 Genotype: Fch1: A coadaptive 1.5 7.3 B coadaptive 9.1 0.3 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.2297 disease 4 +368 Fitness: 11.2297 Genotype: Fch1: A coadaptive 1.5 7.3 B coadaptive 9.1 0.3 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.2297 disease 4 +369 Fitness: 11.2297 Genotype: Fch1: A coadaptive 1.5 7.3 B coadaptive 9.1 0.3 C disease 0 1 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.2297 disease 4 +370 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 0.3 B coadaptive 6.1 3.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +371 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 0.3 B coadaptive 6.1 3.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +372 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 0.3 B coadaptive 6.1 3.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +373 Fitness: 6.02545 Genotype: Fch1: A coadaptive 5.2 0.2 B coadaptive 0.5 9.9 C disease 0 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.02545 disease 1.5 +374 Fitness: 6.02545 Genotype: Fch1: A coadaptive 5.2 0.2 B coadaptive 0.5 9.9 C disease 0 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.02545 disease 1.5 +375 Fitness: 6.02545 Genotype: Fch1: A coadaptive 5.2 0.2 B coadaptive 0.5 9.9 C disease 0 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.02545 disease 1.5 +376 Fitness: 12.1012 Genotype: Fch1: A coadaptive 7.7 7.1 B coadaptive 8.7 8.2 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.1012 disease 3 +377 Fitness: 12.1012 Genotype: Fch1: A coadaptive 7.7 7.1 B coadaptive 8.7 8.2 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.1012 disease 3 +378 Fitness: 12.1012 Genotype: Fch1: A coadaptive 7.7 7.1 B coadaptive 8.7 8.2 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.1012 disease 3 +379 Fitness: 6.94682 Genotype: Fch1: A coadaptive 3 3.9 B coadaptive 2.3 3.7 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.94682 disease 3 +380 Fitness: 6.94682 Genotype: Fch1: A coadaptive 3 3.9 B coadaptive 2.3 3.7 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.94682 disease 3 +381 Fitness: 6.94682 Genotype: Fch1: A coadaptive 3 3.9 B coadaptive 2.3 3.7 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.94682 disease 3 +382 Fitness: 11.0662 Genotype: Fch1: A coadaptive 2.7 5.7 B coadaptive 4.8 5.3 C disease 1 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.0662 disease 4 +383 Fitness: 11.0662 Genotype: Fch1: A coadaptive 2.7 5.7 B coadaptive 4.8 5.3 C disease 1 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.0662 disease 4 +384 Fitness: 11.0662 Genotype: Fch1: A coadaptive 2.7 5.7 B coadaptive 4.8 5.3 C disease 1 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.0662 disease 4 +385 Fitness: 0 Genotype: Fch1: A coadaptive 10 6.2 B coadaptive 5.2 0.6 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +386 Fitness: 0 Genotype: Fch1: A coadaptive 10 6.2 B coadaptive 5.2 0.6 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +387 Fitness: 0 Genotype: Fch1: A coadaptive 10 6.2 B coadaptive 5.2 0.6 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +388 Fitness: 11.0662 Genotype: Fch1: A coadaptive 3 5.4 B coadaptive 1.5 8.6 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 11.0662 disease 3 +389 Fitness: 11.0662 Genotype: Fch1: A coadaptive 3 5.4 B coadaptive 1.5 8.6 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 11.0662 disease 3 +390 Fitness: 11.0662 Genotype: Fch1: A coadaptive 3 5.4 B coadaptive 1.5 8.6 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 11.0662 disease 3 +391 Fitness: 6.38864 Genotype: Fch1: A coadaptive 4.7 1 B coadaptive 4.3 2.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 6.38864 disease 2.5 +392 Fitness: 6.38864 Genotype: Fch1: A coadaptive 4.7 1 B coadaptive 4.3 2.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 6.38864 disease 2.5 +393 Fitness: 6.38864 Genotype: Fch1: A coadaptive 4.7 1 B coadaptive 4.3 2.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 6.38864 disease 2.5 +394 Fitness: 4.08909 Genotype: Fch1: A coadaptive 2.5 2.4 B coadaptive 4.7 6.6 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.08909 disease 3 +395 Fitness: 4.08909 Genotype: Fch1: A coadaptive 2.5 2.4 B coadaptive 4.7 6.6 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.08909 disease 3 +396 Fitness: 4.08909 Genotype: Fch1: A coadaptive 2.5 2.4 B coadaptive 4.7 6.6 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.08909 disease 3 +397 Fitness: 0.495113 Genotype: Fch1: A coadaptive 2.4 0.3 B coadaptive 3.2 6.7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0.495113 disease 3 +398 Fitness: 0.495113 Genotype: Fch1: A coadaptive 2.4 0.3 B coadaptive 3.2 6.7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0.495113 disease 3 +399 Fitness: 0.495113 Genotype: Fch1: A coadaptive 2.4 0.3 B coadaptive 3.2 6.7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0.495113 disease 3 +400 Fitness: 2.85293 Genotype: Fch1: A coadaptive 1.2 4.7 B coadaptive 5.3 8.4 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 2.85293 disease 3 +401 Fitness: 2.85293 Genotype: Fch1: A coadaptive 1.2 4.7 B coadaptive 5.3 8.4 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 2.85293 disease 3 +402 Fitness: 2.85293 Genotype: Fch1: A coadaptive 1.2 4.7 B coadaptive 5.3 8.4 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 2.85293 disease 3 +403 Fitness: 14.5245 Genotype: Fch1: A coadaptive 6 8.5 B coadaptive 9 4.6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.5245 disease 1.5 +404 Fitness: 14.5245 Genotype: Fch1: A coadaptive 6 8.5 B coadaptive 9 4.6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.5245 disease 1.5 +405 Fitness: 14.5245 Genotype: Fch1: A coadaptive 6 8.5 B coadaptive 9 4.6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.5245 disease 1.5 +406 Fitness: 10.069 Genotype: Fch1: A coadaptive 6.8 1.5 B coadaptive 3.5 9.1 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.069 disease 2 +407 Fitness: 10.069 Genotype: Fch1: A coadaptive 6.8 1.5 B coadaptive 3.5 9.1 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.069 disease 2 +408 Fitness: 10.069 Genotype: Fch1: A coadaptive 6.8 1.5 B coadaptive 3.5 9.1 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.069 disease 2 +409 Fitness: 6.01875 Genotype: Fch1: A coadaptive 1.5 6.5 B coadaptive 3.3 1.7 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.01875 disease 1.5 +410 Fitness: 6.01875 Genotype: Fch1: A coadaptive 1.5 6.5 B coadaptive 3.3 1.7 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.01875 disease 1.5 +411 Fitness: 6.01875 Genotype: Fch1: A coadaptive 1.5 6.5 B coadaptive 3.3 1.7 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.01875 disease 1.5 +412 Fitness: 0.362844 Genotype: Fch1: A coadaptive 3.6 0.5 B coadaptive 6.3 6.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.362844 disease 2.5 +413 Fitness: 0.362844 Genotype: Fch1: A coadaptive 3.6 0.5 B coadaptive 6.3 6.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.362844 disease 2.5 +414 Fitness: 0.362844 Genotype: Fch1: A coadaptive 3.6 0.5 B coadaptive 6.3 6.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.362844 disease 2.5 +415 Fitness: 12.9899 Genotype: Fch1: A coadaptive 5.2 6.5 B coadaptive 2.9 7.1 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 12.9899 disease 3 +416 Fitness: 12.9899 Genotype: Fch1: A coadaptive 5.2 6.5 B coadaptive 2.9 7.1 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 12.9899 disease 3 +417 Fitness: 12.9899 Genotype: Fch1: A coadaptive 5.2 6.5 B coadaptive 2.9 7.1 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 12.9899 disease 3 +418 Fitness: 2.15497 Genotype: Fch1: A coadaptive 1.2 1.2 B coadaptive 2.9 3.2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.15497 disease 2 +419 Fitness: 2.15497 Genotype: Fch1: A coadaptive 1.2 1.2 B coadaptive 2.9 3.2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.15497 disease 2 +420 Fitness: 2.15497 Genotype: Fch1: A coadaptive 1.2 1.2 B coadaptive 2.9 3.2 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.15497 disease 2 +421 Fitness: 14.1812 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 6.1 6.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.1812 disease 2.5 +422 Fitness: 14.1812 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 6.1 6.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.1812 disease 2.5 +423 Fitness: 14.1812 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 6.1 6.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.1812 disease 2.5 +424 Fitness: 8.92451 Genotype: Fch1: A coadaptive 4.4 9.9 B coadaptive 1 7.8 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 8.92451 disease 3.5 +425 Fitness: 8.92451 Genotype: Fch1: A coadaptive 4.4 9.9 B coadaptive 1 7.8 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 8.92451 disease 3.5 +426 Fitness: 8.92451 Genotype: Fch1: A coadaptive 4.4 9.9 B coadaptive 1 7.8 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 8.92451 disease 3.5 +427 Fitness: 13.6698 Genotype: Fch1: A coadaptive 5.1 7.4 B coadaptive 6.1 4.7 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6698 disease 3 +428 Fitness: 13.6698 Genotype: Fch1: A coadaptive 5.1 7.4 B coadaptive 6.1 4.7 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6698 disease 3 +429 Fitness: 13.6698 Genotype: Fch1: A coadaptive 5.1 7.4 B coadaptive 6.1 4.7 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.6698 disease 3 +430 Fitness: 5.58809 Genotype: Fch1: A coadaptive 6.5 0.8 B coadaptive 7.1 7.1 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.58809 disease 1.5 +431 Fitness: 5.58809 Genotype: Fch1: A coadaptive 6.5 0.8 B coadaptive 7.1 7.1 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.58809 disease 1.5 +432 Fitness: 5.58809 Genotype: Fch1: A coadaptive 6.5 0.8 B coadaptive 7.1 7.1 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.58809 disease 1.5 +433 Fitness: 13.4679 Genotype: Fch1: A coadaptive 7.5 8.3 B coadaptive 7.9 6 C disease 1 1 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.4679 disease 2.5 +434 Fitness: 13.4679 Genotype: Fch1: A coadaptive 7.5 8.3 B coadaptive 7.9 6 C disease 1 1 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.4679 disease 2.5 +435 Fitness: 13.4679 Genotype: Fch1: A coadaptive 7.5 8.3 B coadaptive 7.9 6 C disease 1 1 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.4679 disease 2.5 +436 Fitness: 10.7991 Genotype: Fch1: A coadaptive 8.3 1.7 B coadaptive 6 8.6 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.7991 disease 2.5 +437 Fitness: 10.7991 Genotype: Fch1: A coadaptive 8.3 1.7 B coadaptive 6 8.6 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.7991 disease 2.5 +438 Fitness: 10.7991 Genotype: Fch1: A coadaptive 8.3 1.7 B coadaptive 6 8.6 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.7991 disease 2.5 +439 Fitness: 14.4494 Genotype: Fch1: A coadaptive 7.9 4.1 B coadaptive 6.6 6.5 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.4494 disease 2.5 +440 Fitness: 14.4494 Genotype: Fch1: A coadaptive 7.9 4.1 B coadaptive 6.6 6.5 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.4494 disease 2.5 +441 Fitness: 14.4494 Genotype: Fch1: A coadaptive 7.9 4.1 B coadaptive 6.6 6.5 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.4494 disease 2.5 +442 Fitness: 13.8039 Genotype: Fch1: A coadaptive 3.7 9 B coadaptive 8.3 2.7 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.8039 disease 2.5 +443 Fitness: 13.8039 Genotype: Fch1: A coadaptive 3.7 9 B coadaptive 8.3 2.7 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.8039 disease 2.5 +444 Fitness: 13.8039 Genotype: Fch1: A coadaptive 3.7 9 B coadaptive 8.3 2.7 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.8039 disease 2.5 +445 Fitness: 4.2423 Genotype: Fch1: A coadaptive 0.4 5.8 B coadaptive 9.3 4.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 4.2423 disease 3 +446 Fitness: 4.2423 Genotype: Fch1: A coadaptive 0.4 5.8 B coadaptive 9.3 4.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 4.2423 disease 3 +447 Fitness: 4.2423 Genotype: Fch1: A coadaptive 0.4 5.8 B coadaptive 9.3 4.1 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 4.2423 disease 3 +448 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0 B coadaptive 3.9 3 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +449 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0 B coadaptive 3.9 3 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +450 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0 B coadaptive 3.9 3 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +451 Fitness: 7.58436 Genotype: Fch1: A coadaptive 8.2 0.5 B coadaptive 3.2 2.8 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.58436 disease 2.5 +452 Fitness: 7.58436 Genotype: Fch1: A coadaptive 8.2 0.5 B coadaptive 3.2 2.8 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.58436 disease 2.5 +453 Fitness: 7.58436 Genotype: Fch1: A coadaptive 8.2 0.5 B coadaptive 3.2 2.8 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 7.58436 disease 2.5 +454 Fitness: 5.86364 Genotype: Fch1: A coadaptive 0.6 7.6 B coadaptive 4.6 0.3 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.86364 disease 2 +455 Fitness: 5.86364 Genotype: Fch1: A coadaptive 0.6 7.6 B coadaptive 4.6 0.3 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.86364 disease 2 +456 Fitness: 5.86364 Genotype: Fch1: A coadaptive 0.6 7.6 B coadaptive 4.6 0.3 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.86364 disease 2 +457 Fitness: 10.6495 Genotype: Fch1: A coadaptive 7.3 1 B coadaptive 4.8 4.4 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 10.6495 disease 3.5 +458 Fitness: 10.6495 Genotype: Fch1: A coadaptive 7.3 1 B coadaptive 4.8 4.4 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 10.6495 disease 3.5 +459 Fitness: 10.6495 Genotype: Fch1: A coadaptive 7.3 1 B coadaptive 4.8 4.4 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 10.6495 disease 3.5 +460 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 2.7 B coadaptive 5.8 8.9 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +461 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 2.7 B coadaptive 5.8 8.9 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +462 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 2.7 B coadaptive 5.8 8.9 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +463 Fitness: 12.9061 Genotype: Fch1: A coadaptive 6.1 4.8 B coadaptive 5.4 4.6 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.9061 disease 2.5 +464 Fitness: 12.9061 Genotype: Fch1: A coadaptive 6.1 4.8 B coadaptive 5.4 4.6 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.9061 disease 2.5 +465 Fitness: 12.9061 Genotype: Fch1: A coadaptive 6.1 4.8 B coadaptive 5.4 4.6 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.9061 disease 2.5 +466 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 10 B coadaptive 1.5 2.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +467 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 10 B coadaptive 1.5 2.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +468 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 10 B coadaptive 1.5 2.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +469 Fitness: 13.5406 Genotype: Fch1: A coadaptive 7.4 4.2 B coadaptive 2.9 7.7 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.5406 disease 3 +470 Fitness: 13.5406 Genotype: Fch1: A coadaptive 7.4 4.2 B coadaptive 2.9 7.7 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.5406 disease 3 +471 Fitness: 13.5406 Genotype: Fch1: A coadaptive 7.4 4.2 B coadaptive 2.9 7.7 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.5406 disease 3 +472 Fitness: 0.7613 Genotype: Fch1: A coadaptive 0.8 1.1 B coadaptive 7.2 0.5 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0.7613 disease 3.5 +473 Fitness: 0.7613 Genotype: Fch1: A coadaptive 0.8 1.1 B coadaptive 7.2 0.5 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0.7613 disease 3.5 +474 Fitness: 0.7613 Genotype: Fch1: A coadaptive 0.8 1.1 B coadaptive 7.2 0.5 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0.7613 disease 3.5 +475 Fitness: 8.20301 Genotype: Fch1: A coadaptive 3.2 6.3 B coadaptive 4.2 2.2 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 8.20301 disease 3.5 +476 Fitness: 8.20301 Genotype: Fch1: A coadaptive 3.2 6.3 B coadaptive 4.2 2.2 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 8.20301 disease 3.5 +477 Fitness: 8.20301 Genotype: Fch1: A coadaptive 3.2 6.3 B coadaptive 4.2 2.2 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 8.20301 disease 3.5 +478 Fitness: 5.19297 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 9.5 3 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 5.19297 disease 2 +479 Fitness: 5.19297 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 9.5 3 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 5.19297 disease 2 +480 Fitness: 5.19297 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 9.5 3 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 5.19297 disease 2 +481 Fitness: 8.66548 Genotype: Fch1: A coadaptive 6.5 8.2 B coadaptive 5.8 3.2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.66548 disease 3 +482 Fitness: 8.66548 Genotype: Fch1: A coadaptive 6.5 8.2 B coadaptive 5.8 3.2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.66548 disease 3 +483 Fitness: 8.66548 Genotype: Fch1: A coadaptive 6.5 8.2 B coadaptive 5.8 3.2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.66548 disease 3 +484 Fitness: 8.96931 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 6.3 0.8 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 8.96931 disease 2.5 +485 Fitness: 8.96931 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 6.3 0.8 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 8.96931 disease 2.5 +486 Fitness: 8.96931 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 6.3 0.8 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 8.96931 disease 2.5 +487 Fitness: 14.3619 Genotype: Fch1: A coadaptive 8.5 3.5 B coadaptive 3.7 9.7 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 14.3619 disease 3 +488 Fitness: 14.3619 Genotype: Fch1: A coadaptive 8.5 3.5 B coadaptive 3.7 9.7 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 14.3619 disease 3 +489 Fitness: 14.3619 Genotype: Fch1: A coadaptive 8.5 3.5 B coadaptive 3.7 9.7 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 14.3619 disease 3 +490 Fitness: 13.6134 Genotype: Fch1: A coadaptive 7.2 6.5 B coadaptive 4 7.3 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.6134 disease 3 +491 Fitness: 13.6134 Genotype: Fch1: A coadaptive 7.2 6.5 B coadaptive 4 7.3 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.6134 disease 3 +492 Fitness: 13.6134 Genotype: Fch1: A coadaptive 7.2 6.5 B coadaptive 4 7.3 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.6134 disease 3 +493 Fitness: 4.62406 Genotype: Fch1: A coadaptive 6.4 3.9 B coadaptive 1 3.7 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.62406 disease 3 +494 Fitness: 4.62406 Genotype: Fch1: A coadaptive 6.4 3.9 B coadaptive 1 3.7 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.62406 disease 3 +495 Fitness: 4.62406 Genotype: Fch1: A coadaptive 6.4 3.9 B coadaptive 1 3.7 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.62406 disease 3 +496 Fitness: 6.17015 Genotype: Fch1: A coadaptive 0.8 4.3 B coadaptive 7.2 1.3 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 6.17015 disease 3 +497 Fitness: 6.17015 Genotype: Fch1: A coadaptive 0.8 4.3 B coadaptive 7.2 1.3 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 6.17015 disease 3 +498 Fitness: 6.17015 Genotype: Fch1: A coadaptive 0.8 4.3 B coadaptive 7.2 1.3 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 6.17015 disease 3 +499 Fitness: 13.3375 Genotype: Fch1: A coadaptive 8.9 3.7 B coadaptive 5.6 4.9 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.3375 disease 4 +500 Fitness: 13.3375 Genotype: Fch1: A coadaptive 8.9 3.7 B coadaptive 5.6 4.9 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.3375 disease 4 +501 Fitness: 13.3375 Genotype: Fch1: A coadaptive 8.9 3.7 B coadaptive 5.6 4.9 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.3375 disease 4 +502 Fitness: 11.4727 Genotype: Fch1: A coadaptive 8.3 3.1 B coadaptive 7.5 8.1 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.4727 disease 3.5 +503 Fitness: 11.4727 Genotype: Fch1: A coadaptive 8.3 3.1 B coadaptive 7.5 8.1 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.4727 disease 3.5 +504 Fitness: 11.4727 Genotype: Fch1: A coadaptive 8.3 3.1 B coadaptive 7.5 8.1 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 11.4727 disease 3.5 +505 Fitness: 5.83261 Genotype: Fch1: A coadaptive 6.7 7.1 B coadaptive 6.9 0.2 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.83261 disease 2.5 +506 Fitness: 5.83261 Genotype: Fch1: A coadaptive 6.7 7.1 B coadaptive 6.9 0.2 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.83261 disease 2.5 +507 Fitness: 5.83261 Genotype: Fch1: A coadaptive 6.7 7.1 B coadaptive 6.9 0.2 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.83261 disease 2.5 +508 Fitness: 9.86435 Genotype: Fch1: A coadaptive 6.6 6.4 B coadaptive 2.2 6.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 9.86435 disease 3 +509 Fitness: 9.86435 Genotype: Fch1: A coadaptive 6.6 6.4 B coadaptive 2.2 6.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 9.86435 disease 3 +510 Fitness: 9.86435 Genotype: Fch1: A coadaptive 6.6 6.4 B coadaptive 2.2 6.2 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 9.86435 disease 3 +511 Fitness: 0 Genotype: Fch1: A coadaptive 6.7 1.5 B coadaptive 0 1.4 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +512 Fitness: 0 Genotype: Fch1: A coadaptive 6.7 1.5 B coadaptive 0 1.4 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +513 Fitness: 0 Genotype: Fch1: A coadaptive 6.7 1.5 B coadaptive 0 1.4 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +514 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0 B coadaptive 3.3 7.5 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +515 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0 B coadaptive 3.3 7.5 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +516 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0 B coadaptive 3.3 7.5 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +517 Fitness: 11.2804 Genotype: Fch1: A coadaptive 8.1 3.7 B coadaptive 7.4 1.3 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.2804 disease 2 +518 Fitness: 11.2804 Genotype: Fch1: A coadaptive 8.1 3.7 B coadaptive 7.4 1.3 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.2804 disease 2 +519 Fitness: 11.2804 Genotype: Fch1: A coadaptive 8.1 3.7 B coadaptive 7.4 1.3 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.2804 disease 2 +520 Fitness: 13.6471 Genotype: Fch1: A coadaptive 5.7 5.1 B coadaptive 5.5 5.9 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.6471 disease 3.5 +521 Fitness: 13.6471 Genotype: Fch1: A coadaptive 5.7 5.1 B coadaptive 5.5 5.9 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.6471 disease 3.5 +522 Fitness: 13.6471 Genotype: Fch1: A coadaptive 5.7 5.1 B coadaptive 5.5 5.9 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 13.6471 disease 3.5 +523 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 7.2 B coadaptive 0.5 5.4 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +524 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 7.2 B coadaptive 0.5 5.4 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +525 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 7.2 B coadaptive 0.5 5.4 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +526 Fitness: 12.89 Genotype: Fch1: A coadaptive 5.6 4.3 B coadaptive 6.8 4.8 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.89 disease 1.5 +527 Fitness: 12.89 Genotype: Fch1: A coadaptive 5.6 4.3 B coadaptive 6.8 4.8 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.89 disease 1.5 +528 Fitness: 12.89 Genotype: Fch1: A coadaptive 5.6 4.3 B coadaptive 6.8 4.8 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.89 disease 1.5 +529 Fitness: 12.7862 Genotype: Fch1: A coadaptive 3.8 9.2 B coadaptive 2.9 7.3 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.7862 disease 2.5 +530 Fitness: 12.7862 Genotype: Fch1: A coadaptive 3.8 9.2 B coadaptive 2.9 7.3 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.7862 disease 2.5 +531 Fitness: 12.7862 Genotype: Fch1: A coadaptive 3.8 9.2 B coadaptive 2.9 7.3 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.7862 disease 2.5 +532 Fitness: 9.69963 Genotype: Fch1: A coadaptive 4.6 9.6 B coadaptive 3.1 6 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.69963 disease 2.5 +533 Fitness: 9.69963 Genotype: Fch1: A coadaptive 4.6 9.6 B coadaptive 3.1 6 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.69963 disease 2.5 +534 Fitness: 9.69963 Genotype: Fch1: A coadaptive 4.6 9.6 B coadaptive 3.1 6 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.69963 disease 2.5 +535 Fitness: 9.28829 Genotype: Fch1: A coadaptive 6.7 1.9 B coadaptive 6.2 1.1 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.28829 disease 3.5 +536 Fitness: 9.28829 Genotype: Fch1: A coadaptive 6.7 1.9 B coadaptive 6.2 1.1 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.28829 disease 3.5 +537 Fitness: 9.28829 Genotype: Fch1: A coadaptive 6.7 1.9 B coadaptive 6.2 1.1 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.28829 disease 3.5 +538 Fitness: 12.5231 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 6.5 3.2 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 12.5231 disease 4 +539 Fitness: 12.5231 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 6.5 3.2 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 12.5231 disease 4 +540 Fitness: 12.5231 Genotype: Fch1: A coadaptive 9.3 1.2 B coadaptive 6.5 3.2 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 12.5231 disease 4 +541 Fitness: 2.43125 Genotype: Fch1: A coadaptive 0.1 2.9 B coadaptive 2.4 1.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.43125 disease 3 +542 Fitness: 2.43125 Genotype: Fch1: A coadaptive 0.1 2.9 B coadaptive 2.4 1.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.43125 disease 3 +543 Fitness: 2.43125 Genotype: Fch1: A coadaptive 0.1 2.9 B coadaptive 2.4 1.6 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.43125 disease 3 +544 Fitness: 12.745 Genotype: Fch1: A coadaptive 8.4 7 B coadaptive 8.7 7.7 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.745 disease 1.5 +545 Fitness: 12.745 Genotype: Fch1: A coadaptive 8.4 7 B coadaptive 8.7 7.7 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.745 disease 1.5 +546 Fitness: 12.745 Genotype: Fch1: A coadaptive 8.4 7 B coadaptive 8.7 7.7 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 12.745 disease 1.5 +547 Fitness: 14.6685 Genotype: Fch1: A coadaptive 8 6.2 B coadaptive 3.7 10 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.6685 disease 2 +548 Fitness: 14.6685 Genotype: Fch1: A coadaptive 8 6.2 B coadaptive 3.7 10 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.6685 disease 2 +549 Fitness: 14.6685 Genotype: Fch1: A coadaptive 8 6.2 B coadaptive 3.7 10 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.6685 disease 2 +550 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.7 B coadaptive 10 8.6 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +551 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.7 B coadaptive 10 8.6 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +552 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.7 B coadaptive 10 8.6 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +553 Fitness: 6.2668 Genotype: Fch1: A coadaptive 5.4 3 B coadaptive 5.9 9.3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.2668 disease 3 +554 Fitness: 6.2668 Genotype: Fch1: A coadaptive 5.4 3 B coadaptive 5.9 9.3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.2668 disease 3 +555 Fitness: 6.2668 Genotype: Fch1: A coadaptive 5.4 3 B coadaptive 5.9 9.3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.2668 disease 3 +556 Fitness: 13.4213 Genotype: Fch1: A coadaptive 9.1 5.8 B coadaptive 8.1 4.1 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.4213 disease 2.5 +557 Fitness: 13.4213 Genotype: Fch1: A coadaptive 9.1 5.8 B coadaptive 8.1 4.1 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.4213 disease 2.5 +558 Fitness: 13.4213 Genotype: Fch1: A coadaptive 9.1 5.8 B coadaptive 8.1 4.1 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.4213 disease 2.5 +559 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.5 B coadaptive 7.7 3.4 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +560 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.5 B coadaptive 7.7 3.4 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +561 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.5 B coadaptive 7.7 3.4 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +562 Fitness: 0.87075 Genotype: Fch1: A coadaptive 0.6 1.1 B coadaptive 1.6 0.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0.87075 disease 2.5 +563 Fitness: 0.87075 Genotype: Fch1: A coadaptive 0.6 1.1 B coadaptive 1.6 0.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0.87075 disease 2.5 +564 Fitness: 0.87075 Genotype: Fch1: A coadaptive 0.6 1.1 B coadaptive 1.6 0.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0.87075 disease 2.5 +565 Fitness: 3.12991 Genotype: Fch1: A coadaptive 1.2 3.2 B coadaptive 6.9 4.2 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.12991 disease 3.5 +566 Fitness: 3.12991 Genotype: Fch1: A coadaptive 1.2 3.2 B coadaptive 6.9 4.2 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.12991 disease 3.5 +567 Fitness: 3.12991 Genotype: Fch1: A coadaptive 1.2 3.2 B coadaptive 6.9 4.2 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.12991 disease 3.5 +568 Fitness: 8.65539 Genotype: Fch1: A coadaptive 1.4 9.5 B coadaptive 2.3 4.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 8.65539 disease 2.5 +569 Fitness: 8.65539 Genotype: Fch1: A coadaptive 1.4 9.5 B coadaptive 2.3 4.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 8.65539 disease 2.5 +570 Fitness: 8.65539 Genotype: Fch1: A coadaptive 1.4 9.5 B coadaptive 2.3 4.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 8.65539 disease 2.5 +571 Fitness: 0.946374 Genotype: Fch1: A coadaptive 3.9 6.8 B coadaptive 0.7 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0.946374 disease 3 +572 Fitness: 0.946374 Genotype: Fch1: A coadaptive 3.9 6.8 B coadaptive 0.7 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0.946374 disease 3 +573 Fitness: 0.946374 Genotype: Fch1: A coadaptive 3.9 6.8 B coadaptive 0.7 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0.946374 disease 3 +574 Fitness: 11.5571 Genotype: Fch1: A coadaptive 8.7 1.2 B coadaptive 3.6 5.3 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 11.5571 disease 2 +575 Fitness: 11.5571 Genotype: Fch1: A coadaptive 8.7 1.2 B coadaptive 3.6 5.3 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 11.5571 disease 2 +576 Fitness: 11.5571 Genotype: Fch1: A coadaptive 8.7 1.2 B coadaptive 3.6 5.3 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 11.5571 disease 2 +577 Fitness: 7.26727 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 2.2 6.3 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.26727 disease 3.5 +578 Fitness: 7.26727 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 2.2 6.3 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.26727 disease 3.5 +579 Fitness: 7.26727 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 2.2 6.3 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.26727 disease 3.5 +580 Fitness: 4.71568 Genotype: Fch1: A coadaptive 7.4 3.3 B coadaptive 3.4 1.5 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.71568 disease 3.5 +581 Fitness: 4.71568 Genotype: Fch1: A coadaptive 7.4 3.3 B coadaptive 3.4 1.5 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.71568 disease 3.5 +582 Fitness: 4.71568 Genotype: Fch1: A coadaptive 7.4 3.3 B coadaptive 3.4 1.5 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 4.71568 disease 3.5 +583 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 0.1 B coadaptive 7.7 7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +584 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 0.1 B coadaptive 7.7 7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +585 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 0.1 B coadaptive 7.7 7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +586 Fitness: 8.30673 Genotype: Fch1: A coadaptive 5.9 0.6 B coadaptive 5.3 4.6 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.30673 disease 3 +587 Fitness: 8.30673 Genotype: Fch1: A coadaptive 5.9 0.6 B coadaptive 5.3 4.6 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.30673 disease 3 +588 Fitness: 8.30673 Genotype: Fch1: A coadaptive 5.9 0.6 B coadaptive 5.3 4.6 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.30673 disease 3 +589 Fitness: 5.75189 Genotype: Fch1: A coadaptive 2.9 4.3 B coadaptive 3.6 1.3 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.75189 disease 3 +590 Fitness: 5.75189 Genotype: Fch1: A coadaptive 2.9 4.3 B coadaptive 3.6 1.3 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.75189 disease 3 +591 Fitness: 5.75189 Genotype: Fch1: A coadaptive 2.9 4.3 B coadaptive 3.6 1.3 C disease 0 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.75189 disease 3 +592 Fitness: 12.5158 Genotype: Fch1: A coadaptive 2.8 7.3 B coadaptive 8.4 4.8 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5158 disease 3 +593 Fitness: 12.5158 Genotype: Fch1: A coadaptive 2.8 7.3 B coadaptive 8.4 4.8 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5158 disease 3 +594 Fitness: 12.5158 Genotype: Fch1: A coadaptive 2.8 7.3 B coadaptive 8.4 4.8 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5158 disease 3 +595 Fitness: 7.01404 Genotype: Fch1: A coadaptive 9.6 7.8 B coadaptive 4.5 6.7 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.01404 disease 3.5 +596 Fitness: 7.01404 Genotype: Fch1: A coadaptive 9.6 7.8 B coadaptive 4.5 6.7 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.01404 disease 3.5 +597 Fitness: 7.01404 Genotype: Fch1: A coadaptive 9.6 7.8 B coadaptive 4.5 6.7 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.01404 disease 3.5 +598 Fitness: 4.87849 Genotype: Fch1: A coadaptive 6.3 5.9 B coadaptive 1.6 4.1 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.87849 disease 4 +599 Fitness: 4.87849 Genotype: Fch1: A coadaptive 6.3 5.9 B coadaptive 1.6 4.1 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.87849 disease 4 +600 Fitness: 4.87849 Genotype: Fch1: A coadaptive 6.3 5.9 B coadaptive 1.6 4.1 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.87849 disease 4 +601 Fitness: 13.1802 Genotype: Fch1: A coadaptive 1.7 8.5 B coadaptive 7 4.9 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.1802 disease 3 +602 Fitness: 13.1802 Genotype: Fch1: A coadaptive 1.7 8.5 B coadaptive 7 4.9 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.1802 disease 3 +603 Fitness: 13.1802 Genotype: Fch1: A coadaptive 1.7 8.5 B coadaptive 7 4.9 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.1802 disease 3 +604 Fitness: 13.3806 Genotype: Fch1: A coadaptive 10 1.8 B coadaptive 9.4 1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.3806 disease 3.5 +605 Fitness: 13.3806 Genotype: Fch1: A coadaptive 10 1.8 B coadaptive 9.4 1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.3806 disease 3.5 +606 Fitness: 13.3806 Genotype: Fch1: A coadaptive 10 1.8 B coadaptive 9.4 1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.3806 disease 3.5 +607 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 1.6 B coadaptive 9.9 9.3 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +608 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 1.6 B coadaptive 9.9 9.3 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +609 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 1.6 B coadaptive 9.9 9.3 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +610 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.4 B coadaptive 0.6 0.5 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +611 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.4 B coadaptive 0.6 0.5 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +612 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.4 B coadaptive 0.6 0.5 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +613 Fitness: 0 Genotype: Fch1: A coadaptive 7.5 1.8 B coadaptive 8.7 9.9 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +614 Fitness: 0 Genotype: Fch1: A coadaptive 7.5 1.8 B coadaptive 8.7 9.9 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +615 Fitness: 0 Genotype: Fch1: A coadaptive 7.5 1.8 B coadaptive 8.7 9.9 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +616 Fitness: 2.97605 Genotype: Fch1: A coadaptive 7.4 4.2 B coadaptive 2.9 1.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.97605 disease 3 +617 Fitness: 2.97605 Genotype: Fch1: A coadaptive 7.4 4.2 B coadaptive 2.9 1.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.97605 disease 3 +618 Fitness: 2.97605 Genotype: Fch1: A coadaptive 7.4 4.2 B coadaptive 2.9 1.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.97605 disease 3 +619 Fitness: 3.15383 Genotype: Fch1: A coadaptive 1.7 1.6 B coadaptive 1.8 3.3 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.15383 disease 2.5 +620 Fitness: 3.15383 Genotype: Fch1: A coadaptive 1.7 1.6 B coadaptive 1.8 3.3 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.15383 disease 2.5 +621 Fitness: 3.15383 Genotype: Fch1: A coadaptive 1.7 1.6 B coadaptive 1.8 3.3 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.15383 disease 2.5 +622 Fitness: 3.68097 Genotype: Fch1: A coadaptive 7.2 7.4 B coadaptive 4 2.9 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.68097 disease 3.5 +623 Fitness: 3.68097 Genotype: Fch1: A coadaptive 7.2 7.4 B coadaptive 4 2.9 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.68097 disease 3.5 +624 Fitness: 3.68097 Genotype: Fch1: A coadaptive 7.2 7.4 B coadaptive 4 2.9 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.68097 disease 3.5 +625 Fitness: 10.2425 Genotype: Fch1: A coadaptive 0.9 6.9 B coadaptive 7.5 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.2425 disease 3 +626 Fitness: 10.2425 Genotype: Fch1: A coadaptive 0.9 6.9 B coadaptive 7.5 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.2425 disease 3 +627 Fitness: 10.2425 Genotype: Fch1: A coadaptive 0.9 6.9 B coadaptive 7.5 3.2 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.2425 disease 3 +628 Fitness: 13.3375 Genotype: Fch1: A coadaptive 9.5 1 B coadaptive 6.5 6.1 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 13.3375 disease 3 +629 Fitness: 13.3375 Genotype: Fch1: A coadaptive 9.5 1 B coadaptive 6.5 6.1 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 13.3375 disease 3 +630 Fitness: 13.3375 Genotype: Fch1: A coadaptive 9.5 1 B coadaptive 6.5 6.1 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 13.3375 disease 3 +631 Fitness: 11.6271 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 2.3 7.8 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.6271 disease 3 +632 Fitness: 11.6271 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 2.3 7.8 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.6271 disease 3 +633 Fitness: 11.6271 Genotype: Fch1: A coadaptive 0.3 8.6 B coadaptive 2.3 7.8 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.6271 disease 3 +634 Fitness: 12.401 Genotype: Fch1: A coadaptive 8.1 6 B coadaptive 7.6 3 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.401 disease 2.5 +635 Fitness: 12.401 Genotype: Fch1: A coadaptive 8.1 6 B coadaptive 7.6 3 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.401 disease 2.5 +636 Fitness: 12.401 Genotype: Fch1: A coadaptive 8.1 6 B coadaptive 7.6 3 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.401 disease 2.5 +637 Fitness: 11.218 Genotype: Fch1: A coadaptive 3.4 5.1 B coadaptive 8.4 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.218 disease 2 +638 Fitness: 11.218 Genotype: Fch1: A coadaptive 3.4 5.1 B coadaptive 8.4 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.218 disease 2 +639 Fitness: 11.218 Genotype: Fch1: A coadaptive 3.4 5.1 B coadaptive 8.4 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.218 disease 2 +640 Fitness: 8.39572 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 4.9 4.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.39572 disease 2.5 +641 Fitness: 8.39572 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 4.9 4.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.39572 disease 2.5 +642 Fitness: 8.39572 Genotype: Fch1: A coadaptive 9 6.7 B coadaptive 4.9 4.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.39572 disease 2.5 +643 Fitness: 13.028 Genotype: Fch1: A coadaptive 3.7 9.7 B coadaptive 8.3 2.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.028 disease 3 +644 Fitness: 13.028 Genotype: Fch1: A coadaptive 3.7 9.7 B coadaptive 8.3 2.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.028 disease 3 +645 Fitness: 13.028 Genotype: Fch1: A coadaptive 3.7 9.7 B coadaptive 8.3 2.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.028 disease 3 +646 Fitness: 11.3315 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 6.2 6.7 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.3315 disease 2.5 +647 Fitness: 11.3315 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 6.2 6.7 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.3315 disease 2.5 +648 Fitness: 11.3315 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 6.2 6.7 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.3315 disease 2.5 +649 Fitness: 13.1062 Genotype: Fch1: A coadaptive 6.8 8.2 B coadaptive 2.6 9.4 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.1062 disease 3.5 +650 Fitness: 13.1062 Genotype: Fch1: A coadaptive 6.8 8.2 B coadaptive 2.6 9.4 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.1062 disease 3.5 +651 Fitness: 13.1062 Genotype: Fch1: A coadaptive 6.8 8.2 B coadaptive 2.6 9.4 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.1062 disease 3.5 +652 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 8.8 B coadaptive 2.2 0.2 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +653 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 8.8 B coadaptive 2.2 0.2 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +654 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 8.8 B coadaptive 2.2 0.2 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +655 Fitness: 14.5047 Genotype: Fch1: A coadaptive 9.3 3.8 B coadaptive 3.8 8.3 C disease 1 0 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.5047 disease 2.5 +656 Fitness: 14.5047 Genotype: Fch1: A coadaptive 9.3 3.8 B coadaptive 3.8 8.3 C disease 1 0 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.5047 disease 2.5 +657 Fitness: 14.5047 Genotype: Fch1: A coadaptive 9.3 3.8 B coadaptive 3.8 8.3 C disease 1 0 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.5047 disease 2.5 +658 Fitness: 4.54287 Genotype: Fch1: A coadaptive 8.5 6.2 B coadaptive 6.7 0.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.54287 disease 2 +659 Fitness: 4.54287 Genotype: Fch1: A coadaptive 8.5 6.2 B coadaptive 6.7 0.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.54287 disease 2 +660 Fitness: 4.54287 Genotype: Fch1: A coadaptive 8.5 6.2 B coadaptive 6.7 0.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.54287 disease 2 +661 Fitness: 4.75938 Genotype: Fch1: A coadaptive 5.4 4.1 B coadaptive 3.3 1.2 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.75938 disease 3 +662 Fitness: 4.75938 Genotype: Fch1: A coadaptive 5.4 4.1 B coadaptive 3.3 1.2 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.75938 disease 3 +663 Fitness: 4.75938 Genotype: Fch1: A coadaptive 5.4 4.1 B coadaptive 3.3 1.2 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.75938 disease 3 +664 Fitness: 12.6507 Genotype: Fch1: A coadaptive 2 9.6 B coadaptive 9 6 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.6507 disease 3 +665 Fitness: 12.6507 Genotype: Fch1: A coadaptive 2 9.6 B coadaptive 9 6 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.6507 disease 3 +666 Fitness: 12.6507 Genotype: Fch1: A coadaptive 2 9.6 B coadaptive 9 6 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.6507 disease 3 +667 Fitness: 10.0298 Genotype: Fch1: A coadaptive 6.8 6.4 B coadaptive 7.6 1 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.0298 disease 2.5 +668 Fitness: 10.0298 Genotype: Fch1: A coadaptive 6.8 6.4 B coadaptive 7.6 1 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.0298 disease 2.5 +669 Fitness: 10.0298 Genotype: Fch1: A coadaptive 6.8 6.4 B coadaptive 7.6 1 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.0298 disease 2.5 +670 Fitness: 8.27124 Genotype: Fch1: A coadaptive 1.7 6.2 B coadaptive 1.8 4.9 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.27124 disease 3.5 +671 Fitness: 8.27124 Genotype: Fch1: A coadaptive 1.7 6.2 B coadaptive 1.8 4.9 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.27124 disease 3.5 +672 Fitness: 8.27124 Genotype: Fch1: A coadaptive 1.7 6.2 B coadaptive 1.8 4.9 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.27124 disease 3.5 +673 Fitness: 1.59453 Genotype: Fch1: A coadaptive 3.2 0.8 B coadaptive 4.3 7.2 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 1.59453 disease 2.5 +674 Fitness: 1.59453 Genotype: Fch1: A coadaptive 3.2 0.8 B coadaptive 4.3 7.2 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 1.59453 disease 2.5 +675 Fitness: 1.59453 Genotype: Fch1: A coadaptive 3.2 0.8 B coadaptive 4.3 7.2 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 1.59453 disease 2.5 +676 Fitness: 12.4606 Genotype: Fch1: A coadaptive 1.5 9.7 B coadaptive 5 4.5 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.4606 disease 2.5 +677 Fitness: 12.4606 Genotype: Fch1: A coadaptive 1.5 9.7 B coadaptive 5 4.5 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.4606 disease 2.5 +678 Fitness: 12.4606 Genotype: Fch1: A coadaptive 1.5 9.7 B coadaptive 5 4.5 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.4606 disease 2.5 +679 Fitness: 4.65255 Genotype: Fch1: A coadaptive 1.9 2.3 B coadaptive 6.6 1.8 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 4.65255 disease 3.5 +680 Fitness: 4.65255 Genotype: Fch1: A coadaptive 1.9 2.3 B coadaptive 6.6 1.8 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 4.65255 disease 3.5 +681 Fitness: 4.65255 Genotype: Fch1: A coadaptive 1.9 2.3 B coadaptive 6.6 1.8 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 4.65255 disease 3.5 +682 Fitness: 13.6453 Genotype: Fch1: A coadaptive 4.8 6.1 B coadaptive 3.7 7.5 C disease 0.5 0.5 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 13.6453 disease 2.5 +683 Fitness: 13.6453 Genotype: Fch1: A coadaptive 4.8 6.1 B coadaptive 3.7 7.5 C disease 0.5 0.5 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 13.6453 disease 2.5 +684 Fitness: 13.6453 Genotype: Fch1: A coadaptive 4.8 6.1 B coadaptive 3.7 7.5 C disease 0.5 0.5 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 13.6453 disease 2.5 +685 Fitness: 8.69504 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 0.7 6.9 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.69504 disease 2.5 +686 Fitness: 8.69504 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 0.7 6.9 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.69504 disease 2.5 +687 Fitness: 8.69504 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 0.7 6.9 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.69504 disease 2.5 +688 Fitness: 7.14734 Genotype: Fch1: A coadaptive 0.6 9.5 B coadaptive 8.3 8.2 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.14734 disease 3.5 +689 Fitness: 7.14734 Genotype: Fch1: A coadaptive 0.6 9.5 B coadaptive 8.3 8.2 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.14734 disease 3.5 +690 Fitness: 7.14734 Genotype: Fch1: A coadaptive 0.6 9.5 B coadaptive 8.3 8.2 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.14734 disease 3.5 +691 Fitness: 2.85293 Genotype: Fch1: A coadaptive 4.2 9.5 B coadaptive 3 2.9 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.85293 disease 2.5 +692 Fitness: 2.85293 Genotype: Fch1: A coadaptive 4.2 9.5 B coadaptive 3 2.9 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.85293 disease 2.5 +693 Fitness: 2.85293 Genotype: Fch1: A coadaptive 4.2 9.5 B coadaptive 3 2.9 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.85293 disease 2.5 +694 Fitness: 13.7 Genotype: Fch1: A coadaptive 6.1 6.9 B coadaptive 2.9 8.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.7 disease 3 +695 Fitness: 13.7 Genotype: Fch1: A coadaptive 6.1 6.9 B coadaptive 2.9 8.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.7 disease 3 +696 Fitness: 13.7 Genotype: Fch1: A coadaptive 6.1 6.9 B coadaptive 2.9 8.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.7 disease 3 +697 Fitness: 11.7159 Genotype: Fch1: A coadaptive 5.1 8.5 B coadaptive 9.7 0.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.7159 disease 2.5 +698 Fitness: 11.7159 Genotype: Fch1: A coadaptive 5.1 8.5 B coadaptive 9.7 0.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.7159 disease 2.5 +699 Fitness: 11.7159 Genotype: Fch1: A coadaptive 5.1 8.5 B coadaptive 9.7 0.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.7159 disease 2.5 +700 Fitness: 14.1001 Genotype: Fch1: A coadaptive 8.5 3.2 B coadaptive 4.9 8.6 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.1001 disease 4 +701 Fitness: 14.1001 Genotype: Fch1: A coadaptive 8.5 3.2 B coadaptive 4.9 8.6 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.1001 disease 4 +702 Fitness: 14.1001 Genotype: Fch1: A coadaptive 8.5 3.2 B coadaptive 4.9 8.6 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.1001 disease 4 +703 Fitness: 7.00625 Genotype: Fch1: A coadaptive 0.3 5.7 B coadaptive 6.7 0.3 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.00625 disease 2 +704 Fitness: 7.00625 Genotype: Fch1: A coadaptive 0.3 5.7 B coadaptive 6.7 0.3 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.00625 disease 2 +705 Fitness: 7.00625 Genotype: Fch1: A coadaptive 0.3 5.7 B coadaptive 6.7 0.3 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 7.00625 disease 2 +706 Fitness: 6.03413 Genotype: Fch1: A coadaptive 5 0.1 B coadaptive 3.9 5.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 6.03413 disease 2.5 +707 Fitness: 6.03413 Genotype: Fch1: A coadaptive 5 0.1 B coadaptive 3.9 5.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 6.03413 disease 2.5 +708 Fitness: 6.03413 Genotype: Fch1: A coadaptive 5 0.1 B coadaptive 3.9 5.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 6.03413 disease 2.5 +709 Fitness: 1.42447 Genotype: Fch1: A coadaptive 2.4 1.2 B coadaptive 4 6.9 C disease 0 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.42447 disease 2 +710 Fitness: 1.42447 Genotype: Fch1: A coadaptive 2.4 1.2 B coadaptive 4 6.9 C disease 0 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.42447 disease 2 +711 Fitness: 1.42447 Genotype: Fch1: A coadaptive 2.4 1.2 B coadaptive 4 6.9 C disease 0 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.42447 disease 2 +712 Fitness: 14.1358 Genotype: Fch1: A coadaptive 6.3 7.8 B coadaptive 7 5.2 C disease 1 1 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 14.1358 disease 3.5 +713 Fitness: 14.1358 Genotype: Fch1: A coadaptive 6.3 7.8 B coadaptive 7 5.2 C disease 1 1 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 14.1358 disease 3.5 +714 Fitness: 14.1358 Genotype: Fch1: A coadaptive 6.3 7.8 B coadaptive 7 5.2 C disease 1 1 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 14.1358 disease 3.5 +715 Fitness: 8.9345 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 8.2 0.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.9345 disease 3 +716 Fitness: 8.9345 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 8.2 0.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.9345 disease 3 +717 Fitness: 8.9345 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 8.2 0.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.9345 disease 3 +718 Fitness: 12.3886 Genotype: Fch1: A coadaptive 9.7 5.4 B coadaptive 2.3 9.2 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.3886 disease 3 +719 Fitness: 12.3886 Genotype: Fch1: A coadaptive 9.7 5.4 B coadaptive 2.3 9.2 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.3886 disease 3 +720 Fitness: 12.3886 Genotype: Fch1: A coadaptive 9.7 5.4 B coadaptive 2.3 9.2 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.3886 disease 3 +721 Fitness: 9.70685 Genotype: Fch1: A coadaptive 2.4 5.1 B coadaptive 6.3 4.6 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.70685 disease 3 +722 Fitness: 9.70685 Genotype: Fch1: A coadaptive 2.4 5.1 B coadaptive 6.3 4.6 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.70685 disease 3 +723 Fitness: 9.70685 Genotype: Fch1: A coadaptive 2.4 5.1 B coadaptive 6.3 4.6 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.70685 disease 3 +724 Fitness: 2.1171 Genotype: Fch1: A coadaptive 1.8 1.1 B coadaptive 2.5 1 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 2.1171 disease 2.5 +725 Fitness: 2.1171 Genotype: Fch1: A coadaptive 1.8 1.1 B coadaptive 2.5 1 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 2.1171 disease 2.5 +726 Fitness: 2.1171 Genotype: Fch1: A coadaptive 1.8 1.1 B coadaptive 2.5 1 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 2.1171 disease 2.5 +727 Fitness: 10.5102 Genotype: Fch1: A coadaptive 0.5 8.3 B coadaptive 6.1 7 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.5102 disease 2 +728 Fitness: 10.5102 Genotype: Fch1: A coadaptive 0.5 8.3 B coadaptive 6.1 7 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.5102 disease 2 +729 Fitness: 10.5102 Genotype: Fch1: A coadaptive 0.5 8.3 B coadaptive 6.1 7 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.5102 disease 2 +730 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 5.6 B coadaptive 8.9 6.8 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +731 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 5.6 B coadaptive 8.9 6.8 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +732 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 5.6 B coadaptive 8.9 6.8 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 1.5 +733 Fitness: 12.0589 Genotype: Fch1: A coadaptive 2.4 7.6 B coadaptive 0.1 9.3 C disease 1 0 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.0589 disease 4 +734 Fitness: 12.0589 Genotype: Fch1: A coadaptive 2.4 7.6 B coadaptive 0.1 9.3 C disease 1 0 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.0589 disease 4 +735 Fitness: 12.0589 Genotype: Fch1: A coadaptive 2.4 7.6 B coadaptive 0.1 9.3 C disease 1 0 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.0589 disease 4 +736 Fitness: 6.62934 Genotype: Fch1: A coadaptive 6.9 1.2 B coadaptive 0.9 4.5 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.62934 disease 3 +737 Fitness: 6.62934 Genotype: Fch1: A coadaptive 6.9 1.2 B coadaptive 0.9 4.5 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.62934 disease 3 +738 Fitness: 6.62934 Genotype: Fch1: A coadaptive 6.9 1.2 B coadaptive 0.9 4.5 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.62934 disease 3 +739 Fitness: 12.2744 Genotype: Fch1: A coadaptive 5.2 4.3 B coadaptive 3.7 6.6 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.2744 disease 3 +740 Fitness: 12.2744 Genotype: Fch1: A coadaptive 5.2 4.3 B coadaptive 3.7 6.6 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.2744 disease 3 +741 Fitness: 12.2744 Genotype: Fch1: A coadaptive 5.2 4.3 B coadaptive 3.7 6.6 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.2744 disease 3 +742 Fitness: 2.72487 Genotype: Fch1: A coadaptive 10 1.6 B coadaptive 2.2 2.3 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.72487 disease 2 +743 Fitness: 2.72487 Genotype: Fch1: A coadaptive 10 1.6 B coadaptive 2.2 2.3 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.72487 disease 2 +744 Fitness: 2.72487 Genotype: Fch1: A coadaptive 10 1.6 B coadaptive 2.2 2.3 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.72487 disease 2 +745 Fitness: 2.89939 Genotype: Fch1: A coadaptive 0.1 5.6 B coadaptive 5.3 8.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 2.89939 disease 1.5 +746 Fitness: 2.89939 Genotype: Fch1: A coadaptive 0.1 5.6 B coadaptive 5.3 8.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 2.89939 disease 1.5 +747 Fitness: 2.89939 Genotype: Fch1: A coadaptive 0.1 5.6 B coadaptive 5.3 8.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 2.89939 disease 1.5 +748 Fitness: 10.8597 Genotype: Fch1: A coadaptive 8.1 9.5 B coadaptive 7.4 8 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.8597 disease 2.5 +749 Fitness: 10.8597 Genotype: Fch1: A coadaptive 8.1 9.5 B coadaptive 7.4 8 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.8597 disease 2.5 +750 Fitness: 10.8597 Genotype: Fch1: A coadaptive 8.1 9.5 B coadaptive 7.4 8 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.8597 disease 2.5 +751 Fitness: 12.1652 Genotype: Fch1: A coadaptive 0.4 8.9 B coadaptive 5.3 6.4 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 12.1652 disease 3 +752 Fitness: 12.1652 Genotype: Fch1: A coadaptive 0.4 8.9 B coadaptive 5.3 6.4 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 12.1652 disease 3 +753 Fitness: 12.1652 Genotype: Fch1: A coadaptive 0.4 8.9 B coadaptive 5.3 6.4 C disease 1 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 12.1652 disease 3 +754 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 9 B coadaptive 7 0.7 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +755 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 9 B coadaptive 7 0.7 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +756 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 9 B coadaptive 7 0.7 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +757 Fitness: 0.92542 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 3.2 0.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0.92542 disease 4 +758 Fitness: 0.92542 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 3.2 0.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0.92542 disease 4 +759 Fitness: 0.92542 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 3.2 0.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0.92542 disease 4 +760 Fitness: 1.47121 Genotype: Fch1: A coadaptive 4.6 8.1 B coadaptive 3.1 1.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 1.47121 disease 2.5 +761 Fitness: 1.47121 Genotype: Fch1: A coadaptive 4.6 8.1 B coadaptive 3.1 1.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 1.47121 disease 2.5 +762 Fitness: 1.47121 Genotype: Fch1: A coadaptive 4.6 8.1 B coadaptive 3.1 1.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 1.47121 disease 2.5 +763 Fitness: 10.6878 Genotype: Fch1: A coadaptive 9.5 5.4 B coadaptive 8 2.2 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.6878 disease 3 +764 Fitness: 10.6878 Genotype: Fch1: A coadaptive 9.5 5.4 B coadaptive 8 2.2 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.6878 disease 3 +765 Fitness: 10.6878 Genotype: Fch1: A coadaptive 9.5 5.4 B coadaptive 8 2.2 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.6878 disease 3 +766 Fitness: 6.96499 Genotype: Fch1: A coadaptive 4.3 2.8 B coadaptive 4.7 8.4 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 6.96499 disease 4 +767 Fitness: 6.96499 Genotype: Fch1: A coadaptive 4.3 2.8 B coadaptive 4.7 8.4 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 6.96499 disease 4 +768 Fitness: 6.96499 Genotype: Fch1: A coadaptive 4.3 2.8 B coadaptive 4.7 8.4 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 6.96499 disease 4 +769 Fitness: 3.30995 Genotype: Fch1: A coadaptive 4.6 7.3 B coadaptive 3.1 1.8 C disease 1 1 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.30995 disease 3.5 +770 Fitness: 3.30995 Genotype: Fch1: A coadaptive 4.6 7.3 B coadaptive 3.1 1.8 C disease 1 1 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.30995 disease 3.5 +771 Fitness: 3.30995 Genotype: Fch1: A coadaptive 4.6 7.3 B coadaptive 3.1 1.8 C disease 1 1 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 3.30995 disease 3.5 +772 Fitness: 5.18635 Genotype: Fch1: A coadaptive 7 2.8 B coadaptive 4.8 0 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.18635 disease 3 +773 Fitness: 5.18635 Genotype: Fch1: A coadaptive 7 2.8 B coadaptive 4.8 0 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.18635 disease 3 +774 Fitness: 5.18635 Genotype: Fch1: A coadaptive 7 2.8 B coadaptive 4.8 0 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.18635 disease 3 +775 Fitness: 0 Genotype: Fch1: A coadaptive 0 4 B coadaptive 10 6.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +776 Fitness: 0 Genotype: Fch1: A coadaptive 0 4 B coadaptive 10 6.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +777 Fitness: 0 Genotype: Fch1: A coadaptive 0 4 B coadaptive 10 6.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +778 Fitness: 0 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 10 6.4 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +779 Fitness: 0 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 10 6.4 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +780 Fitness: 0 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 10 6.4 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +781 Fitness: 0.531644 Genotype: Fch1: A coadaptive 0.8 2.5 B coadaptive 3.1 7.9 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.531644 disease 3.5 +782 Fitness: 0.531644 Genotype: Fch1: A coadaptive 0.8 2.5 B coadaptive 3.1 7.9 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.531644 disease 3.5 +783 Fitness: 0.531644 Genotype: Fch1: A coadaptive 0.8 2.5 B coadaptive 3.1 7.9 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.531644 disease 3.5 +784 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.9 B coadaptive 7.7 10 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +785 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.9 B coadaptive 7.7 10 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +786 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.9 B coadaptive 7.7 10 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +787 Fitness: 14.7155 Genotype: Fch1: A coadaptive 3.8 9.7 B coadaptive 8.4 4.4 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 14.7155 disease 3 +788 Fitness: 14.7155 Genotype: Fch1: A coadaptive 3.8 9.7 B coadaptive 8.4 4.4 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 14.7155 disease 3 +789 Fitness: 14.7155 Genotype: Fch1: A coadaptive 3.8 9.7 B coadaptive 8.4 4.4 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 14.7155 disease 3 +790 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.8 B coadaptive 7.9 3.1 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +791 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.8 B coadaptive 7.9 3.1 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +792 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.8 B coadaptive 7.9 3.1 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +793 Fitness: 12.8336 Genotype: Fch1: A coadaptive 5.5 4.5 B coadaptive 4.9 7.5 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.8336 disease 2 +794 Fitness: 12.8336 Genotype: Fch1: A coadaptive 5.5 4.5 B coadaptive 4.9 7.5 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.8336 disease 2 +795 Fitness: 12.8336 Genotype: Fch1: A coadaptive 5.5 4.5 B coadaptive 4.9 7.5 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.8336 disease 2 +796 Fitness: 11.4197 Genotype: Fch1: A coadaptive 8.1 0.6 B coadaptive 8.1 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.4197 disease 3 +797 Fitness: 11.4197 Genotype: Fch1: A coadaptive 8.1 0.6 B coadaptive 8.1 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.4197 disease 3 +798 Fitness: 11.4197 Genotype: Fch1: A coadaptive 8.1 0.6 B coadaptive 8.1 3.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.4197 disease 3 +799 Fitness: 10.6323 Genotype: Fch1: A coadaptive 0.8 8.5 B coadaptive 6.2 7.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.6323 disease 3.5 +800 Fitness: 10.6323 Genotype: Fch1: A coadaptive 0.8 8.5 B coadaptive 6.2 7.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.6323 disease 3.5 +801 Fitness: 10.6323 Genotype: Fch1: A coadaptive 0.8 8.5 B coadaptive 6.2 7.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.6323 disease 3.5 +802 Fitness: 10.8208 Genotype: Fch1: A coadaptive 6.3 4.5 B coadaptive 1.5 6.7 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.8208 disease 4 +803 Fitness: 10.8208 Genotype: Fch1: A coadaptive 6.3 4.5 B coadaptive 1.5 6.7 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.8208 disease 4 +804 Fitness: 10.8208 Genotype: Fch1: A coadaptive 6.3 4.5 B coadaptive 1.5 6.7 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.8208 disease 4 +805 Fitness: 10.8648 Genotype: Fch1: A coadaptive 5.7 6.8 B coadaptive 0.3 8.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.8648 disease 4 +806 Fitness: 10.8648 Genotype: Fch1: A coadaptive 5.7 6.8 B coadaptive 0.3 8.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.8648 disease 4 +807 Fitness: 10.8648 Genotype: Fch1: A coadaptive 5.7 6.8 B coadaptive 0.3 8.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 10.8648 disease 4 +808 Fitness: 6.91092 Genotype: Fch1: A coadaptive 5.7 2.7 B coadaptive 5.5 9.4 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 6.91092 disease 4 +809 Fitness: 6.91092 Genotype: Fch1: A coadaptive 5.7 2.7 B coadaptive 5.5 9.4 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 6.91092 disease 4 +810 Fitness: 6.91092 Genotype: Fch1: A coadaptive 5.7 2.7 B coadaptive 5.5 9.4 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 6.91092 disease 4 +811 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 0.9 B coadaptive 8.4 7.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +812 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 0.9 B coadaptive 8.4 7.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +813 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 0.9 B coadaptive 8.4 7.9 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +814 Fitness: 3.41119 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 2 2.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.41119 disease 3 +815 Fitness: 3.41119 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 2 2.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.41119 disease 3 +816 Fitness: 3.41119 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 2 2.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.41119 disease 3 +817 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 0.1 B coadaptive 2.1 9.2 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +818 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 0.1 B coadaptive 2.1 9.2 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +819 Fitness: 0 Genotype: Fch1: A coadaptive 1.4 0.1 B coadaptive 2.1 9.2 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +820 Fitness: 10.069 Genotype: Fch1: A coadaptive 4.3 8.3 B coadaptive 1.3 7 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.069 disease 2 +821 Fitness: 10.069 Genotype: Fch1: A coadaptive 4.3 8.3 B coadaptive 1.3 7 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.069 disease 2 +822 Fitness: 10.069 Genotype: Fch1: A coadaptive 4.3 8.3 B coadaptive 1.3 7 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.069 disease 2 +823 Fitness: 1.82396 Genotype: Fch1: A coadaptive 2.2 1.8 B coadaptive 1.7 0.6 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.82396 disease 2.5 +824 Fitness: 1.82396 Genotype: Fch1: A coadaptive 2.2 1.8 B coadaptive 1.7 0.6 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.82396 disease 2.5 +825 Fitness: 1.82396 Genotype: Fch1: A coadaptive 2.2 1.8 B coadaptive 1.7 0.6 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.82396 disease 2.5 +826 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 1 B coadaptive 9.2 3.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +827 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 1 B coadaptive 9.2 3.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +828 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 1 B coadaptive 9.2 3.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +829 Fitness: 1.91913 Genotype: Fch1: A coadaptive 8.3 3.5 B coadaptive 2.1 2.2 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 1.91913 disease 4 +830 Fitness: 1.91913 Genotype: Fch1: A coadaptive 8.3 3.5 B coadaptive 2.1 2.2 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 1.91913 disease 4 +831 Fitness: 1.91913 Genotype: Fch1: A coadaptive 8.3 3.5 B coadaptive 2.1 2.2 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 1.91913 disease 4 +832 Fitness: 11.1351 Genotype: Fch1: A coadaptive 0.1 9.5 B coadaptive 0.6 8 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.1351 disease 3 +833 Fitness: 11.1351 Genotype: Fch1: A coadaptive 0.1 9.5 B coadaptive 0.6 8 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.1351 disease 3 +834 Fitness: 11.1351 Genotype: Fch1: A coadaptive 0.1 9.5 B coadaptive 0.6 8 C disease 0 0.5 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.1351 disease 3 +835 Fitness: 11.4931 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 5.9 7.6 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.4931 disease 3.5 +836 Fitness: 11.4931 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 5.9 7.6 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.4931 disease 3.5 +837 Fitness: 11.4931 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 5.9 7.6 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.4931 disease 3.5 +838 Fitness: 4.72525 Genotype: Fch1: A coadaptive 5.6 9.6 B coadaptive 3.3 4.5 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 4.72525 disease 3 +839 Fitness: 4.72525 Genotype: Fch1: A coadaptive 5.6 9.6 B coadaptive 3.3 4.5 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 4.72525 disease 3 +840 Fitness: 4.72525 Genotype: Fch1: A coadaptive 5.6 9.6 B coadaptive 3.3 4.5 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 4.72525 disease 3 +841 Fitness: 11.6276 Genotype: Fch1: A coadaptive 5.5 7.5 B coadaptive 3.1 6.3 C disease 0.5 0 D disease 1 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.6276 disease 3 +842 Fitness: 11.6276 Genotype: Fch1: A coadaptive 5.5 7.5 B coadaptive 3.1 6.3 C disease 0.5 0 D disease 1 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.6276 disease 3 +843 Fitness: 11.6276 Genotype: Fch1: A coadaptive 5.5 7.5 B coadaptive 3.1 6.3 C disease 0.5 0 D disease 1 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.6276 disease 3 +844 Fitness: 9.76438 Genotype: Fch1: A coadaptive 7.3 5.4 B coadaptive 9.5 7.8 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.76438 disease 2 +845 Fitness: 9.76438 Genotype: Fch1: A coadaptive 7.3 5.4 B coadaptive 9.5 7.8 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.76438 disease 2 +846 Fitness: 9.76438 Genotype: Fch1: A coadaptive 7.3 5.4 B coadaptive 9.5 7.8 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.76438 disease 2 +847 Fitness: 8.9314 Genotype: Fch1: A coadaptive 6.1 1.7 B coadaptive 3.7 3.7 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.9314 disease 3.5 +848 Fitness: 8.9314 Genotype: Fch1: A coadaptive 6.1 1.7 B coadaptive 3.7 3.7 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.9314 disease 3.5 +849 Fitness: 8.9314 Genotype: Fch1: A coadaptive 6.1 1.7 B coadaptive 3.7 3.7 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.9314 disease 3.5 +850 Fitness: 9.84624 Genotype: Fch1: A coadaptive 7.4 2.9 B coadaptive 3.9 3.6 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 9.84624 disease 3.5 +851 Fitness: 9.84624 Genotype: Fch1: A coadaptive 7.4 2.9 B coadaptive 3.9 3.6 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 9.84624 disease 3.5 +852 Fitness: 9.84624 Genotype: Fch1: A coadaptive 7.4 2.9 B coadaptive 3.9 3.6 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 9.84624 disease 3.5 +853 Fitness: 0.882912 Genotype: Fch1: A coadaptive 0 1.9 B coadaptive 3 4.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0.882912 disease 3 +854 Fitness: 0.882912 Genotype: Fch1: A coadaptive 0 1.9 B coadaptive 3 4.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0.882912 disease 3 +855 Fitness: 0.882912 Genotype: Fch1: A coadaptive 0 1.9 B coadaptive 3 4.5 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0.882912 disease 3 +856 Fitness: 7.9616 Genotype: Fch1: A coadaptive 4.7 1.7 B coadaptive 4.3 3.7 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.9616 disease 2.5 +857 Fitness: 7.9616 Genotype: Fch1: A coadaptive 4.7 1.7 B coadaptive 4.3 3.7 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.9616 disease 2.5 +858 Fitness: 7.9616 Genotype: Fch1: A coadaptive 4.7 1.7 B coadaptive 4.3 3.7 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.9616 disease 2.5 +859 Fitness: 8.34004 Genotype: Fch1: A coadaptive 4.8 1.7 B coadaptive 4.6 4.3 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 8.34004 disease 2.5 +860 Fitness: 8.34004 Genotype: Fch1: A coadaptive 4.8 1.7 B coadaptive 4.6 4.3 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 8.34004 disease 2.5 +861 Fitness: 8.34004 Genotype: Fch1: A coadaptive 4.8 1.7 B coadaptive 4.6 4.3 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 8.34004 disease 2.5 +862 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 5.6 B coadaptive 0.3 4.7 C disease 0 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +863 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 5.6 B coadaptive 0.3 4.7 C disease 0 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +864 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 5.6 B coadaptive 0.3 4.7 C disease 0 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +865 Fitness: 5.6096 Genotype: Fch1: A coadaptive 8.2 0.6 B coadaptive 3.2 1.6 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 5.6096 disease 3 +866 Fitness: 5.6096 Genotype: Fch1: A coadaptive 8.2 0.6 B coadaptive 3.2 1.6 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 5.6096 disease 3 +867 Fitness: 5.6096 Genotype: Fch1: A coadaptive 8.2 0.6 B coadaptive 3.2 1.6 C disease 0 0 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 5.6096 disease 3 +868 Fitness: 12.0827 Genotype: Fch1: A coadaptive 6.5 10 B coadaptive 7.3 6 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.0827 disease 2 +869 Fitness: 12.0827 Genotype: Fch1: A coadaptive 6.5 10 B coadaptive 7.3 6 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.0827 disease 2 +870 Fitness: 12.0827 Genotype: Fch1: A coadaptive 6.5 10 B coadaptive 7.3 6 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.0827 disease 2 +871 Fitness: 10.3468 Genotype: Fch1: A coadaptive 5.4 7.3 B coadaptive 3.3 5.2 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.3468 disease 2.5 +872 Fitness: 10.3468 Genotype: Fch1: A coadaptive 5.4 7.3 B coadaptive 3.3 5.2 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.3468 disease 2.5 +873 Fitness: 10.3468 Genotype: Fch1: A coadaptive 5.4 7.3 B coadaptive 3.3 5.2 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.3468 disease 2.5 +874 Fitness: 9.76926 Genotype: Fch1: A coadaptive 6.4 4.3 B coadaptive 6.2 1.3 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.76926 disease 3 +875 Fitness: 9.76926 Genotype: Fch1: A coadaptive 6.4 4.3 B coadaptive 6.2 1.3 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.76926 disease 3 +876 Fitness: 9.76926 Genotype: Fch1: A coadaptive 6.4 4.3 B coadaptive 6.2 1.3 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.76926 disease 3 +877 Fitness: 7.25613 Genotype: Fch1: A coadaptive 2.5 9 B coadaptive 5.8 0.6 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.25613 disease 2.5 +878 Fitness: 7.25613 Genotype: Fch1: A coadaptive 2.5 9 B coadaptive 5.8 0.6 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.25613 disease 2.5 +879 Fitness: 7.25613 Genotype: Fch1: A coadaptive 2.5 9 B coadaptive 5.8 0.6 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.25613 disease 2.5 +880 Fitness: 9.96647 Genotype: Fch1: A coadaptive 4.1 3.6 B coadaptive 4 7.1 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.96647 disease 3 +881 Fitness: 9.96647 Genotype: Fch1: A coadaptive 4.1 3.6 B coadaptive 4 7.1 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.96647 disease 3 +882 Fitness: 9.96647 Genotype: Fch1: A coadaptive 4.1 3.6 B coadaptive 4 7.1 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 9.96647 disease 3 +883 Fitness: 12.9899 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 7.1 2.9 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.9899 disease 3 +884 Fitness: 12.9899 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 7.1 2.9 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.9899 disease 3 +885 Fitness: 12.9899 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 7.1 2.9 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.9899 disease 3 +886 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 2 B coadaptive 6.6 9 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +887 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 2 B coadaptive 6.6 9 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +888 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 2 B coadaptive 6.6 9 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +889 Fitness: 10.5289 Genotype: Fch1: A coadaptive 5.8 5.9 B coadaptive 4.1 4.1 C disease 0.5 1 D disease 1 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.5289 disease 4 +890 Fitness: 10.5289 Genotype: Fch1: A coadaptive 5.8 5.9 B coadaptive 4.1 4.1 C disease 0.5 1 D disease 1 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.5289 disease 4 +891 Fitness: 10.5289 Genotype: Fch1: A coadaptive 5.8 5.9 B coadaptive 4.1 4.1 C disease 0.5 1 D disease 1 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 10.5289 disease 4 +892 Fitness: 12.6811 Genotype: Fch1: A coadaptive 1.4 8.3 B coadaptive 9.3 2.1 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.6811 disease 3.5 +893 Fitness: 12.6811 Genotype: Fch1: A coadaptive 1.4 8.3 B coadaptive 9.3 2.1 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.6811 disease 3.5 +894 Fitness: 12.6811 Genotype: Fch1: A coadaptive 1.4 8.3 B coadaptive 9.3 2.1 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.6811 disease 3.5 +895 Fitness: 6.08968 Genotype: Fch1: A coadaptive 1.2 3.9 B coadaptive 5.3 3.7 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.08968 disease 3.5 +896 Fitness: 6.08968 Genotype: Fch1: A coadaptive 1.2 3.9 B coadaptive 5.3 3.7 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.08968 disease 3.5 +897 Fitness: 6.08968 Genotype: Fch1: A coadaptive 1.2 3.9 B coadaptive 5.3 3.7 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.08968 disease 3.5 +898 Fitness: 5.40981 Genotype: Fch1: A coadaptive 2.9 2.2 B coadaptive 3.8 2.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.40981 disease 3 +899 Fitness: 5.40981 Genotype: Fch1: A coadaptive 2.9 2.2 B coadaptive 3.8 2.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.40981 disease 3 +900 Fitness: 5.40981 Genotype: Fch1: A coadaptive 2.9 2.2 B coadaptive 3.8 2.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.40981 disease 3 +901 Fitness: 14.3277 Genotype: Fch1: A coadaptive 8.7 5.4 B coadaptive 6.3 8.6 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.3277 disease 3 +902 Fitness: 14.3277 Genotype: Fch1: A coadaptive 8.7 5.4 B coadaptive 6.3 8.6 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.3277 disease 3 +903 Fitness: 14.3277 Genotype: Fch1: A coadaptive 8.7 5.4 B coadaptive 6.3 8.6 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 14.3277 disease 3 +904 Fitness: 13.8003 Genotype: Fch1: A coadaptive 9.4 5.3 B coadaptive 3.9 8.5 C disease 1 0 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.8003 disease 4 +905 Fitness: 13.8003 Genotype: Fch1: A coadaptive 9.4 5.3 B coadaptive 3.9 8.5 C disease 1 0 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.8003 disease 4 +906 Fitness: 13.8003 Genotype: Fch1: A coadaptive 9.4 5.3 B coadaptive 3.9 8.5 C disease 1 0 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.8003 disease 4 +907 Fitness: 6.64934 Genotype: Fch1: A coadaptive 6.1 0.3 B coadaptive 5.4 6.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 6.64934 disease 2.5 +908 Fitness: 6.64934 Genotype: Fch1: A coadaptive 6.1 0.3 B coadaptive 5.4 6.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 6.64934 disease 2.5 +909 Fitness: 6.64934 Genotype: Fch1: A coadaptive 6.1 0.3 B coadaptive 5.4 6.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 6.64934 disease 2.5 +910 Fitness: 13.2988 Genotype: Fch1: A coadaptive 7.7 7.8 B coadaptive 8.7 7.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 13.2988 disease 3 +911 Fitness: 13.2988 Genotype: Fch1: A coadaptive 7.7 7.8 B coadaptive 8.7 7.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 13.2988 disease 3 +912 Fitness: 13.2988 Genotype: Fch1: A coadaptive 7.7 7.8 B coadaptive 8.7 7.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 13.2988 disease 3 +913 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.5 B coadaptive 7.2 9.1 C disease 0 0 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +914 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.5 B coadaptive 7.2 9.1 C disease 0 0 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +915 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.5 B coadaptive 7.2 9.1 C disease 0 0 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +916 Fitness: 14.2552 Genotype: Fch1: A coadaptive 5.5 8.9 B coadaptive 5 7.7 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 14.2552 disease 2.5 +917 Fitness: 14.2552 Genotype: Fch1: A coadaptive 5.5 8.9 B coadaptive 5 7.7 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 14.2552 disease 2.5 +918 Fitness: 14.2552 Genotype: Fch1: A coadaptive 5.5 8.9 B coadaptive 5 7.7 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 14.2552 disease 2.5 +919 Fitness: 14.7769 Genotype: Fch1: A coadaptive 6.5 6.5 B coadaptive 5.8 7.1 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 14.7769 disease 2.5 +920 Fitness: 14.7769 Genotype: Fch1: A coadaptive 6.5 6.5 B coadaptive 5.8 7.1 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 14.7769 disease 2.5 +921 Fitness: 14.7769 Genotype: Fch1: A coadaptive 6.5 6.5 B coadaptive 5.8 7.1 C disease 0 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 14.7769 disease 2.5 +922 Fitness: 7.7303 Genotype: Fch1: A coadaptive 6.9 9 B coadaptive 2.5 7.2 C disease 0 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.7303 disease 4 +923 Fitness: 7.7303 Genotype: Fch1: A coadaptive 6.9 9 B coadaptive 2.5 7.2 C disease 0 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.7303 disease 4 +924 Fitness: 7.7303 Genotype: Fch1: A coadaptive 6.9 9 B coadaptive 2.5 7.2 C disease 0 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.7303 disease 4 +925 Fitness: 12.8717 Genotype: Fch1: A coadaptive 4.1 7.7 B coadaptive 1.2 8.7 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.8717 disease 2 +926 Fitness: 12.8717 Genotype: Fch1: A coadaptive 4.1 7.7 B coadaptive 1.2 8.7 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.8717 disease 2 +927 Fitness: 12.8717 Genotype: Fch1: A coadaptive 4.1 7.7 B coadaptive 1.2 8.7 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.8717 disease 2 +928 Fitness: 13.2405 Genotype: Fch1: A coadaptive 8.1 3.5 B coadaptive 7.6 6.9 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.2405 disease 4 +929 Fitness: 13.2405 Genotype: Fch1: A coadaptive 8.1 3.5 B coadaptive 7.6 6.9 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.2405 disease 4 +930 Fitness: 13.2405 Genotype: Fch1: A coadaptive 8.1 3.5 B coadaptive 7.6 6.9 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 13.2405 disease 4 +931 Fitness: 7.24235 Genotype: Fch1: A coadaptive 2.4 8.3 B coadaptive 0.1 6 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.24235 disease 3.5 +932 Fitness: 7.24235 Genotype: Fch1: A coadaptive 2.4 8.3 B coadaptive 0.1 6 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.24235 disease 3.5 +933 Fitness: 7.24235 Genotype: Fch1: A coadaptive 2.4 8.3 B coadaptive 0.1 6 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.24235 disease 3.5 +934 Fitness: 11.1375 Genotype: Fch1: A coadaptive 1.6 7.4 B coadaptive 5.1 3.9 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 11.1375 disease 3.5 +935 Fitness: 11.1375 Genotype: Fch1: A coadaptive 1.6 7.4 B coadaptive 5.1 3.9 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 11.1375 disease 3.5 +936 Fitness: 11.1375 Genotype: Fch1: A coadaptive 1.6 7.4 B coadaptive 5.1 3.9 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 11.1375 disease 3.5 +937 Fitness: 9.37766 Genotype: Fch1: A coadaptive 1.3 9 B coadaptive 4.5 2.7 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.37766 disease 3.5 +938 Fitness: 9.37766 Genotype: Fch1: A coadaptive 1.3 9 B coadaptive 4.5 2.7 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.37766 disease 3.5 +939 Fitness: 9.37766 Genotype: Fch1: A coadaptive 1.3 9 B coadaptive 4.5 2.7 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 9.37766 disease 3.5 +940 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 9 B coadaptive 0.3 4.9 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +941 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 9 B coadaptive 0.3 4.9 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +942 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 9 B coadaptive 0.3 4.9 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +943 Fitness: 4.30358 Genotype: Fch1: A coadaptive 6.4 0.5 B coadaptive 1.1 2.8 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.30358 disease 3 +944 Fitness: 4.30358 Genotype: Fch1: A coadaptive 6.4 0.5 B coadaptive 1.1 2.8 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.30358 disease 3 +945 Fitness: 4.30358 Genotype: Fch1: A coadaptive 6.4 0.5 B coadaptive 1.1 2.8 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.30358 disease 3 +946 Fitness: 5.288 Genotype: Fch1: A coadaptive 0.4 4.8 B coadaptive 5.3 5.5 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.288 disease 2 +947 Fitness: 5.288 Genotype: Fch1: A coadaptive 0.4 4.8 B coadaptive 5.3 5.5 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.288 disease 2 +948 Fitness: 5.288 Genotype: Fch1: A coadaptive 0.4 4.8 B coadaptive 5.3 5.5 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.288 disease 2 +949 Fitness: 11.7458 Genotype: Fch1: A coadaptive 8.6 7.3 B coadaptive 8.9 8.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7458 disease 2 +950 Fitness: 11.7458 Genotype: Fch1: A coadaptive 8.6 7.3 B coadaptive 8.9 8.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7458 disease 2 +951 Fitness: 11.7458 Genotype: Fch1: A coadaptive 8.6 7.3 B coadaptive 8.9 8.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7458 disease 2 +952 Fitness: 11.7256 Genotype: Fch1: A coadaptive 9.5 6.2 B coadaptive 8 3.7 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.7256 disease 2.5 +953 Fitness: 11.7256 Genotype: Fch1: A coadaptive 9.5 6.2 B coadaptive 8 3.7 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.7256 disease 2.5 +954 Fitness: 11.7256 Genotype: Fch1: A coadaptive 9.5 6.2 B coadaptive 8 3.7 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 11.7256 disease 2.5 +955 Fitness: 5.19727 Genotype: Fch1: A coadaptive 2.8 2.4 B coadaptive 7.7 3.2 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 5.19727 disease 3 +956 Fitness: 5.19727 Genotype: Fch1: A coadaptive 2.8 2.4 B coadaptive 7.7 3.2 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 5.19727 disease 3 +957 Fitness: 5.19727 Genotype: Fch1: A coadaptive 2.8 2.4 B coadaptive 7.7 3.2 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 5.19727 disease 3 +958 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.6 B coadaptive 0.7 0.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +959 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.6 B coadaptive 0.7 0.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +960 Fitness: 0 Genotype: Fch1: A coadaptive 9 8.6 B coadaptive 0.7 0.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +961 Fitness: 5.41809 Genotype: Fch1: A coadaptive 4.6 6.3 B coadaptive 3.1 2.2 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 5.41809 disease 3.5 +962 Fitness: 5.41809 Genotype: Fch1: A coadaptive 4.6 6.3 B coadaptive 3.1 2.2 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 5.41809 disease 3.5 +963 Fitness: 5.41809 Genotype: Fch1: A coadaptive 4.6 6.3 B coadaptive 3.1 2.2 C disease 1 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 5.41809 disease 3.5 +964 Fitness: 12.7455 Genotype: Fch1: A coadaptive 6.7 6.6 B coadaptive 6.9 9.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.7455 disease 2 +965 Fitness: 12.7455 Genotype: Fch1: A coadaptive 6.7 6.6 B coadaptive 6.9 9.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.7455 disease 2 +966 Fitness: 12.7455 Genotype: Fch1: A coadaptive 6.7 6.6 B coadaptive 6.9 9.2 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.7455 disease 2 +967 Fitness: 11.9017 Genotype: Fch1: A coadaptive 8.5 4.8 B coadaptive 9.9 6.7 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 11.9017 disease 3 +968 Fitness: 11.9017 Genotype: Fch1: A coadaptive 8.5 4.8 B coadaptive 9.9 6.7 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 11.9017 disease 3 +969 Fitness: 11.9017 Genotype: Fch1: A coadaptive 8.5 4.8 B coadaptive 9.9 6.7 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 11.9017 disease 3 +970 Fitness: 12.7286 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 6.1 3.7 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.7286 disease 2 +971 Fitness: 12.7286 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 6.1 3.7 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.7286 disease 2 +972 Fitness: 12.7286 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 6.1 3.7 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.7286 disease 2 +973 Fitness: 0.773998 Genotype: Fch1: A coadaptive 1.2 3.6 B coadaptive 6.9 6.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0.773998 disease 2.5 +974 Fitness: 0.773998 Genotype: Fch1: A coadaptive 1.2 3.6 B coadaptive 6.9 6.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0.773998 disease 2.5 +975 Fitness: 0.773998 Genotype: Fch1: A coadaptive 1.2 3.6 B coadaptive 6.9 6.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0.773998 disease 2.5 +976 Fitness: 7.64591 Genotype: Fch1: A coadaptive 3.1 3.1 B coadaptive 2.2 8.1 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.64591 disease 2.5 +977 Fitness: 7.64591 Genotype: Fch1: A coadaptive 3.1 3.1 B coadaptive 2.2 8.1 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.64591 disease 2.5 +978 Fitness: 7.64591 Genotype: Fch1: A coadaptive 3.1 3.1 B coadaptive 2.2 8.1 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.64591 disease 2.5 +979 Fitness: 3.24745 Genotype: Fch1: A coadaptive 1.8 2 B coadaptive 0.6 9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 3.24745 disease 3 +980 Fitness: 3.24745 Genotype: Fch1: A coadaptive 1.8 2 B coadaptive 0.6 9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 3.24745 disease 3 +981 Fitness: 3.24745 Genotype: Fch1: A coadaptive 1.8 2 B coadaptive 0.6 9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 3.24745 disease 3 +982 Fitness: 5.49725 Genotype: Fch1: A coadaptive 5.8 1.5 B coadaptive 3.3 1.4 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 5.49725 disease 3 +983 Fitness: 5.49725 Genotype: Fch1: A coadaptive 5.8 1.5 B coadaptive 3.3 1.4 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 5.49725 disease 3 +984 Fitness: 5.49725 Genotype: Fch1: A coadaptive 5.8 1.5 B coadaptive 3.3 1.4 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 5.49725 disease 3 +985 Fitness: 5.6096 Genotype: Fch1: A coadaptive 1.9 6.9 B coadaptive 3.4 1.4 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.6096 disease 2.5 +986 Fitness: 5.6096 Genotype: Fch1: A coadaptive 1.9 6.9 B coadaptive 3.4 1.4 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.6096 disease 2.5 +987 Fitness: 5.6096 Genotype: Fch1: A coadaptive 1.9 6.9 B coadaptive 3.4 1.4 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.6096 disease 2.5 +988 Fitness: 8.8252 Genotype: Fch1: A coadaptive 1.7 5.1 B coadaptive 3.7 5.9 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 8.8252 disease 2.5 +989 Fitness: 8.8252 Genotype: Fch1: A coadaptive 1.7 5.1 B coadaptive 3.7 5.9 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 8.8252 disease 2.5 +990 Fitness: 8.8252 Genotype: Fch1: A coadaptive 1.7 5.1 B coadaptive 3.7 5.9 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 8.8252 disease 2.5 +991 Fitness: 9.31985 Genotype: Fch1: A coadaptive 5 3.3 B coadaptive 9.8 3.5 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.31985 disease 4 +992 Fitness: 9.31985 Genotype: Fch1: A coadaptive 5 3.3 B coadaptive 9.8 3.5 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.31985 disease 4 +993 Fitness: 9.31985 Genotype: Fch1: A coadaptive 5 3.3 B coadaptive 9.8 3.5 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.31985 disease 4 +994 Fitness: 10.1781 Genotype: Fch1: A coadaptive 6.3 9.2 B coadaptive 3.2 7.3 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1781 disease 3 +995 Fitness: 10.1781 Genotype: Fch1: A coadaptive 6.3 9.2 B coadaptive 3.2 7.3 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1781 disease 3 +996 Fitness: 10.1781 Genotype: Fch1: A coadaptive 6.3 9.2 B coadaptive 3.2 7.3 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1781 disease 3 +997 Fitness: 5.30601 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 3.7 1.1 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 5.30601 disease 3.5 +998 Fitness: 5.30601 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 3.7 1.1 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 5.30601 disease 3.5 +999 Fitness: 5.30601 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 3.7 1.1 C disease 0.5 1 D disease 1 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 5.30601 disease 3.5 +1000 Fitness: 11.4184 Genotype: Fch1: A coadaptive 7.3 1.5 B coadaptive 4.8 5 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 11.4184 disease 1.5 +1001 Fitness: 11.4184 Genotype: Fch1: A coadaptive 7.3 1.5 B coadaptive 4.8 5 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 11.4184 disease 1.5 +1002 Fitness: 11.4184 Genotype: Fch1: A coadaptive 7.3 1.5 B coadaptive 4.8 5 C disease 0.5 0.5 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 11.4184 disease 1.5 +1003 Fitness: 1.2345 Genotype: Fch1: A coadaptive 2 2.1 B coadaptive 9 2.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 1.2345 disease 3.5 +1004 Fitness: 1.2345 Genotype: Fch1: A coadaptive 2 2.1 B coadaptive 9 2.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 1.2345 disease 3.5 +1005 Fitness: 1.2345 Genotype: Fch1: A coadaptive 2 2.1 B coadaptive 9 2.9 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 1.2345 disease 3.5 +1006 Fitness: 14.6618 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 6.8 6 C disease 1 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.6618 disease 2.5 +1007 Fitness: 14.6618 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 6.8 6 C disease 1 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.6618 disease 2.5 +1008 Fitness: 14.6618 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 6.8 6 C disease 1 0.5 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.6618 disease 2.5 +1009 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3 B coadaptive 8.3 9.3 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1010 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3 B coadaptive 8.3 9.3 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1011 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 3 B coadaptive 8.3 9.3 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1012 Fitness: 0.546324 Genotype: Fch1: A coadaptive 7.9 4.4 B coadaptive 1.9 2.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.546324 disease 3 +1013 Fitness: 0.546324 Genotype: Fch1: A coadaptive 7.9 4.4 B coadaptive 1.9 2.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.546324 disease 3 +1014 Fitness: 0.546324 Genotype: Fch1: A coadaptive 7.9 4.4 B coadaptive 1.9 2.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.546324 disease 3 +1015 Fitness: 8.32143 Genotype: Fch1: A coadaptive 8.9 6.1 B coadaptive 7.7 1.4 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.32143 disease 1.5 +1016 Fitness: 8.32143 Genotype: Fch1: A coadaptive 8.9 6.1 B coadaptive 7.7 1.4 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.32143 disease 1.5 +1017 Fitness: 8.32143 Genotype: Fch1: A coadaptive 8.9 6.1 B coadaptive 7.7 1.4 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.32143 disease 1.5 +1018 Fitness: 6.51292 Genotype: Fch1: A coadaptive 6.9 8.3 B coadaptive 2.5 6 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.51292 disease 2 +1019 Fitness: 6.51292 Genotype: Fch1: A coadaptive 6.9 8.3 B coadaptive 2.5 6 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.51292 disease 2 +1020 Fitness: 6.51292 Genotype: Fch1: A coadaptive 6.9 8.3 B coadaptive 2.5 6 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.51292 disease 2 +1021 Fitness: 5.1588 Genotype: Fch1: A coadaptive 5.8 0.2 B coadaptive 4.1 0.7 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.1588 disease 3 +1022 Fitness: 5.1588 Genotype: Fch1: A coadaptive 5.8 0.2 B coadaptive 4.1 0.7 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.1588 disease 3 +1023 Fitness: 5.1588 Genotype: Fch1: A coadaptive 5.8 0.2 B coadaptive 4.1 0.7 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.1588 disease 3 +1024 Fitness: 13.6419 Genotype: Fch1: A coadaptive 4.7 8.8 B coadaptive 4.3 6.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 13.6419 disease 2.5 +1025 Fitness: 13.6419 Genotype: Fch1: A coadaptive 4.7 8.8 B coadaptive 4.3 6.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 13.6419 disease 2.5 +1026 Fitness: 13.6419 Genotype: Fch1: A coadaptive 4.7 8.8 B coadaptive 4.3 6.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 13.6419 disease 2.5 +1027 Fitness: 5.69375 Genotype: Fch1: A coadaptive 5.5 7.8 B coadaptive 5 1.7 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.69375 disease 3 +1028 Fitness: 5.69375 Genotype: Fch1: A coadaptive 5.5 7.8 B coadaptive 5 1.7 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.69375 disease 3 +1029 Fitness: 5.69375 Genotype: Fch1: A coadaptive 5.5 7.8 B coadaptive 5 1.7 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 5.69375 disease 3 +1030 Fitness: 13.6036 Genotype: Fch1: A coadaptive 6.9 8.7 B coadaptive 8.9 6.3 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 13.6036 disease 3 +1031 Fitness: 13.6036 Genotype: Fch1: A coadaptive 6.9 8.7 B coadaptive 8.9 6.3 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 13.6036 disease 3 +1032 Fitness: 13.6036 Genotype: Fch1: A coadaptive 6.9 8.7 B coadaptive 8.9 6.3 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 13.6036 disease 3 +1033 Fitness: 10.0692 Genotype: Fch1: A coadaptive 3.2 5.9 B coadaptive 3.7 4.1 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 10.0692 disease 3.5 +1034 Fitness: 10.0692 Genotype: Fch1: A coadaptive 3.2 5.9 B coadaptive 3.7 4.1 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 10.0692 disease 3.5 +1035 Fitness: 10.0692 Genotype: Fch1: A coadaptive 3.2 5.9 B coadaptive 3.7 4.1 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 10.0692 disease 3.5 +1036 Fitness: 4.046 Genotype: Fch1: A coadaptive 5.4 9.4 B coadaptive 3.3 3.9 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 4.046 disease 3 +1037 Fitness: 4.046 Genotype: Fch1: A coadaptive 5.4 9.4 B coadaptive 3.3 3.9 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 4.046 disease 3 +1038 Fitness: 4.046 Genotype: Fch1: A coadaptive 5.4 9.4 B coadaptive 3.3 3.9 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 4.046 disease 3 +1039 Fitness: 13.4235 Genotype: Fch1: A coadaptive 9.5 1.6 B coadaptive 1.3 9.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 13.4235 disease 4 +1040 Fitness: 13.4235 Genotype: Fch1: A coadaptive 9.5 1.6 B coadaptive 1.3 9.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 13.4235 disease 4 +1041 Fitness: 13.4235 Genotype: Fch1: A coadaptive 9.5 1.6 B coadaptive 1.3 9.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 13.4235 disease 4 +1042 Fitness: 10.833 Genotype: Fch1: A coadaptive 8.6 7.1 B coadaptive 6.5 4.6 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.833 disease 3.5 +1043 Fitness: 10.833 Genotype: Fch1: A coadaptive 8.6 7.1 B coadaptive 6.5 4.6 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.833 disease 3.5 +1044 Fitness: 10.833 Genotype: Fch1: A coadaptive 8.6 7.1 B coadaptive 6.5 4.6 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.833 disease 3.5 +1045 Fitness: 4.08121 Genotype: Fch1: A coadaptive 0.1 4.2 B coadaptive 8.2 1.7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.08121 disease 3.5 +1046 Fitness: 4.08121 Genotype: Fch1: A coadaptive 0.1 4.2 B coadaptive 8.2 1.7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.08121 disease 3.5 +1047 Fitness: 4.08121 Genotype: Fch1: A coadaptive 0.1 4.2 B coadaptive 8.2 1.7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.08121 disease 3.5 +1048 Fitness: 11.9613 Genotype: Fch1: A coadaptive 2.1 7 B coadaptive 2.9 7.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.9613 disease 2.5 +1049 Fitness: 11.9613 Genotype: Fch1: A coadaptive 2.1 7 B coadaptive 2.9 7.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.9613 disease 2.5 +1050 Fitness: 11.9613 Genotype: Fch1: A coadaptive 2.1 7 B coadaptive 2.9 7.7 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 11.9613 disease 2.5 +1051 Fitness: 9.58789 Genotype: Fch1: A coadaptive 7.9 2.6 B coadaptive 6.6 9.2 C disease 0 0 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.58789 disease 2 +1052 Fitness: 9.58789 Genotype: Fch1: A coadaptive 7.9 2.6 B coadaptive 6.6 9.2 C disease 0 0 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.58789 disease 2 +1053 Fitness: 9.58789 Genotype: Fch1: A coadaptive 7.9 2.6 B coadaptive 6.6 9.2 C disease 0 0 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.58789 disease 2 +1054 Fitness: 12.8925 Genotype: Fch1: A coadaptive 7.5 6.3 B coadaptive 9.2 7 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 12.8925 disease 3.5 +1055 Fitness: 12.8925 Genotype: Fch1: A coadaptive 7.5 6.3 B coadaptive 9.2 7 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 12.8925 disease 3.5 +1056 Fitness: 12.8925 Genotype: Fch1: A coadaptive 7.5 6.3 B coadaptive 9.2 7 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 12.8925 disease 3.5 +1057 Fitness: 8.20301 Genotype: Fch1: A coadaptive 6.3 3.2 B coadaptive 2.2 4.2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.20301 disease 2.5 +1058 Fitness: 8.20301 Genotype: Fch1: A coadaptive 6.3 3.2 B coadaptive 2.2 4.2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.20301 disease 2.5 +1059 Fitness: 8.20301 Genotype: Fch1: A coadaptive 6.3 3.2 B coadaptive 2.2 4.2 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.20301 disease 2.5 +1060 Fitness: 9.26696 Genotype: Fch1: A coadaptive 6.8 0.3 B coadaptive 2 7.5 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.26696 disease 1.5 +1061 Fitness: 9.26696 Genotype: Fch1: A coadaptive 6.8 0.3 B coadaptive 2 7.5 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.26696 disease 1.5 +1062 Fitness: 9.26696 Genotype: Fch1: A coadaptive 6.8 0.3 B coadaptive 2 7.5 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.26696 disease 1.5 +1063 Fitness: 7.02145 Genotype: Fch1: A coadaptive 6.6 2.9 B coadaptive 2.7 3 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.02145 disease 2.5 +1064 Fitness: 7.02145 Genotype: Fch1: A coadaptive 6.6 2.9 B coadaptive 2.7 3 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.02145 disease 2.5 +1065 Fitness: 7.02145 Genotype: Fch1: A coadaptive 6.6 2.9 B coadaptive 2.7 3 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.02145 disease 2.5 +1066 Fitness: 12.5723 Genotype: Fch1: A coadaptive 2.4 8.9 B coadaptive 5.4 4.2 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.5723 disease 2.5 +1067 Fitness: 12.5723 Genotype: Fch1: A coadaptive 2.4 8.9 B coadaptive 5.4 4.2 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.5723 disease 2.5 +1068 Fitness: 12.5723 Genotype: Fch1: A coadaptive 2.4 8.9 B coadaptive 5.4 4.2 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.5723 disease 2.5 +1069 Fitness: 3.48646 Genotype: Fch1: A coadaptive 1.6 3.1 B coadaptive 3.3 8.1 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.48646 disease 2 +1070 Fitness: 3.48646 Genotype: Fch1: A coadaptive 1.6 3.1 B coadaptive 3.3 8.1 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.48646 disease 2 +1071 Fitness: 3.48646 Genotype: Fch1: A coadaptive 1.6 3.1 B coadaptive 3.3 8.1 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 3.48646 disease 2 +1072 Fitness: 9.80826 Genotype: Fch1: A coadaptive 6.3 3.8 B coadaptive 7 8.3 C disease 1 0 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 9.80826 disease 4 +1073 Fitness: 9.80826 Genotype: Fch1: A coadaptive 6.3 3.8 B coadaptive 7 8.3 C disease 1 0 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 9.80826 disease 4 +1074 Fitness: 9.80826 Genotype: Fch1: A coadaptive 6.3 3.8 B coadaptive 7 8.3 C disease 1 0 D disease 1 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 9.80826 disease 4 +1075 Fitness: 0.601425 Genotype: Fch1: A coadaptive 1.8 1.7 B coadaptive 9.5 1.8 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.601425 disease 2 +1076 Fitness: 0.601425 Genotype: Fch1: A coadaptive 1.8 1.7 B coadaptive 9.5 1.8 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.601425 disease 2 +1077 Fitness: 0.601425 Genotype: Fch1: A coadaptive 1.8 1.7 B coadaptive 9.5 1.8 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.601425 disease 2 +1078 Fitness: 13.0313 Genotype: Fch1: A coadaptive 4.4 9.6 B coadaptive 5 6 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0313 disease 2.5 +1079 Fitness: 13.0313 Genotype: Fch1: A coadaptive 4.4 9.6 B coadaptive 5 6 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0313 disease 2.5 +1080 Fitness: 13.0313 Genotype: Fch1: A coadaptive 4.4 9.6 B coadaptive 5 6 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.0313 disease 2.5 +1081 Fitness: 5.69375 Genotype: Fch1: A coadaptive 2.2 4.5 B coadaptive 4.5 8.8 C disease 0 0 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.69375 disease 1.5 +1082 Fitness: 5.69375 Genotype: Fch1: A coadaptive 2.2 4.5 B coadaptive 4.5 8.8 C disease 0 0 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.69375 disease 1.5 +1083 Fitness: 5.69375 Genotype: Fch1: A coadaptive 2.2 4.5 B coadaptive 4.5 8.8 C disease 0 0 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 5.69375 disease 1.5 +1084 Fitness: 7.40198 Genotype: Fch1: A coadaptive 5.1 0.8 B coadaptive 1.2 7.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.40198 disease 2.5 +1085 Fitness: 7.40198 Genotype: Fch1: A coadaptive 5.1 0.8 B coadaptive 1.2 7.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.40198 disease 2.5 +1086 Fitness: 7.40198 Genotype: Fch1: A coadaptive 5.1 0.8 B coadaptive 1.2 7.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.40198 disease 2.5 +1087 Fitness: 8.56185 Genotype: Fch1: A coadaptive 8.9 4.5 B coadaptive 5.6 2.4 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.56185 disease 3 +1088 Fitness: 8.56185 Genotype: Fch1: A coadaptive 8.9 4.5 B coadaptive 5.6 2.4 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.56185 disease 3 +1089 Fitness: 8.56185 Genotype: Fch1: A coadaptive 8.9 4.5 B coadaptive 5.6 2.4 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.56185 disease 3 +1090 Fitness: 13.3573 Genotype: Fch1: A coadaptive 1.7 8.7 B coadaptive 8.5 3.6 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.3573 disease 2.5 +1091 Fitness: 13.3573 Genotype: Fch1: A coadaptive 1.7 8.7 B coadaptive 8.5 3.6 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.3573 disease 2.5 +1092 Fitness: 13.3573 Genotype: Fch1: A coadaptive 1.7 8.7 B coadaptive 8.5 3.6 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.3573 disease 2.5 +1093 Fitness: 0 Genotype: Fch1: A coadaptive 6.7 6.9 B coadaptive 2.3 0.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1094 Fitness: 0 Genotype: Fch1: A coadaptive 6.7 6.9 B coadaptive 2.3 0.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1095 Fitness: 0 Genotype: Fch1: A coadaptive 6.7 6.9 B coadaptive 2.3 0.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1096 Fitness: 13.1622 Genotype: Fch1: A coadaptive 7.2 8.7 B coadaptive 3.5 10 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.1622 disease 2.5 +1097 Fitness: 13.1622 Genotype: Fch1: A coadaptive 7.2 8.7 B coadaptive 3.5 10 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.1622 disease 2.5 +1098 Fitness: 13.1622 Genotype: Fch1: A coadaptive 7.2 8.7 B coadaptive 3.5 10 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 13.1622 disease 2.5 +1099 Fitness: 12.175 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 7 5.4 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 12.175 disease 3 +1100 Fitness: 12.175 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 7 5.4 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 12.175 disease 3 +1101 Fitness: 12.175 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 7 5.4 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 12.175 disease 3 +1102 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 7.5 B coadaptive 1.1 1.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1103 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 7.5 B coadaptive 1.1 1.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1104 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 7.5 B coadaptive 1.1 1.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1105 Fitness: 0.224913 Genotype: Fch1: A coadaptive 3.8 6.7 B coadaptive 2.9 0 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0.224913 disease 4 +1106 Fitness: 0.224913 Genotype: Fch1: A coadaptive 3.8 6.7 B coadaptive 2.9 0 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0.224913 disease 4 +1107 Fitness: 0.224913 Genotype: Fch1: A coadaptive 3.8 6.7 B coadaptive 2.9 0 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0.224913 disease 4 +1108 Fitness: 12.9692 Genotype: Fch1: A coadaptive 2.8 7.2 B coadaptive 7.7 3.5 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 12.9692 disease 2 +1109 Fitness: 12.9692 Genotype: Fch1: A coadaptive 2.8 7.2 B coadaptive 7.7 3.5 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 12.9692 disease 2 +1110 Fitness: 12.9692 Genotype: Fch1: A coadaptive 2.8 7.2 B coadaptive 7.7 3.5 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 12.9692 disease 2 +1111 Fitness: 13.4302 Genotype: Fch1: A coadaptive 4.3 7.1 B coadaptive 4.7 5.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.4302 disease 3 +1112 Fitness: 13.4302 Genotype: Fch1: A coadaptive 4.3 7.1 B coadaptive 4.7 5.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.4302 disease 3 +1113 Fitness: 13.4302 Genotype: Fch1: A coadaptive 4.3 7.1 B coadaptive 4.7 5.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 13.4302 disease 3 +1114 Fitness: 9.8108 Genotype: Fch1: A coadaptive 8.4 7 B coadaptive 8.7 1.5 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.8108 disease 2.5 +1115 Fitness: 9.8108 Genotype: Fch1: A coadaptive 8.4 7 B coadaptive 8.7 1.5 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.8108 disease 2.5 +1116 Fitness: 9.8108 Genotype: Fch1: A coadaptive 8.4 7 B coadaptive 8.7 1.5 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.8108 disease 2.5 +1117 Fitness: 7.21544 Genotype: Fch1: A coadaptive 8 5.7 B coadaptive 2.1 5.5 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.21544 disease 3 +1118 Fitness: 7.21544 Genotype: Fch1: A coadaptive 8 5.7 B coadaptive 2.1 5.5 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.21544 disease 3 +1119 Fitness: 7.21544 Genotype: Fch1: A coadaptive 8 5.7 B coadaptive 2.1 5.5 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.21544 disease 3 +1120 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.8 B coadaptive 10 7.3 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1121 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.8 B coadaptive 10 7.3 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1122 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.8 B coadaptive 10 7.3 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1123 Fitness: 9.83692 Genotype: Fch1: A coadaptive 1.2 7.3 B coadaptive 3.3 9.9 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.83692 disease 3.5 +1124 Fitness: 9.83692 Genotype: Fch1: A coadaptive 1.2 7.3 B coadaptive 3.3 9.9 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.83692 disease 3.5 +1125 Fitness: 9.83692 Genotype: Fch1: A coadaptive 1.2 7.3 B coadaptive 3.3 9.9 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.83692 disease 3.5 +1126 Fitness: 9.17185 Genotype: Fch1: A coadaptive 3.8 3.4 B coadaptive 8.4 0.2 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.17185 disease 3 +1127 Fitness: 9.17185 Genotype: Fch1: A coadaptive 3.8 3.4 B coadaptive 8.4 0.2 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.17185 disease 3 +1128 Fitness: 9.17185 Genotype: Fch1: A coadaptive 3.8 3.4 B coadaptive 8.4 0.2 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.17185 disease 3 +1129 Fitness: 5.31856 Genotype: Fch1: A coadaptive 3.7 1.2 B coadaptive 1.6 4.5 C disease 0.5 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 5.31856 disease 3 +1130 Fitness: 5.31856 Genotype: Fch1: A coadaptive 3.7 1.2 B coadaptive 1.6 4.5 C disease 0.5 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 5.31856 disease 3 +1131 Fitness: 5.31856 Genotype: Fch1: A coadaptive 3.7 1.2 B coadaptive 1.6 4.5 C disease 0.5 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 5.31856 disease 3 +1132 Fitness: 11.22 Genotype: Fch1: A coadaptive 8.1 9.1 B coadaptive 8.1 8.2 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.22 disease 3.5 +1133 Fitness: 11.22 Genotype: Fch1: A coadaptive 8.1 9.1 B coadaptive 8.1 8.2 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.22 disease 3.5 +1134 Fitness: 11.22 Genotype: Fch1: A coadaptive 8.1 9.1 B coadaptive 8.1 8.2 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.22 disease 3.5 +1135 Fitness: 10.1831 Genotype: Fch1: A coadaptive 7.9 2.4 B coadaptive 7.3 8 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1831 disease 3 +1136 Fitness: 10.1831 Genotype: Fch1: A coadaptive 7.9 2.4 B coadaptive 7.3 8 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1831 disease 3 +1137 Fitness: 10.1831 Genotype: Fch1: A coadaptive 7.9 2.4 B coadaptive 7.3 8 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 10.1831 disease 3 +1138 Fitness: 11.3559 Genotype: Fch1: A coadaptive 8.7 2.3 B coadaptive 3.6 5 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.3559 disease 2 +1139 Fitness: 11.3559 Genotype: Fch1: A coadaptive 8.7 2.3 B coadaptive 3.6 5 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.3559 disease 2 +1140 Fitness: 11.3559 Genotype: Fch1: A coadaptive 8.7 2.3 B coadaptive 3.6 5 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.3559 disease 2 +1141 Fitness: 13.3219 Genotype: Fch1: A coadaptive 1.8 9.3 B coadaptive 7.3 6.5 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.3219 disease 2.5 +1142 Fitness: 13.3219 Genotype: Fch1: A coadaptive 1.8 9.3 B coadaptive 7.3 6.5 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.3219 disease 2.5 +1143 Fitness: 13.3219 Genotype: Fch1: A coadaptive 1.8 9.3 B coadaptive 7.3 6.5 C disease 1 0 D disease 0 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.3219 disease 2.5 +1144 Fitness: 5.62996 Genotype: Fch1: A coadaptive 5.4 3.9 B coadaptive 1.5 3.4 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.62996 disease 3 +1145 Fitness: 5.62996 Genotype: Fch1: A coadaptive 5.4 3.9 B coadaptive 1.5 3.4 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.62996 disease 3 +1146 Fitness: 5.62996 Genotype: Fch1: A coadaptive 5.4 3.9 B coadaptive 1.5 3.4 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.62996 disease 3 +1147 Fitness: 6.84236 Genotype: Fch1: A coadaptive 8.8 1.9 B coadaptive 2.5 3.4 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 6.84236 disease 3.5 +1148 Fitness: 6.84236 Genotype: Fch1: A coadaptive 8.8 1.9 B coadaptive 2.5 3.4 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 6.84236 disease 3.5 +1149 Fitness: 6.84236 Genotype: Fch1: A coadaptive 8.8 1.9 B coadaptive 2.5 3.4 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 6.84236 disease 3.5 +1150 Fitness: 8.60435 Genotype: Fch1: A coadaptive 10 2.8 B coadaptive 9.4 8.4 C disease 0.5 1 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.60435 disease 4 +1151 Fitness: 8.60435 Genotype: Fch1: A coadaptive 10 2.8 B coadaptive 9.4 8.4 C disease 0.5 1 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.60435 disease 4 +1152 Fitness: 8.60435 Genotype: Fch1: A coadaptive 10 2.8 B coadaptive 9.4 8.4 C disease 0.5 1 D disease 1 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.60435 disease 4 +1153 Fitness: 12.4463 Genotype: Fch1: A coadaptive 1.9 8 B coadaptive 9.2 3.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.4463 disease 2 +1154 Fitness: 12.4463 Genotype: Fch1: A coadaptive 1.9 8 B coadaptive 9.2 3.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.4463 disease 2 +1155 Fitness: 12.4463 Genotype: Fch1: A coadaptive 1.9 8 B coadaptive 9.2 3.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 12.4463 disease 2 +1156 Fitness: 8.9528 Genotype: Fch1: A coadaptive 0 7.6 B coadaptive 7.5 0.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.9528 disease 2 +1157 Fitness: 8.9528 Genotype: Fch1: A coadaptive 0 7.6 B coadaptive 7.5 0.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.9528 disease 2 +1158 Fitness: 8.9528 Genotype: Fch1: A coadaptive 0 7.6 B coadaptive 7.5 0.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.9528 disease 2 +1159 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.6 B coadaptive 2.2 6.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1160 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.6 B coadaptive 2.2 6.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1161 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.6 B coadaptive 2.2 6.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1162 Fitness: 9.70965 Genotype: Fch1: A coadaptive 1.2 6.6 B coadaptive 0.1 8.3 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.70965 disease 2.5 +1163 Fitness: 9.70965 Genotype: Fch1: A coadaptive 1.2 6.6 B coadaptive 0.1 8.3 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.70965 disease 2.5 +1164 Fitness: 9.70965 Genotype: Fch1: A coadaptive 1.2 6.6 B coadaptive 0.1 8.3 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.70965 disease 2.5 +1165 Fitness: 3.59977 Genotype: Fch1: A coadaptive 5.8 0.3 B coadaptive 3.7 9.9 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.59977 disease 4 +1166 Fitness: 3.59977 Genotype: Fch1: A coadaptive 5.8 0.3 B coadaptive 3.7 9.9 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.59977 disease 4 +1167 Fitness: 3.59977 Genotype: Fch1: A coadaptive 5.8 0.3 B coadaptive 3.7 9.9 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.59977 disease 4 +1168 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.2 B coadaptive 7.1 3.3 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1169 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.2 B coadaptive 7.1 3.3 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1170 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.2 B coadaptive 7.1 3.3 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1171 Fitness: 13.4701 Genotype: Fch1: A coadaptive 3.4 8.5 B coadaptive 2.9 7.6 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 13.4701 disease 4 +1172 Fitness: 13.4701 Genotype: Fch1: A coadaptive 3.4 8.5 B coadaptive 2.9 7.6 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 13.4701 disease 4 +1173 Fitness: 13.4701 Genotype: Fch1: A coadaptive 3.4 8.5 B coadaptive 2.9 7.6 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 13.4701 disease 4 +1174 Fitness: 7.3795 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 8.3 8.9 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.3795 disease 3.5 +1175 Fitness: 7.3795 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 8.3 8.9 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.3795 disease 3.5 +1176 Fitness: 7.3795 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 8.3 8.9 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.3795 disease 3.5 +1177 Fitness: 4.79178 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 5 3.1 C disease 0.5 1 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 4.79178 disease 2.5 +1178 Fitness: 4.79178 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 5 3.1 C disease 0.5 1 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 4.79178 disease 2.5 +1179 Fitness: 4.79178 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 5 3.1 C disease 0.5 1 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 4.79178 disease 2.5 +1180 Fitness: 9.7172 Genotype: Fch1: A coadaptive 3.7 3.9 B coadaptive 6.7 2.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.7172 disease 2.5 +1181 Fitness: 9.7172 Genotype: Fch1: A coadaptive 3.7 3.9 B coadaptive 6.7 2.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.7172 disease 2.5 +1182 Fitness: 9.7172 Genotype: Fch1: A coadaptive 3.7 3.9 B coadaptive 6.7 2.1 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.7172 disease 2.5 +1183 Fitness: 6.07543 Genotype: Fch1: A coadaptive 6.5 9 B coadaptive 7.3 1.3 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.07543 disease 3 +1184 Fitness: 6.07543 Genotype: Fch1: A coadaptive 6.5 9 B coadaptive 7.3 1.3 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.07543 disease 3 +1185 Fitness: 6.07543 Genotype: Fch1: A coadaptive 6.5 9 B coadaptive 7.3 1.3 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.07543 disease 3 +1186 Fitness: 8.52848 Genotype: Fch1: A coadaptive 2 5.8 B coadaptive 3.5 9.6 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.52848 disease 2.5 +1187 Fitness: 8.52848 Genotype: Fch1: A coadaptive 2 5.8 B coadaptive 3.5 9.6 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.52848 disease 2.5 +1188 Fitness: 8.52848 Genotype: Fch1: A coadaptive 2 5.8 B coadaptive 3.5 9.6 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.52848 disease 2.5 +1189 Fitness: 12.6517 Genotype: Fch1: A coadaptive 6.8 5.4 B coadaptive 7.6 7.9 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.6517 disease 3.5 +1190 Fitness: 12.6517 Genotype: Fch1: A coadaptive 6.8 5.4 B coadaptive 7.6 7.9 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.6517 disease 3.5 +1191 Fitness: 12.6517 Genotype: Fch1: A coadaptive 6.8 5.4 B coadaptive 7.6 7.9 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.6517 disease 3.5 +1192 Fitness: 13.9739 Genotype: Fch1: A coadaptive 6.1 9.1 B coadaptive 5.4 8.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.9739 disease 2.5 +1193 Fitness: 13.9739 Genotype: Fch1: A coadaptive 6.1 9.1 B coadaptive 5.4 8.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.9739 disease 2.5 +1194 Fitness: 13.9739 Genotype: Fch1: A coadaptive 6.1 9.1 B coadaptive 5.4 8.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.9739 disease 2.5 +1195 Fitness: 0.937025 Genotype: Fch1: A coadaptive 2.9 3.8 B coadaptive 1.6 0.1 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0.937025 disease 2 +1196 Fitness: 0.937025 Genotype: Fch1: A coadaptive 2.9 3.8 B coadaptive 1.6 0.1 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0.937025 disease 2 +1197 Fitness: 0.937025 Genotype: Fch1: A coadaptive 2.9 3.8 B coadaptive 1.6 0.1 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0.937025 disease 2 +1198 Fitness: 0.174952 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 5.4 10 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0.174952 disease 3.5 +1199 Fitness: 0.174952 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 5.4 10 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0.174952 disease 3.5 +1200 Fitness: 0.174952 Genotype: Fch1: A coadaptive 2.5 3.9 B coadaptive 5.4 10 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0.174952 disease 3.5 +1201 Fitness: 6.66406 Genotype: Fch1: A coadaptive 3.2 6.3 B coadaptive 4.2 1.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 6.66406 disease 3.5 +1202 Fitness: 6.66406 Genotype: Fch1: A coadaptive 3.2 6.3 B coadaptive 4.2 1.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 6.66406 disease 3.5 +1203 Fitness: 6.66406 Genotype: Fch1: A coadaptive 3.2 6.3 B coadaptive 4.2 1.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 6.66406 disease 3.5 +1204 Fitness: 2.01468 Genotype: Fch1: A coadaptive 4.2 0.9 B coadaptive 3 10 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 2.01468 disease 3.5 +1205 Fitness: 2.01468 Genotype: Fch1: A coadaptive 4.2 0.9 B coadaptive 3 10 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 2.01468 disease 3.5 +1206 Fitness: 2.01468 Genotype: Fch1: A coadaptive 4.2 0.9 B coadaptive 3 10 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 2.01468 disease 3.5 +1207 Fitness: 4.75501 Genotype: Fch1: A coadaptive 2.3 1.9 B coadaptive 2.6 4.5 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.75501 disease 2.5 +1208 Fitness: 4.75501 Genotype: Fch1: A coadaptive 2.3 1.9 B coadaptive 2.6 4.5 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.75501 disease 2.5 +1209 Fitness: 4.75501 Genotype: Fch1: A coadaptive 2.3 1.9 B coadaptive 2.6 4.5 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.75501 disease 2.5 +1210 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 1.3 B coadaptive 9.6 8.8 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +1211 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 1.3 B coadaptive 9.6 8.8 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +1212 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 1.3 B coadaptive 9.6 8.8 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +1213 Fitness: 9.07143 Genotype: Fch1: A coadaptive 6.7 0.3 B coadaptive 7.1 2 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.07143 disease 3.5 +1214 Fitness: 9.07143 Genotype: Fch1: A coadaptive 6.7 0.3 B coadaptive 7.1 2 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.07143 disease 3.5 +1215 Fitness: 9.07143 Genotype: Fch1: A coadaptive 6.7 0.3 B coadaptive 7.1 2 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.07143 disease 3.5 +1216 Fitness: 13.6445 Genotype: Fch1: A coadaptive 6.9 3.9 B coadaptive 3.2 9.4 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 13.6445 disease 3.5 +1217 Fitness: 13.6445 Genotype: Fch1: A coadaptive 6.9 3.9 B coadaptive 3.2 9.4 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 13.6445 disease 3.5 +1218 Fitness: 13.6445 Genotype: Fch1: A coadaptive 6.9 3.9 B coadaptive 3.2 9.4 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 13.6445 disease 3.5 +1219 Fitness: 6.9855 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 8.2 5.2 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 6.9855 disease 3.5 +1220 Fitness: 6.9855 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 8.2 5.2 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 6.9855 disease 3.5 +1221 Fitness: 6.9855 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 8.2 5.2 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 6.9855 disease 3.5 +1222 Fitness: 6.08137 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 7 5 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 6.08137 disease 2 +1223 Fitness: 6.08137 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 7 5 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 6.08137 disease 2 +1224 Fitness: 6.08137 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 7 5 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 6.08137 disease 2 +1225 Fitness: 8.4969 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 1.8 4.8 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 8.4969 disease 3 +1226 Fitness: 8.4969 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 1.8 4.8 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 8.4969 disease 3 +1227 Fitness: 8.4969 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 1.8 4.8 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 8.4969 disease 3 +1228 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 5.3 B coadaptive 1.9 0.6 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1229 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 5.3 B coadaptive 1.9 0.6 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1230 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 5.3 B coadaptive 1.9 0.6 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1231 Fitness: 0 Genotype: Fch1: A coadaptive 4.6 9.2 B coadaptive 3.1 0.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1232 Fitness: 0 Genotype: Fch1: A coadaptive 4.6 9.2 B coadaptive 3.1 0.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1233 Fitness: 0 Genotype: Fch1: A coadaptive 4.6 9.2 B coadaptive 3.1 0.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1234 Fitness: 8.80571 Genotype: Fch1: A coadaptive 1.3 6.6 B coadaptive 4.5 2.7 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.80571 disease 3 +1235 Fitness: 8.80571 Genotype: Fch1: A coadaptive 1.3 6.6 B coadaptive 4.5 2.7 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.80571 disease 3 +1236 Fitness: 8.80571 Genotype: Fch1: A coadaptive 1.3 6.6 B coadaptive 4.5 2.7 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.80571 disease 3 +1237 Fitness: 6.33753 Genotype: Fch1: A coadaptive 3 2.2 B coadaptive 1.5 6.8 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.33753 disease 3 +1238 Fitness: 6.33753 Genotype: Fch1: A coadaptive 3 2.2 B coadaptive 1.5 6.8 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.33753 disease 3 +1239 Fitness: 6.33753 Genotype: Fch1: A coadaptive 3 2.2 B coadaptive 1.5 6.8 C disease 0 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.33753 disease 3 +1240 Fitness: 12.688 Genotype: Fch1: A coadaptive 5.4 4.5 B coadaptive 9.2 1.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.688 disease 3.5 +1241 Fitness: 12.688 Genotype: Fch1: A coadaptive 5.4 4.5 B coadaptive 9.2 1.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.688 disease 3.5 +1242 Fitness: 12.688 Genotype: Fch1: A coadaptive 5.4 4.5 B coadaptive 9.2 1.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.688 disease 3.5 +1243 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 2.4 B coadaptive 3.6 6.6 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1244 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 2.4 B coadaptive 3.6 6.6 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1245 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 2.4 B coadaptive 3.6 6.6 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1246 Fitness: 8.03801 Genotype: Fch1: A coadaptive 1.6 7.2 B coadaptive 2.3 4 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.03801 disease 2.5 +1247 Fitness: 8.03801 Genotype: Fch1: A coadaptive 1.6 7.2 B coadaptive 2.3 4 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.03801 disease 2.5 +1248 Fitness: 8.03801 Genotype: Fch1: A coadaptive 1.6 7.2 B coadaptive 2.3 4 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.03801 disease 2.5 +1249 Fitness: 12.6811 Genotype: Fch1: A coadaptive 5.8 3.9 B coadaptive 4.8 6.6 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.6811 disease 2.5 +1250 Fitness: 12.6811 Genotype: Fch1: A coadaptive 5.8 3.9 B coadaptive 4.8 6.6 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.6811 disease 2.5 +1251 Fitness: 12.6811 Genotype: Fch1: A coadaptive 5.8 3.9 B coadaptive 4.8 6.6 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.6811 disease 2.5 +1252 Fitness: 4.17353 Genotype: Fch1: A coadaptive 9.6 7.1 B coadaptive 8.9 0.2 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 4.17353 disease 4 +1253 Fitness: 4.17353 Genotype: Fch1: A coadaptive 9.6 7.1 B coadaptive 8.9 0.2 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 4.17353 disease 4 +1254 Fitness: 4.17353 Genotype: Fch1: A coadaptive 9.6 7.1 B coadaptive 8.9 0.2 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 4.17353 disease 4 +1255 Fitness: 11.364 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 9.9 7.2 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.364 disease 4 +1256 Fitness: 11.364 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 9.9 7.2 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.364 disease 4 +1257 Fitness: 11.364 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 9.9 7.2 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.364 disease 4 +1258 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 9.9 7.7 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1259 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 9.9 7.7 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1260 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 9.9 7.7 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1261 Fitness: 14.2664 Genotype: Fch1: A coadaptive 4.5 8.1 B coadaptive 6.7 7.6 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 14.2664 disease 2.5 +1262 Fitness: 14.2664 Genotype: Fch1: A coadaptive 4.5 8.1 B coadaptive 6.7 7.6 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 14.2664 disease 2.5 +1263 Fitness: 14.2664 Genotype: Fch1: A coadaptive 4.5 8.1 B coadaptive 6.7 7.6 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 14.2664 disease 2.5 +1264 Fitness: 6.58189 Genotype: Fch1: A coadaptive 3.9 7.4 B coadaptive 2.1 3.9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.58189 disease 3 +1265 Fitness: 6.58189 Genotype: Fch1: A coadaptive 3.9 7.4 B coadaptive 2.1 3.9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.58189 disease 3 +1266 Fitness: 6.58189 Genotype: Fch1: A coadaptive 3.9 7.4 B coadaptive 2.1 3.9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.58189 disease 3 +1267 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.6 B coadaptive 8.9 4.2 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1268 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.6 B coadaptive 8.9 4.2 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1269 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.6 B coadaptive 8.9 4.2 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1270 Fitness: 1.77902 Genotype: Fch1: A coadaptive 6.3 3 B coadaptive 1.5 1.5 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 1.77902 disease 3.5 +1271 Fitness: 1.77902 Genotype: Fch1: A coadaptive 6.3 3 B coadaptive 1.5 1.5 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 1.77902 disease 3.5 +1272 Fitness: 1.77902 Genotype: Fch1: A coadaptive 6.3 3 B coadaptive 1.5 1.5 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 1.77902 disease 3.5 +1273 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 1 B coadaptive 10 4.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1274 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 1 B coadaptive 10 4.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1275 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 1 B coadaptive 10 4.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1276 Fitness: 8.4185 Genotype: Fch1: A coadaptive 5.7 2.5 B coadaptive 9.1 4.7 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.4185 disease 3 +1277 Fitness: 8.4185 Genotype: Fch1: A coadaptive 5.7 2.5 B coadaptive 9.1 4.7 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.4185 disease 3 +1278 Fitness: 8.4185 Genotype: Fch1: A coadaptive 5.7 2.5 B coadaptive 9.1 4.7 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.4185 disease 3 +1279 Fitness: 3.1316 Genotype: Fch1: A coadaptive 0.8 6.8 B coadaptive 0.6 2.6 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 3.1316 disease 2.5 +1280 Fitness: 3.1316 Genotype: Fch1: A coadaptive 0.8 6.8 B coadaptive 0.6 2.6 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 3.1316 disease 2.5 +1281 Fitness: 3.1316 Genotype: Fch1: A coadaptive 0.8 6.8 B coadaptive 0.6 2.6 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 3.1316 disease 2.5 +1282 Fitness: 9.0464 Genotype: Fch1: A coadaptive 3.6 3.6 B coadaptive 7.1 4.1 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.0464 disease 3.5 +1283 Fitness: 9.0464 Genotype: Fch1: A coadaptive 3.6 3.6 B coadaptive 7.1 4.1 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.0464 disease 3.5 +1284 Fitness: 9.0464 Genotype: Fch1: A coadaptive 3.6 3.6 B coadaptive 7.1 4.1 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.0464 disease 3.5 +1285 Fitness: 6.91962 Genotype: Fch1: A coadaptive 4.6 8.2 B coadaptive 3.7 3.2 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.91962 disease 2.5 +1286 Fitness: 6.91962 Genotype: Fch1: A coadaptive 4.6 8.2 B coadaptive 3.7 3.2 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.91962 disease 2.5 +1287 Fitness: 6.91962 Genotype: Fch1: A coadaptive 4.6 8.2 B coadaptive 3.7 3.2 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.91962 disease 2.5 +1288 Fitness: 10.4812 Genotype: Fch1: A coadaptive 4.5 3.5 B coadaptive 1.3 9.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 10.4812 disease 2.5 +1289 Fitness: 10.4812 Genotype: Fch1: A coadaptive 4.5 3.5 B coadaptive 1.3 9.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 10.4812 disease 2.5 +1290 Fitness: 10.4812 Genotype: Fch1: A coadaptive 4.5 3.5 B coadaptive 1.3 9.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 10.4812 disease 2.5 +1291 Fitness: 11.5207 Genotype: Fch1: A coadaptive 5.6 3.5 B coadaptive 3.3 9.2 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.5207 disease 3 +1292 Fitness: 11.5207 Genotype: Fch1: A coadaptive 5.6 3.5 B coadaptive 3.3 9.2 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.5207 disease 3 +1293 Fitness: 11.5207 Genotype: Fch1: A coadaptive 5.6 3.5 B coadaptive 3.3 9.2 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.5207 disease 3 +1294 Fitness: 7.72488 Genotype: Fch1: A coadaptive 1.2 5.2 B coadaptive 3.2 4.3 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.72488 disease 2 +1295 Fitness: 7.72488 Genotype: Fch1: A coadaptive 1.2 5.2 B coadaptive 3.2 4.3 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.72488 disease 2 +1296 Fitness: 7.72488 Genotype: Fch1: A coadaptive 1.2 5.2 B coadaptive 3.2 4.3 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.72488 disease 2 +1297 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 7.3 B coadaptive 2.8 0.3 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1298 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 7.3 B coadaptive 2.8 0.3 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1299 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 7.3 B coadaptive 2.8 0.3 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1300 Fitness: 0 Genotype: Fch1: A coadaptive 1 0 B coadaptive 6.1 7.5 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1301 Fitness: 0 Genotype: Fch1: A coadaptive 1 0 B coadaptive 6.1 7.5 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1302 Fitness: 0 Genotype: Fch1: A coadaptive 1 0 B coadaptive 6.1 7.5 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1303 Fitness: 9.86556 Genotype: Fch1: A coadaptive 6 8.6 B coadaptive 3 6.5 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.86556 disease 3 +1304 Fitness: 9.86556 Genotype: Fch1: A coadaptive 6 8.6 B coadaptive 3 6.5 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.86556 disease 3 +1305 Fitness: 9.86556 Genotype: Fch1: A coadaptive 6 8.6 B coadaptive 3 6.5 C disease 1 0.5 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.86556 disease 3 +1306 Fitness: 14.4675 Genotype: Fch1: A coadaptive 6.9 6.1 B coadaptive 8.9 5.4 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 14.4675 disease 2.5 +1307 Fitness: 14.4675 Genotype: Fch1: A coadaptive 6.9 6.1 B coadaptive 8.9 5.4 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 14.4675 disease 2.5 +1308 Fitness: 14.4675 Genotype: Fch1: A coadaptive 6.9 6.1 B coadaptive 8.9 5.4 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 14.4675 disease 2.5 +1309 Fitness: 4.63287 Genotype: Fch1: A coadaptive 1.5 3 B coadaptive 3.3 2.3 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.63287 disease 2 +1310 Fitness: 4.63287 Genotype: Fch1: A coadaptive 1.5 3 B coadaptive 3.3 2.3 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.63287 disease 2 +1311 Fitness: 4.63287 Genotype: Fch1: A coadaptive 1.5 3 B coadaptive 3.3 2.3 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.63287 disease 2 +1312 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 0.3 B coadaptive 9.7 2.3 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1313 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 0.3 B coadaptive 9.7 2.3 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1314 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 0.3 B coadaptive 9.7 2.3 C disease 0.5 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1315 Fitness: 10.284 Genotype: Fch1: A coadaptive 1.7 8.3 B coadaptive 1.8 6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.284 disease 3.5 +1316 Fitness: 10.284 Genotype: Fch1: A coadaptive 1.7 8.3 B coadaptive 1.8 6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.284 disease 3.5 +1317 Fitness: 10.284 Genotype: Fch1: A coadaptive 1.7 8.3 B coadaptive 1.8 6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 10.284 disease 3.5 +1318 Fitness: 9.30116 Genotype: Fch1: A coadaptive 6.8 5.8 B coadaptive 3.8 4.1 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 9.30116 disease 2.5 +1319 Fitness: 9.30116 Genotype: Fch1: A coadaptive 6.8 5.8 B coadaptive 3.8 4.1 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 9.30116 disease 2.5 +1320 Fitness: 9.30116 Genotype: Fch1: A coadaptive 6.8 5.8 B coadaptive 3.8 4.1 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 9.30116 disease 2.5 +1321 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.1 B coadaptive 8.9 0.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1322 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.1 B coadaptive 8.9 0.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1323 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.1 B coadaptive 8.9 0.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1324 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 9.3 9.9 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1325 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 9.3 9.9 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1326 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 9.3 9.9 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1327 Fitness: 4.43339 Genotype: Fch1: A coadaptive 0.6 9.1 B coadaptive 4.4 0 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.43339 disease 3.5 +1328 Fitness: 4.43339 Genotype: Fch1: A coadaptive 0.6 9.1 B coadaptive 4.4 0 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.43339 disease 3.5 +1329 Fitness: 4.43339 Genotype: Fch1: A coadaptive 0.6 9.1 B coadaptive 4.4 0 C disease 0 1 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.43339 disease 3.5 +1330 Fitness: 0.60953 Genotype: Fch1: A coadaptive 2.1 0.6 B coadaptive 5.4 4.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.60953 disease 3 +1331 Fitness: 0.60953 Genotype: Fch1: A coadaptive 2.1 0.6 B coadaptive 5.4 4.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.60953 disease 3 +1332 Fitness: 0.60953 Genotype: Fch1: A coadaptive 2.1 0.6 B coadaptive 5.4 4.4 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.60953 disease 3 +1333 Fitness: 9.23551 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 5.4 1.7 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.23551 disease 3 +1334 Fitness: 9.23551 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 5.4 1.7 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.23551 disease 3 +1335 Fitness: 9.23551 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 5.4 1.7 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.23551 disease 3 +1336 Fitness: 12.9959 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 4 6.7 C disease 0 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.9959 disease 2 +1337 Fitness: 12.9959 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 4 6.7 C disease 0 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.9959 disease 2 +1338 Fitness: 12.9959 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 4 6.7 C disease 0 0 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.9959 disease 2 +1339 Fitness: 7.8846 Genotype: Fch1: A coadaptive 9.4 8.5 B coadaptive 7.6 4.9 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.8846 disease 4 +1340 Fitness: 7.8846 Genotype: Fch1: A coadaptive 9.4 8.5 B coadaptive 7.6 4.9 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.8846 disease 4 +1341 Fitness: 7.8846 Genotype: Fch1: A coadaptive 9.4 8.5 B coadaptive 7.6 4.9 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.8846 disease 4 +1342 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 1.6 B coadaptive 7 9.3 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1343 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 1.6 B coadaptive 7 9.3 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1344 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 1.6 B coadaptive 7 9.3 C disease 0.5 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1345 Fitness: 9.93363 Genotype: Fch1: A coadaptive 7.2 1.8 B coadaptive 4 9.9 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.93363 disease 2.5 +1346 Fitness: 9.93363 Genotype: Fch1: A coadaptive 7.2 1.8 B coadaptive 4 9.9 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.93363 disease 2.5 +1347 Fitness: 9.93363 Genotype: Fch1: A coadaptive 7.2 1.8 B coadaptive 4 9.9 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.93363 disease 2.5 +1348 Fitness: 13.3776 Genotype: Fch1: A coadaptive 5.8 7.4 B coadaptive 8.4 7.2 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.3776 disease 2.5 +1349 Fitness: 13.3776 Genotype: Fch1: A coadaptive 5.8 7.4 B coadaptive 8.4 7.2 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.3776 disease 2.5 +1350 Fitness: 13.3776 Genotype: Fch1: A coadaptive 5.8 7.4 B coadaptive 8.4 7.2 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.3776 disease 2.5 +1351 Fitness: 7.28622 Genotype: Fch1: A coadaptive 5.1 2.6 B coadaptive 4.6 9.2 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.28622 disease 3.5 +1352 Fitness: 7.28622 Genotype: Fch1: A coadaptive 5.1 2.6 B coadaptive 4.6 9.2 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.28622 disease 3.5 +1353 Fitness: 7.28622 Genotype: Fch1: A coadaptive 5.1 2.6 B coadaptive 4.6 9.2 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.28622 disease 3.5 +1354 Fitness: 14.331 Genotype: Fch1: A coadaptive 3.4 8.6 B coadaptive 4 7.8 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.331 disease 2.5 +1355 Fitness: 14.331 Genotype: Fch1: A coadaptive 3.4 8.6 B coadaptive 4 7.8 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.331 disease 2.5 +1356 Fitness: 14.331 Genotype: Fch1: A coadaptive 3.4 8.6 B coadaptive 4 7.8 C disease 0.5 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.331 disease 2.5 +1357 Fitness: 14.522 Genotype: Fch1: A coadaptive 8.1 5.5 B coadaptive 7.4 5 C disease 0 0 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 14.522 disease 3 +1358 Fitness: 14.522 Genotype: Fch1: A coadaptive 8.1 5.5 B coadaptive 7.4 5 C disease 0 0 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 14.522 disease 3 +1359 Fitness: 14.522 Genotype: Fch1: A coadaptive 8.1 5.5 B coadaptive 7.4 5 C disease 0 0 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 14.522 disease 3 +1360 Fitness: 11.9476 Genotype: Fch1: A coadaptive 6.4 8.2 B coadaptive 1.1 9.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.9476 disease 3 +1361 Fitness: 11.9476 Genotype: Fch1: A coadaptive 6.4 8.2 B coadaptive 1.1 9.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.9476 disease 3 +1362 Fitness: 11.9476 Genotype: Fch1: A coadaptive 6.4 8.2 B coadaptive 1.1 9.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.9476 disease 3 +1363 Fitness: 13.392 Genotype: Fch1: A coadaptive 4.3 8.9 B coadaptive 6.6 4.2 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.392 disease 3 +1364 Fitness: 13.392 Genotype: Fch1: A coadaptive 4.3 8.9 B coadaptive 6.6 4.2 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.392 disease 3 +1365 Fitness: 13.392 Genotype: Fch1: A coadaptive 4.3 8.9 B coadaptive 6.6 4.2 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.392 disease 3 +1366 Fitness: 2.99582 Genotype: Fch1: A coadaptive 2.3 2.2 B coadaptive 1.8 9.6 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.99582 disease 3.5 +1367 Fitness: 2.99582 Genotype: Fch1: A coadaptive 2.3 2.2 B coadaptive 1.8 9.6 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.99582 disease 3.5 +1368 Fitness: 2.99582 Genotype: Fch1: A coadaptive 2.3 2.2 B coadaptive 1.8 9.6 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.99582 disease 3.5 +1369 Fitness: 14.2229 Genotype: Fch1: A coadaptive 9.6 2.2 B coadaptive 8.9 4.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.2229 disease 2.5 +1370 Fitness: 14.2229 Genotype: Fch1: A coadaptive 9.6 2.2 B coadaptive 8.9 4.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.2229 disease 2.5 +1371 Fitness: 14.2229 Genotype: Fch1: A coadaptive 9.6 2.2 B coadaptive 8.9 4.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 14.2229 disease 2.5 +1372 Fitness: 6.63056 Genotype: Fch1: A coadaptive 0.7 8.9 B coadaptive 3.6 1.9 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 6.63056 disease 2 +1373 Fitness: 6.63056 Genotype: Fch1: A coadaptive 0.7 8.9 B coadaptive 3.6 1.9 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 6.63056 disease 2 +1374 Fitness: 6.63056 Genotype: Fch1: A coadaptive 0.7 8.9 B coadaptive 3.6 1.9 C disease 0 0 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 6.63056 disease 2 +1375 Fitness: 0 Genotype: Fch1: A coadaptive 5.6 0.9 B coadaptive 6.8 8.9 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1376 Fitness: 0 Genotype: Fch1: A coadaptive 5.6 0.9 B coadaptive 6.8 8.9 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1377 Fitness: 0 Genotype: Fch1: A coadaptive 5.6 0.9 B coadaptive 6.8 8.9 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1378 Fitness: 13.7114 Genotype: Fch1: A coadaptive 1.2 9.7 B coadaptive 6.9 4.5 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.7114 disease 3 +1379 Fitness: 13.7114 Genotype: Fch1: A coadaptive 1.2 9.7 B coadaptive 6.9 4.5 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.7114 disease 3 +1380 Fitness: 13.7114 Genotype: Fch1: A coadaptive 1.2 9.7 B coadaptive 6.9 4.5 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.7114 disease 3 +1381 Fitness: 9.18491 Genotype: Fch1: A coadaptive 1.8 6.1 B coadaptive 0.1 7.5 C disease 0 0.5 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 9.18491 disease 1.5 +1382 Fitness: 9.18491 Genotype: Fch1: A coadaptive 1.8 6.1 B coadaptive 0.1 7.5 C disease 0 0.5 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 9.18491 disease 1.5 +1383 Fitness: 9.18491 Genotype: Fch1: A coadaptive 1.8 6.1 B coadaptive 0.1 7.5 C disease 0 0.5 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 9.18491 disease 1.5 +1384 Fitness: 8.35745 Genotype: Fch1: A coadaptive 9.1 1.7 B coadaptive 8.1 8.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 8.35745 disease 3 +1385 Fitness: 8.35745 Genotype: Fch1: A coadaptive 9.1 1.7 B coadaptive 8.1 8.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 8.35745 disease 3 +1386 Fitness: 8.35745 Genotype: Fch1: A coadaptive 9.1 1.7 B coadaptive 8.1 8.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 8.35745 disease 3 +1387 Fitness: 8.18187 Genotype: Fch1: A coadaptive 5.4 2.3 B coadaptive 7.8 5.4 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 8.18187 disease 3 +1388 Fitness: 8.18187 Genotype: Fch1: A coadaptive 5.4 2.3 B coadaptive 7.8 5.4 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 8.18187 disease 3 +1389 Fitness: 8.18187 Genotype: Fch1: A coadaptive 5.4 2.3 B coadaptive 7.8 5.4 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 8.18187 disease 3 +1390 Fitness: 2.70178 Genotype: Fch1: A coadaptive 1.7 3.2 B coadaptive 3.7 8.6 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 2.70178 disease 3.5 +1391 Fitness: 2.70178 Genotype: Fch1: A coadaptive 1.7 3.2 B coadaptive 3.7 8.6 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 2.70178 disease 3.5 +1392 Fitness: 2.70178 Genotype: Fch1: A coadaptive 1.7 3.2 B coadaptive 3.7 8.6 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 2.70178 disease 3.5 +1393 Fitness: 3.136 Genotype: Fch1: A coadaptive 1.4 3 B coadaptive 2.1 1.5 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 3.136 disease 2 +1394 Fitness: 3.136 Genotype: Fch1: A coadaptive 1.4 3 B coadaptive 2.1 1.5 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 3.136 disease 2 +1395 Fitness: 3.136 Genotype: Fch1: A coadaptive 1.4 3 B coadaptive 2.1 1.5 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 3.136 disease 2 +1396 Fitness: 8.94682 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 1.7 5.2 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.94682 disease 2.5 +1397 Fitness: 8.94682 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 1.7 5.2 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.94682 disease 2.5 +1398 Fitness: 8.94682 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 1.7 5.2 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.94682 disease 2.5 +1399 Fitness: 14.3678 Genotype: Fch1: A coadaptive 6.6 5.4 B coadaptive 2.7 9.2 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 14.3678 disease 3 +1400 Fitness: 14.3678 Genotype: Fch1: A coadaptive 6.6 5.4 B coadaptive 2.7 9.2 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 14.3678 disease 3 +1401 Fitness: 14.3678 Genotype: Fch1: A coadaptive 6.6 5.4 B coadaptive 2.7 9.2 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 14.3678 disease 3 +1402 Fitness: 1.12725 Genotype: Fch1: A coadaptive 1 8.3 B coadaptive 2.2 0.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.12725 disease 2.5 +1403 Fitness: 1.12725 Genotype: Fch1: A coadaptive 1 8.3 B coadaptive 2.2 0.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.12725 disease 2.5 +1404 Fitness: 1.12725 Genotype: Fch1: A coadaptive 1 8.3 B coadaptive 2.2 0.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.12725 disease 2.5 +1405 Fitness: 4.92725 Genotype: Fch1: A coadaptive 0.9 3.4 B coadaptive 7.5 0.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.92725 disease 3 +1406 Fitness: 4.92725 Genotype: Fch1: A coadaptive 0.9 3.4 B coadaptive 7.5 0.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.92725 disease 3 +1407 Fitness: 4.92725 Genotype: Fch1: A coadaptive 0.9 3.4 B coadaptive 7.5 0.2 C disease 0.5 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.92725 disease 3 +1408 Fitness: 11.5325 Genotype: Fch1: A coadaptive 6.5 4.5 B coadaptive 7.7 7.5 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.5325 disease 3 +1409 Fitness: 11.5325 Genotype: Fch1: A coadaptive 6.5 4.5 B coadaptive 7.7 7.5 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.5325 disease 3 +1410 Fitness: 11.5325 Genotype: Fch1: A coadaptive 6.5 4.5 B coadaptive 7.7 7.5 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.5325 disease 3 +1411 Fitness: 14.5332 Genotype: Fch1: A coadaptive 3.4 9.1 B coadaptive 2.9 9.2 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 14.5332 disease 3 +1412 Fitness: 14.5332 Genotype: Fch1: A coadaptive 3.4 9.1 B coadaptive 2.9 9.2 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 14.5332 disease 3 +1413 Fitness: 14.5332 Genotype: Fch1: A coadaptive 3.4 9.1 B coadaptive 2.9 9.2 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 14.5332 disease 3 +1414 Fitness: 8.6104 Genotype: Fch1: A coadaptive 4.2 2.6 B coadaptive 7.6 0.8 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.6104 disease 2.5 +1415 Fitness: 8.6104 Genotype: Fch1: A coadaptive 4.2 2.6 B coadaptive 7.6 0.8 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.6104 disease 2.5 +1416 Fitness: 8.6104 Genotype: Fch1: A coadaptive 4.2 2.6 B coadaptive 7.6 0.8 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.6104 disease 2.5 +1417 Fitness: 11.4528 Genotype: Fch1: A coadaptive 1.2 7.9 B coadaptive 5.3 7.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.4528 disease 3 +1418 Fitness: 11.4528 Genotype: Fch1: A coadaptive 1.2 7.9 B coadaptive 5.3 7.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.4528 disease 3 +1419 Fitness: 11.4528 Genotype: Fch1: A coadaptive 1.2 7.9 B coadaptive 5.3 7.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.4528 disease 3 +1420 Fitness: 6.03413 Genotype: Fch1: A coadaptive 6.1 3.1 B coadaptive 2.9 2.2 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.03413 disease 3.5 +1421 Fitness: 6.03413 Genotype: Fch1: A coadaptive 6.1 3.1 B coadaptive 2.9 2.2 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.03413 disease 3.5 +1422 Fitness: 6.03413 Genotype: Fch1: A coadaptive 6.1 3.1 B coadaptive 2.9 2.2 C disease 0 1 D disease 1 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 6.03413 disease 3.5 +1423 Fitness: 13.6005 Genotype: Fch1: A coadaptive 3.4 7.3 B coadaptive 9.7 1.8 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.6005 disease 3 +1424 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 1.7 B coadaptive 9.3 8.5 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1425 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 1.7 B coadaptive 9.3 8.5 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1426 Fitness: 14.445 Genotype: Fch1: A coadaptive 5.2 7.5 B coadaptive 6.5 7.6 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.445 disease 4 +1427 Fitness: 14.445 Genotype: Fch1: A coadaptive 5.2 7.5 B coadaptive 6.5 7.6 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.445 disease 4 +1428 Fitness: 14.445 Genotype: Fch1: A coadaptive 5.2 7.5 B coadaptive 6.5 7.6 C disease 1 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.445 disease 4 +1429 Fitness: 3.69363 Genotype: Fch1: A coadaptive 1.9 1.6 B coadaptive 1.3 5.1 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.69363 disease 2.5 +1430 Fitness: 3.69363 Genotype: Fch1: A coadaptive 1.9 1.6 B coadaptive 1.3 5.1 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.69363 disease 2.5 +1431 Fitness: 3.69363 Genotype: Fch1: A coadaptive 1.9 1.6 B coadaptive 1.3 5.1 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 3.69363 disease 2.5 +1432 Fitness: 8.70916 Genotype: Fch1: A coadaptive 0.9 7.8 B coadaptive 6.4 0.4 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.70916 disease 3.5 +1433 Fitness: 8.70916 Genotype: Fch1: A coadaptive 0.9 7.8 B coadaptive 6.4 0.4 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.70916 disease 3.5 +1434 Fitness: 8.70916 Genotype: Fch1: A coadaptive 0.9 7.8 B coadaptive 6.4 0.4 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.70916 disease 3.5 +1435 Fitness: 13.144 Genotype: Fch1: A coadaptive 4.1 6.2 B coadaptive 4 6.9 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 13.144 disease 2.5 +1436 Fitness: 13.144 Genotype: Fch1: A coadaptive 4.1 6.2 B coadaptive 4 6.9 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 13.144 disease 2.5 +1437 Fitness: 13.144 Genotype: Fch1: A coadaptive 4.1 6.2 B coadaptive 4 6.9 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 13.144 disease 2.5 +1438 Fitness: 11.5713 Genotype: Fch1: A coadaptive 9.5 0.8 B coadaptive 6.5 2.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 11.5713 disease 3 +1439 Fitness: 11.5713 Genotype: Fch1: A coadaptive 9.5 0.8 B coadaptive 6.5 2.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 11.5713 disease 3 +1440 Fitness: 11.5713 Genotype: Fch1: A coadaptive 9.5 0.8 B coadaptive 6.5 2.3 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 11.5713 disease 3 +1441 Fitness: 10.3545 Genotype: Fch1: A coadaptive 9.3 3.9 B coadaptive 7.3 10 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.3545 disease 3.5 +1442 Fitness: 10.3545 Genotype: Fch1: A coadaptive 9.3 3.9 B coadaptive 7.3 10 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.3545 disease 3.5 +1443 Fitness: 10.3545 Genotype: Fch1: A coadaptive 9.3 3.9 B coadaptive 7.3 10 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.3545 disease 3.5 +1444 Fitness: 8.63825 Genotype: Fch1: A coadaptive 8.7 3.1 B coadaptive 0 7.2 C disease 0 0 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 8.63825 disease 2.5 +1445 Fitness: 8.63825 Genotype: Fch1: A coadaptive 8.7 3.1 B coadaptive 0 7.2 C disease 0 0 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 8.63825 disease 2.5 +1446 Fitness: 8.63825 Genotype: Fch1: A coadaptive 8.7 3.1 B coadaptive 0 7.2 C disease 0 0 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 8.63825 disease 2.5 +1447 Fitness: 12.0583 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 8.5 5 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 12.0583 disease 2.5 +1448 Fitness: 12.0583 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 8.5 5 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 12.0583 disease 2.5 +1449 Fitness: 12.0583 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 8.5 5 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 12.0583 disease 2.5 +1450 Fitness: 14.1787 Genotype: Fch1: A coadaptive 7.3 4.5 B coadaptive 5.2 8.3 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 14.1787 disease 3.5 +1451 Fitness: 14.1787 Genotype: Fch1: A coadaptive 7.3 4.5 B coadaptive 5.2 8.3 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 14.1787 disease 3.5 +1452 Fitness: 14.1787 Genotype: Fch1: A coadaptive 7.3 4.5 B coadaptive 5.2 8.3 C disease 1 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 14.1787 disease 3.5 +1453 Fitness: 8.92755 Genotype: Fch1: A coadaptive 5.3 1.9 B coadaptive 8.6 2.8 C disease 0 0 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 8.92755 disease 1.5 +1454 Fitness: 8.92755 Genotype: Fch1: A coadaptive 5.3 1.9 B coadaptive 8.6 2.8 C disease 0 0 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 8.92755 disease 1.5 +1455 Fitness: 8.92755 Genotype: Fch1: A coadaptive 5.3 1.9 B coadaptive 8.6 2.8 C disease 0 0 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 8.92755 disease 1.5 +1456 Fitness: 11.9425 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 5.9 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.9425 disease 3.5 +1457 Fitness: 11.9425 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 5.9 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.9425 disease 3.5 +1458 Fitness: 11.9425 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 5.9 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.9425 disease 3.5 +1459 Fitness: 7.07118 Genotype: Fch1: A coadaptive 1 4.8 B coadaptive 6.2 3.7 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.07118 disease 1.5 +1460 Fitness: 7.07118 Genotype: Fch1: A coadaptive 1 4.8 B coadaptive 6.2 3.7 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.07118 disease 1.5 +1461 Fitness: 7.07118 Genotype: Fch1: A coadaptive 1 4.8 B coadaptive 6.2 3.7 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.07118 disease 1.5 +1462 Fitness: 12.4232 Genotype: Fch1: A coadaptive 0.5 9.6 B coadaptive 1.3 8.5 C disease 1 1 D disease 1 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.4232 disease 3.5 +1463 Fitness: 12.4232 Genotype: Fch1: A coadaptive 0.5 9.6 B coadaptive 1.3 8.5 C disease 1 1 D disease 1 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.4232 disease 3.5 +1464 Fitness: 12.4232 Genotype: Fch1: A coadaptive 0.5 9.6 B coadaptive 1.3 8.5 C disease 1 1 D disease 1 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.4232 disease 3.5 +1465 Fitness: 2.92798 Genotype: Fch1: A coadaptive 2.4 0.7 B coadaptive 2.7 5 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.92798 disease 2.5 +1466 Fitness: 2.92798 Genotype: Fch1: A coadaptive 2.4 0.7 B coadaptive 2.7 5 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.92798 disease 2.5 +1467 Fitness: 2.92798 Genotype: Fch1: A coadaptive 2.4 0.7 B coadaptive 2.7 5 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.92798 disease 2.5 +1468 Fitness: 11.7587 Genotype: Fch1: A coadaptive 6 3 B coadaptive 9.4 2.3 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7587 disease 2.5 +1469 Fitness: 11.7587 Genotype: Fch1: A coadaptive 6 3 B coadaptive 9.4 2.3 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7587 disease 2.5 +1470 Fitness: 11.7587 Genotype: Fch1: A coadaptive 6 3 B coadaptive 9.4 2.3 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.7587 disease 2.5 +1471 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 9.2 B coadaptive 0.6 0.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1472 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 9.2 B coadaptive 0.6 0.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1473 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 9.2 B coadaptive 0.6 0.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1474 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.9 B coadaptive 9.3 6.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1475 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.9 B coadaptive 9.3 6.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1476 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.9 B coadaptive 9.3 6.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1477 Fitness: 6.81826 Genotype: Fch1: A coadaptive 4.9 2.2 B coadaptive 8.3 4.9 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.81826 disease 4 +1478 Fitness: 6.81826 Genotype: Fch1: A coadaptive 4.9 2.2 B coadaptive 8.3 4.9 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.81826 disease 4 +1479 Fitness: 6.81826 Genotype: Fch1: A coadaptive 4.9 2.2 B coadaptive 8.3 4.9 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.81826 disease 4 +1480 Fitness: 10.8249 Genotype: Fch1: A coadaptive 7.2 2.9 B coadaptive 7.5 7.2 C disease 1 0 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.8249 disease 2 +1481 Fitness: 10.8249 Genotype: Fch1: A coadaptive 7.2 2.9 B coadaptive 7.5 7.2 C disease 1 0 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.8249 disease 2 +1482 Fitness: 10.8249 Genotype: Fch1: A coadaptive 7.2 2.9 B coadaptive 7.5 7.2 C disease 1 0 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.8249 disease 2 +1483 Fitness: 6.42215 Genotype: Fch1: A coadaptive 0.7 5.1 B coadaptive 5.2 1.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 6.42215 disease 4 +1484 Fitness: 6.42215 Genotype: Fch1: A coadaptive 0.7 5.1 B coadaptive 5.2 1.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 6.42215 disease 4 +1485 Fitness: 6.42215 Genotype: Fch1: A coadaptive 0.7 5.1 B coadaptive 5.2 1.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 6.42215 disease 4 +1486 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.4 B coadaptive 3.9 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1487 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.4 B coadaptive 3.9 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1488 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.4 B coadaptive 3.9 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1489 Fitness: 5.44976 Genotype: Fch1: A coadaptive 8.9 6.1 B coadaptive 4.2 3.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 5.44976 disease 2.5 +1490 Fitness: 5.44976 Genotype: Fch1: A coadaptive 8.9 6.1 B coadaptive 4.2 3.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 5.44976 disease 2.5 +1491 Fitness: 5.44976 Genotype: Fch1: A coadaptive 8.9 6.1 B coadaptive 4.2 3.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 5.44976 disease 2.5 +1492 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 9.9 B coadaptive 1.2 2.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1493 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 9.9 B coadaptive 1.2 2.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1494 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 9.9 B coadaptive 1.2 2.8 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1495 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 1.4 B coadaptive 7.3 9.3 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1496 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 1.4 B coadaptive 7.3 9.3 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1497 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 1.4 B coadaptive 7.3 9.3 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1498 Fitness: 7.28251 Genotype: Fch1: A coadaptive 0.6 5.5 B coadaptive 4.2 3.1 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 7.28251 disease 2.5 +1499 Fitness: 7.28251 Genotype: Fch1: A coadaptive 0.6 5.5 B coadaptive 4.2 3.1 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 7.28251 disease 2.5 +1500 Fitness: 7.28251 Genotype: Fch1: A coadaptive 0.6 5.5 B coadaptive 4.2 3.1 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 7.28251 disease 2.5 +1501 Fitness: 13.2445 Genotype: Fch1: A coadaptive 8.4 2.5 B coadaptive 7.8 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 13.2445 disease 2.5 +1502 Fitness: 13.2445 Genotype: Fch1: A coadaptive 8.4 2.5 B coadaptive 7.8 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 13.2445 disease 2.5 +1503 Fitness: 13.2445 Genotype: Fch1: A coadaptive 8.4 2.5 B coadaptive 7.8 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 13.2445 disease 2.5 +1504 Fitness: 10.9829 Genotype: Fch1: A coadaptive 8.9 0.4 B coadaptive 4.2 9.3 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.9829 disease 2.5 +1505 Fitness: 10.9829 Genotype: Fch1: A coadaptive 8.9 0.4 B coadaptive 4.2 9.3 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.9829 disease 2.5 +1506 Fitness: 10.9829 Genotype: Fch1: A coadaptive 8.9 0.4 B coadaptive 4.2 9.3 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 10.9829 disease 2.5 +1507 Fitness: 8.59805 Genotype: Fch1: A coadaptive 8.6 7.2 B coadaptive 6.5 3.5 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.59805 disease 3 +1508 Fitness: 8.59805 Genotype: Fch1: A coadaptive 8.6 7.2 B coadaptive 6.5 3.5 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.59805 disease 3 +1509 Fitness: 8.59805 Genotype: Fch1: A coadaptive 8.6 7.2 B coadaptive 6.5 3.5 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 8.59805 disease 3 +1510 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.9 B coadaptive 6.6 5.9 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1511 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.9 B coadaptive 6.6 5.9 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1512 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.9 B coadaptive 6.6 5.9 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1513 Fitness: 5.29402 Genotype: Fch1: A coadaptive 6.1 0 B coadaptive 4.4 8.2 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.29402 disease 2 +1514 Fitness: 5.29402 Genotype: Fch1: A coadaptive 6.1 0 B coadaptive 4.4 8.2 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.29402 disease 2 +1515 Fitness: 5.29402 Genotype: Fch1: A coadaptive 6.1 0 B coadaptive 4.4 8.2 C disease 0 1 D disease 1 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.29402 disease 2 +1516 Fitness: 6.8128 Genotype: Fch1: A coadaptive 3.9 1.7 B coadaptive 8.4 1.2 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.8128 disease 3 +1517 Fitness: 6.8128 Genotype: Fch1: A coadaptive 3.9 1.7 B coadaptive 8.4 1.2 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.8128 disease 3 +1518 Fitness: 6.8128 Genotype: Fch1: A coadaptive 3.9 1.7 B coadaptive 8.4 1.2 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.8128 disease 3 +1519 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.4 B coadaptive 6.4 6.7 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1520 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.4 B coadaptive 6.4 6.7 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1521 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.4 B coadaptive 6.4 6.7 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +1522 Fitness: 13.2819 Genotype: Fch1: A coadaptive 7.5 2.9 B coadaptive 7.9 3.2 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.2819 disease 4 +1523 Fitness: 13.2819 Genotype: Fch1: A coadaptive 7.5 2.9 B coadaptive 7.9 3.2 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.2819 disease 4 +1524 Fitness: 13.2819 Genotype: Fch1: A coadaptive 7.5 2.9 B coadaptive 7.9 3.2 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.2819 disease 4 +1525 Fitness: 11.474 Genotype: Fch1: A coadaptive 8.4 2 B coadaptive 7.8 0.9 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 11.474 disease 2.5 +1526 Fitness: 11.474 Genotype: Fch1: A coadaptive 8.4 2 B coadaptive 7.8 0.9 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 11.474 disease 2.5 +1527 Fitness: 11.474 Genotype: Fch1: A coadaptive 8.4 2 B coadaptive 7.8 0.9 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 11.474 disease 2.5 +1528 Fitness: 12.3132 Genotype: Fch1: A coadaptive 9.1 2.5 B coadaptive 0.4 9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.3132 disease 2.5 +1529 Fitness: 12.3132 Genotype: Fch1: A coadaptive 9.1 2.5 B coadaptive 0.4 9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.3132 disease 2.5 +1530 Fitness: 12.3132 Genotype: Fch1: A coadaptive 9.1 2.5 B coadaptive 0.4 9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.3132 disease 2.5 +1531 Fitness: 10.55 Genotype: Fch1: A coadaptive 0.6 9.4 B coadaptive 8 0 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.55 disease 2 +1532 Fitness: 10.55 Genotype: Fch1: A coadaptive 0.6 9.4 B coadaptive 8 0 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.55 disease 2 +1533 Fitness: 10.55 Genotype: Fch1: A coadaptive 0.6 9.4 B coadaptive 8 0 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.55 disease 2 +1534 Fitness: 4.29566 Genotype: Fch1: A coadaptive 7.2 0.4 B coadaptive 0.8 3.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.29566 disease 2.5 +1535 Fitness: 4.29566 Genotype: Fch1: A coadaptive 7.2 0.4 B coadaptive 0.8 3.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.29566 disease 2.5 +1536 Fitness: 4.29566 Genotype: Fch1: A coadaptive 7.2 0.4 B coadaptive 0.8 3.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.29566 disease 2.5 +1537 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 6.4 B coadaptive 2 1.5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1538 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 6.4 B coadaptive 2 1.5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1539 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 6.4 B coadaptive 2 1.5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1540 Fitness: 0.224913 Genotype: Fch1: A coadaptive 2 0.9 B coadaptive 4.1 6.4 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0.224913 disease 3 +1541 Fitness: 0.224913 Genotype: Fch1: A coadaptive 2 0.9 B coadaptive 4.1 6.4 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0.224913 disease 3 +1542 Fitness: 0.224913 Genotype: Fch1: A coadaptive 2 0.9 B coadaptive 4.1 6.4 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0.224913 disease 3 +1543 Fitness: 5.8868 Genotype: Fch1: A coadaptive 9 8.2 B coadaptive 5.5 4.9 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.8868 disease 3.5 +1544 Fitness: 5.8868 Genotype: Fch1: A coadaptive 9 8.2 B coadaptive 5.5 4.9 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.8868 disease 3.5 +1545 Fitness: 5.8868 Genotype: Fch1: A coadaptive 9 8.2 B coadaptive 5.5 4.9 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.8868 disease 3.5 +1546 Fitness: 14.0973 Genotype: Fch1: A coadaptive 6.5 8.7 B coadaptive 5 9.5 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 14.0973 disease 3 +1547 Fitness: 14.0973 Genotype: Fch1: A coadaptive 6.5 8.7 B coadaptive 5 9.5 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 14.0973 disease 3 +1548 Fitness: 14.0973 Genotype: Fch1: A coadaptive 6.5 8.7 B coadaptive 5 9.5 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 14.0973 disease 3 +1549 Fitness: 3.32662 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 2.1 1.6 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.32662 disease 2 +1550 Fitness: 3.32662 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 2.1 1.6 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.32662 disease 2 +1551 Fitness: 3.32662 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 2.1 1.6 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.32662 disease 2 +1552 Fitness: 6.51871 Genotype: Fch1: A coadaptive 9.3 8.2 B coadaptive 6.2 4.9 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.51871 disease 3.5 +1553 Fitness: 6.51871 Genotype: Fch1: A coadaptive 9.3 8.2 B coadaptive 6.2 4.9 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.51871 disease 3.5 +1554 Fitness: 6.51871 Genotype: Fch1: A coadaptive 9.3 8.2 B coadaptive 6.2 4.9 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.51871 disease 3.5 +1555 Fitness: 1.63755 Genotype: Fch1: A coadaptive 4.6 7.7 B coadaptive 4.1 0.4 C disease 0 0 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 1.63755 disease 2 +1556 Fitness: 1.63755 Genotype: Fch1: A coadaptive 4.6 7.7 B coadaptive 4.1 0.4 C disease 0 0 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 1.63755 disease 2 +1557 Fitness: 1.63755 Genotype: Fch1: A coadaptive 4.6 7.7 B coadaptive 4.1 0.4 C disease 0 0 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 1.63755 disease 2 +1558 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 2.9 B coadaptive 9.3 9.3 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1559 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 2.9 B coadaptive 9.3 9.3 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1560 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 2.9 B coadaptive 9.3 9.3 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1561 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 7.2 B coadaptive 3.6 0.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1562 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 7.2 B coadaptive 3.6 0.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1563 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 7.2 B coadaptive 3.6 0.8 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1564 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 4.5 B coadaptive 0.3 1.3 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1565 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 4.5 B coadaptive 0.3 1.3 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1566 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 4.5 B coadaptive 0.3 1.3 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1567 Fitness: 6.94682 Genotype: Fch1: A coadaptive 3.5 2.5 B coadaptive 2.2 4.7 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.94682 disease 2.5 +1568 Fitness: 6.94682 Genotype: Fch1: A coadaptive 3.5 2.5 B coadaptive 2.2 4.7 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.94682 disease 2.5 +1569 Fitness: 6.94682 Genotype: Fch1: A coadaptive 3.5 2.5 B coadaptive 2.2 4.7 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 6.94682 disease 2.5 +1570 Fitness: 10.5777 Genotype: Fch1: A coadaptive 6.1 5.1 B coadaptive 5.4 2.7 C disease 0 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 10.5777 disease 2.5 +1571 Fitness: 10.5777 Genotype: Fch1: A coadaptive 6.1 5.1 B coadaptive 5.4 2.7 C disease 0 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 10.5777 disease 2.5 +1572 Fitness: 10.5777 Genotype: Fch1: A coadaptive 6.1 5.1 B coadaptive 5.4 2.7 C disease 0 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 10.5777 disease 2.5 +1573 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 3.9 B coadaptive 9 8.4 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1574 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 3.9 B coadaptive 9 8.4 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1575 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 3.9 B coadaptive 9 8.4 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1576 Fitness: 0 Genotype: Fch1: A coadaptive 7.5 9.9 B coadaptive 6.1 2.2 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1577 Fitness: 0 Genotype: Fch1: A coadaptive 7.5 9.9 B coadaptive 6.1 2.2 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1578 Fitness: 0 Genotype: Fch1: A coadaptive 7.5 9.9 B coadaptive 6.1 2.2 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1579 Fitness: 6.8285 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 1.2 6.6 C disease 0 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.8285 disease 2 +1580 Fitness: 6.8285 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 1.2 6.6 C disease 0 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.8285 disease 2 +1581 Fitness: 6.8285 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 1.2 6.6 C disease 0 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.8285 disease 2 +1582 Fitness: 5.11527 Genotype: Fch1: A coadaptive 4.8 2 B coadaptive 0.4 4.1 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.11527 disease 1.5 +1583 Fitness: 5.11527 Genotype: Fch1: A coadaptive 4.8 2 B coadaptive 0.4 4.1 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.11527 disease 1.5 +1584 Fitness: 5.11527 Genotype: Fch1: A coadaptive 4.8 2 B coadaptive 0.4 4.1 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.11527 disease 1.5 +1585 Fitness: 8.71056 Genotype: Fch1: A coadaptive 6.9 7.4 B coadaptive 5.8 2.9 C disease 1 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.71056 disease 4 +1586 Fitness: 8.71056 Genotype: Fch1: A coadaptive 6.9 7.4 B coadaptive 5.8 2.9 C disease 1 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.71056 disease 4 +1587 Fitness: 8.71056 Genotype: Fch1: A coadaptive 6.9 7.4 B coadaptive 5.8 2.9 C disease 1 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.71056 disease 4 +1588 Fitness: 0 Genotype: Fch1: A coadaptive 1 5.6 B coadaptive 10 6.8 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1589 Fitness: 0 Genotype: Fch1: A coadaptive 1 5.6 B coadaptive 10 6.8 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1590 Fitness: 0 Genotype: Fch1: A coadaptive 1 5.6 B coadaptive 10 6.8 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1591 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.1 B coadaptive 7.5 9.4 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1592 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.1 B coadaptive 7.5 9.4 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1593 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.1 B coadaptive 7.5 9.4 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1594 Fitness: 1.43023 Genotype: Fch1: A coadaptive 6.7 9.8 B coadaptive 6.9 1 C disease 0 1 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.43023 disease 3 +1595 Fitness: 1.43023 Genotype: Fch1: A coadaptive 6.7 9.8 B coadaptive 6.9 1 C disease 0 1 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.43023 disease 3 +1596 Fitness: 1.43023 Genotype: Fch1: A coadaptive 6.7 9.8 B coadaptive 6.9 1 C disease 0 1 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.43023 disease 3 +1597 Fitness: 2.61883 Genotype: Fch1: A coadaptive 8.1 0 B coadaptive 7.4 8.9 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 2.61883 disease 3 +1598 Fitness: 2.61883 Genotype: Fch1: A coadaptive 8.1 0 B coadaptive 7.4 8.9 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 2.61883 disease 3 +1599 Fitness: 2.61883 Genotype: Fch1: A coadaptive 8.1 0 B coadaptive 7.4 8.9 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 2.61883 disease 3 +1600 Fitness: 11.4933 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 9.9 7.3 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 11.4933 disease 2 +1601 Fitness: 11.4933 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 9.9 7.3 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 11.4933 disease 2 +1602 Fitness: 11.4933 Genotype: Fch1: A coadaptive 5.5 9 B coadaptive 9.9 7.3 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 11.4933 disease 2 +1603 Fitness: 7.51446 Genotype: Fch1: A coadaptive 9.5 6.3 B coadaptive 8.2 1.3 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 7.51446 disease 3 +1604 Fitness: 7.51446 Genotype: Fch1: A coadaptive 9.5 6.3 B coadaptive 8.2 1.3 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 7.51446 disease 3 +1605 Fitness: 7.51446 Genotype: Fch1: A coadaptive 9.5 6.3 B coadaptive 8.2 1.3 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 7.51446 disease 3 +1606 Fitness: 9.12266 Genotype: Fch1: A coadaptive 3.9 5.6 B coadaptive 0.7 6.3 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.12266 disease 2 +1607 Fitness: 9.12266 Genotype: Fch1: A coadaptive 3.9 5.6 B coadaptive 0.7 6.3 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.12266 disease 2 +1608 Fitness: 9.12266 Genotype: Fch1: A coadaptive 3.9 5.6 B coadaptive 0.7 6.3 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 9.12266 disease 2 +1609 Fitness: 9.55327 Genotype: Fch1: A coadaptive 9 9.1 B coadaptive 9.9 4.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.55327 disease 1.5 +1610 Fitness: 9.55327 Genotype: Fch1: A coadaptive 9 9.1 B coadaptive 9.9 4.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.55327 disease 1.5 +1611 Fitness: 9.55327 Genotype: Fch1: A coadaptive 9 9.1 B coadaptive 9.9 4.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.55327 disease 1.5 +1612 Fitness: 14.7642 Genotype: Fch1: A coadaptive 6.7 7 B coadaptive 4.7 8.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.7642 disease 2 +1613 Fitness: 14.7642 Genotype: Fch1: A coadaptive 6.7 7 B coadaptive 4.7 8.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.7642 disease 2 +1614 Fitness: 14.7642 Genotype: Fch1: A coadaptive 6.7 7 B coadaptive 4.7 8.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.7642 disease 2 +1615 Fitness: 13.8649 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 5.7 C disease 0 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 13.8649 disease 2.5 +1616 Fitness: 13.8649 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 5.7 C disease 0 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 13.8649 disease 2.5 +1617 Fitness: 13.8649 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 5.7 C disease 0 0 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 13.8649 disease 2.5 +1618 Fitness: 9.20574 Genotype: Fch1: A coadaptive 4.7 2.4 B coadaptive 8 1.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 9.20574 disease 3.5 +1619 Fitness: 9.20574 Genotype: Fch1: A coadaptive 4.7 2.4 B coadaptive 8 1.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 9.20574 disease 3.5 +1620 Fitness: 9.20574 Genotype: Fch1: A coadaptive 4.7 2.4 B coadaptive 8 1.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 9.20574 disease 3.5 +1621 Fitness: 3.66373 Genotype: Fch1: A coadaptive 5.1 5.3 B coadaptive 9.8 8.1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 3.66373 disease 2.5 +1622 Fitness: 3.66373 Genotype: Fch1: A coadaptive 5.1 5.3 B coadaptive 9.8 8.1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 3.66373 disease 2.5 +1623 Fitness: 3.66373 Genotype: Fch1: A coadaptive 5.1 5.3 B coadaptive 9.8 8.1 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 3.66373 disease 2.5 +1624 Fitness: 12.5649 Genotype: Fch1: A coadaptive 4.2 7.3 B coadaptive 4.8 4.8 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 12.5649 disease 3.5 +1625 Fitness: 12.5649 Genotype: Fch1: A coadaptive 4.2 7.3 B coadaptive 4.8 4.8 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 12.5649 disease 3.5 +1626 Fitness: 12.5649 Genotype: Fch1: A coadaptive 4.2 7.3 B coadaptive 4.8 4.8 C disease 1 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 12.5649 disease 3.5 +1627 Fitness: 11.6169 Genotype: Fch1: A coadaptive 8.3 7.3 B coadaptive 2 9.5 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.6169 disease 3.5 +1628 Fitness: 11.6169 Genotype: Fch1: A coadaptive 8.3 7.3 B coadaptive 2 9.5 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.6169 disease 3.5 +1629 Fitness: 11.6169 Genotype: Fch1: A coadaptive 8.3 7.3 B coadaptive 2 9.5 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.6169 disease 3.5 +1630 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.2 B coadaptive 4.7 0.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1631 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.2 B coadaptive 4.7 0.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1632 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.2 B coadaptive 4.7 0.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1633 Fitness: 6.79566 Genotype: Fch1: A coadaptive 0.7 9.4 B coadaptive 5.2 0.5 C disease 1 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.79566 disease 3 +1634 Fitness: 6.79566 Genotype: Fch1: A coadaptive 0.7 9.4 B coadaptive 5.2 0.5 C disease 1 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.79566 disease 3 +1635 Fitness: 6.79566 Genotype: Fch1: A coadaptive 0.7 9.4 B coadaptive 5.2 0.5 C disease 1 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 6.79566 disease 3 +1636 Fitness: 14.3426 Genotype: Fch1: A coadaptive 6.6 6 B coadaptive 2.3 9.4 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 14.3426 disease 2.5 +1637 Fitness: 14.3426 Genotype: Fch1: A coadaptive 6.6 6 B coadaptive 2.3 9.4 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 14.3426 disease 2.5 +1638 Fitness: 14.3426 Genotype: Fch1: A coadaptive 6.6 6 B coadaptive 2.3 9.4 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 14.3426 disease 2.5 +1639 Fitness: 0.469519 Genotype: Fch1: A coadaptive 3.3 2 B coadaptive 9.9 4.1 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0.469519 disease 2.5 +1640 Fitness: 0.469519 Genotype: Fch1: A coadaptive 3.3 2 B coadaptive 9.9 4.1 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0.469519 disease 2.5 +1641 Fitness: 0.469519 Genotype: Fch1: A coadaptive 3.3 2 B coadaptive 9.9 4.1 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0.469519 disease 2.5 +1642 Fitness: 7.0274 Genotype: Fch1: A coadaptive 7.2 8.9 B coadaptive 5.4 4.2 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.0274 disease 2.5 +1643 Fitness: 7.0274 Genotype: Fch1: A coadaptive 7.2 8.9 B coadaptive 5.4 4.2 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.0274 disease 2.5 +1644 Fitness: 7.0274 Genotype: Fch1: A coadaptive 7.2 8.9 B coadaptive 5.4 4.2 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 7.0274 disease 2.5 +1645 Fitness: 3.91011 Genotype: Fch1: A coadaptive 3.3 2.1 B coadaptive 3.5 0.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 3.91011 disease 3.5 +1646 Fitness: 3.91011 Genotype: Fch1: A coadaptive 3.3 2.1 B coadaptive 3.5 0.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 3.91011 disease 3.5 +1647 Fitness: 3.91011 Genotype: Fch1: A coadaptive 3.3 2.1 B coadaptive 3.5 0.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 3.91011 disease 3.5 +1648 Fitness: 1.06924 Genotype: Fch1: A coadaptive 4.4 7.6 B coadaptive 2.1 2 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.06924 disease 2.5 +1649 Fitness: 1.06924 Genotype: Fch1: A coadaptive 4.4 7.6 B coadaptive 2.1 2 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.06924 disease 2.5 +1650 Fitness: 1.06924 Genotype: Fch1: A coadaptive 4.4 7.6 B coadaptive 2.1 2 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.06924 disease 2.5 +1651 Fitness: 7.11262 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 4.4 2.6 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 7.11262 disease 3 +1652 Fitness: 7.11262 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 4.4 2.6 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 7.11262 disease 3 +1653 Fitness: 7.11262 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 4.4 2.6 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 7.11262 disease 3 +1654 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 7.4 B coadaptive 0.4 2.9 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1655 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 7.4 B coadaptive 0.4 2.9 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1656 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 7.4 B coadaptive 0.4 2.9 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1657 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 1.4 B coadaptive 5 7.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1658 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 1.4 B coadaptive 5 7.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1659 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 1.4 B coadaptive 5 7.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1660 Fitness: 11.5353 Genotype: Fch1: A coadaptive 6.8 4.7 B coadaptive 3.8 5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.5353 disease 3.5 +1661 Fitness: 11.5353 Genotype: Fch1: A coadaptive 6.8 4.7 B coadaptive 3.8 5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.5353 disease 3.5 +1662 Fitness: 11.5353 Genotype: Fch1: A coadaptive 6.8 4.7 B coadaptive 3.8 5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.5353 disease 3.5 +1663 Fitness: 4.92948 Genotype: Fch1: A coadaptive 0.7 3.6 B coadaptive 5.2 2.4 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.92948 disease 3 +1664 Fitness: 4.92948 Genotype: Fch1: A coadaptive 0.7 3.6 B coadaptive 5.2 2.4 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.92948 disease 3 +1665 Fitness: 4.92948 Genotype: Fch1: A coadaptive 0.7 3.6 B coadaptive 5.2 2.4 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.92948 disease 3 +1666 Fitness: 4.71175 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 1.9 2.3 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.71175 disease 3 +1667 Fitness: 4.71175 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 1.9 2.3 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.71175 disease 3 +1668 Fitness: 4.71175 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 1.9 2.3 C disease 1 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 4.71175 disease 3 +1669 Fitness: 10.5471 Genotype: Fch1: A coadaptive 2 6.2 B coadaptive 4.1 5.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.5471 disease 3 +1670 Fitness: 10.5471 Genotype: Fch1: A coadaptive 2 6.2 B coadaptive 4.1 5.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.5471 disease 3 +1671 Fitness: 10.5471 Genotype: Fch1: A coadaptive 2 6.2 B coadaptive 4.1 5.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.5471 disease 3 +1672 Fitness: 12.5188 Genotype: Fch1: A coadaptive 1.2 8.8 B coadaptive 7.4 5.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 12.5188 disease 3.5 +1673 Fitness: 12.5188 Genotype: Fch1: A coadaptive 1.2 8.8 B coadaptive 7.4 5.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 12.5188 disease 3.5 +1674 Fitness: 12.5188 Genotype: Fch1: A coadaptive 1.2 8.8 B coadaptive 7.4 5.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 12.5188 disease 3.5 +1675 Fitness: 9.99121 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 5.7 7.7 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 9.99121 disease 2.5 +1676 Fitness: 9.99121 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 5.7 7.7 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 9.99121 disease 2.5 +1677 Fitness: 9.99121 Genotype: Fch1: A coadaptive 3.2 5.5 B coadaptive 5.7 7.7 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 9.99121 disease 2.5 +1678 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 3.6 B coadaptive 9.9 4.1 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +1679 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 3.6 B coadaptive 9.9 4.1 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +1680 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 3.6 B coadaptive 9.9 4.1 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2 +1681 Fitness: 12.4494 Genotype: Fch1: A coadaptive 9 4.1 B coadaptive 6.6 3.4 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.4494 disease 2.5 +1682 Fitness: 12.4494 Genotype: Fch1: A coadaptive 9 4.1 B coadaptive 6.6 3.4 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.4494 disease 2.5 +1683 Fitness: 12.4494 Genotype: Fch1: A coadaptive 9 4.1 B coadaptive 6.6 3.4 C disease 0.5 0 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.4494 disease 2.5 +1684 Fitness: 3.94813 Genotype: Fch1: A coadaptive 4.3 2 B coadaptive 3.5 0.2 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.94813 disease 3.5 +1685 Fitness: 3.94813 Genotype: Fch1: A coadaptive 4.3 2 B coadaptive 3.5 0.2 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.94813 disease 3.5 +1686 Fitness: 3.94813 Genotype: Fch1: A coadaptive 4.3 2 B coadaptive 3.5 0.2 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.94813 disease 3.5 +1687 Fitness: 2.65111 Genotype: Fch1: A coadaptive 1.4 3.3 B coadaptive 8.5 3.5 C disease 0 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 2.65111 disease 2 +1688 Fitness: 2.65111 Genotype: Fch1: A coadaptive 1.4 3.3 B coadaptive 8.5 3.5 C disease 0 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 2.65111 disease 2 +1689 Fitness: 2.65111 Genotype: Fch1: A coadaptive 1.4 3.3 B coadaptive 8.5 3.5 C disease 0 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 2.65111 disease 2 +1690 Fitness: 13.3695 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 4.9 8.1 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3695 disease 3.5 +1691 Fitness: 13.3695 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 4.9 8.1 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3695 disease 3.5 +1692 Fitness: 13.3695 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 4.9 8.1 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.3695 disease 3.5 +1693 Fitness: 7.83437 Genotype: Fch1: A coadaptive 6.8 0.7 B coadaptive 1.5 5 C disease 1 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.83437 disease 2.5 +1694 Fitness: 7.83437 Genotype: Fch1: A coadaptive 6.8 0.7 B coadaptive 1.5 5 C disease 1 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.83437 disease 2.5 +1695 Fitness: 7.83437 Genotype: Fch1: A coadaptive 6.8 0.7 B coadaptive 1.5 5 C disease 1 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.83437 disease 2.5 +1696 Fitness: 5.27614 Genotype: Fch1: A coadaptive 4.2 3.9 B coadaptive 5.4 9.9 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 5.27614 disease 3.5 +1697 Fitness: 5.27614 Genotype: Fch1: A coadaptive 4.2 3.9 B coadaptive 5.4 9.9 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 5.27614 disease 3.5 +1698 Fitness: 5.27614 Genotype: Fch1: A coadaptive 4.2 3.9 B coadaptive 5.4 9.9 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 5.27614 disease 3.5 +1699 Fitness: 12.891 Genotype: Fch1: A coadaptive 8.8 2.6 B coadaptive 2.6 7.3 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.891 disease 3.5 +1700 Fitness: 12.891 Genotype: Fch1: A coadaptive 8.8 2.6 B coadaptive 2.6 7.3 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.891 disease 3.5 +1701 Fitness: 12.891 Genotype: Fch1: A coadaptive 8.8 2.6 B coadaptive 2.6 7.3 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 12.891 disease 3.5 +1702 Fitness: 11.6873 Genotype: Fch1: A coadaptive 7.7 7.3 B coadaptive 1.9 9 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 11.6873 disease 2.5 +1703 Fitness: 11.6873 Genotype: Fch1: A coadaptive 7.7 7.3 B coadaptive 1.9 9 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 11.6873 disease 2.5 +1704 Fitness: 11.6873 Genotype: Fch1: A coadaptive 7.7 7.3 B coadaptive 1.9 9 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 11.6873 disease 2.5 +1705 Fitness: 14.6221 Genotype: Fch1: A coadaptive 5.3 9 B coadaptive 8.1 5.5 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.6221 disease 3.5 +1706 Fitness: 14.6221 Genotype: Fch1: A coadaptive 5.3 9 B coadaptive 8.1 5.5 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.6221 disease 3.5 +1707 Fitness: 14.6221 Genotype: Fch1: A coadaptive 5.3 9 B coadaptive 8.1 5.5 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.6221 disease 3.5 +1708 Fitness: 6.01216 Genotype: Fch1: A coadaptive 6.5 6.6 B coadaptive 5 1.7 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.01216 disease 2 +1709 Fitness: 6.01216 Genotype: Fch1: A coadaptive 6.5 6.6 B coadaptive 5 1.7 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.01216 disease 2 +1710 Fitness: 6.01216 Genotype: Fch1: A coadaptive 6.5 6.6 B coadaptive 5 1.7 C disease 1 0 D disease 0 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.01216 disease 2 +1711 Fitness: 13.3703 Genotype: Fch1: A coadaptive 5.4 7.1 B coadaptive 6.8 3.7 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.3703 disease 3.5 +1712 Fitness: 13.3703 Genotype: Fch1: A coadaptive 5.4 7.1 B coadaptive 6.8 3.7 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.3703 disease 3.5 +1713 Fitness: 13.3703 Genotype: Fch1: A coadaptive 5.4 7.1 B coadaptive 6.8 3.7 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 13.3703 disease 3.5 +1714 Fitness: 5.76114 Genotype: Fch1: A coadaptive 6.5 2.4 B coadaptive 1.6 3.3 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 5.76114 disease 3 +1715 Fitness: 5.76114 Genotype: Fch1: A coadaptive 6.5 2.4 B coadaptive 1.6 3.3 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 5.76114 disease 3 +1716 Fitness: 5.76114 Genotype: Fch1: A coadaptive 6.5 2.4 B coadaptive 1.6 3.3 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 5.76114 disease 3 +1717 Fitness: 8.36062 Genotype: Fch1: A coadaptive 8.4 7.6 B coadaptive 3.6 6.5 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.36062 disease 3 +1718 Fitness: 8.36062 Genotype: Fch1: A coadaptive 8.4 7.6 B coadaptive 3.6 6.5 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.36062 disease 3 +1719 Fitness: 8.36062 Genotype: Fch1: A coadaptive 8.4 7.6 B coadaptive 3.6 6.5 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.36062 disease 3 +1720 Fitness: 9.77748 Genotype: Fch1: A coadaptive 8.3 9.6 B coadaptive 9.4 7.3 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.77748 disease 2 +1721 Fitness: 9.77748 Genotype: Fch1: A coadaptive 8.3 9.6 B coadaptive 9.4 7.3 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.77748 disease 2 +1722 Fitness: 9.77748 Genotype: Fch1: A coadaptive 8.3 9.6 B coadaptive 9.4 7.3 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.77748 disease 2 +1723 Fitness: 13.3703 Genotype: Fch1: A coadaptive 5 5.5 B coadaptive 5.3 7.2 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3703 disease 3.5 +1724 Fitness: 13.3703 Genotype: Fch1: A coadaptive 5 5.5 B coadaptive 5.3 7.2 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3703 disease 3.5 +1725 Fitness: 13.3703 Genotype: Fch1: A coadaptive 5 5.5 B coadaptive 5.3 7.2 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3703 disease 3.5 +1726 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 5.3 B coadaptive 0 0.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1727 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 5.3 B coadaptive 0 0.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1728 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 5.3 B coadaptive 0 0.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1729 Fitness: 13.5451 Genotype: Fch1: A coadaptive 7.5 8.1 B coadaptive 6.1 7.4 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.5451 disease 2.5 +1730 Fitness: 13.5451 Genotype: Fch1: A coadaptive 7.5 8.1 B coadaptive 6.1 7.4 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.5451 disease 2.5 +1731 Fitness: 13.5451 Genotype: Fch1: A coadaptive 7.5 8.1 B coadaptive 6.1 7.4 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.5451 disease 2.5 +1732 Fitness: 5.20625 Genotype: Fch1: A coadaptive 8.3 9.2 B coadaptive 5.9 4.6 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.20625 disease 3.5 +1733 Fitness: 5.20625 Genotype: Fch1: A coadaptive 8.3 9.2 B coadaptive 5.9 4.6 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.20625 disease 3.5 +1734 Fitness: 5.20625 Genotype: Fch1: A coadaptive 8.3 9.2 B coadaptive 5.9 4.6 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.20625 disease 3.5 +1735 Fitness: 8.9141 Genotype: Fch1: A coadaptive 5.8 4.8 B coadaptive 9.5 6.7 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.9141 disease 3.5 +1736 Fitness: 8.9141 Genotype: Fch1: A coadaptive 5.8 4.8 B coadaptive 9.5 6.7 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.9141 disease 3.5 +1737 Fitness: 8.9141 Genotype: Fch1: A coadaptive 5.8 4.8 B coadaptive 9.5 6.7 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.9141 disease 3.5 +1738 Fitness: 8.1116 Genotype: Fch1: A coadaptive 0.9 5.5 B coadaptive 3.9 6.1 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 8.1116 disease 2.5 +1739 Fitness: 8.1116 Genotype: Fch1: A coadaptive 0.9 5.5 B coadaptive 3.9 6.1 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 8.1116 disease 2.5 +1740 Fitness: 8.1116 Genotype: Fch1: A coadaptive 0.9 5.5 B coadaptive 3.9 6.1 C disease 1 1 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 8.1116 disease 2.5 +1741 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 3 B coadaptive 10 9.3 C disease 0 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2 +1742 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 3 B coadaptive 10 9.3 C disease 0 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2 +1743 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 3 B coadaptive 10 9.3 C disease 0 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2 +1744 Fitness: 7.82242 Genotype: Fch1: A coadaptive 0.6 7 B coadaptive 9.6 3.7 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.82242 disease 3.5 +1745 Fitness: 7.82242 Genotype: Fch1: A coadaptive 0.6 7 B coadaptive 9.6 3.7 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.82242 disease 3.5 +1746 Fitness: 7.82242 Genotype: Fch1: A coadaptive 0.6 7 B coadaptive 9.6 3.7 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.82242 disease 3.5 +1747 Fitness: 6.83125 Genotype: Fch1: A coadaptive 8 3 B coadaptive 3.7 2.3 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 6.83125 disease 2.5 +1748 Fitness: 6.83125 Genotype: Fch1: A coadaptive 8 3 B coadaptive 3.7 2.3 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 6.83125 disease 2.5 +1749 Fitness: 6.83125 Genotype: Fch1: A coadaptive 8 3 B coadaptive 3.7 2.3 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 6.83125 disease 2.5 +1750 Fitness: 12.3794 Genotype: Fch1: A coadaptive 8.2 1.7 B coadaptive 6 7 C disease 0 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 12.3794 disease 3 +1751 Fitness: 12.3794 Genotype: Fch1: A coadaptive 8.2 1.7 B coadaptive 6 7 C disease 0 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 12.3794 disease 3 +1752 Fitness: 12.3794 Genotype: Fch1: A coadaptive 8.2 1.7 B coadaptive 6 7 C disease 0 0.5 D disease 0.5 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 12.3794 disease 3 +1753 Fitness: 6.71911 Genotype: Fch1: A coadaptive 6.2 0.5 B coadaptive 4.6 1.3 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.71911 disease 4 +1754 Fitness: 6.71911 Genotype: Fch1: A coadaptive 6.2 0.5 B coadaptive 4.6 1.3 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.71911 disease 4 +1755 Fitness: 6.71911 Genotype: Fch1: A coadaptive 6.2 0.5 B coadaptive 4.6 1.3 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.71911 disease 4 +1756 Fitness: 2.93365 Genotype: Fch1: A coadaptive 2 1 B coadaptive 3.4 2.2 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.93365 disease 3.5 +1757 Fitness: 2.93365 Genotype: Fch1: A coadaptive 2 1 B coadaptive 3.4 2.2 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.93365 disease 3.5 +1758 Fitness: 2.93365 Genotype: Fch1: A coadaptive 2 1 B coadaptive 3.4 2.2 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.93365 disease 3.5 +1759 Fitness: 10.8184 Genotype: Fch1: A coadaptive 7.6 1.4 B coadaptive 6.5 2.1 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 10.8184 disease 2.5 +1760 Fitness: 10.8184 Genotype: Fch1: A coadaptive 7.6 1.4 B coadaptive 6.5 2.1 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 10.8184 disease 2.5 +1761 Fitness: 10.8184 Genotype: Fch1: A coadaptive 7.6 1.4 B coadaptive 6.5 2.1 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 10.8184 disease 2.5 +1762 Fitness: 13.7785 Genotype: Fch1: A coadaptive 4.7 6.2 B coadaptive 8 3.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.7785 disease 3 +1763 Fitness: 13.7785 Genotype: Fch1: A coadaptive 4.7 6.2 B coadaptive 8 3.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.7785 disease 3 +1764 Fitness: 13.7785 Genotype: Fch1: A coadaptive 4.7 6.2 B coadaptive 8 3.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.7785 disease 3 +1765 Fitness: 7.07118 Genotype: Fch1: A coadaptive 3.3 6.6 B coadaptive 4.1 1.7 C disease 0 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.07118 disease 2 +1766 Fitness: 7.07118 Genotype: Fch1: A coadaptive 3.3 6.6 B coadaptive 4.1 1.7 C disease 0 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.07118 disease 2 +1767 Fitness: 7.07118 Genotype: Fch1: A coadaptive 3.3 6.6 B coadaptive 4.1 1.7 C disease 0 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.07118 disease 2 +1768 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.9 B coadaptive 4 3.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1769 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.9 B coadaptive 4 3.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1770 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.9 B coadaptive 4 3.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1771 Fitness: 13.3405 Genotype: Fch1: A coadaptive 9.9 2.3 B coadaptive 7.8 2.6 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.3405 disease 2.5 +1772 Fitness: 13.3405 Genotype: Fch1: A coadaptive 9.9 2.3 B coadaptive 7.8 2.6 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.3405 disease 2.5 +1773 Fitness: 13.3405 Genotype: Fch1: A coadaptive 9.9 2.3 B coadaptive 7.8 2.6 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.3405 disease 2.5 +1774 Fitness: 11.9736 Genotype: Fch1: A coadaptive 6.5 7.8 B coadaptive 7.3 9.6 C disease 0 1 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 11.9736 disease 3.5 +1775 Fitness: 11.9736 Genotype: Fch1: A coadaptive 6.5 7.8 B coadaptive 7.3 9.6 C disease 0 1 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 11.9736 disease 3.5 +1776 Fitness: 11.9736 Genotype: Fch1: A coadaptive 6.5 7.8 B coadaptive 7.3 9.6 C disease 0 1 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 11.9736 disease 3.5 +1777 Fitness: 4.89172 Genotype: Fch1: A coadaptive 6.7 0.9 B coadaptive 4.9 10 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.89172 disease 3 +1778 Fitness: 4.89172 Genotype: Fch1: A coadaptive 6.7 0.9 B coadaptive 4.9 10 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.89172 disease 3 +1779 Fitness: 4.89172 Genotype: Fch1: A coadaptive 6.7 0.9 B coadaptive 4.9 10 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.89172 disease 3 +1780 Fitness: 8.56236 Genotype: Fch1: A coadaptive 7.3 5.6 B coadaptive 4.8 2.9 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.56236 disease 2.5 +1781 Fitness: 8.56236 Genotype: Fch1: A coadaptive 7.3 5.6 B coadaptive 4.8 2.9 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.56236 disease 2.5 +1782 Fitness: 8.56236 Genotype: Fch1: A coadaptive 7.3 5.6 B coadaptive 4.8 2.9 C disease 0.5 0 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.56236 disease 2.5 +1783 Fitness: 9.7816 Genotype: Fch1: A coadaptive 8.9 7.5 B coadaptive 9 9 C disease 1 0.5 D disease 0.5 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.7816 disease 3.5 +1784 Fitness: 9.7816 Genotype: Fch1: A coadaptive 8.9 7.5 B coadaptive 9 9 C disease 1 0.5 D disease 0.5 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.7816 disease 3.5 +1785 Fitness: 9.7816 Genotype: Fch1: A coadaptive 8.9 7.5 B coadaptive 9 9 C disease 1 0.5 D disease 0.5 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.7816 disease 3.5 +1786 Fitness: 6.41869 Genotype: Fch1: A coadaptive 3 2.3 B coadaptive 2.3 5.4 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.41869 disease 3 +1787 Fitness: 6.41869 Genotype: Fch1: A coadaptive 3 2.3 B coadaptive 2.3 5.4 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.41869 disease 3 +1788 Fitness: 6.41869 Genotype: Fch1: A coadaptive 3 2.3 B coadaptive 2.3 5.4 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 6.41869 disease 3 +1789 Fitness: 11.2042 Genotype: Fch1: A coadaptive 7.3 1.2 B coadaptive 8.1 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 11.2042 disease 3.5 +1790 Fitness: 11.2042 Genotype: Fch1: A coadaptive 7.3 1.2 B coadaptive 8.1 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 11.2042 disease 3.5 +1791 Fitness: 11.2042 Genotype: Fch1: A coadaptive 7.3 1.2 B coadaptive 8.1 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 11.2042 disease 3.5 +1792 Fitness: 5.46306 Genotype: Fch1: A coadaptive 6.3 7.7 B coadaptive 4.6 2.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.46306 disease 2 +1793 Fitness: 5.46306 Genotype: Fch1: A coadaptive 6.3 7.7 B coadaptive 4.6 2.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.46306 disease 2 +1794 Fitness: 5.46306 Genotype: Fch1: A coadaptive 6.3 7.7 B coadaptive 4.6 2.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.46306 disease 2 +1795 Fitness: 3.10391 Genotype: Fch1: A coadaptive 3.9 1.6 B coadaptive 3.7 9.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.10391 disease 3.5 +1796 Fitness: 3.10391 Genotype: Fch1: A coadaptive 3.9 1.6 B coadaptive 3.7 9.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.10391 disease 3.5 +1797 Fitness: 3.10391 Genotype: Fch1: A coadaptive 3.9 1.6 B coadaptive 3.7 9.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.10391 disease 3.5 +1798 Fitness: 10.2117 Genotype: Fch1: A coadaptive 7 5.5 B coadaptive 7.7 9.3 C disease 0.5 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.2117 disease 2.5 +1799 Fitness: 10.2117 Genotype: Fch1: A coadaptive 7 5.5 B coadaptive 7.7 9.3 C disease 0.5 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.2117 disease 2.5 +1800 Fitness: 10.2117 Genotype: Fch1: A coadaptive 7 5.5 B coadaptive 7.7 9.3 C disease 0.5 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.2117 disease 2.5 +1801 Fitness: 0 Genotype: Fch1: A coadaptive 0 5.1 B coadaptive 8.2 5.9 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1802 Fitness: 0 Genotype: Fch1: A coadaptive 0 5.1 B coadaptive 8.2 5.9 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1803 Fitness: 0 Genotype: Fch1: A coadaptive 0 5.1 B coadaptive 8.2 5.9 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1804 Fitness: 4.91923 Genotype: Fch1: A coadaptive 2.2 5.1 B coadaptive 1.7 2.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 4.91923 disease 2 +1805 Fitness: 4.91923 Genotype: Fch1: A coadaptive 2.2 5.1 B coadaptive 1.7 2.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 4.91923 disease 2 +1806 Fitness: 4.91923 Genotype: Fch1: A coadaptive 2.2 5.1 B coadaptive 1.7 2.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 4.91923 disease 2 +1807 Fitness: 10.236 Genotype: Fch1: A coadaptive 9.6 6.8 B coadaptive 7.8 3.8 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.236 disease 2.5 +1808 Fitness: 10.236 Genotype: Fch1: A coadaptive 9.6 6.8 B coadaptive 7.8 3.8 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.236 disease 2.5 +1809 Fitness: 10.236 Genotype: Fch1: A coadaptive 9.6 6.8 B coadaptive 7.8 3.8 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.236 disease 2.5 +1810 Fitness: 5.31971 Genotype: Fch1: A coadaptive 2.5 2.1 B coadaptive 4.7 2.4 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.31971 disease 2 +1811 Fitness: 5.31971 Genotype: Fch1: A coadaptive 2.5 2.1 B coadaptive 4.7 2.4 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.31971 disease 2 +1812 Fitness: 5.31971 Genotype: Fch1: A coadaptive 2.5 2.1 B coadaptive 4.7 2.4 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.31971 disease 2 +1813 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 8.6 B coadaptive 2.5 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1814 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 8.6 B coadaptive 2.5 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1815 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 8.6 B coadaptive 2.5 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1816 Fitness: 0 Genotype: Fch1: A coadaptive 9 9.2 B coadaptive 6.6 0.1 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1817 Fitness: 0 Genotype: Fch1: A coadaptive 9 9.2 B coadaptive 6.6 0.1 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1818 Fitness: 0 Genotype: Fch1: A coadaptive 9 9.2 B coadaptive 6.6 0.1 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1819 Fitness: 8.18146 Genotype: Fch1: A coadaptive 6 3.7 B coadaptive 9 6.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.18146 disease 2 +1820 Fitness: 8.18146 Genotype: Fch1: A coadaptive 6 3.7 B coadaptive 9 6.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.18146 disease 2 +1821 Fitness: 8.18146 Genotype: Fch1: A coadaptive 6 3.7 B coadaptive 9 6.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.18146 disease 2 +1822 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.4 B coadaptive 4 0.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1823 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.4 B coadaptive 4 0.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1824 Fitness: 0 Genotype: Fch1: A coadaptive 0 0.4 B coadaptive 4 0.9 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1825 Fitness: 10.1348 Genotype: Fch1: A coadaptive 8.4 2.4 B coadaptive 7.8 8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.1348 disease 3 +1826 Fitness: 10.1348 Genotype: Fch1: A coadaptive 8.4 2.4 B coadaptive 7.8 8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.1348 disease 3 +1827 Fitness: 10.1348 Genotype: Fch1: A coadaptive 8.4 2.4 B coadaptive 7.8 8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.1348 disease 3 +1828 Fitness: 5.26421 Genotype: Fch1: A coadaptive 8.5 1.8 B coadaptive 4.9 0.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.26421 disease 2 +1829 Fitness: 5.26421 Genotype: Fch1: A coadaptive 8.5 1.8 B coadaptive 4.9 0.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.26421 disease 2 +1830 Fitness: 5.26421 Genotype: Fch1: A coadaptive 8.5 1.8 B coadaptive 4.9 0.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 5.26421 disease 2 +1831 Fitness: 12.2184 Genotype: Fch1: A coadaptive 5.7 3.7 B coadaptive 6.5 3.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 12.2184 disease 2 +1832 Fitness: 12.2184 Genotype: Fch1: A coadaptive 5.7 3.7 B coadaptive 6.5 3.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 12.2184 disease 2 +1833 Fitness: 12.2184 Genotype: Fch1: A coadaptive 5.7 3.7 B coadaptive 6.5 3.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 12.2184 disease 2 +1834 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 4 4.8 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1835 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 4 4.8 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1836 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 4 4.8 C disease 0 0.5 D disease 0.5 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1837 Fitness: 1.6176 Genotype: Fch1: A coadaptive 2.4 2 B coadaptive 1.1 0.9 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 1.6176 disease 2.5 +1838 Fitness: 1.6176 Genotype: Fch1: A coadaptive 2.4 2 B coadaptive 1.1 0.9 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 1.6176 disease 2.5 +1839 Fitness: 1.6176 Genotype: Fch1: A coadaptive 2.4 2 B coadaptive 1.1 0.9 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 1.6176 disease 2.5 +1840 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 0 B coadaptive 8.3 7.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1841 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 0 B coadaptive 8.3 7.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1842 Fitness: 0 Genotype: Fch1: A coadaptive 6.6 0 B coadaptive 8.3 7.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1843 Fitness: 6.49512 Genotype: Fch1: A coadaptive 2.4 2.9 B coadaptive 3.3 5.1 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.49512 disease 3.5 +1844 Fitness: 6.49512 Genotype: Fch1: A coadaptive 2.4 2.9 B coadaptive 3.3 5.1 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.49512 disease 3.5 +1845 Fitness: 6.49512 Genotype: Fch1: A coadaptive 2.4 2.9 B coadaptive 3.3 5.1 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.49512 disease 3.5 +1846 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.4 B coadaptive 9.2 7.8 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1847 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.4 B coadaptive 9.2 7.8 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1848 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.4 B coadaptive 9.2 7.8 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1849 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 6.5 B coadaptive 9.4 7.3 C disease 1 0 D disease 1 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +1850 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 6.5 B coadaptive 9.4 7.3 C disease 1 0 D disease 1 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +1851 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 6.5 B coadaptive 9.4 7.3 C disease 1 0 D disease 1 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +1852 Fitness: 9.62809 Genotype: Fch1: A coadaptive 3.5 4 B coadaptive 2.2 8.9 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.62809 disease 3.5 +1853 Fitness: 9.62809 Genotype: Fch1: A coadaptive 3.5 4 B coadaptive 2.2 8.9 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.62809 disease 3.5 +1854 Fitness: 9.62809 Genotype: Fch1: A coadaptive 3.5 4 B coadaptive 2.2 8.9 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.62809 disease 3.5 +1855 Fitness: 2.63118 Genotype: Fch1: A coadaptive 1.6 6.1 B coadaptive 6 9.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.63118 disease 3 +1856 Fitness: 2.63118 Genotype: Fch1: A coadaptive 1.6 6.1 B coadaptive 6 9.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.63118 disease 3 +1857 Fitness: 2.63118 Genotype: Fch1: A coadaptive 1.6 6.1 B coadaptive 6 9.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.63118 disease 3 +1858 Fitness: 13.2364 Genotype: Fch1: A coadaptive 5.2 7 B coadaptive 2.6 7.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.2364 disease 4 +1859 Fitness: 13.2364 Genotype: Fch1: A coadaptive 5.2 7 B coadaptive 2.6 7.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.2364 disease 4 +1860 Fitness: 13.2364 Genotype: Fch1: A coadaptive 5.2 7 B coadaptive 2.6 7.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.2364 disease 4 +1861 Fitness: 10.2245 Genotype: Fch1: A coadaptive 1.2 8.4 B coadaptive 3.3 4.5 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 10.2245 disease 2.5 +1862 Fitness: 10.2245 Genotype: Fch1: A coadaptive 1.2 8.4 B coadaptive 3.3 4.5 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 10.2245 disease 2.5 +1863 Fitness: 10.2245 Genotype: Fch1: A coadaptive 1.2 8.4 B coadaptive 3.3 4.5 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 10.2245 disease 2.5 +1864 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.2 B coadaptive 0.8 0.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1865 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.2 B coadaptive 0.8 0.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1866 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.2 B coadaptive 0.8 0.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1867 Fitness: 4.2176 Genotype: Fch1: A coadaptive 3 1.4 B coadaptive 1.5 8.5 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 4.2176 disease 3 +1868 Fitness: 4.2176 Genotype: Fch1: A coadaptive 3 1.4 B coadaptive 1.5 8.5 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 4.2176 disease 3 +1869 Fitness: 4.2176 Genotype: Fch1: A coadaptive 3 1.4 B coadaptive 1.5 8.5 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 4.2176 disease 3 +1870 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.6 B coadaptive 5.4 8 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1871 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.6 B coadaptive 5.4 8 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1872 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.6 B coadaptive 5.4 8 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1873 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9 B coadaptive 3.9 5.5 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1874 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9 B coadaptive 3.9 5.5 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1875 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9 B coadaptive 3.9 5.5 C disease 0 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1876 Fitness: 8.75874 Genotype: Fch1: A coadaptive 1.2 5.6 B coadaptive 2.1 6.8 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.75874 disease 2.5 +1877 Fitness: 8.75874 Genotype: Fch1: A coadaptive 1.2 5.6 B coadaptive 2.1 6.8 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.75874 disease 2.5 +1878 Fitness: 8.75874 Genotype: Fch1: A coadaptive 1.2 5.6 B coadaptive 2.1 6.8 C disease 1 0 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.75874 disease 2.5 +1879 Fitness: 8.51355 Genotype: Fch1: A coadaptive 5 1.6 B coadaptive 4.5 5.1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.51355 disease 3.5 +1880 Fitness: 8.51355 Genotype: Fch1: A coadaptive 5 1.6 B coadaptive 4.5 5.1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.51355 disease 3.5 +1881 Fitness: 8.51355 Genotype: Fch1: A coadaptive 5 1.6 B coadaptive 4.5 5.1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.51355 disease 3.5 +1882 Fitness: 13.3596 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 6.9 C disease 0 0.5 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.3596 disease 3 +1883 Fitness: 13.3596 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 6.9 C disease 0 0.5 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.3596 disease 3 +1884 Fitness: 13.3596 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 6.9 C disease 0 0.5 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.3596 disease 3 +1885 Fitness: 11.2675 Genotype: Fch1: A coadaptive 5.2 3.7 B coadaptive 6.5 5.9 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2675 disease 3 +1886 Fitness: 11.2675 Genotype: Fch1: A coadaptive 5.2 3.7 B coadaptive 6.5 5.9 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2675 disease 3 +1887 Fitness: 11.2675 Genotype: Fch1: A coadaptive 5.2 3.7 B coadaptive 6.5 5.9 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2675 disease 3 +1888 Fitness: 12.253 Genotype: Fch1: A coadaptive 6.5 8.2 B coadaptive 5 6 C disease 1 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.253 disease 3 +1889 Fitness: 12.253 Genotype: Fch1: A coadaptive 6.5 8.2 B coadaptive 5 6 C disease 1 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.253 disease 3 +1890 Fitness: 12.253 Genotype: Fch1: A coadaptive 6.5 8.2 B coadaptive 5 6 C disease 1 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.253 disease 3 +1891 Fitness: 6.50369 Genotype: Fch1: A coadaptive 5.5 0.2 B coadaptive 7.3 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 6.50369 disease 3 +1892 Fitness: 6.50369 Genotype: Fch1: A coadaptive 5.5 0.2 B coadaptive 7.3 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 6.50369 disease 3 +1893 Fitness: 6.50369 Genotype: Fch1: A coadaptive 5.5 0.2 B coadaptive 7.3 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 6.50369 disease 3 +1894 Fitness: 13.4289 Genotype: Fch1: A coadaptive 6.3 7.2 B coadaptive 7 4 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.4289 disease 2.5 +1895 Fitness: 13.4289 Genotype: Fch1: A coadaptive 6.3 7.2 B coadaptive 7 4 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.4289 disease 2.5 +1896 Fitness: 13.4289 Genotype: Fch1: A coadaptive 6.3 7.2 B coadaptive 7 4 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.4289 disease 2.5 +1897 Fitness: 9.66953 Genotype: Fch1: A coadaptive 0.6 6.9 B coadaptive 4.4 6.6 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.66953 disease 3.5 +1898 Fitness: 9.66953 Genotype: Fch1: A coadaptive 0.6 6.9 B coadaptive 4.4 6.6 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.66953 disease 3.5 +1899 Fitness: 9.66953 Genotype: Fch1: A coadaptive 0.6 6.9 B coadaptive 4.4 6.6 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.66953 disease 3.5 +1900 Fitness: 11.5571 Genotype: Fch1: A coadaptive 0.7 8.2 B coadaptive 5 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.5571 disease 4 +1901 Fitness: 11.5571 Genotype: Fch1: A coadaptive 0.7 8.2 B coadaptive 5 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.5571 disease 4 +1902 Fitness: 11.5571 Genotype: Fch1: A coadaptive 0.7 8.2 B coadaptive 5 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.5571 disease 4 +1903 Fitness: 12.2416 Genotype: Fch1: A coadaptive 7.3 2.1 B coadaptive 9.5 2.4 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 12.2416 disease 3 +1904 Fitness: 12.2416 Genotype: Fch1: A coadaptive 7.3 2.1 B coadaptive 9.5 2.4 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 12.2416 disease 3 +1905 Fitness: 12.2416 Genotype: Fch1: A coadaptive 7.3 2.1 B coadaptive 9.5 2.4 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 12.2416 disease 3 +1906 Fitness: 8.36795 Genotype: Fch1: A coadaptive 6.2 2.5 B coadaptive 4.9 9.6 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.36795 disease 3 +1907 Fitness: 8.36795 Genotype: Fch1: A coadaptive 6.2 2.5 B coadaptive 4.9 9.6 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.36795 disease 3 +1908 Fitness: 8.36795 Genotype: Fch1: A coadaptive 6.2 2.5 B coadaptive 4.9 9.6 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.36795 disease 3 +1909 Fitness: 10.1568 Genotype: Fch1: A coadaptive 6.4 6.1 B coadaptive 1.7 6.6 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.1568 disease 3 +1910 Fitness: 10.1568 Genotype: Fch1: A coadaptive 6.4 6.1 B coadaptive 1.7 6.6 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.1568 disease 3 +1911 Fitness: 10.1568 Genotype: Fch1: A coadaptive 6.4 6.1 B coadaptive 1.7 6.6 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.1568 disease 3 +1912 Fitness: 8.22919 Genotype: Fch1: A coadaptive 5.3 1.2 B coadaptive 6.8 1.6 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.22919 disease 2.5 +1913 Fitness: 8.22919 Genotype: Fch1: A coadaptive 5.3 1.2 B coadaptive 6.8 1.6 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.22919 disease 2.5 +1914 Fitness: 8.22919 Genotype: Fch1: A coadaptive 5.3 1.2 B coadaptive 6.8 1.6 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.22919 disease 2.5 +1915 Fitness: 10.5795 Genotype: Fch1: A coadaptive 2.9 6 B coadaptive 7.2 1.2 C disease 0 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.5795 disease 1.5 +1916 Fitness: 10.5795 Genotype: Fch1: A coadaptive 2.9 6 B coadaptive 7.2 1.2 C disease 0 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.5795 disease 1.5 +1917 Fitness: 10.5795 Genotype: Fch1: A coadaptive 2.9 6 B coadaptive 7.2 1.2 C disease 0 0.5 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.5795 disease 1.5 +1918 Fitness: 3.03646 Genotype: Fch1: A coadaptive 4.4 1.1 B coadaptive 2.1 1 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.03646 disease 3 +1919 Fitness: 3.03646 Genotype: Fch1: A coadaptive 4.4 1.1 B coadaptive 2.1 1 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.03646 disease 3 +1920 Fitness: 3.03646 Genotype: Fch1: A coadaptive 4.4 1.1 B coadaptive 2.1 1 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.03646 disease 3 +1921 Fitness: 9.83368 Genotype: Fch1: A coadaptive 0.1 7.4 B coadaptive 6.2 3.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 9.83368 disease 3 +1922 Fitness: 9.83368 Genotype: Fch1: A coadaptive 0.1 7.4 B coadaptive 6.2 3.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 9.83368 disease 3 +1923 Fitness: 9.83368 Genotype: Fch1: A coadaptive 0.1 7.4 B coadaptive 6.2 3.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 9.83368 disease 3 +1924 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 4.8 B coadaptive 3.9 0.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1925 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 4.8 B coadaptive 3.9 0.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1926 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 4.8 B coadaptive 3.9 0.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1927 Fitness: 9.83692 Genotype: Fch1: A coadaptive 6.1 2.4 B coadaptive 4.4 8.8 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.83692 disease 3 +1928 Fitness: 9.83692 Genotype: Fch1: A coadaptive 6.1 2.4 B coadaptive 4.4 8.8 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.83692 disease 3 +1929 Fitness: 9.83692 Genotype: Fch1: A coadaptive 6.1 2.4 B coadaptive 4.4 8.8 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.83692 disease 3 +1930 Fitness: 10.5534 Genotype: Fch1: A coadaptive 8.4 1.3 B coadaptive 4.5 9.9 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.5534 disease 2.5 +1931 Fitness: 10.5534 Genotype: Fch1: A coadaptive 8.4 1.3 B coadaptive 4.5 9.9 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.5534 disease 2.5 +1932 Fitness: 10.5534 Genotype: Fch1: A coadaptive 8.4 1.3 B coadaptive 4.5 9.9 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.5534 disease 2.5 +1933 Fitness: 13.8474 Genotype: Fch1: A coadaptive 5.7 8 B coadaptive 6.8 8.6 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.8474 disease 3.5 +1934 Fitness: 13.8474 Genotype: Fch1: A coadaptive 5.7 8 B coadaptive 6.8 8.6 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.8474 disease 3.5 +1935 Fitness: 13.8474 Genotype: Fch1: A coadaptive 5.7 8 B coadaptive 6.8 8.6 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.8474 disease 3.5 +1936 Fitness: 8.71526 Genotype: Fch1: A coadaptive 5.5 4.8 B coadaptive 3.1 3.7 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 8.71526 disease 2.5 +1937 Fitness: 8.71526 Genotype: Fch1: A coadaptive 5.5 4.8 B coadaptive 3.1 3.7 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 8.71526 disease 2.5 +1938 Fitness: 8.71526 Genotype: Fch1: A coadaptive 5.5 4.8 B coadaptive 3.1 3.7 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 8.71526 disease 2.5 +1939 Fitness: 9.69775 Genotype: Fch1: A coadaptive 5.4 4.2 B coadaptive 2 5.4 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.69775 disease 3 +1940 Fitness: 9.69775 Genotype: Fch1: A coadaptive 5.4 4.2 B coadaptive 2 5.4 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.69775 disease 3 +1941 Fitness: 9.69775 Genotype: Fch1: A coadaptive 5.4 4.2 B coadaptive 2 5.4 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.69775 disease 3 +1942 Fitness: 14.3765 Genotype: Fch1: A coadaptive 5.3 9 B coadaptive 8.1 4.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3765 disease 3 +1943 Fitness: 14.3765 Genotype: Fch1: A coadaptive 5.3 9 B coadaptive 8.1 4.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3765 disease 3 +1944 Fitness: 14.3765 Genotype: Fch1: A coadaptive 5.3 9 B coadaptive 8.1 4.7 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3765 disease 3 +1945 Fitness: 4.49198 Genotype: Fch1: A coadaptive 8 4.3 B coadaptive 2.1 3.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.49198 disease 1.5 +1946 Fitness: 4.49198 Genotype: Fch1: A coadaptive 8 4.3 B coadaptive 2.1 3.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.49198 disease 1.5 +1947 Fitness: 4.49198 Genotype: Fch1: A coadaptive 8 4.3 B coadaptive 2.1 3.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.49198 disease 1.5 +1948 Fitness: 11.8499 Genotype: Fch1: A coadaptive 5.8 4.8 B coadaptive 4.4 4.6 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.8499 disease 2.5 +1949 Fitness: 11.8499 Genotype: Fch1: A coadaptive 5.8 4.8 B coadaptive 4.4 4.6 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.8499 disease 2.5 +1950 Fitness: 11.8499 Genotype: Fch1: A coadaptive 5.8 4.8 B coadaptive 4.4 4.6 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.8499 disease 2.5 +1951 Fitness: 9.23688 Genotype: Fch1: A coadaptive 9.1 2.4 B coadaptive 6.3 1.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.23688 disease 3 +1952 Fitness: 9.23688 Genotype: Fch1: A coadaptive 9.1 2.4 B coadaptive 6.3 1.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.23688 disease 3 +1953 Fitness: 9.23688 Genotype: Fch1: A coadaptive 9.1 2.4 B coadaptive 6.3 1.1 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.23688 disease 3 +1954 Fitness: 9.73633 Genotype: Fch1: A coadaptive 8.3 0.6 B coadaptive 5.9 8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.73633 disease 3 +1955 Fitness: 9.73633 Genotype: Fch1: A coadaptive 8.3 0.6 B coadaptive 5.9 8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.73633 disease 3 +1956 Fitness: 9.73633 Genotype: Fch1: A coadaptive 8.3 0.6 B coadaptive 5.9 8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.73633 disease 3 +1957 Fitness: 8.70048 Genotype: Fch1: A coadaptive 5.6 8.3 B coadaptive 6.3 2.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.70048 disease 3.5 +1958 Fitness: 8.70048 Genotype: Fch1: A coadaptive 5.6 8.3 B coadaptive 6.3 2.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.70048 disease 3.5 +1959 Fitness: 8.70048 Genotype: Fch1: A coadaptive 5.6 8.3 B coadaptive 6.3 2.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.70048 disease 3.5 +1960 Fitness: 3.92887 Genotype: Fch1: A coadaptive 1.9 1.8 B coadaptive 6.1 0.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.92887 disease 3 +1961 Fitness: 3.92887 Genotype: Fch1: A coadaptive 1.9 1.8 B coadaptive 6.1 0.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.92887 disease 3 +1962 Fitness: 3.92887 Genotype: Fch1: A coadaptive 1.9 1.8 B coadaptive 6.1 0.1 C disease 0.5 0 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 3.92887 disease 3 +1963 Fitness: 11.9238 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 8.6 1.5 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.9238 disease 3 +1964 Fitness: 11.9238 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 8.6 1.5 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.9238 disease 3 +1965 Fitness: 11.9238 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 8.6 1.5 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.9238 disease 3 +1966 Fitness: 3.41119 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 2 2.1 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.41119 disease 4 +1967 Fitness: 3.41119 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 2 2.1 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.41119 disease 4 +1968 Fitness: 3.41119 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 2 2.1 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.41119 disease 4 +1969 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 6.6 B coadaptive 9.6 7.8 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1970 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 6.6 B coadaptive 9.6 7.8 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1971 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 6.6 B coadaptive 9.6 7.8 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1972 Fitness: 12.9892 Genotype: Fch1: A coadaptive 5.5 4.6 B coadaptive 9.9 1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.9892 disease 1.5 +1973 Fitness: 12.9892 Genotype: Fch1: A coadaptive 5.5 4.6 B coadaptive 9.9 1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.9892 disease 1.5 +1974 Fitness: 12.9892 Genotype: Fch1: A coadaptive 5.5 4.6 B coadaptive 9.9 1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 12.9892 disease 1.5 +1975 Fitness: 11.1809 Genotype: Fch1: A coadaptive 6.2 5 B coadaptive 4.6 3.9 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.1809 disease 3 +1976 Fitness: 11.1809 Genotype: Fch1: A coadaptive 6.2 5 B coadaptive 4.6 3.9 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.1809 disease 3 +1977 Fitness: 11.1809 Genotype: Fch1: A coadaptive 6.2 5 B coadaptive 4.6 3.9 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.1809 disease 3 +1978 Fitness: 10.9678 Genotype: Fch1: A coadaptive 6.2 2.3 B coadaptive 9.2 2.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 10.9678 disease 3 +1979 Fitness: 10.9678 Genotype: Fch1: A coadaptive 6.2 2.3 B coadaptive 9.2 2.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 10.9678 disease 3 +1980 Fitness: 10.9678 Genotype: Fch1: A coadaptive 6.2 2.3 B coadaptive 9.2 2.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 10.9678 disease 3 +1981 Fitness: 0 Genotype: Fch1: A coadaptive 9 9.4 B coadaptive 0.7 7.6 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1982 Fitness: 0 Genotype: Fch1: A coadaptive 9 9.4 B coadaptive 0.7 7.6 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1983 Fitness: 0 Genotype: Fch1: A coadaptive 9 9.4 B coadaptive 0.7 7.6 C disease 1 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1984 Fitness: 11.4952 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 6.1 5.2 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.4952 disease 3.5 +1985 Fitness: 11.4952 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 6.1 5.2 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.4952 disease 3.5 +1986 Fitness: 11.4952 Genotype: Fch1: A coadaptive 5.5 10 B coadaptive 6.1 5.2 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 11.4952 disease 3.5 +1987 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 7.6 B coadaptive 2.1 0.3 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +1988 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 7.6 B coadaptive 2.1 0.3 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +1989 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 7.6 B coadaptive 2.1 0.3 C disease 0.5 0.5 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +1990 Fitness: 12.1739 Genotype: Fch1: A coadaptive 3.3 6 B coadaptive 1.6 9 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 12.1739 disease 3.5 +1991 Fitness: 12.1739 Genotype: Fch1: A coadaptive 3.3 6 B coadaptive 1.6 9 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 12.1739 disease 3.5 +1992 Fitness: 12.1739 Genotype: Fch1: A coadaptive 3.3 6 B coadaptive 1.6 9 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 12.1739 disease 3.5 +1993 Fitness: 12.1051 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 2.6 6.6 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.1051 disease 4 +1994 Fitness: 12.1051 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 2.6 6.6 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.1051 disease 4 +1995 Fitness: 12.1051 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 2.6 6.6 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.1051 disease 4 +1996 Fitness: 12.9892 Genotype: Fch1: A coadaptive 8.9 1.2 B coadaptive 7.7 3.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9892 disease 3 +1997 Fitness: 12.9892 Genotype: Fch1: A coadaptive 8.9 1.2 B coadaptive 7.7 3.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9892 disease 3 +1998 Fitness: 12.9892 Genotype: Fch1: A coadaptive 8.9 1.2 B coadaptive 7.7 3.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9892 disease 3 +1999 Fitness: 7.47987 Genotype: Fch1: A coadaptive 6.6 7.5 B coadaptive 1.7 6.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.47987 disease 2.5 +2000 Fitness: 7.47987 Genotype: Fch1: A coadaptive 6.6 7.5 B coadaptive 1.7 6.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.47987 disease 2.5 +2001 Fitness: 7.47987 Genotype: Fch1: A coadaptive 6.6 7.5 B coadaptive 1.7 6.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.47987 disease 2.5 diff --git a/DEC_GUI/DEC-0.0/generation.3.xls b/DEC_GUI/DEC-0.0/generation.3.xls new file mode 100644 index 0000000..d0a79e0 --- /dev/null +++ b/DEC_GUI/DEC-0.0/generation.3.xls @@ -0,0 +1,2002 @@ +Population size: 2001 +1 Fitness: 9.28114 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 6.1 1.1 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.28114 disease 2 +2 Fitness: 9.28114 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 6.1 1.1 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.28114 disease 2 +3 Fitness: 9.28114 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 6.1 1.1 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.28114 disease 2 +4 Fitness: 10.4344 Genotype: Fch1: A coadaptive 4.8 3.7 B coadaptive 6.7 5.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 10.4344 disease 2 +5 Fitness: 10.4344 Genotype: Fch1: A coadaptive 4.8 3.7 B coadaptive 6.7 5.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 10.4344 disease 2 +6 Fitness: 10.4344 Genotype: Fch1: A coadaptive 4.8 3.7 B coadaptive 6.7 5.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 10.4344 disease 2 +7 Fitness: 1.50165 Genotype: Fch1: A coadaptive 1.5 8.1 B coadaptive 1.4 1.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.50165 disease 3 +8 Fitness: 1.50165 Genotype: Fch1: A coadaptive 1.5 8.1 B coadaptive 1.4 1.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.50165 disease 3 +9 Fitness: 1.50165 Genotype: Fch1: A coadaptive 1.5 8.1 B coadaptive 1.4 1.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 1.50165 disease 3 +10 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.6 B coadaptive 5 6.1 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +11 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.6 B coadaptive 5 6.1 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +12 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0.6 B coadaptive 5 6.1 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +13 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 9.4 B coadaptive 1.4 4.4 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +14 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 9.4 B coadaptive 1.4 4.4 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +15 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 9.4 B coadaptive 1.4 4.4 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 1.5 +16 Fitness: 9.61823 Genotype: Fch1: A coadaptive 8.7 6.8 B coadaptive 6.3 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.61823 disease 3 +17 Fitness: 9.61823 Genotype: Fch1: A coadaptive 8.7 6.8 B coadaptive 6.3 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.61823 disease 3 +18 Fitness: 9.61823 Genotype: Fch1: A coadaptive 8.7 6.8 B coadaptive 6.3 3.9 C disease 1 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 9.61823 disease 3 +19 Fitness: 11.7437 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 7.7 3.4 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.7437 disease 2.5 +20 Fitness: 11.7437 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 7.7 3.4 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.7437 disease 2.5 +21 Fitness: 11.7437 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 7.7 3.4 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 11.7437 disease 2.5 +22 Fitness: 10.9674 Genotype: Fch1: A coadaptive 2.9 5.7 B coadaptive 3 9.1 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.9674 disease 3 +23 Fitness: 10.9674 Genotype: Fch1: A coadaptive 2.9 5.7 B coadaptive 3 9.1 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.9674 disease 3 +24 Fitness: 10.9674 Genotype: Fch1: A coadaptive 2.9 5.7 B coadaptive 3 9.1 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.9674 disease 3 +25 Fitness: 0 Genotype: Fch1: A coadaptive 9.6 9 B coadaptive 6 0.6 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +26 Fitness: 0 Genotype: Fch1: A coadaptive 9.6 9 B coadaptive 6 0.6 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +27 Fitness: 0 Genotype: Fch1: A coadaptive 9.6 9 B coadaptive 6 0.6 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +28 Fitness: 14.0327 Genotype: Fch1: A coadaptive 8.7 5.7 B coadaptive 10 5.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.0327 disease 3 +29 Fitness: 14.0327 Genotype: Fch1: A coadaptive 8.7 5.7 B coadaptive 10 5.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.0327 disease 3 +30 Fitness: 14.0327 Genotype: Fch1: A coadaptive 8.7 5.7 B coadaptive 10 5.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.0327 disease 3 +31 Fitness: 14.7216 Genotype: Fch1: A coadaptive 7.1 6.5 B coadaptive 5.8 7.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.7216 disease 2 +32 Fitness: 14.7216 Genotype: Fch1: A coadaptive 7.1 6.5 B coadaptive 5.8 7.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.7216 disease 2 +33 Fitness: 14.7216 Genotype: Fch1: A coadaptive 7.1 6.5 B coadaptive 5.8 7.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.7216 disease 2 +34 Fitness: 4.52628 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 0.2 4.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 4.52628 disease 3.5 +35 Fitness: 4.52628 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 0.2 4.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 4.52628 disease 3.5 +36 Fitness: 4.52628 Genotype: Fch1: A coadaptive 3.4 5.8 B coadaptive 0.2 4.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 4.52628 disease 3.5 +37 Fitness: 6.54985 Genotype: Fch1: A coadaptive 3.9 6.3 B coadaptive 3.4 2.2 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.54985 disease 3.5 +38 Fitness: 6.54985 Genotype: Fch1: A coadaptive 3.9 6.3 B coadaptive 3.4 2.2 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.54985 disease 3.5 +39 Fitness: 6.54985 Genotype: Fch1: A coadaptive 3.9 6.3 B coadaptive 3.4 2.2 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.54985 disease 3.5 +40 Fitness: 7.75083 Genotype: Fch1: A coadaptive 0.6 6.4 B coadaptive 6.1 6.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 7.75083 disease 3 +41 Fitness: 7.75083 Genotype: Fch1: A coadaptive 0.6 6.4 B coadaptive 6.1 6.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 7.75083 disease 3 +42 Fitness: 7.75083 Genotype: Fch1: A coadaptive 0.6 6.4 B coadaptive 6.1 6.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 7.75083 disease 3 +43 Fitness: 10.9674 Genotype: Fch1: A coadaptive 7.4 1.2 B coadaptive 8.9 3.2 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.9674 disease 4 +44 Fitness: 10.9674 Genotype: Fch1: A coadaptive 7.4 1.2 B coadaptive 8.9 3.2 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.9674 disease 4 +45 Fitness: 10.9674 Genotype: Fch1: A coadaptive 7.4 1.2 B coadaptive 8.9 3.2 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.9674 disease 4 +46 Fitness: 9.75299 Genotype: Fch1: A coadaptive 9.1 6.8 B coadaptive 8.1 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 9.75299 disease 3 +47 Fitness: 9.75299 Genotype: Fch1: A coadaptive 9.1 6.8 B coadaptive 8.1 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 9.75299 disease 3 +48 Fitness: 9.75299 Genotype: Fch1: A coadaptive 9.1 6.8 B coadaptive 8.1 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 9.75299 disease 3 +49 Fitness: 12.2184 Genotype: Fch1: A coadaptive 1.9 8.5 B coadaptive 4.5 4.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.2184 disease 3 +50 Fitness: 12.2184 Genotype: Fch1: A coadaptive 1.9 8.5 B coadaptive 4.5 4.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.2184 disease 3 +51 Fitness: 12.2184 Genotype: Fch1: A coadaptive 1.9 8.5 B coadaptive 4.5 4.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.2184 disease 3 +52 Fitness: 14.7615 Genotype: Fch1: A coadaptive 4.4 8.6 B coadaptive 5 7.8 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.7615 disease 2 +53 Fitness: 14.7615 Genotype: Fch1: A coadaptive 4.4 8.6 B coadaptive 5 7.8 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.7615 disease 2 +54 Fitness: 14.7615 Genotype: Fch1: A coadaptive 4.4 8.6 B coadaptive 5 7.8 C disease 0 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.7615 disease 2 +55 Fitness: 5.78101 Genotype: Fch1: A coadaptive 4.5 9.6 B coadaptive 1.3 6 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.78101 disease 3 +56 Fitness: 5.78101 Genotype: Fch1: A coadaptive 4.5 9.6 B coadaptive 1.3 6 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.78101 disease 3 +57 Fitness: 5.78101 Genotype: Fch1: A coadaptive 4.5 9.6 B coadaptive 1.3 6 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.78101 disease 3 +58 Fitness: 13.3097 Genotype: Fch1: A coadaptive 9 6.9 B coadaptive 7.2 8.1 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3097 disease 3.5 +59 Fitness: 13.3097 Genotype: Fch1: A coadaptive 9 6.9 B coadaptive 7.2 8.1 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3097 disease 3.5 +60 Fitness: 13.3097 Genotype: Fch1: A coadaptive 9 6.9 B coadaptive 7.2 8.1 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3097 disease 3.5 +61 Fitness: 2.03409 Genotype: Fch1: A coadaptive 3 1.1 B coadaptive 1.5 1 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 2.03409 disease 2.5 +62 Fitness: 2.03409 Genotype: Fch1: A coadaptive 3 1.1 B coadaptive 1.5 1 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 2.03409 disease 2.5 +63 Fitness: 2.03409 Genotype: Fch1: A coadaptive 3 1.1 B coadaptive 1.5 1 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 2.03409 disease 2.5 +64 Fitness: 9.71798 Genotype: Fch1: A coadaptive 3.5 3.9 B coadaptive 9.7 0.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.71798 disease 3.5 +65 Fitness: 9.71798 Genotype: Fch1: A coadaptive 3.5 3.9 B coadaptive 9.7 0.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.71798 disease 3.5 +66 Fitness: 9.71798 Genotype: Fch1: A coadaptive 3.5 3.9 B coadaptive 9.7 0.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.71798 disease 3.5 +67 Fitness: 3.47053 Genotype: Fch1: A coadaptive 8.6 9.7 B coadaptive 6.5 4.4 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.47053 disease 2.5 +68 Fitness: 3.47053 Genotype: Fch1: A coadaptive 8.6 9.7 B coadaptive 6.5 4.4 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.47053 disease 2.5 +69 Fitness: 3.47053 Genotype: Fch1: A coadaptive 8.6 9.7 B coadaptive 6.5 4.4 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.47053 disease 2.5 +70 Fitness: 3.6299 Genotype: Fch1: A coadaptive 5.8 0.1 B coadaptive 4.1 9.2 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.6299 disease 3 +71 Fitness: 3.6299 Genotype: Fch1: A coadaptive 5.8 0.1 B coadaptive 4.1 9.2 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.6299 disease 3 +72 Fitness: 3.6299 Genotype: Fch1: A coadaptive 5.8 0.1 B coadaptive 4.1 9.2 C disease 0.5 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.6299 disease 3 +73 Fitness: 13.0664 Genotype: Fch1: A coadaptive 7.8 2.9 B coadaptive 6.7 3.6 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 13.0664 disease 2.5 +74 Fitness: 13.0664 Genotype: Fch1: A coadaptive 7.8 2.9 B coadaptive 6.7 3.6 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 13.0664 disease 2.5 +75 Fitness: 13.0664 Genotype: Fch1: A coadaptive 7.8 2.9 B coadaptive 6.7 3.6 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 13.0664 disease 2.5 +76 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 3.6 B coadaptive 9.2 7.1 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +77 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 3.6 B coadaptive 9.2 7.1 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +78 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 3.6 B coadaptive 9.2 7.1 C disease 0 1 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +79 Fitness: 6.39085 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 9.6 7.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.39085 disease 3.5 +80 Fitness: 6.39085 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 9.6 7.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.39085 disease 3.5 +81 Fitness: 6.39085 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 9.6 7.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.39085 disease 3.5 +82 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.5 B coadaptive 8.5 2.8 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +83 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.5 B coadaptive 8.5 2.8 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +84 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.5 B coadaptive 8.5 2.8 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +85 Fitness: 7.04453 Genotype: Fch1: A coadaptive 5.4 3.6 B coadaptive 9.2 6.3 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.04453 disease 2.5 +86 Fitness: 7.04453 Genotype: Fch1: A coadaptive 5.4 3.6 B coadaptive 9.2 6.3 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.04453 disease 2.5 +87 Fitness: 7.04453 Genotype: Fch1: A coadaptive 5.4 3.6 B coadaptive 9.2 6.3 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.04453 disease 2.5 +88 Fitness: 8.47087 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 0.8 6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 8.47087 disease 2 +89 Fitness: 8.47087 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 0.8 6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 8.47087 disease 2 +90 Fitness: 8.47087 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 0.8 6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 8.47087 disease 2 +91 Fitness: 11.8996 Genotype: Fch1: A coadaptive 7.8 1.6 B coadaptive 0.4 9.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.8996 disease 3.5 +92 Fitness: 11.8996 Genotype: Fch1: A coadaptive 7.8 1.6 B coadaptive 0.4 9.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.8996 disease 3.5 +93 Fitness: 11.8996 Genotype: Fch1: A coadaptive 7.8 1.6 B coadaptive 0.4 9.3 C disease 1 0 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 11.8996 disease 3.5 +94 Fitness: 13.3328 Genotype: Fch1: A coadaptive 7 3.8 B coadaptive 5 8.3 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 13.3328 disease 2.5 +95 Fitness: 13.3328 Genotype: Fch1: A coadaptive 7 3.8 B coadaptive 5 8.3 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 13.3328 disease 2.5 +96 Fitness: 13.3328 Genotype: Fch1: A coadaptive 7 3.8 B coadaptive 5 8.3 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 13.3328 disease 2.5 +97 Fitness: 3.73205 Genotype: Fch1: A coadaptive 9.6 6.7 B coadaptive 8.5 0 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.73205 disease 3.5 +98 Fitness: 3.73205 Genotype: Fch1: A coadaptive 9.6 6.7 B coadaptive 8.5 0 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.73205 disease 3.5 +99 Fitness: 3.73205 Genotype: Fch1: A coadaptive 9.6 6.7 B coadaptive 8.5 0 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.73205 disease 3.5 +100 Fitness: 3.63215 Genotype: Fch1: A coadaptive 2.9 2.3 B coadaptive 7.2 5 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.63215 disease 2 +101 Fitness: 3.63215 Genotype: Fch1: A coadaptive 2.9 2.3 B coadaptive 7.2 5 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.63215 disease 2 +102 Fitness: 3.63215 Genotype: Fch1: A coadaptive 2.9 2.3 B coadaptive 7.2 5 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 3.63215 disease 2 +103 Fitness: 5.59558 Genotype: Fch1: A coadaptive 1.4 8.5 B coadaptive 9.3 7.6 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 5.59558 disease 3.5 +104 Fitness: 5.59558 Genotype: Fch1: A coadaptive 1.4 8.5 B coadaptive 9.3 7.6 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 5.59558 disease 3.5 +105 Fitness: 5.59558 Genotype: Fch1: A coadaptive 1.4 8.5 B coadaptive 9.3 7.6 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 5.59558 disease 3.5 +106 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.9 B coadaptive 5.9 10 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +107 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.9 B coadaptive 5.9 10 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +108 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 0.9 B coadaptive 5.9 10 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +109 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 2.2 B coadaptive 9 6.8 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +110 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 2.2 B coadaptive 9 6.8 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +111 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 2.2 B coadaptive 9 6.8 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +112 Fitness: 11.496 Genotype: Fch1: A coadaptive 8.2 1 B coadaptive 4.9 4.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.496 disease 3 +113 Fitness: 11.496 Genotype: Fch1: A coadaptive 8.2 1 B coadaptive 4.9 4.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.496 disease 3 +114 Fitness: 11.496 Genotype: Fch1: A coadaptive 8.2 1 B coadaptive 4.9 4.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 11.496 disease 3 +115 Fitness: 8.66548 Genotype: Fch1: A coadaptive 2.9 6.1 B coadaptive 9.3 5.4 C disease 0.5 0 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.66548 disease 3.5 +116 Fitness: 8.66548 Genotype: Fch1: A coadaptive 2.9 6.1 B coadaptive 9.3 5.4 C disease 0.5 0 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.66548 disease 3.5 +117 Fitness: 8.66548 Genotype: Fch1: A coadaptive 2.9 6.1 B coadaptive 9.3 5.4 C disease 0.5 0 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.66548 disease 3.5 +118 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 8.5 B coadaptive 2.2 4.9 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +119 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 8.5 B coadaptive 2.2 4.9 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +120 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 8.5 B coadaptive 2.2 4.9 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +121 Fitness: 11.8506 Genotype: Fch1: A coadaptive 0.1 8.9 B coadaptive 9.4 1.9 C disease 1 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.8506 disease 4 +122 Fitness: 11.8506 Genotype: Fch1: A coadaptive 0.1 8.9 B coadaptive 9.4 1.9 C disease 1 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.8506 disease 4 +123 Fitness: 11.8506 Genotype: Fch1: A coadaptive 0.1 8.9 B coadaptive 9.4 1.9 C disease 1 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.8506 disease 4 +124 Fitness: 8.35234 Genotype: Fch1: A coadaptive 5.6 3.4 B coadaptive 6.3 0.2 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 8.35234 disease 3 +125 Fitness: 8.35234 Genotype: Fch1: A coadaptive 5.6 3.4 B coadaptive 6.3 0.2 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 8.35234 disease 3 +126 Fitness: 8.35234 Genotype: Fch1: A coadaptive 5.6 3.4 B coadaptive 6.3 0.2 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 8.35234 disease 3 +127 Fitness: 8.81905 Genotype: Fch1: A coadaptive 7.3 0.8 B coadaptive 4.8 2.3 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.81905 disease 2.5 +128 Fitness: 8.81905 Genotype: Fch1: A coadaptive 7.3 0.8 B coadaptive 4.8 2.3 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.81905 disease 2.5 +129 Fitness: 8.81905 Genotype: Fch1: A coadaptive 7.3 0.8 B coadaptive 4.8 2.3 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.81905 disease 2.5 +130 Fitness: 2.51615 Genotype: Fch1: A coadaptive 2 9.2 B coadaptive 4.1 0.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 2.51615 disease 3 +131 Fitness: 2.51615 Genotype: Fch1: A coadaptive 2 9.2 B coadaptive 4.1 0.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 2.51615 disease 3 +132 Fitness: 2.51615 Genotype: Fch1: A coadaptive 2 9.2 B coadaptive 4.1 0.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 2.51615 disease 3 +133 Fitness: 9.475 Genotype: Fch1: A coadaptive 7.4 0.4 B coadaptive 2.9 9.3 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.475 disease 3 +134 Fitness: 9.475 Genotype: Fch1: A coadaptive 7.4 0.4 B coadaptive 2.9 9.3 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.475 disease 3 +135 Fitness: 9.475 Genotype: Fch1: A coadaptive 7.4 0.4 B coadaptive 2.9 9.3 C disease 1 0 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 9.475 disease 3 +136 Fitness: 2.79425 Genotype: Fch1: A coadaptive 8.8 6.4 B coadaptive 5.6 1.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.79425 disease 3 +137 Fitness: 2.79425 Genotype: Fch1: A coadaptive 8.8 6.4 B coadaptive 5.6 1.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.79425 disease 3 +138 Fitness: 2.79425 Genotype: Fch1: A coadaptive 8.8 6.4 B coadaptive 5.6 1.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.79425 disease 3 +139 Fitness: 7.82605 Genotype: Fch1: A coadaptive 3.3 5.1 B coadaptive 3.5 2.7 C disease 0 0 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.82605 disease 2 +140 Fitness: 7.82605 Genotype: Fch1: A coadaptive 3.3 5.1 B coadaptive 3.5 2.7 C disease 0 0 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.82605 disease 2 +141 Fitness: 7.82605 Genotype: Fch1: A coadaptive 3.3 5.1 B coadaptive 3.5 2.7 C disease 0 0 D disease 1 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.82605 disease 2 +142 Fitness: 12.4689 Genotype: Fch1: A coadaptive 7.3 6.3 B coadaptive 9 1.3 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.4689 disease 3 +143 Fitness: 12.4689 Genotype: Fch1: A coadaptive 7.3 6.3 B coadaptive 9 1.3 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.4689 disease 3 +144 Fitness: 12.4689 Genotype: Fch1: A coadaptive 7.3 6.3 B coadaptive 9 1.3 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.4689 disease 3 +145 Fitness: 12.2933 Genotype: Fch1: A coadaptive 9.6 6 B coadaptive 7.3 9.4 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.2933 disease 1.5 +146 Fitness: 12.2933 Genotype: Fch1: A coadaptive 9.6 6 B coadaptive 7.3 9.4 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.2933 disease 1.5 +147 Fitness: 12.2933 Genotype: Fch1: A coadaptive 9.6 6 B coadaptive 7.3 9.4 C disease 0 1 D disease 0 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.2933 disease 1.5 +148 Fitness: 13.8623 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 5.1 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.8623 disease 4 +149 Fitness: 13.8623 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 5.1 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.8623 disease 4 +150 Fitness: 13.8623 Genotype: Fch1: A coadaptive 4.8 6.2 B coadaptive 6.7 5.1 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.8623 disease 4 +151 Fitness: 5.84375 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 7 9 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.84375 disease 3.5 +152 Fitness: 5.84375 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 7 9 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.84375 disease 3.5 +153 Fitness: 5.84375 Genotype: Fch1: A coadaptive 1.7 7.3 B coadaptive 7 9 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 5.84375 disease 3.5 +154 Fitness: 6.84254 Genotype: Fch1: A coadaptive 0.9 4.8 B coadaptive 3.3 6.7 C disease 1 0 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.84254 disease 3.5 +155 Fitness: 6.84254 Genotype: Fch1: A coadaptive 0.9 4.8 B coadaptive 3.3 6.7 C disease 1 0 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.84254 disease 3.5 +156 Fitness: 6.84254 Genotype: Fch1: A coadaptive 0.9 4.8 B coadaptive 3.3 6.7 C disease 1 0 D disease 1 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.84254 disease 3.5 +157 Fitness: 10.4952 Genotype: Fch1: A coadaptive 7.5 0.9 B coadaptive 9 3.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 10.4952 disease 3.5 +158 Fitness: 10.4952 Genotype: Fch1: A coadaptive 7.5 0.9 B coadaptive 9 3.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 10.4952 disease 3.5 +159 Fitness: 10.4952 Genotype: Fch1: A coadaptive 7.5 0.9 B coadaptive 9 3.3 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 10.4952 disease 3.5 +160 Fitness: 10.8873 Genotype: Fch1: A coadaptive 5.5 5.1 B coadaptive 9.3 5.9 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.8873 disease 2.5 +161 Fitness: 10.8873 Genotype: Fch1: A coadaptive 5.5 5.1 B coadaptive 9.3 5.9 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.8873 disease 2.5 +162 Fitness: 10.8873 Genotype: Fch1: A coadaptive 5.5 5.1 B coadaptive 9.3 5.9 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.8873 disease 2.5 +163 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.7 B coadaptive 0.1 3.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +164 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.7 B coadaptive 0.1 3.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +165 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.7 B coadaptive 0.1 3.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +166 Fitness: 0.526164 Genotype: Fch1: A coadaptive 3.7 9.2 B coadaptive 3.9 0.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0.526164 disease 3 +167 Fitness: 0.526164 Genotype: Fch1: A coadaptive 3.7 9.2 B coadaptive 3.9 0.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0.526164 disease 3 +168 Fitness: 0.526164 Genotype: Fch1: A coadaptive 3.7 9.2 B coadaptive 3.9 0.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0.526164 disease 3 +169 Fitness: 5.18625 Genotype: Fch1: A coadaptive 0.4 6.9 B coadaptive 7.8 6.6 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 5.18625 disease 2.5 +170 Fitness: 5.18625 Genotype: Fch1: A coadaptive 0.4 6.9 B coadaptive 7.8 6.6 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 5.18625 disease 2.5 +171 Fitness: 5.18625 Genotype: Fch1: A coadaptive 0.4 6.9 B coadaptive 7.8 6.6 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 5.18625 disease 2.5 +172 Fitness: 13.3328 Genotype: Fch1: A coadaptive 8.4 2.4 B coadaptive 4.5 8.8 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.3328 disease 3 +173 Fitness: 13.3328 Genotype: Fch1: A coadaptive 8.4 2.4 B coadaptive 4.5 8.8 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.3328 disease 3 +174 Fitness: 13.3328 Genotype: Fch1: A coadaptive 8.4 2.4 B coadaptive 4.5 8.8 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 13.3328 disease 3 +175 Fitness: 8.17917 Genotype: Fch1: A coadaptive 5.6 1.8 B coadaptive 6.8 0.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.17917 disease 1.5 +176 Fitness: 8.17917 Genotype: Fch1: A coadaptive 5.6 1.8 B coadaptive 6.8 0.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.17917 disease 1.5 +177 Fitness: 8.17917 Genotype: Fch1: A coadaptive 5.6 1.8 B coadaptive 6.8 0.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.17917 disease 1.5 +178 Fitness: 11.8388 Genotype: Fch1: A coadaptive 0.2 9 B coadaptive 3.3 6.6 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 11.8388 disease 3 +179 Fitness: 11.8388 Genotype: Fch1: A coadaptive 0.2 9 B coadaptive 3.3 6.6 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 11.8388 disease 3 +180 Fitness: 11.8388 Genotype: Fch1: A coadaptive 0.2 9 B coadaptive 3.3 6.6 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 11.8388 disease 3 +181 Fitness: 14.2266 Genotype: Fch1: A coadaptive 6.1 6.2 B coadaptive 6.6 4.9 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.2266 disease 2.5 +182 Fitness: 14.2266 Genotype: Fch1: A coadaptive 6.1 6.2 B coadaptive 6.6 4.9 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.2266 disease 2.5 +183 Fitness: 14.2266 Genotype: Fch1: A coadaptive 6.1 6.2 B coadaptive 6.6 4.9 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.2266 disease 2.5 +184 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 9.5 B coadaptive 0.4 2.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +185 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 9.5 B coadaptive 0.4 2.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +186 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 9.5 B coadaptive 0.4 2.9 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +187 Fitness: 5.88043 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 4.7 5.2 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.88043 disease 3 +188 Fitness: 5.88043 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 4.7 5.2 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.88043 disease 3 +189 Fitness: 5.88043 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 4.7 5.2 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.88043 disease 3 +190 Fitness: 6.09397 Genotype: Fch1: A coadaptive 8.3 7.4 B coadaptive 2.1 6.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 6.09397 disease 3.5 +191 Fitness: 6.09397 Genotype: Fch1: A coadaptive 8.3 7.4 B coadaptive 2.1 6.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 6.09397 disease 3.5 +192 Fitness: 6.09397 Genotype: Fch1: A coadaptive 8.3 7.4 B coadaptive 2.1 6.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 6.09397 disease 3.5 +193 Fitness: 8.94682 Genotype: Fch1: A coadaptive 5 1.9 B coadaptive 3.9 6.1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.94682 disease 1.5 +194 Fitness: 8.94682 Genotype: Fch1: A coadaptive 5 1.9 B coadaptive 3.9 6.1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.94682 disease 1.5 +195 Fitness: 8.94682 Genotype: Fch1: A coadaptive 5 1.9 B coadaptive 3.9 6.1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 8.94682 disease 1.5 +196 Fitness: 0 Genotype: Fch1: A coadaptive 6 0 B coadaptive 9 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +197 Fitness: 0 Genotype: Fch1: A coadaptive 6 0 B coadaptive 9 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +198 Fitness: 0 Genotype: Fch1: A coadaptive 6 0 B coadaptive 9 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +199 Fitness: 2.50391 Genotype: Fch1: A coadaptive 4.1 0.6 B coadaptive 1.2 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.50391 disease 3.5 +200 Fitness: 2.50391 Genotype: Fch1: A coadaptive 4.1 0.6 B coadaptive 1.2 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.50391 disease 3.5 +201 Fitness: 2.50391 Genotype: Fch1: A coadaptive 4.1 0.6 B coadaptive 1.2 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.50391 disease 3.5 +202 Fitness: 9.42299 Genotype: Fch1: A coadaptive 7.9 1.8 B coadaptive 6.6 0.6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 9.42299 disease 3 +203 Fitness: 9.42299 Genotype: Fch1: A coadaptive 7.9 1.8 B coadaptive 6.6 0.6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 9.42299 disease 3 +204 Fitness: 9.42299 Genotype: Fch1: A coadaptive 7.9 1.8 B coadaptive 6.6 0.6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 9.42299 disease 3 +205 Fitness: 11.3588 Genotype: Fch1: A coadaptive 8.7 2.9 B coadaptive 3.6 5.1 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 11.3588 disease 2.5 +206 Fitness: 11.3588 Genotype: Fch1: A coadaptive 8.7 2.9 B coadaptive 3.6 5.1 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 11.3588 disease 2.5 +207 Fitness: 11.3588 Genotype: Fch1: A coadaptive 8.7 2.9 B coadaptive 3.6 5.1 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 11.3588 disease 2.5 +208 Fitness: 7.6145 Genotype: Fch1: A coadaptive 3.3 2.8 B coadaptive 2.2 7.7 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.6145 disease 2.5 +209 Fitness: 7.6145 Genotype: Fch1: A coadaptive 3.3 2.8 B coadaptive 2.2 7.7 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.6145 disease 2.5 +210 Fitness: 7.6145 Genotype: Fch1: A coadaptive 3.3 2.8 B coadaptive 2.2 7.7 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.6145 disease 2.5 +211 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 7.3 B coadaptive 4.1 0.3 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +212 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 7.3 B coadaptive 4.1 0.3 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +213 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 7.3 B coadaptive 4.1 0.3 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 4 +214 Fitness: 12.1872 Genotype: Fch1: A coadaptive 6.9 4.7 B coadaptive 0.9 8.4 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.1872 disease 3 +215 Fitness: 12.1872 Genotype: Fch1: A coadaptive 6.9 4.7 B coadaptive 0.9 8.4 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.1872 disease 3 +216 Fitness: 12.1872 Genotype: Fch1: A coadaptive 6.9 4.7 B coadaptive 0.9 8.4 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.1872 disease 3 +217 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 1.7 B coadaptive 5.7 8.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +218 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 1.7 B coadaptive 5.7 8.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +219 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 1.7 B coadaptive 5.7 8.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +220 Fitness: 6.9024 Genotype: Fch1: A coadaptive 4.5 1.1 B coadaptive 7.5 0.5 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 6.9024 disease 3.5 +221 Fitness: 6.9024 Genotype: Fch1: A coadaptive 4.5 1.1 B coadaptive 7.5 0.5 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 6.9024 disease 3.5 +222 Fitness: 6.9024 Genotype: Fch1: A coadaptive 4.5 1.1 B coadaptive 7.5 0.5 C disease 0 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 6.9024 disease 3.5 +223 Fitness: 6.15005 Genotype: Fch1: A coadaptive 2.3 7.1 B coadaptive 5 0.2 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.15005 disease 2.5 +224 Fitness: 6.15005 Genotype: Fch1: A coadaptive 2.3 7.1 B coadaptive 5 0.2 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.15005 disease 2.5 +225 Fitness: 6.15005 Genotype: Fch1: A coadaptive 2.3 7.1 B coadaptive 5 0.2 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.15005 disease 2.5 +226 Fitness: 8.56182 Genotype: Fch1: A coadaptive 8.1 7 B coadaptive 1.6 7.7 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.56182 disease 2.5 +227 Fitness: 8.56182 Genotype: Fch1: A coadaptive 8.1 7 B coadaptive 1.6 7.7 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.56182 disease 2.5 +228 Fitness: 8.56182 Genotype: Fch1: A coadaptive 8.1 7 B coadaptive 1.6 7.7 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.56182 disease 2.5 +229 Fitness: 0 Genotype: Fch1: A coadaptive 1 2.3 B coadaptive 8.2 6.3 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +230 Fitness: 0 Genotype: Fch1: A coadaptive 1 2.3 B coadaptive 8.2 6.3 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +231 Fitness: 0 Genotype: Fch1: A coadaptive 1 2.3 B coadaptive 8.2 6.3 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +232 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 10 9.9 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 1.5 +233 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 10 9.9 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 1.5 +234 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.8 B coadaptive 10 9.9 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 1.5 +235 Fitness: 0.166811 Genotype: Fch1: A coadaptive 0.9 8.2 B coadaptive 8.5 9.4 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.166811 disease 3.5 +236 Fitness: 0.166811 Genotype: Fch1: A coadaptive 0.9 8.2 B coadaptive 8.5 9.4 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.166811 disease 3.5 +237 Fitness: 0.166811 Genotype: Fch1: A coadaptive 0.9 8.2 B coadaptive 8.5 9.4 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.166811 disease 3.5 +238 Fitness: 14.1953 Genotype: Fch1: A coadaptive 6.5 6.1 B coadaptive 6.9 7.5 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 14.1953 disease 3.5 +239 Fitness: 14.1953 Genotype: Fch1: A coadaptive 6.5 6.1 B coadaptive 6.9 7.5 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 14.1953 disease 3.5 +240 Fitness: 14.1953 Genotype: Fch1: A coadaptive 6.5 6.1 B coadaptive 6.9 7.5 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 14.1953 disease 3.5 +241 Fitness: 11.9024 Genotype: Fch1: A coadaptive 9 5.4 B coadaptive 1.3 9.2 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.9024 disease 3.5 +242 Fitness: 11.9024 Genotype: Fch1: A coadaptive 9 5.4 B coadaptive 1.3 9.2 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.9024 disease 3.5 +243 Fitness: 11.9024 Genotype: Fch1: A coadaptive 9 5.4 B coadaptive 1.3 9.2 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.9024 disease 3.5 +244 Fitness: 6.23251 Genotype: Fch1: A coadaptive 7.5 9 B coadaptive 9 0.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 6.23251 disease 3 +245 Fitness: 6.23251 Genotype: Fch1: A coadaptive 7.5 9 B coadaptive 9 0.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 6.23251 disease 3 +246 Fitness: 6.23251 Genotype: Fch1: A coadaptive 7.5 9 B coadaptive 9 0.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 6.23251 disease 3 +247 Fitness: 0.693037 Genotype: Fch1: A coadaptive 3.9 0.8 B coadaptive 10 3.1 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0.693037 disease 3.5 +248 Fitness: 0.693037 Genotype: Fch1: A coadaptive 3.9 0.8 B coadaptive 10 3.1 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0.693037 disease 3.5 +249 Fitness: 0.693037 Genotype: Fch1: A coadaptive 3.9 0.8 B coadaptive 10 3.1 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0.693037 disease 3.5 +250 Fitness: 3.73691 Genotype: Fch1: A coadaptive 1.8 1.8 B coadaptive 7.3 0.6 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 3.73691 disease 2.5 +251 Fitness: 3.73691 Genotype: Fch1: A coadaptive 1.8 1.8 B coadaptive 7.3 0.6 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 3.73691 disease 2.5 +252 Fitness: 3.73691 Genotype: Fch1: A coadaptive 1.8 1.8 B coadaptive 7.3 0.6 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 3.73691 disease 2.5 +253 Fitness: 1.53721 Genotype: Fch1: A coadaptive 0.3 1.7 B coadaptive 2 4.3 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.53721 disease 2.5 +254 Fitness: 1.53721 Genotype: Fch1: A coadaptive 0.3 1.7 B coadaptive 2 4.3 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.53721 disease 2.5 +255 Fitness: 1.53721 Genotype: Fch1: A coadaptive 0.3 1.7 B coadaptive 2 4.3 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 1.53721 disease 2.5 +256 Fitness: 12.3299 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 5.7 3.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.3299 disease 3.5 +257 Fitness: 12.3299 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 5.7 3.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.3299 disease 3.5 +258 Fitness: 12.3299 Genotype: Fch1: A coadaptive 7 3.9 B coadaptive 5.7 3.7 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.3299 disease 3.5 +259 Fitness: 12.2184 Genotype: Fch1: A coadaptive 6.9 3.5 B coadaptive 2.5 6.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.2184 disease 3 +260 Fitness: 12.2184 Genotype: Fch1: A coadaptive 6.9 3.5 B coadaptive 2.5 6.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.2184 disease 3 +261 Fitness: 12.2184 Genotype: Fch1: A coadaptive 6.9 3.5 B coadaptive 2.5 6.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 12.2184 disease 3 +262 Fitness: 12.3704 Genotype: Fch1: A coadaptive 6.2 6.6 B coadaptive 0.6 9.2 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.3704 disease 1.5 +263 Fitness: 12.3704 Genotype: Fch1: A coadaptive 6.2 6.6 B coadaptive 0.6 9.2 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.3704 disease 1.5 +264 Fitness: 12.3704 Genotype: Fch1: A coadaptive 6.2 6.6 B coadaptive 0.6 9.2 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.3704 disease 1.5 +265 Fitness: 9.79443 Genotype: Fch1: A coadaptive 8.5 2.1 B coadaptive 4.6 2.9 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.79443 disease 2.5 +266 Fitness: 9.79443 Genotype: Fch1: A coadaptive 8.5 2.1 B coadaptive 4.6 2.9 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.79443 disease 2.5 +267 Fitness: 9.79443 Genotype: Fch1: A coadaptive 8.5 2.1 B coadaptive 4.6 2.9 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.79443 disease 2.5 +268 Fitness: 9.56816 Genotype: Fch1: A coadaptive 9 1.6 B coadaptive 6.6 9.3 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 9.56816 disease 3 +269 Fitness: 9.56816 Genotype: Fch1: A coadaptive 9 1.6 B coadaptive 6.6 9.3 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 9.56816 disease 3 +270 Fitness: 9.56816 Genotype: Fch1: A coadaptive 9 1.6 B coadaptive 6.6 9.3 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 9.56816 disease 3 +271 Fitness: 14.5345 Genotype: Fch1: A coadaptive 4.1 9.6 B coadaptive 6.5 6 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 14.5345 disease 2 +272 Fitness: 14.5345 Genotype: Fch1: A coadaptive 4.1 9.6 B coadaptive 6.5 6 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 14.5345 disease 2 +273 Fitness: 14.5345 Genotype: Fch1: A coadaptive 4.1 9.6 B coadaptive 6.5 6 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 14.5345 disease 2 +274 Fitness: 7.31638 Genotype: Fch1: A coadaptive 1 7 B coadaptive 4.4 1.5 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.31638 disease 3 +275 Fitness: 7.31638 Genotype: Fch1: A coadaptive 1 7 B coadaptive 4.4 1.5 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.31638 disease 3 +276 Fitness: 7.31638 Genotype: Fch1: A coadaptive 1 7 B coadaptive 4.4 1.5 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.31638 disease 3 +277 Fitness: 1.53259 Genotype: Fch1: A coadaptive 6.3 8 B coadaptive 2.2 3.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.53259 disease 3 +278 Fitness: 1.53259 Genotype: Fch1: A coadaptive 6.3 8 B coadaptive 2.2 3.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.53259 disease 3 +279 Fitness: 1.53259 Genotype: Fch1: A coadaptive 6.3 8 B coadaptive 2.2 3.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.53259 disease 3 +280 Fitness: 12.1872 Genotype: Fch1: A coadaptive 3.9 5.4 B coadaptive 3.7 7.9 C disease 1 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.1872 disease 3 +281 Fitness: 12.1872 Genotype: Fch1: A coadaptive 3.9 5.4 B coadaptive 3.7 7.9 C disease 1 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.1872 disease 3 +282 Fitness: 12.1872 Genotype: Fch1: A coadaptive 3.9 5.4 B coadaptive 3.7 7.9 C disease 1 1 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.1872 disease 3 +283 Fitness: 1.3848 Genotype: Fch1: A coadaptive 1.5 5.3 B coadaptive 1.4 0.6 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.3848 disease 2.5 +284 Fitness: 1.3848 Genotype: Fch1: A coadaptive 1.5 5.3 B coadaptive 1.4 0.6 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.3848 disease 2.5 +285 Fitness: 1.3848 Genotype: Fch1: A coadaptive 1.5 5.3 B coadaptive 1.4 0.6 C disease 0.5 0 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.3848 disease 2.5 +286 Fitness: 9.10985 Genotype: Fch1: A coadaptive 9.2 7.4 B coadaptive 7.3 3.9 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 9.10985 disease 3 +287 Fitness: 9.10985 Genotype: Fch1: A coadaptive 9.2 7.4 B coadaptive 7.3 3.9 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 9.10985 disease 3 +288 Fitness: 9.10985 Genotype: Fch1: A coadaptive 9.2 7.4 B coadaptive 7.3 3.9 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 9.10985 disease 3 +289 Fitness: 0 Genotype: Fch1: A coadaptive 6.2 0 B coadaptive 10 7.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +290 Fitness: 0 Genotype: Fch1: A coadaptive 6.2 0 B coadaptive 10 7.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +291 Fitness: 0 Genotype: Fch1: A coadaptive 6.2 0 B coadaptive 10 7.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +292 Fitness: 11.8976 Genotype: Fch1: A coadaptive 3.2 8.5 B coadaptive 4.2 4.9 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.8976 disease 3.5 +293 Fitness: 11.8976 Genotype: Fch1: A coadaptive 3.2 8.5 B coadaptive 4.2 4.9 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.8976 disease 3.5 +294 Fitness: 11.8976 Genotype: Fch1: A coadaptive 3.2 8.5 B coadaptive 4.2 4.9 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 11.8976 disease 3.5 +295 Fitness: 12.7871 Genotype: Fch1: A coadaptive 0.1 9.7 B coadaptive 7 4.5 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.7871 disease 3 +296 Fitness: 12.7871 Genotype: Fch1: A coadaptive 0.1 9.7 B coadaptive 7 4.5 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.7871 disease 3 +297 Fitness: 12.7871 Genotype: Fch1: A coadaptive 0.1 9.7 B coadaptive 7 4.5 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.7871 disease 3 +298 Fitness: 6.11235 Genotype: Fch1: A coadaptive 8.5 2.6 B coadaptive 4.9 0.8 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.11235 disease 4 +299 Fitness: 6.11235 Genotype: Fch1: A coadaptive 8.5 2.6 B coadaptive 4.9 0.8 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.11235 disease 4 +300 Fitness: 6.11235 Genotype: Fch1: A coadaptive 8.5 2.6 B coadaptive 4.9 0.8 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.11235 disease 4 +301 Fitness: 3.6509 Genotype: Fch1: A coadaptive 1.6 1.9 B coadaptive 3.3 2.8 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 3.6509 disease 1.5 +302 Fitness: 3.6509 Genotype: Fch1: A coadaptive 1.6 1.9 B coadaptive 3.3 2.8 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 3.6509 disease 1.5 +303 Fitness: 3.6509 Genotype: Fch1: A coadaptive 1.6 1.9 B coadaptive 3.3 2.8 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 3.6509 disease 1.5 +304 Fitness: 7.29641 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 2.6 3.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.29641 disease 2 +305 Fitness: 7.29641 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 2.6 3.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.29641 disease 2 +306 Fitness: 7.29641 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 2.6 3.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.29641 disease 2 +307 Fitness: 7.25375 Genotype: Fch1: A coadaptive 3.8 2 B coadaptive 8.3 0.9 C disease 0 0 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.25375 disease 2 +308 Fitness: 7.25375 Genotype: Fch1: A coadaptive 3.8 2 B coadaptive 8.3 0.9 C disease 0 0 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.25375 disease 2 +309 Fitness: 7.25375 Genotype: Fch1: A coadaptive 3.8 2 B coadaptive 8.3 0.9 C disease 0 0 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.25375 disease 2 +310 Fitness: 6.49374 Genotype: Fch1: A coadaptive 0.8 4.5 B coadaptive 7.2 1.3 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.49374 disease 2.5 +311 Fitness: 6.49374 Genotype: Fch1: A coadaptive 0.8 4.5 B coadaptive 7.2 1.3 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.49374 disease 2.5 +312 Fitness: 6.49374 Genotype: Fch1: A coadaptive 0.8 4.5 B coadaptive 7.2 1.3 C disease 0.5 1 D disease 0 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.49374 disease 1.5 +313 Fitness: 10.2448 Genotype: Fch1: A coadaptive 3.9 5.8 B coadaptive 3.7 4.1 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.2448 disease 2 +314 Fitness: 10.2448 Genotype: Fch1: A coadaptive 3.9 5.8 B coadaptive 3.7 4.1 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.2448 disease 2 +315 Fitness: 10.2448 Genotype: Fch1: A coadaptive 3.9 5.8 B coadaptive 3.7 4.1 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.2448 disease 2 +316 Fitness: 13.8729 Genotype: Fch1: A coadaptive 2 9.5 B coadaptive 9 4.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.8729 disease 3 +317 Fitness: 13.8729 Genotype: Fch1: A coadaptive 2 9.5 B coadaptive 9 4.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.8729 disease 3 +318 Fitness: 13.8729 Genotype: Fch1: A coadaptive 2 9.5 B coadaptive 9 4.6 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 13.8729 disease 3 +319 Fitness: 8.6883 Genotype: Fch1: A coadaptive 5.1 2.3 B coadaptive 5.9 6.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.6883 disease 4 +320 Fitness: 8.6883 Genotype: Fch1: A coadaptive 5.1 2.3 B coadaptive 5.9 6.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.6883 disease 4 +321 Fitness: 8.6883 Genotype: Fch1: A coadaptive 5.1 2.3 B coadaptive 5.9 6.3 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.6883 disease 4 +322 Fitness: 2.05383 Genotype: Fch1: A coadaptive 2.4 4.3 B coadaptive 1.1 1.3 C disease 0.5 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 2.05383 disease 3.5 +323 Fitness: 2.05383 Genotype: Fch1: A coadaptive 2.4 4.3 B coadaptive 1.1 1.3 C disease 0.5 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 2.05383 disease 3.5 +324 Fitness: 2.05383 Genotype: Fch1: A coadaptive 2.4 4.3 B coadaptive 1.1 1.3 C disease 0.5 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 2.05383 disease 3.5 +325 Fitness: 11.5201 Genotype: Fch1: A coadaptive 8.3 5.9 B coadaptive 6 4.1 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.5201 disease 3.5 +326 Fitness: 11.5201 Genotype: Fch1: A coadaptive 8.3 5.9 B coadaptive 6 4.1 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.5201 disease 3.5 +327 Fitness: 11.5201 Genotype: Fch1: A coadaptive 8.3 5.9 B coadaptive 6 4.1 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.5201 disease 3.5 +328 Fitness: 10.0876 Genotype: Fch1: A coadaptive 6.1 1.6 B coadaptive 1.4 9.3 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.0876 disease 3.5 +329 Fitness: 10.0876 Genotype: Fch1: A coadaptive 6.1 1.6 B coadaptive 1.4 9.3 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.0876 disease 3.5 +330 Fitness: 10.0876 Genotype: Fch1: A coadaptive 6.1 1.6 B coadaptive 1.4 9.3 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.0876 disease 3.5 +331 Fitness: 12.8571 Genotype: Fch1: A coadaptive 8.8 1.6 B coadaptive 6.9 3.3 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.8571 disease 2.5 +332 Fitness: 12.8571 Genotype: Fch1: A coadaptive 8.8 1.6 B coadaptive 6.9 3.3 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.8571 disease 2.5 +333 Fitness: 12.8571 Genotype: Fch1: A coadaptive 8.8 1.6 B coadaptive 6.9 3.3 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.8571 disease 2.5 +334 Fitness: 8.90927 Genotype: Fch1: A coadaptive 5.9 1 B coadaptive 4.1 6.1 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 8.90927 disease 3 +335 Fitness: 8.90927 Genotype: Fch1: A coadaptive 5.9 1 B coadaptive 4.1 6.1 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 8.90927 disease 3 +336 Fitness: 8.90927 Genotype: Fch1: A coadaptive 5.9 1 B coadaptive 4.1 6.1 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 8.90927 disease 3 +337 Fitness: 10.991 Genotype: Fch1: A coadaptive 7.1 6.7 B coadaptive 4.6 4.9 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.991 disease 2.5 +338 Fitness: 10.991 Genotype: Fch1: A coadaptive 7.1 6.7 B coadaptive 4.6 4.9 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.991 disease 2.5 +339 Fitness: 10.991 Genotype: Fch1: A coadaptive 7.1 6.7 B coadaptive 4.6 4.9 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 10.991 disease 2.5 +340 Fitness: 2.12895 Genotype: Fch1: A coadaptive 2.6 8.2 B coadaptive 9.2 9.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.12895 disease 2.5 +341 Fitness: 2.12895 Genotype: Fch1: A coadaptive 2.6 8.2 B coadaptive 9.2 9.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.12895 disease 2.5 +342 Fitness: 2.12895 Genotype: Fch1: A coadaptive 2.6 8.2 B coadaptive 9.2 9.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 2.12895 disease 2.5 +343 Fitness: 8.12459 Genotype: Fch1: A coadaptive 0.3 6.2 B coadaptive 7.5 0.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.12459 disease 2 +344 Fitness: 8.12459 Genotype: Fch1: A coadaptive 0.3 6.2 B coadaptive 7.5 0.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.12459 disease 2 +345 Fitness: 8.12459 Genotype: Fch1: A coadaptive 0.3 6.2 B coadaptive 7.5 0.6 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.12459 disease 2 +346 Fitness: 11.4665 Genotype: Fch1: A coadaptive 3.1 6.2 B coadaptive 8.1 4.9 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.4665 disease 4 +347 Fitness: 11.4665 Genotype: Fch1: A coadaptive 3.1 6.2 B coadaptive 8.1 4.9 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.4665 disease 4 +348 Fitness: 11.4665 Genotype: Fch1: A coadaptive 3.1 6.2 B coadaptive 8.1 4.9 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 11.4665 disease 4 +349 Fitness: 8.61095 Genotype: Fch1: A coadaptive 4.5 2.3 B coadaptive 8.8 1.8 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.61095 disease 3.5 +350 Fitness: 8.61095 Genotype: Fch1: A coadaptive 4.5 2.3 B coadaptive 8.8 1.8 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.61095 disease 3.5 +351 Fitness: 8.61095 Genotype: Fch1: A coadaptive 4.5 2.3 B coadaptive 8.8 1.8 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.61095 disease 3.5 +352 Fitness: 12.5062 Genotype: Fch1: A coadaptive 4.5 9.5 B coadaptive 2.4 8.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.5062 disease 3 +353 Fitness: 12.5062 Genotype: Fch1: A coadaptive 4.5 9.5 B coadaptive 2.4 8.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.5062 disease 3 +354 Fitness: 12.5062 Genotype: Fch1: A coadaptive 4.5 9.5 B coadaptive 2.4 8.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.5062 disease 3 +355 Fitness: 4.5849 Genotype: Fch1: A coadaptive 8.7 3.2 B coadaptive 10 8.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.5849 disease 3 +356 Fitness: 4.5849 Genotype: Fch1: A coadaptive 8.7 3.2 B coadaptive 10 8.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.5849 disease 3 +357 Fitness: 4.5849 Genotype: Fch1: A coadaptive 8.7 3.2 B coadaptive 10 8.6 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 4.5849 disease 3 +358 Fitness: 8.49282 Genotype: Fch1: A coadaptive 6.7 1.2 B coadaptive 0 6.9 C disease 0 0 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.49282 disease 3 +359 Fitness: 8.49282 Genotype: Fch1: A coadaptive 6.7 1.2 B coadaptive 0 6.9 C disease 0 0 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.49282 disease 3 +360 Fitness: 8.49282 Genotype: Fch1: A coadaptive 6.7 1.2 B coadaptive 0 6.9 C disease 0 0 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.49282 disease 3 +361 Fitness: 12.3915 Genotype: Fch1: A coadaptive 5.7 5.4 B coadaptive 5.5 9.2 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.3915 disease 2.5 +362 Fitness: 12.3915 Genotype: Fch1: A coadaptive 5.7 5.4 B coadaptive 5.5 9.2 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.3915 disease 2.5 +363 Fitness: 12.3915 Genotype: Fch1: A coadaptive 5.7 5.4 B coadaptive 5.5 9.2 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 12.3915 disease 2.5 +364 Fitness: 12.0148 Genotype: Fch1: A coadaptive 7.3 8.3 B coadaptive 9.9 7 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.0148 disease 2.5 +365 Fitness: 12.0148 Genotype: Fch1: A coadaptive 7.3 8.3 B coadaptive 9.9 7 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.0148 disease 2.5 +366 Fitness: 12.0148 Genotype: Fch1: A coadaptive 7.3 8.3 B coadaptive 9.9 7 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.0148 disease 2.5 +367 Fitness: 13.0706 Genotype: Fch1: A coadaptive 9.1 1.2 B coadaptive 8.2 4.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.0706 disease 3 +368 Fitness: 13.0706 Genotype: Fch1: A coadaptive 9.1 1.2 B coadaptive 8.2 4.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.0706 disease 3 +369 Fitness: 13.0706 Genotype: Fch1: A coadaptive 9.1 1.2 B coadaptive 8.2 4.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.0706 disease 3 +370 Fitness: 14.2595 Genotype: Fch1: A coadaptive 9.3 5.6 B coadaptive 6.5 8.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 14.2595 disease 2 +371 Fitness: 14.2595 Genotype: Fch1: A coadaptive 9.3 5.6 B coadaptive 6.5 8.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 14.2595 disease 2 +372 Fitness: 14.2595 Genotype: Fch1: A coadaptive 9.3 5.6 B coadaptive 6.5 8.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 14.2595 disease 2 +373 Fitness: 8.54988 Genotype: Fch1: A coadaptive 2.8 3.9 B coadaptive 8.4 0.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.54988 disease 4 +374 Fitness: 8.54988 Genotype: Fch1: A coadaptive 2.8 3.9 B coadaptive 8.4 0.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.54988 disease 4 +375 Fitness: 8.54988 Genotype: Fch1: A coadaptive 2.8 3.9 B coadaptive 8.4 0.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.54988 disease 4 +376 Fitness: 4.9447 Genotype: Fch1: A coadaptive 6.6 2.8 B coadaptive 8.3 8.4 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.9447 disease 3.5 +377 Fitness: 4.9447 Genotype: Fch1: A coadaptive 6.6 2.8 B coadaptive 8.3 8.4 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.9447 disease 3.5 +378 Fitness: 4.9447 Genotype: Fch1: A coadaptive 6.6 2.8 B coadaptive 8.3 8.4 C disease 1 0 D disease 0 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.9447 disease 3.5 +379 Fitness: 6.15005 Genotype: Fch1: A coadaptive 1.2 4 B coadaptive 3.3 6.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 6.15005 disease 2.5 +380 Fitness: 6.15005 Genotype: Fch1: A coadaptive 1.2 4 B coadaptive 3.3 6.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 6.15005 disease 2.5 +381 Fitness: 6.15005 Genotype: Fch1: A coadaptive 1.2 4 B coadaptive 3.3 6.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 6.15005 disease 2.5 +382 Fitness: 2.75654 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 2.1 10 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.75654 disease 2 +383 Fitness: 2.75654 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 2.1 10 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.75654 disease 2 +384 Fitness: 2.75654 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 2.1 10 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.75654 disease 2 +385 Fitness: 5.58479 Genotype: Fch1: A coadaptive 5.8 0.6 B coadaptive 9.6 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 5.58479 disease 3 +386 Fitness: 5.58479 Genotype: Fch1: A coadaptive 5.8 0.6 B coadaptive 9.6 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 5.58479 disease 3 +387 Fitness: 5.58479 Genotype: Fch1: A coadaptive 5.8 0.6 B coadaptive 9.6 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 5.58479 disease 3 +388 Fitness: 2.62909 Genotype: Fch1: A coadaptive 3.9 6.8 B coadaptive 10 8.4 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.62909 disease 4 +389 Fitness: 2.62909 Genotype: Fch1: A coadaptive 3.9 6.8 B coadaptive 10 8.4 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.62909 disease 4 +390 Fitness: 2.62909 Genotype: Fch1: A coadaptive 3.9 6.8 B coadaptive 10 8.4 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.62909 disease 4 +391 Fitness: 6.5537 Genotype: Fch1: A coadaptive 1.9 3.9 B coadaptive 4.5 2.1 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.5537 disease 2.5 +392 Fitness: 6.5537 Genotype: Fch1: A coadaptive 1.9 3.9 B coadaptive 4.5 2.1 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.5537 disease 2.5 +393 Fitness: 6.5537 Genotype: Fch1: A coadaptive 1.9 3.9 B coadaptive 4.5 2.1 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.5537 disease 2.5 +394 Fitness: 6.84254 Genotype: Fch1: A coadaptive 3.9 1.8 B coadaptive 9.4 0.6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 6.84254 disease 3 +395 Fitness: 6.84254 Genotype: Fch1: A coadaptive 3.9 1.8 B coadaptive 9.4 0.6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 6.84254 disease 3 +396 Fitness: 6.84254 Genotype: Fch1: A coadaptive 3.9 1.8 B coadaptive 9.4 0.6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 6.84254 disease 3 +397 Fitness: 11.0176 Genotype: Fch1: A coadaptive 7.3 9.5 B coadaptive 4.8 8 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.0176 disease 2 +398 Fitness: 11.0176 Genotype: Fch1: A coadaptive 7.3 9.5 B coadaptive 4.8 8 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.0176 disease 2 +399 Fitness: 11.0176 Genotype: Fch1: A coadaptive 7.3 9.5 B coadaptive 4.8 8 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.0176 disease 2 +400 Fitness: 9.64862 Genotype: Fch1: A coadaptive 6.6 7.5 B coadaptive 2.7 6.3 C disease 0.5 0.5 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 9.64862 disease 2.5 +401 Fitness: 9.64862 Genotype: Fch1: A coadaptive 6.6 7.5 B coadaptive 2.7 6.3 C disease 0.5 0.5 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 9.64862 disease 2.5 +402 Fitness: 9.64862 Genotype: Fch1: A coadaptive 6.6 7.5 B coadaptive 2.7 6.3 C disease 0.5 0.5 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 9.64862 disease 2.5 +403 Fitness: 2.88789 Genotype: Fch1: A coadaptive 2.4 1.9 B coadaptive 6.6 4.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.88789 disease 2.5 +404 Fitness: 2.88789 Genotype: Fch1: A coadaptive 2.4 1.9 B coadaptive 6.6 4.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.88789 disease 2.5 +405 Fitness: 2.88789 Genotype: Fch1: A coadaptive 2.4 1.9 B coadaptive 6.6 4.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.88789 disease 2.5 +406 Fitness: 2.0198 Genotype: Fch1: A coadaptive 7.1 5.6 B coadaptive 0.2 4.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.0198 disease 2 +407 Fitness: 2.0198 Genotype: Fch1: A coadaptive 7.1 5.6 B coadaptive 0.2 4.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.0198 disease 2 +408 Fitness: 2.0198 Genotype: Fch1: A coadaptive 7.1 5.6 B coadaptive 0.2 4.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.0198 disease 2 +409 Fitness: 13.3461 Genotype: Fch1: A coadaptive 8.1 7.3 B coadaptive 7.6 5.2 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.3461 disease 2.5 +410 Fitness: 13.3461 Genotype: Fch1: A coadaptive 8.1 7.3 B coadaptive 7.6 5.2 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.3461 disease 2.5 +411 Fitness: 13.3461 Genotype: Fch1: A coadaptive 8.1 7.3 B coadaptive 7.6 5.2 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.3461 disease 2.5 +412 Fitness: 8.4178 Genotype: Fch1: A coadaptive 3 3.6 B coadaptive 1.5 7.1 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.4178 disease 3.5 +413 Fitness: 8.4178 Genotype: Fch1: A coadaptive 3 3.6 B coadaptive 1.5 7.1 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.4178 disease 3.5 +414 Fitness: 8.4178 Genotype: Fch1: A coadaptive 3 3.6 B coadaptive 1.5 7.1 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.4178 disease 3.5 +415 Fitness: 6.59034 Genotype: Fch1: A coadaptive 6.8 5.9 B coadaptive 2.6 4.1 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.59034 disease 4 +416 Fitness: 6.59034 Genotype: Fch1: A coadaptive 6.8 5.9 B coadaptive 2.6 4.1 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.59034 disease 4 +417 Fitness: 6.59034 Genotype: Fch1: A coadaptive 6.8 5.9 B coadaptive 2.6 4.1 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.59034 disease 4 +418 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 5.4 B coadaptive 9.7 8.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +419 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 5.4 B coadaptive 9.7 8.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +420 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 5.4 B coadaptive 9.7 8.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +421 Fitness: 3.88391 Genotype: Fch1: A coadaptive 7.3 7.8 B coadaptive 0.3 7.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 3.88391 disease 2 +422 Fitness: 3.88391 Genotype: Fch1: A coadaptive 7.3 7.8 B coadaptive 0.3 7.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 3.88391 disease 2 +423 Fitness: 3.88391 Genotype: Fch1: A coadaptive 7.3 7.8 B coadaptive 0.3 7.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 3.88391 disease 2 +424 Fitness: 14.6656 Genotype: Fch1: A coadaptive 6.1 6.5 B coadaptive 5.4 7.1 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.6656 disease 3 +425 Fitness: 14.6656 Genotype: Fch1: A coadaptive 6.1 6.5 B coadaptive 5.4 7.1 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.6656 disease 3 +426 Fitness: 14.6656 Genotype: Fch1: A coadaptive 6.1 6.5 B coadaptive 5.4 7.1 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.6656 disease 3 +427 Fitness: 14.3692 Genotype: Fch1: A coadaptive 8.3 3.5 B coadaptive 6 6.9 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 14.3692 disease 4 +428 Fitness: 14.3692 Genotype: Fch1: A coadaptive 8.3 3.5 B coadaptive 6 6.9 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 14.3692 disease 4 +429 Fitness: 14.3692 Genotype: Fch1: A coadaptive 8.3 3.5 B coadaptive 6 6.9 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 14.3692 disease 4 +430 Fitness: 14.7158 Genotype: Fch1: A coadaptive 3.9 9 B coadaptive 9.9 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.7158 disease 3 +431 Fitness: 14.7158 Genotype: Fch1: A coadaptive 3.9 9 B coadaptive 9.9 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.7158 disease 3 +432 Fitness: 14.7158 Genotype: Fch1: A coadaptive 3.9 9 B coadaptive 9.9 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 14.7158 disease 3 +433 Fitness: 9.59411 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 1.7 8.1 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.59411 disease 2.5 +434 Fitness: 9.59411 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 1.7 8.1 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.59411 disease 2.5 +435 Fitness: 9.59411 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 1.7 8.1 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 9.59411 disease 2.5 +436 Fitness: 12.3179 Genotype: Fch1: A coadaptive 1.6 8.6 B coadaptive 9.3 0.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 12.3179 disease 2 +437 Fitness: 12.3179 Genotype: Fch1: A coadaptive 1.6 8.6 B coadaptive 9.3 0.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 12.3179 disease 2 +438 Fitness: 12.3179 Genotype: Fch1: A coadaptive 1.6 8.6 B coadaptive 9.3 0.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 12.3179 disease 2 +439 Fitness: 1.75936 Genotype: Fch1: A coadaptive 2.6 4.8 B coadaptive 9.2 6.7 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 1.75936 disease 4 +440 Fitness: 1.75936 Genotype: Fch1: A coadaptive 2.6 4.8 B coadaptive 9.2 6.7 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 1.75936 disease 4 +441 Fitness: 1.75936 Genotype: Fch1: A coadaptive 2.6 4.8 B coadaptive 9.2 6.7 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 1.75936 disease 4 +442 Fitness: 0.579598 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 9.6 9 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0.579598 disease 2 +443 Fitness: 0.579598 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 9.6 9 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0.579598 disease 2 +444 Fitness: 0.579598 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 9.6 9 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 0.579598 disease 2 +445 Fitness: 6.76016 Genotype: Fch1: A coadaptive 2.2 3.3 B coadaptive 4.5 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 6.76016 disease 3.5 +446 Fitness: 6.76016 Genotype: Fch1: A coadaptive 2.2 3.3 B coadaptive 4.5 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 6.76016 disease 3.5 +447 Fitness: 6.76016 Genotype: Fch1: A coadaptive 2.2 3.3 B coadaptive 4.5 3.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 6.76016 disease 3.5 +448 Fitness: 9.0284 Genotype: Fch1: A coadaptive 9.7 2.1 B coadaptive 4.5 2.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 9.0284 disease 3 +449 Fitness: 9.0284 Genotype: Fch1: A coadaptive 9.7 2.1 B coadaptive 4.5 2.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 9.0284 disease 3 +450 Fitness: 9.0284 Genotype: Fch1: A coadaptive 9.7 2.1 B coadaptive 4.5 2.9 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 9.0284 disease 3 +451 Fitness: 8.6104 Genotype: Fch1: A coadaptive 2.3 6.1 B coadaptive 5.4 1.4 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 8.6104 disease 2.5 +452 Fitness: 8.6104 Genotype: Fch1: A coadaptive 2.3 6.1 B coadaptive 5.4 1.4 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 8.6104 disease 2.5 +453 Fitness: 8.6104 Genotype: Fch1: A coadaptive 2.3 6.1 B coadaptive 5.4 1.4 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 8.6104 disease 2.5 +454 Fitness: 1.12922 Genotype: Fch1: A coadaptive 7.8 7.8 B coadaptive 5.2 1.7 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.12922 disease 3 +455 Fitness: 1.12922 Genotype: Fch1: A coadaptive 7.8 7.8 B coadaptive 5.2 1.7 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.12922 disease 3 +456 Fitness: 1.12922 Genotype: Fch1: A coadaptive 7.8 7.8 B coadaptive 5.2 1.7 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.12922 disease 3 +457 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.4 B coadaptive 0.2 3.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +458 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.4 B coadaptive 0.2 3.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +459 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.4 B coadaptive 0.2 3.9 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +460 Fitness: 8.00156 Genotype: Fch1: A coadaptive 7.9 2.6 B coadaptive 7.3 9.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.00156 disease 3 +461 Fitness: 8.00156 Genotype: Fch1: A coadaptive 7.9 2.6 B coadaptive 7.3 9.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.00156 disease 3 +462 Fitness: 8.00156 Genotype: Fch1: A coadaptive 7.9 2.6 B coadaptive 7.3 9.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.00156 disease 3 +463 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.3 B coadaptive 8.5 7.5 C disease 1 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +464 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.3 B coadaptive 8.5 7.5 C disease 1 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +465 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.3 B coadaptive 8.5 7.5 C disease 1 0 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +466 Fitness: 11.3588 Genotype: Fch1: A coadaptive 7.8 3.8 B coadaptive 0.4 8.3 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.3588 disease 4 +467 Fitness: 11.3588 Genotype: Fch1: A coadaptive 7.8 3.8 B coadaptive 0.4 8.3 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.3588 disease 4 +468 Fitness: 11.3588 Genotype: Fch1: A coadaptive 7.8 3.8 B coadaptive 0.4 8.3 C disease 0.5 1 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.3588 disease 4 +469 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0.8 B coadaptive 10 7.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +470 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0.8 B coadaptive 10 7.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +471 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0.8 B coadaptive 10 7.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 4 +472 Fitness: 7.71216 Genotype: Fch1: A coadaptive 4.5 8.7 B coadaptive 8.3 10 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.71216 disease 3.5 +473 Fitness: 7.71216 Genotype: Fch1: A coadaptive 4.5 8.7 B coadaptive 8.3 10 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.71216 disease 3.5 +474 Fitness: 7.71216 Genotype: Fch1: A coadaptive 4.5 8.7 B coadaptive 8.3 10 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.71216 disease 3.5 +475 Fitness: 8.4672 Genotype: Fch1: A coadaptive 4.8 7.2 B coadaptive 3.7 3.5 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.4672 disease 2 +476 Fitness: 8.4672 Genotype: Fch1: A coadaptive 4.8 7.2 B coadaptive 3.7 3.5 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.4672 disease 2 +477 Fitness: 8.4672 Genotype: Fch1: A coadaptive 4.8 7.2 B coadaptive 3.7 3.5 C disease 0 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.4672 disease 2 +478 Fitness: 5.2992 Genotype: Fch1: A coadaptive 3 1.8 B coadaptive 2.3 7.3 C disease 0 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 5.2992 disease 2 +479 Fitness: 5.2992 Genotype: Fch1: A coadaptive 3 1.8 B coadaptive 2.3 7.3 C disease 0 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 5.2992 disease 2 +480 Fitness: 5.2992 Genotype: Fch1: A coadaptive 3 1.8 B coadaptive 2.3 7.3 C disease 0 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 5.2992 disease 2 +481 Fitness: 13.9388 Genotype: Fch1: A coadaptive 2.2 9.1 B coadaptive 4.9 8.2 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.9388 disease 3.5 +482 Fitness: 13.9388 Genotype: Fch1: A coadaptive 2.2 9.1 B coadaptive 4.9 8.2 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.9388 disease 3.5 +483 Fitness: 13.9388 Genotype: Fch1: A coadaptive 2.2 9.1 B coadaptive 4.9 8.2 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.9388 disease 3.5 +484 Fitness: 2.76228 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 7.8 3.4 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 2.76228 disease 3 +485 Fitness: 2.76228 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 7.8 3.4 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 2.76228 disease 3 +486 Fitness: 2.76228 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 7.8 3.4 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 2.76228 disease 3 +487 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 7.6 B coadaptive 3.1 0.1 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +488 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 7.6 B coadaptive 3.1 0.1 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +489 Fitness: 0 Genotype: Fch1: A coadaptive 5.5 7.6 B coadaptive 3.1 0.1 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +490 Fitness: 7.45013 Genotype: Fch1: A coadaptive 7.2 0.3 B coadaptive 3.5 9.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.45013 disease 3.5 +491 Fitness: 7.45013 Genotype: Fch1: A coadaptive 7.2 0.3 B coadaptive 3.5 9.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.45013 disease 3.5 +492 Fitness: 7.45013 Genotype: Fch1: A coadaptive 7.2 0.3 B coadaptive 3.5 9.9 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 7.45013 disease 3.5 +493 Fitness: 2.0705 Genotype: Fch1: A coadaptive 1.7 10 B coadaptive 1.2 3.1 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.0705 disease 1.5 +494 Fitness: 2.0705 Genotype: Fch1: A coadaptive 1.7 10 B coadaptive 1.2 3.1 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.0705 disease 1.5 +495 Fitness: 2.0705 Genotype: Fch1: A coadaptive 1.7 10 B coadaptive 1.2 3.1 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.0705 disease 1.5 +496 Fitness: 10.9111 Genotype: Fch1: A coadaptive 2.9 5.4 B coadaptive 3.2 7.9 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.9111 disease 3.5 +497 Fitness: 10.9111 Genotype: Fch1: A coadaptive 2.9 5.4 B coadaptive 3.2 7.9 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.9111 disease 3.5 +498 Fitness: 10.9111 Genotype: Fch1: A coadaptive 2.9 5.4 B coadaptive 3.2 7.9 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.9111 disease 3.5 +499 Fitness: 4.95783 Genotype: Fch1: A coadaptive 0.4 6.3 B coadaptive 3.1 1.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.95783 disease 2.5 +500 Fitness: 4.95783 Genotype: Fch1: A coadaptive 0.4 6.3 B coadaptive 3.1 1.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.95783 disease 2.5 +501 Fitness: 4.95783 Genotype: Fch1: A coadaptive 0.4 6.3 B coadaptive 3.1 1.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.95783 disease 2.5 +502 Fitness: 8.77104 Genotype: Fch1: A coadaptive 8.2 0.3 B coadaptive 4.9 2 C disease 0 1 D disease 1 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.77104 disease 3.5 +503 Fitness: 8.77104 Genotype: Fch1: A coadaptive 8.2 0.3 B coadaptive 4.9 2 C disease 0 1 D disease 1 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.77104 disease 3.5 +504 Fitness: 8.77104 Genotype: Fch1: A coadaptive 8.2 0.3 B coadaptive 4.9 2 C disease 0 1 D disease 1 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.77104 disease 3.5 +505 Fitness: 8.60908 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 4.9 4.8 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.60908 disease 3.5 +506 Fitness: 8.60908 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 4.9 4.8 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.60908 disease 3.5 +507 Fitness: 8.60908 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 4.9 4.8 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.60908 disease 3.5 +508 Fitness: 9.92525 Genotype: Fch1: A coadaptive 7.2 2.2 B coadaptive 0.8 6.8 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.92525 disease 3.5 +509 Fitness: 9.92525 Genotype: Fch1: A coadaptive 7.2 2.2 B coadaptive 0.8 6.8 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.92525 disease 3.5 +510 Fitness: 9.92525 Genotype: Fch1: A coadaptive 7.2 2.2 B coadaptive 0.8 6.8 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.92525 disease 3.5 +511 Fitness: 11.3415 Genotype: Fch1: A coadaptive 5.1 3.9 B coadaptive 2.7 6.6 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3415 disease 2.5 +512 Fitness: 11.3415 Genotype: Fch1: A coadaptive 5.1 3.9 B coadaptive 2.7 6.6 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3415 disease 2.5 +513 Fitness: 11.3415 Genotype: Fch1: A coadaptive 5.1 3.9 B coadaptive 2.7 6.6 C disease 0 0 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3415 disease 2.5 +514 Fitness: 13.862 Genotype: Fch1: A coadaptive 9 6.5 B coadaptive 6.6 7.7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.862 disease 2 +515 Fitness: 13.862 Genotype: Fch1: A coadaptive 9 6.5 B coadaptive 6.6 7.7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.862 disease 2 +516 Fitness: 13.862 Genotype: Fch1: A coadaptive 9 6.5 B coadaptive 6.6 7.7 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 13.862 disease 2 +517 Fitness: 7.90235 Genotype: Fch1: A coadaptive 5.6 1 B coadaptive 6.8 4.4 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.90235 disease 2 +518 Fitness: 7.90235 Genotype: Fch1: A coadaptive 5.6 1 B coadaptive 6.8 4.4 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.90235 disease 2 +519 Fitness: 7.90235 Genotype: Fch1: A coadaptive 5.6 1 B coadaptive 6.8 4.4 C disease 0.5 0 D disease 0 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 7.90235 disease 2 +520 Fitness: 0 Genotype: Fch1: A coadaptive 0 3.6 B coadaptive 8.9 4.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +521 Fitness: 0 Genotype: Fch1: A coadaptive 0 3.6 B coadaptive 8.9 4.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +522 Fitness: 0 Genotype: Fch1: A coadaptive 0 3.6 B coadaptive 8.9 4.1 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +523 Fitness: 10.8392 Genotype: Fch1: A coadaptive 2.4 6.2 B coadaptive 6.6 5.7 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 10.8392 disease 3.5 +524 Fitness: 10.8392 Genotype: Fch1: A coadaptive 2.4 6.2 B coadaptive 6.6 5.7 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 10.8392 disease 3.5 +525 Fitness: 10.8392 Genotype: Fch1: A coadaptive 2.4 6.2 B coadaptive 6.6 5.7 C disease 1 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 10.8392 disease 3.5 +526 Fitness: 13.9583 Genotype: Fch1: A coadaptive 5.3 5.8 B coadaptive 8.1 4.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.9583 disease 2 +527 Fitness: 13.9583 Genotype: Fch1: A coadaptive 5.3 5.8 B coadaptive 8.1 4.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.9583 disease 2 +528 Fitness: 13.9583 Genotype: Fch1: A coadaptive 5.3 5.8 B coadaptive 8.1 4.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.9583 disease 2 +529 Fitness: 4.57302 Genotype: Fch1: A coadaptive 9.2 0.6 B coadaptive 0.1 4.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 4.57302 disease 3 +530 Fitness: 4.57302 Genotype: Fch1: A coadaptive 9.2 0.6 B coadaptive 0.1 4.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 4.57302 disease 3 +531 Fitness: 4.57302 Genotype: Fch1: A coadaptive 9.2 0.6 B coadaptive 0.1 4.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 4.57302 disease 3 +532 Fitness: 12.825 Genotype: Fch1: A coadaptive 8.9 1.6 B coadaptive 4.2 9.3 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.825 disease 1.5 +533 Fitness: 12.825 Genotype: Fch1: A coadaptive 8.9 1.6 B coadaptive 4.2 9.3 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.825 disease 1.5 +534 Fitness: 12.825 Genotype: Fch1: A coadaptive 8.9 1.6 B coadaptive 4.2 9.3 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.825 disease 1.5 +535 Fitness: 7.2355 Genotype: Fch1: A coadaptive 7.6 8.6 B coadaptive 2 7.8 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.2355 disease 4 +536 Fitness: 7.2355 Genotype: Fch1: A coadaptive 7.6 8.6 B coadaptive 2 7.8 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.2355 disease 4 +537 Fitness: 7.2355 Genotype: Fch1: A coadaptive 7.6 8.6 B coadaptive 2 7.8 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.2355 disease 4 +538 Fitness: 13.2807 Genotype: Fch1: A coadaptive 1.4 8.9 B coadaptive 7.7 4.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.2807 disease 3 +539 Fitness: 13.2807 Genotype: Fch1: A coadaptive 1.4 8.9 B coadaptive 7.7 4.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.2807 disease 3 +540 Fitness: 13.2807 Genotype: Fch1: A coadaptive 1.4 8.9 B coadaptive 7.7 4.2 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.2807 disease 3 +541 Fitness: 9.40655 Genotype: Fch1: A coadaptive 6.5 0.9 B coadaptive 2.3 8.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.40655 disease 3 +542 Fitness: 9.40655 Genotype: Fch1: A coadaptive 6.5 0.9 B coadaptive 2.3 8.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.40655 disease 3 +543 Fitness: 9.40655 Genotype: Fch1: A coadaptive 6.5 0.9 B coadaptive 2.3 8.9 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.40655 disease 3 +544 Fitness: 4.26969 Genotype: Fch1: A coadaptive 5.5 3.2 B coadaptive 7.7 8.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.26969 disease 2.5 +545 Fitness: 4.26969 Genotype: Fch1: A coadaptive 5.5 3.2 B coadaptive 7.7 8.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.26969 disease 2.5 +546 Fitness: 4.26969 Genotype: Fch1: A coadaptive 5.5 3.2 B coadaptive 7.7 8.6 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.26969 disease 2.5 +547 Fitness: 9.6662 Genotype: Fch1: A coadaptive 2 5.4 B coadaptive 0.2 9.2 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.6662 disease 3.5 +548 Fitness: 9.6662 Genotype: Fch1: A coadaptive 2 5.4 B coadaptive 0.2 9.2 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.6662 disease 3.5 +549 Fitness: 9.6662 Genotype: Fch1: A coadaptive 2 5.4 B coadaptive 0.2 9.2 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 9.6662 disease 3.5 +550 Fitness: 11.012 Genotype: Fch1: A coadaptive 0.7 9.1 B coadaptive 5 9.2 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.012 disease 2.5 +551 Fitness: 11.012 Genotype: Fch1: A coadaptive 0.7 9.1 B coadaptive 5 9.2 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.012 disease 2.5 +552 Fitness: 11.012 Genotype: Fch1: A coadaptive 0.7 9.1 B coadaptive 5 9.2 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 11.012 disease 2.5 +553 Fitness: 1.32266 Genotype: Fch1: A coadaptive 7.3 1.7 B coadaptive 9 8.5 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 1.32266 disease 3 +554 Fitness: 1.32266 Genotype: Fch1: A coadaptive 7.3 1.7 B coadaptive 9 8.5 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 1.32266 disease 3 +555 Fitness: 1.32266 Genotype: Fch1: A coadaptive 7.3 1.7 B coadaptive 9 8.5 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 1.32266 disease 3 +556 Fitness: 13.0972 Genotype: Fch1: A coadaptive 7.1 6.2 B coadaptive 3.7 6.9 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.0972 disease 4 +557 Fitness: 13.0972 Genotype: Fch1: A coadaptive 7.1 6.2 B coadaptive 3.7 6.9 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.0972 disease 4 +558 Fitness: 13.0972 Genotype: Fch1: A coadaptive 7.1 6.2 B coadaptive 3.7 6.9 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.0972 disease 4 +559 Fitness: 10.8252 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 7.3 5 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 10.8252 disease 3.5 +560 Fitness: 10.8252 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 7.3 5 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 10.8252 disease 3.5 +561 Fitness: 10.8252 Genotype: Fch1: A coadaptive 9.6 7 B coadaptive 7.3 5 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 10.8252 disease 3.5 +562 Fitness: 13.833 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.4 3.7 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.833 disease 2.5 +563 Fitness: 13.833 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.4 3.7 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.833 disease 2.5 +564 Fitness: 13.833 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.4 3.7 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.833 disease 2.5 +565 Fitness: 1.44218 Genotype: Fch1: A coadaptive 5.5 9.2 B coadaptive 6.1 0.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 1.44218 disease 3 +566 Fitness: 1.44218 Genotype: Fch1: A coadaptive 5.5 9.2 B coadaptive 6.1 0.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 1.44218 disease 3 +567 Fitness: 1.44218 Genotype: Fch1: A coadaptive 5.5 9.2 B coadaptive 6.1 0.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 1.44218 disease 3 +568 Fitness: 3.49802 Genotype: Fch1: A coadaptive 3 5.1 B coadaptive 2.3 1.2 C disease 0 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.49802 disease 3 +569 Fitness: 3.49802 Genotype: Fch1: A coadaptive 3 5.1 B coadaptive 2.3 1.2 C disease 0 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.49802 disease 3 +570 Fitness: 3.49802 Genotype: Fch1: A coadaptive 3 5.1 B coadaptive 2.3 1.2 C disease 0 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.49802 disease 3 +571 Fitness: 4.74982 Genotype: Fch1: A coadaptive 1 9.9 B coadaptive 2.2 2.8 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.74982 disease 2.5 +572 Fitness: 4.74982 Genotype: Fch1: A coadaptive 1 9.9 B coadaptive 2.2 2.8 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.74982 disease 2.5 +573 Fitness: 4.74982 Genotype: Fch1: A coadaptive 1 9.9 B coadaptive 2.2 2.8 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.74982 disease 2.5 +574 Fitness: 5.9219 Genotype: Fch1: A coadaptive 6.2 0.4 B coadaptive 3.7 9.3 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 5.9219 disease 3.5 +575 Fitness: 5.9219 Genotype: Fch1: A coadaptive 6.2 0.4 B coadaptive 3.7 9.3 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 5.9219 disease 3.5 +576 Fitness: 5.9219 Genotype: Fch1: A coadaptive 6.2 0.4 B coadaptive 3.7 9.3 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 5.9219 disease 3.5 +577 Fitness: 12.4182 Genotype: Fch1: A coadaptive 7.8 1.7 B coadaptive 9.6 1.2 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.4182 disease 1.5 +578 Fitness: 12.4182 Genotype: Fch1: A coadaptive 7.8 1.7 B coadaptive 9.6 1.2 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.4182 disease 1.5 +579 Fitness: 12.4182 Genotype: Fch1: A coadaptive 7.8 1.7 B coadaptive 9.6 1.2 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.4182 disease 1.5 +580 Fitness: 10.2438 Genotype: Fch1: A coadaptive 5.6 2.5 B coadaptive 2.9 9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 10.2438 disease 3 +581 Fitness: 10.2438 Genotype: Fch1: A coadaptive 5.6 2.5 B coadaptive 2.9 9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 10.2438 disease 3 +582 Fitness: 10.2438 Genotype: Fch1: A coadaptive 5.6 2.5 B coadaptive 2.9 9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 10.2438 disease 3 +583 Fitness: 0.566337 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 2.1 6.4 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.566337 disease 3.5 +584 Fitness: 0.566337 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 2.1 6.4 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.566337 disease 3.5 +585 Fitness: 0.566337 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 2.1 6.4 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.566337 disease 3.5 +586 Fitness: 14.6685 Genotype: Fch1: A coadaptive 5.5 8.2 B coadaptive 9.3 4.9 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.6685 disease 3 +587 Fitness: 14.6685 Genotype: Fch1: A coadaptive 5.5 8.2 B coadaptive 9.3 4.9 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.6685 disease 3 +588 Fitness: 14.6685 Genotype: Fch1: A coadaptive 5.5 8.2 B coadaptive 9.3 4.9 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.6685 disease 3 +589 Fitness: 4.56032 Genotype: Fch1: A coadaptive 6.8 4.5 B coadaptive 3.8 1.3 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.56032 disease 3.5 +590 Fitness: 4.56032 Genotype: Fch1: A coadaptive 6.8 4.5 B coadaptive 3.8 1.3 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.56032 disease 3.5 +591 Fitness: 4.56032 Genotype: Fch1: A coadaptive 6.8 4.5 B coadaptive 3.8 1.3 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.56032 disease 3.5 +592 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.9 B coadaptive 0.1 2.2 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +593 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.9 B coadaptive 0.1 2.2 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +594 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.9 B coadaptive 0.1 2.2 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +595 Fitness: 12.7286 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 8 2.9 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.7286 disease 4 +596 Fitness: 12.7286 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 8 2.9 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.7286 disease 4 +597 Fitness: 12.7286 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 8 2.9 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 12.7286 disease 4 +598 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0 B coadaptive 4.8 8.9 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +599 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0 B coadaptive 4.8 8.9 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +600 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0 B coadaptive 4.8 8.9 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +601 Fitness: 12.7175 Genotype: Fch1: A coadaptive 2.9 9.1 B coadaptive 5.1 4.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.7175 disease 3 +602 Fitness: 12.7175 Genotype: Fch1: A coadaptive 2.9 9.1 B coadaptive 5.1 4.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.7175 disease 3 +603 Fitness: 12.7175 Genotype: Fch1: A coadaptive 2.9 9.1 B coadaptive 5.1 4.7 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.7175 disease 3 +604 Fitness: 3.79152 Genotype: Fch1: A coadaptive 4 5.3 B coadaptive 8.9 8.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.79152 disease 2.5 +605 Fitness: 3.79152 Genotype: Fch1: A coadaptive 4 5.3 B coadaptive 8.9 8.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.79152 disease 2.5 +606 Fitness: 3.79152 Genotype: Fch1: A coadaptive 4 5.3 B coadaptive 8.9 8.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.79152 disease 2.5 +607 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 9.4 B coadaptive 4.5 0.5 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +608 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 9.4 B coadaptive 4.5 0.5 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +609 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 9.4 B coadaptive 4.5 0.5 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +610 Fitness: 1.84258 Genotype: Fch1: A coadaptive 0.6 2.1 B coadaptive 8 0.4 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.84258 disease 3.5 +611 Fitness: 1.84258 Genotype: Fch1: A coadaptive 0.6 2.1 B coadaptive 8 0.4 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.84258 disease 3.5 +612 Fitness: 1.84258 Genotype: Fch1: A coadaptive 0.6 2.1 B coadaptive 8 0.4 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.84258 disease 3.5 +613 Fitness: 10.2437 Genotype: Fch1: A coadaptive 1.6 7.4 B coadaptive 5.1 2.9 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.2437 disease 3.5 +614 Fitness: 10.2437 Genotype: Fch1: A coadaptive 1.6 7.4 B coadaptive 5.1 2.9 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.2437 disease 3.5 +615 Fitness: 10.2437 Genotype: Fch1: A coadaptive 1.6 7.4 B coadaptive 5.1 2.9 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.2437 disease 3.5 +616 Fitness: 7.07556 Genotype: Fch1: A coadaptive 8.2 6.5 B coadaptive 6 2.3 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 7.07556 disease 3 +617 Fitness: 7.07556 Genotype: Fch1: A coadaptive 8.2 6.5 B coadaptive 6 2.3 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 7.07556 disease 3 +618 Fitness: 7.07556 Genotype: Fch1: A coadaptive 8.2 6.5 B coadaptive 6 2.3 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 7.07556 disease 3 +619 Fitness: 13.1958 Genotype: Fch1: A coadaptive 6.9 3.6 B coadaptive 6.6 4.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 13.1958 disease 3 +620 Fitness: 13.1958 Genotype: Fch1: A coadaptive 6.9 3.6 B coadaptive 6.6 4.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 13.1958 disease 3 +621 Fitness: 13.1958 Genotype: Fch1: A coadaptive 6.9 3.6 B coadaptive 6.6 4.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 13.1958 disease 3 +622 Fitness: 2.82484 Genotype: Fch1: A coadaptive 2.5 7.3 B coadaptive 9.6 8.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.82484 disease 2.5 +623 Fitness: 2.82484 Genotype: Fch1: A coadaptive 2.5 7.3 B coadaptive 9.6 8.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.82484 disease 2.5 +624 Fitness: 2.82484 Genotype: Fch1: A coadaptive 2.5 7.3 B coadaptive 9.6 8.1 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 2.82484 disease 2.5 +625 Fitness: 10.4614 Genotype: Fch1: A coadaptive 6 2.6 B coadaptive 1.2 7.3 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.4614 disease 2.5 +626 Fitness: 10.4614 Genotype: Fch1: A coadaptive 6 2.6 B coadaptive 1.2 7.3 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.4614 disease 2.5 +627 Fitness: 10.4614 Genotype: Fch1: A coadaptive 6 2.6 B coadaptive 1.2 7.3 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.4614 disease 2.5 +628 Fitness: 4.44665 Genotype: Fch1: A coadaptive 7.4 7.1 B coadaptive 3.4 3.7 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 4.44665 disease 4 +629 Fitness: 4.44665 Genotype: Fch1: A coadaptive 7.4 7.1 B coadaptive 3.4 3.7 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 4.44665 disease 4 +630 Fitness: 4.44665 Genotype: Fch1: A coadaptive 7.4 7.1 B coadaptive 3.4 3.7 C disease 0 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 4.44665 disease 4 +631 Fitness: 13.2957 Genotype: Fch1: A coadaptive 8 5.5 B coadaptive 8.6 7.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 13.2957 disease 3 +632 Fitness: 13.2957 Genotype: Fch1: A coadaptive 8 5.5 B coadaptive 8.6 7.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 13.2957 disease 3 +633 Fitness: 13.2957 Genotype: Fch1: A coadaptive 8 5.5 B coadaptive 8.6 7.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 13.2957 disease 3 +634 Fitness: 12.2119 Genotype: Fch1: A coadaptive 4.2 9.2 B coadaptive 5.4 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.2119 disease 4 +635 Fitness: 12.2119 Genotype: Fch1: A coadaptive 4.2 9.2 B coadaptive 5.4 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.2119 disease 4 +636 Fitness: 12.2119 Genotype: Fch1: A coadaptive 4.2 9.2 B coadaptive 5.4 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 12.2119 disease 4 +637 Fitness: 10.6424 Genotype: Fch1: A coadaptive 4.8 7 B coadaptive 4.6 3.7 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.6424 disease 3.5 +638 Fitness: 10.6424 Genotype: Fch1: A coadaptive 4.8 7 B coadaptive 4.6 3.7 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.6424 disease 3.5 +639 Fitness: 10.6424 Genotype: Fch1: A coadaptive 4.8 7 B coadaptive 4.6 3.7 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.6424 disease 3.5 +640 Fitness: 4.47335 Genotype: Fch1: A coadaptive 8.3 1 B coadaptive 2.1 2.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.47335 disease 3.5 +641 Fitness: 4.47335 Genotype: Fch1: A coadaptive 8.3 1 B coadaptive 2.1 2.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.47335 disease 3.5 +642 Fitness: 4.47335 Genotype: Fch1: A coadaptive 8.3 1 B coadaptive 2.1 2.2 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.47335 disease 3.5 +643 Fitness: 4.80465 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 2.1 3.3 C disease 1 0.5 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 4.80465 disease 4 +644 Fitness: 4.80465 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 2.1 3.3 C disease 1 0.5 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 4.80465 disease 4 +645 Fitness: 4.80465 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 2.1 3.3 C disease 1 0.5 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 4.80465 disease 4 +646 Fitness: 8.61095 Genotype: Fch1: A coadaptive 5 5.6 B coadaptive 3.9 2.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.61095 disease 2.5 +647 Fitness: 8.61095 Genotype: Fch1: A coadaptive 5 5.6 B coadaptive 3.9 2.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.61095 disease 2.5 +648 Fitness: 8.61095 Genotype: Fch1: A coadaptive 5 5.6 B coadaptive 3.9 2.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.61095 disease 2.5 +649 Fitness: 0 Genotype: Fch1: A coadaptive 10 7.7 B coadaptive 5.2 2.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +650 Fitness: 0 Genotype: Fch1: A coadaptive 10 7.7 B coadaptive 5.2 2.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +651 Fitness: 0 Genotype: Fch1: A coadaptive 10 7.7 B coadaptive 5.2 2.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +652 Fitness: 10.0431 Genotype: Fch1: A coadaptive 9 5.1 B coadaptive 6.6 2.6 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 10.0431 disease 3 +653 Fitness: 10.0431 Genotype: Fch1: A coadaptive 9 5.1 B coadaptive 6.6 2.6 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 10.0431 disease 3 +654 Fitness: 10.0431 Genotype: Fch1: A coadaptive 9 5.1 B coadaptive 6.6 2.6 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 10.0431 disease 3 +655 Fitness: 6.28674 Genotype: Fch1: A coadaptive 7.7 8.6 B coadaptive 8.7 0.8 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.28674 disease 3.5 +656 Fitness: 6.28674 Genotype: Fch1: A coadaptive 7.7 8.6 B coadaptive 8.7 0.8 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.28674 disease 3.5 +657 Fitness: 6.28674 Genotype: Fch1: A coadaptive 7.7 8.6 B coadaptive 8.7 0.8 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.28674 disease 3.5 +658 Fitness: 3.92702 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 9.6 8 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 3.92702 disease 3.5 +659 Fitness: 3.92702 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 9.6 8 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 3.92702 disease 3.5 +660 Fitness: 3.92702 Genotype: Fch1: A coadaptive 7.7 2.4 B coadaptive 9.6 8 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 3.92702 disease 3.5 +661 Fitness: 6.11237 Genotype: Fch1: A coadaptive 5.1 0 B coadaptive 1.2 7.7 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 6.11237 disease 3.5 +662 Fitness: 6.11237 Genotype: Fch1: A coadaptive 5.1 0 B coadaptive 1.2 7.7 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 6.11237 disease 3.5 +663 Fitness: 6.11237 Genotype: Fch1: A coadaptive 5.1 0 B coadaptive 1.2 7.7 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 6.11237 disease 3.5 +664 Fitness: 3.27774 Genotype: Fch1: A coadaptive 1.7 4 B coadaptive 4.3 8.9 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 3.27774 disease 3.5 +665 Fitness: 3.27774 Genotype: Fch1: A coadaptive 1.7 4 B coadaptive 4.3 8.9 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 3.27774 disease 3.5 +666 Fitness: 3.27774 Genotype: Fch1: A coadaptive 1.7 4 B coadaptive 4.3 8.9 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 3.27774 disease 3.5 +667 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 9.2 B coadaptive 3.6 0.6 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +668 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 9.2 B coadaptive 3.6 0.6 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +669 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 9.2 B coadaptive 3.6 0.6 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +670 Fitness: 13.5788 Genotype: Fch1: A coadaptive 5.1 5.6 B coadaptive 4.6 6.8 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.5788 disease 1.5 +671 Fitness: 13.5788 Genotype: Fch1: A coadaptive 5.1 5.6 B coadaptive 4.6 6.8 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.5788 disease 1.5 +672 Fitness: 13.5788 Genotype: Fch1: A coadaptive 5.1 5.6 B coadaptive 4.6 6.8 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.5788 disease 1.5 +673 Fitness: 12.3438 Genotype: Fch1: A coadaptive 1.3 8.2 B coadaptive 4.5 6 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.3438 disease 3 +674 Fitness: 12.3438 Genotype: Fch1: A coadaptive 1.3 8.2 B coadaptive 4.5 6 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.3438 disease 3 +675 Fitness: 12.3438 Genotype: Fch1: A coadaptive 1.3 8.2 B coadaptive 4.5 6 C disease 0.5 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.3438 disease 3 +676 Fitness: 6.12176 Genotype: Fch1: A coadaptive 3.4 2.1 B coadaptive 4 2.4 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 6.12176 disease 3 +677 Fitness: 6.12176 Genotype: Fch1: A coadaptive 3.4 2.1 B coadaptive 4 2.4 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 6.12176 disease 3 +678 Fitness: 6.12176 Genotype: Fch1: A coadaptive 3.4 2.1 B coadaptive 4 2.4 C disease 0.5 0.5 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 6.12176 disease 3 +679 Fitness: 6.77746 Genotype: Fch1: A coadaptive 0.1 6 B coadaptive 5.3 1.2 C disease 1 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 6.77746 disease 3 +680 Fitness: 6.77746 Genotype: Fch1: A coadaptive 0.1 6 B coadaptive 5.3 1.2 C disease 1 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 6.77746 disease 3 +681 Fitness: 6.77746 Genotype: Fch1: A coadaptive 0.1 6 B coadaptive 5.3 1.2 C disease 1 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 6.77746 disease 3 +682 Fitness: 9.95653 Genotype: Fch1: A coadaptive 8.3 2.4 B coadaptive 7 8.8 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.95653 disease 1.5 +683 Fitness: 9.95653 Genotype: Fch1: A coadaptive 8.3 2.4 B coadaptive 7 8.8 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.95653 disease 1.5 +684 Fitness: 9.95653 Genotype: Fch1: A coadaptive 8.3 2.4 B coadaptive 7 8.8 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.95653 disease 1.5 +685 Fitness: 4.7428 Genotype: Fch1: A coadaptive 8.6 4.2 B coadaptive 0.6 5.4 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.7428 disease 2.5 +686 Fitness: 4.7428 Genotype: Fch1: A coadaptive 8.6 4.2 B coadaptive 0.6 5.4 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.7428 disease 2.5 +687 Fitness: 4.7428 Genotype: Fch1: A coadaptive 8.6 4.2 B coadaptive 0.6 5.4 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.7428 disease 2.5 +688 Fitness: 9.23688 Genotype: Fch1: A coadaptive 9.1 2.4 B coadaptive 6.3 1.1 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 9.23688 disease 1.5 +689 Fitness: 9.23688 Genotype: Fch1: A coadaptive 9.1 2.4 B coadaptive 6.3 1.1 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 9.23688 disease 1.5 +690 Fitness: 9.23688 Genotype: Fch1: A coadaptive 9.1 2.4 B coadaptive 6.3 1.1 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 9.23688 disease 1.5 +691 Fitness: 7.28251 Genotype: Fch1: A coadaptive 3.4 3.9 B coadaptive 4 2.1 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 7.28251 disease 4 +692 Fitness: 7.28251 Genotype: Fch1: A coadaptive 3.4 3.9 B coadaptive 4 2.1 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 7.28251 disease 4 +693 Fitness: 7.28251 Genotype: Fch1: A coadaptive 3.4 3.9 B coadaptive 4 2.1 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 7.28251 disease 4 +694 Fitness: 8.76542 Genotype: Fch1: A coadaptive 4.5 2.3 B coadaptive 7.5 2.6 C disease 1 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.76542 disease 2 +695 Fitness: 8.76542 Genotype: Fch1: A coadaptive 4.5 2.3 B coadaptive 7.5 2.6 C disease 1 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.76542 disease 2 +696 Fitness: 8.76542 Genotype: Fch1: A coadaptive 4.5 2.3 B coadaptive 7.5 2.6 C disease 1 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 8.76542 disease 2 +697 Fitness: 9.508 Genotype: Fch1: A coadaptive 9.1 6 B coadaptive 9.2 9 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.508 disease 2.5 +698 Fitness: 9.508 Genotype: Fch1: A coadaptive 9.1 6 B coadaptive 9.2 9 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.508 disease 2.5 +699 Fitness: 9.508 Genotype: Fch1: A coadaptive 9.1 6 B coadaptive 9.2 9 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.508 disease 2.5 +700 Fitness: 12.5572 Genotype: Fch1: A coadaptive 8.9 7.7 B coadaptive 6.4 8.7 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5572 disease 3.5 +701 Fitness: 12.5572 Genotype: Fch1: A coadaptive 8.9 7.7 B coadaptive 6.4 8.7 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5572 disease 3.5 +702 Fitness: 12.5572 Genotype: Fch1: A coadaptive 8.9 7.7 B coadaptive 6.4 8.7 C disease 0 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5572 disease 3.5 +703 Fitness: 7.72607 Genotype: Fch1: A coadaptive 3.9 2.3 B coadaptive 0.2 9.9 C disease 1 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 7.72607 disease 2.5 +704 Fitness: 7.72607 Genotype: Fch1: A coadaptive 3.9 2.3 B coadaptive 0.2 9.9 C disease 1 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 7.72607 disease 2.5 +705 Fitness: 7.72607 Genotype: Fch1: A coadaptive 3.9 2.3 B coadaptive 0.2 9.9 C disease 1 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 7.72607 disease 2.5 +706 Fitness: 11.5581 Genotype: Fch1: A coadaptive 8.4 5.8 B coadaptive 8.7 8.4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.5581 disease 2.5 +707 Fitness: 11.5581 Genotype: Fch1: A coadaptive 8.4 5.8 B coadaptive 8.7 8.4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.5581 disease 2.5 +708 Fitness: 11.5581 Genotype: Fch1: A coadaptive 8.4 5.8 B coadaptive 8.7 8.4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 11.5581 disease 2.5 +709 Fitness: 1.37648 Genotype: Fch1: A coadaptive 1 1.9 B coadaptive 8.2 1.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.37648 disease 3 +710 Fitness: 1.37648 Genotype: Fch1: A coadaptive 1 1.9 B coadaptive 8.2 1.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.37648 disease 3 +711 Fitness: 1.37648 Genotype: Fch1: A coadaptive 1 1.9 B coadaptive 8.2 1.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.37648 disease 3 +712 Fitness: 11.7294 Genotype: Fch1: A coadaptive 0.6 9.5 B coadaptive 6.1 2.9 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.7294 disease 3.5 +713 Fitness: 11.7294 Genotype: Fch1: A coadaptive 0.6 9.5 B coadaptive 6.1 2.9 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.7294 disease 3.5 +714 Fitness: 11.7294 Genotype: Fch1: A coadaptive 0.6 9.5 B coadaptive 6.1 2.9 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.7294 disease 3.5 +715 Fitness: 14.5332 Genotype: Fch1: A coadaptive 9.1 3.4 B coadaptive 8.1 4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.5332 disease 3 +716 Fitness: 14.5332 Genotype: Fch1: A coadaptive 9.1 3.4 B coadaptive 8.1 4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.5332 disease 3 +717 Fitness: 14.5332 Genotype: Fch1: A coadaptive 9.1 3.4 B coadaptive 8.1 4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.5332 disease 3 +718 Fitness: 0 Genotype: Fch1: A coadaptive 0 2.6 B coadaptive 7.7 2.6 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +719 Fitness: 0 Genotype: Fch1: A coadaptive 0 2.6 B coadaptive 7.7 2.6 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +720 Fitness: 0 Genotype: Fch1: A coadaptive 0 2.6 B coadaptive 7.7 2.6 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +721 Fitness: 11.8748 Genotype: Fch1: A coadaptive 7.4 3.5 B coadaptive 8.9 0.1 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.8748 disease 3 +722 Fitness: 11.8748 Genotype: Fch1: A coadaptive 7.4 3.5 B coadaptive 8.9 0.1 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.8748 disease 3 +723 Fitness: 11.8748 Genotype: Fch1: A coadaptive 7.4 3.5 B coadaptive 8.9 0.1 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.8748 disease 3 +724 Fitness: 9.61514 Genotype: Fch1: A coadaptive 0.9 9.1 B coadaptive 9 6.3 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.61514 disease 2 +725 Fitness: 9.61514 Genotype: Fch1: A coadaptive 0.9 9.1 B coadaptive 9 6.3 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.61514 disease 2 +726 Fitness: 9.61514 Genotype: Fch1: A coadaptive 0.9 9.1 B coadaptive 9 6.3 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.61514 disease 2 +727 Fitness: 9.78396 Genotype: Fch1: A coadaptive 5.5 7 B coadaptive 4.9 3.2 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.78396 disease 2.5 +728 Fitness: 9.78396 Genotype: Fch1: A coadaptive 5.5 7 B coadaptive 4.9 3.2 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.78396 disease 2.5 +729 Fitness: 9.78396 Genotype: Fch1: A coadaptive 5.5 7 B coadaptive 4.9 3.2 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.78396 disease 2.5 +730 Fitness: 10.2265 Genotype: Fch1: A coadaptive 8.1 9.1 B coadaptive 8.1 9.2 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.2265 disease 3 +731 Fitness: 10.2265 Genotype: Fch1: A coadaptive 8.1 9.1 B coadaptive 8.1 9.2 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.2265 disease 3 +732 Fitness: 10.2265 Genotype: Fch1: A coadaptive 8.1 9.1 B coadaptive 8.1 9.2 C disease 1 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.2265 disease 3 +733 Fitness: 9.74609 Genotype: Fch1: A coadaptive 9.1 8.9 B coadaptive 8.1 6.4 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.74609 disease 2.5 +734 Fitness: 9.74609 Genotype: Fch1: A coadaptive 9.1 8.9 B coadaptive 8.1 6.4 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.74609 disease 2.5 +735 Fitness: 9.74609 Genotype: Fch1: A coadaptive 9.1 8.9 B coadaptive 8.1 6.4 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 9.74609 disease 2.5 +736 Fitness: 11.4602 Genotype: Fch1: A coadaptive 0.9 8.1 B coadaptive 7.9 1.6 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.4602 disease 4 +737 Fitness: 11.4602 Genotype: Fch1: A coadaptive 0.9 8.1 B coadaptive 7.9 1.6 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.4602 disease 4 +738 Fitness: 11.4602 Genotype: Fch1: A coadaptive 0.9 8.1 B coadaptive 7.9 1.6 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.4602 disease 4 +739 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 9.8 B coadaptive 1.3 2.3 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +740 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 9.8 B coadaptive 1.3 2.3 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +741 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 9.8 B coadaptive 1.3 2.3 C disease 0.5 1 D disease 1 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +742 Fitness: 2.61738 Genotype: Fch1: A coadaptive 1.8 7.3 B coadaptive 7.3 9.9 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.61738 disease 3.5 +743 Fitness: 2.61738 Genotype: Fch1: A coadaptive 1.8 7.3 B coadaptive 7.3 9.9 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.61738 disease 3.5 +744 Fitness: 2.61738 Genotype: Fch1: A coadaptive 1.8 7.3 B coadaptive 7.3 9.9 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.61738 disease 3.5 +745 Fitness: 13.7178 Genotype: Fch1: A coadaptive 1.7 9.1 B coadaptive 3.7 8.1 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.7178 disease 3 +746 Fitness: 13.7178 Genotype: Fch1: A coadaptive 1.7 9.1 B coadaptive 3.7 8.1 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.7178 disease 3 +747 Fitness: 13.7178 Genotype: Fch1: A coadaptive 1.7 9.1 B coadaptive 3.7 8.1 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.7178 disease 3 +748 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 9.4 8.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +749 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 9.4 8.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +750 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 0.9 B coadaptive 9.4 8.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +751 Fitness: 14.133 Genotype: Fch1: A coadaptive 5.3 6.1 B coadaptive 7.3 5.4 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 14.133 disease 4 +752 Fitness: 14.133 Genotype: Fch1: A coadaptive 5.3 6.1 B coadaptive 7.3 5.4 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 14.133 disease 4 +753 Fitness: 14.133 Genotype: Fch1: A coadaptive 5.3 6.1 B coadaptive 7.3 5.4 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 14.133 disease 4 +754 Fitness: 13.3088 Genotype: Fch1: A coadaptive 7.3 3.1 B coadaptive 9 2.2 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.3088 disease 3.5 +755 Fitness: 13.3088 Genotype: Fch1: A coadaptive 7.3 3.1 B coadaptive 9 2.2 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.3088 disease 3.5 +756 Fitness: 13.3088 Genotype: Fch1: A coadaptive 7.3 3.1 B coadaptive 9 2.2 C disease 0 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.3088 disease 3.5 +757 Fitness: 5.80895 Genotype: Fch1: A coadaptive 7.3 8.1 B coadaptive 0.3 8.1 C disease 0 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.80895 disease 3 +758 Fitness: 5.80895 Genotype: Fch1: A coadaptive 7.3 8.1 B coadaptive 0.3 8.1 C disease 0 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.80895 disease 3 +759 Fitness: 5.80895 Genotype: Fch1: A coadaptive 7.3 8.1 B coadaptive 0.3 8.1 C disease 0 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.80895 disease 3 +760 Fitness: 12.3758 Genotype: Fch1: A coadaptive 7.1 9.1 B coadaptive 8.2 8.1 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.3758 disease 3 +761 Fitness: 12.3758 Genotype: Fch1: A coadaptive 7.1 9.1 B coadaptive 8.2 8.1 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.3758 disease 3 +762 Fitness: 12.3758 Genotype: Fch1: A coadaptive 7.1 9.1 B coadaptive 8.2 8.1 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.3758 disease 3 +763 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 3.9 B coadaptive 8.6 10 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +764 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 3.9 B coadaptive 8.6 10 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +765 Fitness: 0 Genotype: Fch1: A coadaptive 5.4 3.9 B coadaptive 8.6 10 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +766 Fitness: 0 Genotype: Fch1: A coadaptive 4.7 3.9 B coadaptive 8.4 10 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +767 Fitness: 0 Genotype: Fch1: A coadaptive 4.7 3.9 B coadaptive 8.4 10 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +768 Fitness: 0 Genotype: Fch1: A coadaptive 4.7 3.9 B coadaptive 8.4 10 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +769 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 1.7 B coadaptive 6.1 3.7 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +770 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 1.7 B coadaptive 6.1 3.7 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +771 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 1.7 B coadaptive 6.1 3.7 C disease 1 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +772 Fitness: 11.1117 Genotype: Fch1: A coadaptive 9.9 3.9 B coadaptive 7.8 9.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.1117 disease 2 +773 Fitness: 11.1117 Genotype: Fch1: A coadaptive 9.9 3.9 B coadaptive 7.8 9.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.1117 disease 2 +774 Fitness: 11.1117 Genotype: Fch1: A coadaptive 9.9 3.9 B coadaptive 7.8 9.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.1117 disease 2 +775 Fitness: 12.3576 Genotype: Fch1: A coadaptive 8.3 7 B coadaptive 6 5.7 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.3576 disease 2.5 +776 Fitness: 12.3576 Genotype: Fch1: A coadaptive 8.3 7 B coadaptive 6 5.7 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.3576 disease 2.5 +777 Fitness: 12.3576 Genotype: Fch1: A coadaptive 8.3 7 B coadaptive 6 5.7 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 12.3576 disease 2.5 +778 Fitness: 5.50758 Genotype: Fch1: A coadaptive 0 5.2 B coadaptive 3 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.50758 disease 3 +779 Fitness: 5.50758 Genotype: Fch1: A coadaptive 0 5.2 B coadaptive 3 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.50758 disease 3 +780 Fitness: 5.50758 Genotype: Fch1: A coadaptive 0 5.2 B coadaptive 3 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.50758 disease 3 +781 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.2 B coadaptive 4.4 9.9 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 1.5 +782 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.2 B coadaptive 4.4 9.9 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 1.5 +783 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.2 B coadaptive 4.4 9.9 C disease 0 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 1.5 +784 Fitness: 6.52323 Genotype: Fch1: A coadaptive 4.2 5.4 B coadaptive 7.7 8.6 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.52323 disease 2.5 +785 Fitness: 6.52323 Genotype: Fch1: A coadaptive 4.2 5.4 B coadaptive 7.7 8.6 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.52323 disease 2.5 +786 Fitness: 6.52323 Genotype: Fch1: A coadaptive 4.2 5.4 B coadaptive 7.7 8.6 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.52323 disease 2.5 +787 Fitness: 0.489903 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 3.2 4.6 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0.489903 disease 2.5 +788 Fitness: 0.489903 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 3.2 4.6 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0.489903 disease 2.5 +789 Fitness: 0.489903 Genotype: Fch1: A coadaptive 8.2 8.5 B coadaptive 3.2 4.6 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0.489903 disease 2.5 +790 Fitness: 10.124 Genotype: Fch1: A coadaptive 6.5 1.2 B coadaptive 7.3 3.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.124 disease 3.5 +791 Fitness: 10.124 Genotype: Fch1: A coadaptive 6.5 1.2 B coadaptive 7.3 3.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.124 disease 3.5 +792 Fitness: 10.124 Genotype: Fch1: A coadaptive 6.5 1.2 B coadaptive 7.3 3.2 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.124 disease 3.5 +793 Fitness: 0 Genotype: Fch1: A coadaptive 3.1 0.8 B coadaptive 8.1 7.1 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +794 Fitness: 0 Genotype: Fch1: A coadaptive 3.1 0.8 B coadaptive 8.1 7.1 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +795 Fitness: 0 Genotype: Fch1: A coadaptive 3.1 0.8 B coadaptive 8.1 7.1 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +796 Fitness: 5.84495 Genotype: Fch1: A coadaptive 0 5.8 B coadaptive 7.5 4.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.84495 disease 3 +797 Fitness: 5.84495 Genotype: Fch1: A coadaptive 0 5.8 B coadaptive 7.5 4.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.84495 disease 3 +798 Fitness: 5.84495 Genotype: Fch1: A coadaptive 0 5.8 B coadaptive 7.5 4.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.84495 disease 3 +799 Fitness: 5.76029 Genotype: Fch1: A coadaptive 4.3 2.7 B coadaptive 4.8 8.9 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 5.76029 disease 2 +800 Fitness: 5.76029 Genotype: Fch1: A coadaptive 4.3 2.7 B coadaptive 4.8 8.9 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 5.76029 disease 2 +801 Fitness: 5.76029 Genotype: Fch1: A coadaptive 4.3 2.7 B coadaptive 4.8 8.9 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 5.76029 disease 2 +802 Fitness: 1.73488 Genotype: Fch1: A coadaptive 1.2 1.1 B coadaptive 3.2 0.5 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 1.73488 disease 3 +803 Fitness: 1.73488 Genotype: Fch1: A coadaptive 1.2 1.1 B coadaptive 3.2 0.5 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 1.73488 disease 3 +804 Fitness: 1.73488 Genotype: Fch1: A coadaptive 1.2 1.1 B coadaptive 3.2 0.5 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 1.73488 disease 3 +805 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 3.5 B coadaptive 8.6 9.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +806 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 3.5 B coadaptive 8.6 9.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +807 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 3.5 B coadaptive 8.6 9.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +808 Fitness: 4.9312 Genotype: Fch1: A coadaptive 1.1 3.7 B coadaptive 0.7 4.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 4.9312 disease 3.5 +809 Fitness: 4.9312 Genotype: Fch1: A coadaptive 1.1 3.7 B coadaptive 0.7 4.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 4.9312 disease 3.5 +810 Fitness: 4.9312 Genotype: Fch1: A coadaptive 1.1 3.7 B coadaptive 0.7 4.9 C disease 1 1 D disease 0.5 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 4.9312 disease 3.5 +811 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0 B coadaptive 5.3 7.5 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +812 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0 B coadaptive 5.3 7.5 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +813 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0 B coadaptive 5.3 7.5 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +814 Fitness: 5.58854 Genotype: Fch1: A coadaptive 0.6 4.3 B coadaptive 4.6 4.8 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.58854 disease 3 +815 Fitness: 5.58854 Genotype: Fch1: A coadaptive 0.6 4.3 B coadaptive 4.6 4.8 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.58854 disease 3 +816 Fitness: 5.58854 Genotype: Fch1: A coadaptive 0.6 4.3 B coadaptive 4.6 4.8 C disease 1 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.58854 disease 3 +817 Fitness: 7.12334 Genotype: Fch1: A coadaptive 5.9 2.9 B coadaptive 4.1 1.6 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.12334 disease 3 +818 Fitness: 7.12334 Genotype: Fch1: A coadaptive 5.9 2.9 B coadaptive 4.1 1.6 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.12334 disease 3 +819 Fitness: 7.12334 Genotype: Fch1: A coadaptive 5.9 2.9 B coadaptive 4.1 1.6 C disease 1 0 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 7.12334 disease 3 +820 Fitness: 6.7064 Genotype: Fch1: A coadaptive 1.8 5.8 B coadaptive 9.9 4.1 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 6.7064 disease 2.5 +821 Fitness: 6.7064 Genotype: Fch1: A coadaptive 1.8 5.8 B coadaptive 9.9 4.1 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 6.7064 disease 2.5 +822 Fitness: 6.7064 Genotype: Fch1: A coadaptive 1.8 5.8 B coadaptive 9.9 4.1 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 6.7064 disease 2.5 +823 Fitness: 2.57459 Genotype: Fch1: A coadaptive 6.9 6.8 B coadaptive 3.2 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.57459 disease 3 +824 Fitness: 2.57459 Genotype: Fch1: A coadaptive 6.9 6.8 B coadaptive 3.2 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.57459 disease 3 +825 Fitness: 2.57459 Genotype: Fch1: A coadaptive 6.9 6.8 B coadaptive 3.2 2.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.57459 disease 3 +826 Fitness: 3.60311 Genotype: Fch1: A coadaptive 5.1 4.3 B coadaptive 2.6 1.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 3.60311 disease 3.5 +827 Fitness: 3.60311 Genotype: Fch1: A coadaptive 5.1 4.3 B coadaptive 2.6 1.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 3.60311 disease 3.5 +828 Fitness: 3.60311 Genotype: Fch1: A coadaptive 5.1 4.3 B coadaptive 2.6 1.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 3.60311 disease 3.5 +829 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 1.8 B coadaptive 0.2 1 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +830 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 1.8 B coadaptive 0.2 1 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +831 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 1.8 B coadaptive 0.2 1 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +832 Fitness: 12.232 Genotype: Fch1: A coadaptive 9.6 1.6 B coadaptive 6 3.3 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.232 disease 3 +833 Fitness: 12.232 Genotype: Fch1: A coadaptive 9.6 1.6 B coadaptive 6 3.3 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.232 disease 3 +834 Fitness: 12.232 Genotype: Fch1: A coadaptive 9.6 1.6 B coadaptive 6 3.3 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.232 disease 3 +835 Fitness: 2.61395 Genotype: Fch1: A coadaptive 9.7 6 B coadaptive 4.5 3 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.61395 disease 2 +836 Fitness: 2.61395 Genotype: Fch1: A coadaptive 9.7 6 B coadaptive 4.5 3 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.61395 disease 2 +837 Fitness: 2.61395 Genotype: Fch1: A coadaptive 9.7 6 B coadaptive 4.5 3 C disease 0.5 0 D disease 0 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 2.61395 disease 2 +838 Fitness: 9.14869 Genotype: Fch1: A coadaptive 9.5 8.2 B coadaptive 8.2 9.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.14869 disease 3 +839 Fitness: 9.14869 Genotype: Fch1: A coadaptive 9.5 8.2 B coadaptive 8.2 9.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.14869 disease 3 +840 Fitness: 9.14869 Genotype: Fch1: A coadaptive 9.5 8.2 B coadaptive 8.2 9.4 C disease 0 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 9.14869 disease 3 +841 Fitness: 11.9808 Genotype: Fch1: A coadaptive 3.2 6.4 B coadaptive 8.6 1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.9808 disease 3 +842 Fitness: 11.9808 Genotype: Fch1: A coadaptive 3.2 6.4 B coadaptive 8.6 1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.9808 disease 3 +843 Fitness: 11.9808 Genotype: Fch1: A coadaptive 3.2 6.4 B coadaptive 8.6 1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.9808 disease 3 +844 Fitness: 14.545 Genotype: Fch1: A coadaptive 7.8 6.1 B coadaptive 5.2 7.5 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.545 disease 4 +845 Fitness: 14.545 Genotype: Fch1: A coadaptive 7.8 6.1 B coadaptive 5.2 7.5 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.545 disease 4 +846 Fitness: 14.545 Genotype: Fch1: A coadaptive 7.8 6.1 B coadaptive 5.2 7.5 C disease 1 0.5 D disease 1 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 14.545 disease 4 +847 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 1 0.1 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +848 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 1 0.1 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +849 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 8.5 B coadaptive 1 0.1 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +850 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 1.2 B coadaptive 4.5 6.9 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +851 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 1.2 B coadaptive 4.5 6.9 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +852 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 1.2 B coadaptive 4.5 6.9 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +853 Fitness: 10.4078 Genotype: Fch1: A coadaptive 9.5 8.3 B coadaptive 8 7 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.4078 disease 1.5 +854 Fitness: 10.4078 Genotype: Fch1: A coadaptive 9.5 8.3 B coadaptive 8 7 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.4078 disease 1.5 +855 Fitness: 10.4078 Genotype: Fch1: A coadaptive 9.5 8.3 B coadaptive 8 7 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.4078 disease 1.5 +856 Fitness: 10.0575 Genotype: Fch1: A coadaptive 8.1 4.3 B coadaptive 1.6 6.6 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.0575 disease 3.5 +857 Fitness: 10.0575 Genotype: Fch1: A coadaptive 8.1 4.3 B coadaptive 1.6 6.6 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.0575 disease 3.5 +858 Fitness: 10.0575 Genotype: Fch1: A coadaptive 8.1 4.3 B coadaptive 1.6 6.6 C disease 0 1 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.0575 disease 3.5 +859 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 9 B coadaptive 0 0.7 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +860 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 9 B coadaptive 0 0.7 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +861 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 9 B coadaptive 0 0.7 C disease 0.5 0 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +862 Fitness: 10.475 Genotype: Fch1: A coadaptive 0.9 7.3 B coadaptive 10 1.8 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.475 disease 3.5 +863 Fitness: 10.475 Genotype: Fch1: A coadaptive 0.9 7.3 B coadaptive 10 1.8 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.475 disease 3.5 +864 Fitness: 10.475 Genotype: Fch1: A coadaptive 0.9 7.3 B coadaptive 10 1.8 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.475 disease 3.5 +865 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.5 B coadaptive 3.3 7.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +866 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.5 B coadaptive 3.3 7.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +867 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.5 B coadaptive 3.3 7.9 C disease 0.5 1 D disease 0.5 0 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +868 Fitness: 8.11295 Genotype: Fch1: A coadaptive 2.7 8.5 B coadaptive 9.4 7.6 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 8.11295 disease 2.5 +869 Fitness: 8.11295 Genotype: Fch1: A coadaptive 2.7 8.5 B coadaptive 9.4 7.6 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 8.11295 disease 2.5 +870 Fitness: 8.11295 Genotype: Fch1: A coadaptive 2.7 8.5 B coadaptive 9.4 7.6 C disease 0.5 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 8.11295 disease 2.5 +871 Fitness: 8.72852 Genotype: Fch1: A coadaptive 8.3 0.9 B coadaptive 7 7.9 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.72852 disease 2.5 +872 Fitness: 8.72852 Genotype: Fch1: A coadaptive 8.3 0.9 B coadaptive 7 7.9 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.72852 disease 2.5 +873 Fitness: 8.72852 Genotype: Fch1: A coadaptive 8.3 0.9 B coadaptive 7 7.9 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.72852 disease 2.5 +874 Fitness: 12.7862 Genotype: Fch1: A coadaptive 9.5 3.5 B coadaptive 8 2.2 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.7862 disease 3.5 +875 Fitness: 12.7862 Genotype: Fch1: A coadaptive 9.5 3.5 B coadaptive 8 2.2 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.7862 disease 3.5 +876 Fitness: 12.7862 Genotype: Fch1: A coadaptive 9.5 3.5 B coadaptive 8 2.2 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.7862 disease 3.5 +877 Fitness: 14.5356 Genotype: Fch1: A coadaptive 5.4 7.5 B coadaptive 7.8 6.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.5356 disease 3 +878 Fitness: 14.5356 Genotype: Fch1: A coadaptive 5.4 7.5 B coadaptive 7.8 6.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.5356 disease 3 +879 Fitness: 14.5356 Genotype: Fch1: A coadaptive 5.4 7.5 B coadaptive 7.8 6.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.5356 disease 3 +880 Fitness: 3.5117 Genotype: Fch1: A coadaptive 1.7 1.7 B coadaptive 3.7 3.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 3.5117 disease 1.5 +881 Fitness: 3.5117 Genotype: Fch1: A coadaptive 1.7 1.7 B coadaptive 3.7 3.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 3.5117 disease 1.5 +882 Fitness: 3.5117 Genotype: Fch1: A coadaptive 1.7 1.7 B coadaptive 3.7 3.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 3.5117 disease 1.5 +883 Fitness: 7.29847 Genotype: Fch1: A coadaptive 10 7.3 B coadaptive 6 5.2 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 7.29847 disease 3 +884 Fitness: 7.29847 Genotype: Fch1: A coadaptive 10 7.3 B coadaptive 6 5.2 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 7.29847 disease 3 +885 Fitness: 7.29847 Genotype: Fch1: A coadaptive 10 7.3 B coadaptive 6 5.2 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 7.29847 disease 3 +886 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2 B coadaptive 7.1 9 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +887 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2 B coadaptive 7.1 9 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +888 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2 B coadaptive 7.1 9 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +889 Fitness: 3.32679 Genotype: Fch1: A coadaptive 8.3 2.2 B coadaptive 2.1 2.1 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.32679 disease 3.5 +890 Fitness: 3.32679 Genotype: Fch1: A coadaptive 8.3 2.2 B coadaptive 2.1 2.1 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.32679 disease 3.5 +891 Fitness: 3.32679 Genotype: Fch1: A coadaptive 8.3 2.2 B coadaptive 2.1 2.1 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.32679 disease 3.5 +892 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 1.5 B coadaptive 8.5 9.1 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +893 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 1.5 B coadaptive 8.5 9.1 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +894 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 1.5 B coadaptive 8.5 9.1 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +895 Fitness: 13.8927 Genotype: Fch1: A coadaptive 8.9 3.5 B coadaptive 7.7 6.9 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.8927 disease 4 +896 Fitness: 13.8927 Genotype: Fch1: A coadaptive 8.9 3.5 B coadaptive 7.7 6.9 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.8927 disease 4 +897 Fitness: 13.8927 Genotype: Fch1: A coadaptive 8.9 3.5 B coadaptive 7.7 6.9 C disease 0 1 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.8927 disease 4 +898 Fitness: 10.6235 Genotype: Fch1: A coadaptive 7.7 0.5 B coadaptive 8.7 2.8 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.6235 disease 3 +899 Fitness: 10.6235 Genotype: Fch1: A coadaptive 7.7 0.5 B coadaptive 8.7 2.8 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.6235 disease 3 +900 Fitness: 10.6235 Genotype: Fch1: A coadaptive 7.7 0.5 B coadaptive 8.7 2.8 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 10.6235 disease 3 +901 Fitness: 10.5038 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 4.9 3.2 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 10.5038 disease 2.5 +902 Fitness: 10.5038 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 4.9 3.2 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 10.5038 disease 2.5 +903 Fitness: 10.5038 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 4.9 3.2 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 10.5038 disease 2.5 +904 Fitness: 12.3675 Genotype: Fch1: A coadaptive 6.2 3.6 B coadaptive 3.7 6.3 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.3675 disease 2.5 +905 Fitness: 12.3675 Genotype: Fch1: A coadaptive 6.2 3.6 B coadaptive 3.7 6.3 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.3675 disease 2.5 +906 Fitness: 12.3675 Genotype: Fch1: A coadaptive 6.2 3.6 B coadaptive 3.7 6.3 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.3675 disease 2.5 +907 Fitness: 6.99294 Genotype: Fch1: A coadaptive 6.3 3.3 B coadaptive 2.2 3.5 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 6.99294 disease 4 +908 Fitness: 6.99294 Genotype: Fch1: A coadaptive 6.3 3.3 B coadaptive 2.2 3.5 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 6.99294 disease 4 +909 Fitness: 6.99294 Genotype: Fch1: A coadaptive 6.3 3.3 B coadaptive 2.2 3.5 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 6.99294 disease 4 +910 Fitness: 0 Genotype: Fch1: A coadaptive 3.1 3 B coadaptive 8.1 9.3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +911 Fitness: 0 Genotype: Fch1: A coadaptive 3.1 3 B coadaptive 8.1 9.3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +912 Fitness: 0 Genotype: Fch1: A coadaptive 3.1 3 B coadaptive 8.1 9.3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +913 Fitness: 13.3573 Genotype: Fch1: A coadaptive 3.3 8.8 B coadaptive 3.5 6.9 C disease 0.5 1 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.3573 disease 4 +914 Fitness: 13.3573 Genotype: Fch1: A coadaptive 3.3 8.8 B coadaptive 3.5 6.9 C disease 0.5 1 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.3573 disease 4 +915 Fitness: 13.3573 Genotype: Fch1: A coadaptive 3.3 8.8 B coadaptive 3.5 6.9 C disease 0.5 1 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 13.3573 disease 4 +916 Fitness: 9.00214 Genotype: Fch1: A coadaptive 8.3 4.2 B coadaptive 6 1.7 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.00214 disease 3.5 +917 Fitness: 9.00214 Genotype: Fch1: A coadaptive 8.3 4.2 B coadaptive 6 1.7 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.00214 disease 3.5 +918 Fitness: 9.00214 Genotype: Fch1: A coadaptive 8.3 4.2 B coadaptive 6 1.7 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 9.00214 disease 3.5 +919 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.3 B coadaptive 0.7 7.5 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +920 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.3 B coadaptive 0.7 7.5 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +921 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0.3 B coadaptive 0.7 7.5 C disease 1 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +922 Fitness: 9.4239 Genotype: Fch1: A coadaptive 5.9 9.6 B coadaptive 4.1 6 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.4239 disease 2.5 +923 Fitness: 9.4239 Genotype: Fch1: A coadaptive 5.9 9.6 B coadaptive 4.1 6 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.4239 disease 2.5 +924 Fitness: 9.4239 Genotype: Fch1: A coadaptive 5.9 9.6 B coadaptive 4.1 6 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.4239 disease 2.5 +925 Fitness: 9.12453 Genotype: Fch1: A coadaptive 7 6.9 B coadaptive 7.7 0.9 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 9.12453 disease 3.5 +926 Fitness: 9.12453 Genotype: Fch1: A coadaptive 7 6.9 B coadaptive 7.7 0.9 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 9.12453 disease 3.5 +927 Fitness: 9.12453 Genotype: Fch1: A coadaptive 7 6.9 B coadaptive 7.7 0.9 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 9.12453 disease 3.5 +928 Fitness: 12.1463 Genotype: Fch1: A coadaptive 8.5 1.7 B coadaptive 7.6 1.8 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.1463 disease 2.5 +929 Fitness: 12.1463 Genotype: Fch1: A coadaptive 8.5 1.7 B coadaptive 7.6 1.8 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.1463 disease 2.5 +930 Fitness: 12.1463 Genotype: Fch1: A coadaptive 8.5 1.7 B coadaptive 7.6 1.8 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 12.1463 disease 2.5 +931 Fitness: 4.70388 Genotype: Fch1: A coadaptive 6.9 1.9 B coadaptive 0.9 3.4 C disease 1 1 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.70388 disease 4 +932 Fitness: 4.70388 Genotype: Fch1: A coadaptive 6.9 1.9 B coadaptive 0.9 3.4 C disease 1 1 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.70388 disease 4 +933 Fitness: 4.70388 Genotype: Fch1: A coadaptive 6.9 1.9 B coadaptive 0.9 3.4 C disease 1 1 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.70388 disease 4 +934 Fitness: 7.45013 Genotype: Fch1: A coadaptive 7.2 0.3 B coadaptive 3.5 9.9 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.45013 disease 3.5 +935 Fitness: 7.45013 Genotype: Fch1: A coadaptive 7.2 0.3 B coadaptive 3.5 9.9 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.45013 disease 3.5 +936 Fitness: 7.45013 Genotype: Fch1: A coadaptive 7.2 0.3 B coadaptive 3.5 9.9 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.45013 disease 3.5 +937 Fitness: 9.79203 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 9.9 1.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 9.79203 disease 3.5 +938 Fitness: 9.79203 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 9.9 1.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 9.79203 disease 3.5 +939 Fitness: 9.79203 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 9.9 1.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 9.79203 disease 3.5 +940 Fitness: 11.0846 Genotype: Fch1: A coadaptive 2.4 6.3 B coadaptive 8 1.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.0846 disease 3.5 +941 Fitness: 11.0846 Genotype: Fch1: A coadaptive 2.4 6.3 B coadaptive 8 1.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.0846 disease 3.5 +942 Fitness: 11.0846 Genotype: Fch1: A coadaptive 2.4 6.3 B coadaptive 8 1.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.0846 disease 3.5 +943 Fitness: 12.179 Genotype: Fch1: A coadaptive 2.8 7.3 B coadaptive 8.4 5.2 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.179 disease 4 +944 Fitness: 12.179 Genotype: Fch1: A coadaptive 2.8 7.3 B coadaptive 8.4 5.2 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.179 disease 4 +945 Fitness: 12.179 Genotype: Fch1: A coadaptive 2.8 7.3 B coadaptive 8.4 5.2 C disease 0.5 1 D disease 1 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.179 disease 4 +946 Fitness: 13.6064 Genotype: Fch1: A coadaptive 6.6 6.6 B coadaptive 8.3 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 13.6064 disease 4 +947 Fitness: 13.6064 Genotype: Fch1: A coadaptive 6.6 6.6 B coadaptive 8.3 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 13.6064 disease 4 +948 Fitness: 13.6064 Genotype: Fch1: A coadaptive 6.6 6.6 B coadaptive 8.3 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 13.6064 disease 4 +949 Fitness: 0 Genotype: Fch1: A coadaptive 10 7.1 B coadaptive 3.1 0.2 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +950 Fitness: 0 Genotype: Fch1: A coadaptive 10 7.1 B coadaptive 3.1 0.2 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +951 Fitness: 0 Genotype: Fch1: A coadaptive 10 7.1 B coadaptive 3.1 0.2 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +952 Fitness: 12.4381 Genotype: Fch1: A coadaptive 9.1 3 B coadaptive 8.1 1.5 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 12.4381 disease 3 +953 Fitness: 12.4381 Genotype: Fch1: A coadaptive 9.1 3 B coadaptive 8.1 1.5 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 12.4381 disease 3 +954 Fitness: 12.4381 Genotype: Fch1: A coadaptive 9.1 3 B coadaptive 8.1 1.5 C disease 0 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 12.4381 disease 3 +955 Fitness: 0.290301 Genotype: Fch1: A coadaptive 1.9 3.5 B coadaptive 4.5 9.7 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.290301 disease 2.5 +956 Fitness: 0.290301 Genotype: Fch1: A coadaptive 1.9 3.5 B coadaptive 4.5 9.7 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.290301 disease 2.5 +957 Fitness: 0.290301 Genotype: Fch1: A coadaptive 1.9 3.5 B coadaptive 4.5 9.7 C disease 0.5 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0.290301 disease 2.5 +958 Fitness: 13.028 Genotype: Fch1: A coadaptive 7.3 6.1 B coadaptive 5.2 5.4 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.028 disease 3.5 +959 Fitness: 13.028 Genotype: Fch1: A coadaptive 7.3 6.1 B coadaptive 5.2 5.4 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.028 disease 3.5 +960 Fitness: 13.028 Genotype: Fch1: A coadaptive 7.3 6.1 B coadaptive 5.2 5.4 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.028 disease 3.5 +961 Fitness: 3.44602 Genotype: Fch1: A coadaptive 6.6 1.1 B coadaptive 2.7 0.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.44602 disease 3 +962 Fitness: 3.44602 Genotype: Fch1: A coadaptive 6.6 1.1 B coadaptive 2.7 0.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.44602 disease 3 +963 Fitness: 3.44602 Genotype: Fch1: A coadaptive 6.6 1.1 B coadaptive 2.7 0.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 3.44602 disease 3 +964 Fitness: 14.2281 Genotype: Fch1: A coadaptive 3.9 8.5 B coadaptive 6.6 4.9 C disease 0 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.2281 disease 2.5 +965 Fitness: 14.2281 Genotype: Fch1: A coadaptive 3.9 8.5 B coadaptive 6.6 4.9 C disease 0 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.2281 disease 2.5 +966 Fitness: 14.2281 Genotype: Fch1: A coadaptive 3.9 8.5 B coadaptive 6.6 4.9 C disease 0 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.2281 disease 2.5 +967 Fitness: 10.8796 Genotype: Fch1: A coadaptive 7.4 5.5 B coadaptive 3.9 5 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.8796 disease 3 +968 Fitness: 10.8796 Genotype: Fch1: A coadaptive 7.4 5.5 B coadaptive 3.9 5 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.8796 disease 3 +969 Fitness: 10.8796 Genotype: Fch1: A coadaptive 7.4 5.5 B coadaptive 3.9 5 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.8796 disease 3 +970 Fitness: 9.7787 Genotype: Fch1: A coadaptive 6.8 0.9 B coadaptive 2.6 8.9 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.7787 disease 2.5 +971 Fitness: 9.7787 Genotype: Fch1: A coadaptive 6.8 0.9 B coadaptive 2.6 8.9 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.7787 disease 2.5 +972 Fitness: 9.7787 Genotype: Fch1: A coadaptive 6.8 0.9 B coadaptive 2.6 8.9 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.7787 disease 2.5 +973 Fitness: 8.01458 Genotype: Fch1: A coadaptive 3.5 3 B coadaptive 9.2 1.5 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.01458 disease 2.5 +974 Fitness: 8.01458 Genotype: Fch1: A coadaptive 3.5 3 B coadaptive 9.2 1.5 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.01458 disease 2.5 +975 Fitness: 8.01458 Genotype: Fch1: A coadaptive 3.5 3 B coadaptive 9.2 1.5 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.01458 disease 2.5 +976 Fitness: 9.85583 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 2.3 7.5 C disease 0 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.85583 disease 2 +977 Fitness: 9.85583 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 2.3 7.5 C disease 0 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.85583 disease 2 +978 Fitness: 9.85583 Genotype: Fch1: A coadaptive 3 4.5 B coadaptive 2.3 7.5 C disease 0 1 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.85583 disease 2 +979 Fitness: 10.296 Genotype: Fch1: A coadaptive 1.1 7.5 B coadaptive 0.7 7.6 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.296 disease 4 +980 Fitness: 10.296 Genotype: Fch1: A coadaptive 1.1 7.5 B coadaptive 0.7 7.6 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.296 disease 4 +981 Fitness: 10.296 Genotype: Fch1: A coadaptive 1.1 7.5 B coadaptive 0.7 7.6 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.296 disease 4 +982 Fitness: 11.7525 Genotype: Fch1: A coadaptive 7.8 3.1 B coadaptive 1.7 7.2 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.7525 disease 2.5 +983 Fitness: 11.7525 Genotype: Fch1: A coadaptive 7.8 3.1 B coadaptive 1.7 7.2 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.7525 disease 2.5 +984 Fitness: 11.7525 Genotype: Fch1: A coadaptive 7.8 3.1 B coadaptive 1.7 7.2 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.7525 disease 2.5 +985 Fitness: 11.8319 Genotype: Fch1: A coadaptive 7.4 9.6 B coadaptive 7.2 8.5 C disease 0 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 11.8319 disease 3.5 +986 Fitness: 11.8319 Genotype: Fch1: A coadaptive 7.4 9.6 B coadaptive 7.2 8.5 C disease 0 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 11.8319 disease 3.5 +987 Fitness: 11.8319 Genotype: Fch1: A coadaptive 7.4 9.6 B coadaptive 7.2 8.5 C disease 0 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 11.8319 disease 3.5 +988 Fitness: 14.1014 Genotype: Fch1: A coadaptive 8.9 2.9 B coadaptive 4.2 7.2 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.1014 disease 3.5 +989 Fitness: 14.1014 Genotype: Fch1: A coadaptive 8.9 2.9 B coadaptive 4.2 7.2 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.1014 disease 3.5 +990 Fitness: 14.1014 Genotype: Fch1: A coadaptive 8.9 2.9 B coadaptive 4.2 7.2 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.1014 disease 3.5 +991 Fitness: 4.1876 Genotype: Fch1: A coadaptive 9.7 5.5 B coadaptive 4.5 3.1 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.1876 disease 2 +992 Fitness: 4.1876 Genotype: Fch1: A coadaptive 9.7 5.5 B coadaptive 4.5 3.1 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.1876 disease 2 +993 Fitness: 4.1876 Genotype: Fch1: A coadaptive 9.7 5.5 B coadaptive 4.5 3.1 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.1876 disease 2 +994 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0 B coadaptive 8.6 8.2 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +995 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0 B coadaptive 8.6 8.2 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +996 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0 B coadaptive 8.6 8.2 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +997 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.4 B coadaptive 0.2 0 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +998 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.4 B coadaptive 0.2 0 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +999 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 9.4 B coadaptive 0.2 0 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1000 Fitness: 3.24513 Genotype: Fch1: A coadaptive 3.1 1.2 B coadaptive 2.2 1.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 3.24513 disease 3 +1001 Fitness: 3.24513 Genotype: Fch1: A coadaptive 3.1 1.2 B coadaptive 2.2 1.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 3.24513 disease 3 +1002 Fitness: 3.24513 Genotype: Fch1: A coadaptive 3.1 1.2 B coadaptive 2.2 1.6 C disease 0 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 3.24513 disease 3 +1003 Fitness: 11.3588 Genotype: Fch1: A coadaptive 6.2 2.5 B coadaptive 6.9 4.7 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3588 disease 3 +1004 Fitness: 11.3588 Genotype: Fch1: A coadaptive 6.2 2.5 B coadaptive 6.9 4.7 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3588 disease 3 +1005 Fitness: 11.3588 Genotype: Fch1: A coadaptive 6.2 2.5 B coadaptive 6.9 4.7 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 11.3588 disease 3 +1006 Fitness: 14.007 Genotype: Fch1: A coadaptive 4.5 7.4 B coadaptive 8.3 2.9 C disease 1 1 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 14.007 disease 4 +1007 Fitness: 14.007 Genotype: Fch1: A coadaptive 4.5 7.4 B coadaptive 8.3 2.9 C disease 1 1 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 14.007 disease 4 +1008 Fitness: 14.007 Genotype: Fch1: A coadaptive 4.5 7.4 B coadaptive 8.3 2.9 C disease 1 1 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 14.007 disease 4 +1009 Fitness: 12.4929 Genotype: Fch1: A coadaptive 0.7 9 B coadaptive 5 7.3 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 12.4929 disease 2 +1010 Fitness: 12.4929 Genotype: Fch1: A coadaptive 0.7 9 B coadaptive 5 7.3 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 12.4929 disease 2 +1011 Fitness: 12.4929 Genotype: Fch1: A coadaptive 0.7 9 B coadaptive 5 7.3 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 12.4929 disease 2 +1012 Fitness: 4.94165 Genotype: Fch1: A coadaptive 2.2 2.4 B coadaptive 4.9 1.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.94165 disease 3.5 +1013 Fitness: 4.94165 Genotype: Fch1: A coadaptive 2.2 2.4 B coadaptive 4.9 1.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.94165 disease 3.5 +1014 Fitness: 4.94165 Genotype: Fch1: A coadaptive 2.2 2.4 B coadaptive 4.9 1.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.94165 disease 3.5 +1015 Fitness: 12.023 Genotype: Fch1: A coadaptive 9.9 6 B coadaptive 2.8 9.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 12.023 disease 2.5 +1016 Fitness: 12.023 Genotype: Fch1: A coadaptive 9.9 6 B coadaptive 2.8 9.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 12.023 disease 2.5 +1017 Fitness: 12.023 Genotype: Fch1: A coadaptive 9.9 6 B coadaptive 2.8 9.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 12.023 disease 2.5 +1018 Fitness: 5.70845 Genotype: Fch1: A coadaptive 7.2 5.1 B coadaptive 3.5 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.70845 disease 3 +1019 Fitness: 5.70845 Genotype: Fch1: A coadaptive 7.2 5.1 B coadaptive 3.5 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.70845 disease 3 +1020 Fitness: 5.70845 Genotype: Fch1: A coadaptive 7.2 5.1 B coadaptive 3.5 2.6 C disease 0.5 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.70845 disease 3 +1021 Fitness: 11.1257 Genotype: Fch1: A coadaptive 2.4 6.2 B coadaptive 6.7 5.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.1257 disease 2.5 +1022 Fitness: 11.1257 Genotype: Fch1: A coadaptive 2.4 6.2 B coadaptive 6.7 5.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.1257 disease 2.5 +1023 Fitness: 11.1257 Genotype: Fch1: A coadaptive 2.4 6.2 B coadaptive 6.7 5.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.1257 disease 2.5 +1024 Fitness: 6.39272 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 3.7 1.6 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.39272 disease 2.5 +1025 Fitness: 6.39272 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 3.7 1.6 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.39272 disease 2.5 +1026 Fitness: 6.39272 Genotype: Fch1: A coadaptive 8 1.2 B coadaptive 3.7 1.6 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.39272 disease 2.5 +1027 Fitness: 8.81952 Genotype: Fch1: A coadaptive 4.5 9.6 B coadaptive 1.3 7.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.81952 disease 4 +1028 Fitness: 8.81952 Genotype: Fch1: A coadaptive 4.5 9.6 B coadaptive 1.3 7.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.81952 disease 4 +1029 Fitness: 8.81952 Genotype: Fch1: A coadaptive 4.5 9.6 B coadaptive 1.3 7.3 C disease 0 1 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.81952 disease 4 +1030 Fitness: 14.1812 Genotype: Fch1: A coadaptive 9 5.5 B coadaptive 6.6 6.1 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.1812 disease 2 +1031 Fitness: 14.1812 Genotype: Fch1: A coadaptive 9 5.5 B coadaptive 6.6 6.1 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.1812 disease 2 +1032 Fitness: 14.1812 Genotype: Fch1: A coadaptive 9 5.5 B coadaptive 6.6 6.1 C disease 0 1 D disease 0 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.1812 disease 2 +1033 Fitness: 0 Genotype: Fch1: A coadaptive 9.8 0.5 B coadaptive 1 1.3 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1034 Fitness: 0 Genotype: Fch1: A coadaptive 9.8 0.5 B coadaptive 1 1.3 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1035 Fitness: 0 Genotype: Fch1: A coadaptive 9.8 0.5 B coadaptive 1 1.3 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 1.5 +1036 Fitness: 9.11399 Genotype: Fch1: A coadaptive 9.1 2.3 B coadaptive 4.7 2.6 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.11399 disease 3 +1037 Fitness: 9.11399 Genotype: Fch1: A coadaptive 9.1 2.3 B coadaptive 4.7 2.6 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.11399 disease 3 +1038 Fitness: 9.11399 Genotype: Fch1: A coadaptive 9.1 2.3 B coadaptive 4.7 2.6 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.11399 disease 3 +1039 Fitness: 8.22604 Genotype: Fch1: A coadaptive 5.3 1.2 B coadaptive 8.1 2.1 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 8.22604 disease 3.5 +1040 Fitness: 8.22604 Genotype: Fch1: A coadaptive 5.3 1.2 B coadaptive 8.1 2.1 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 8.22604 disease 3.5 +1041 Fitness: 8.22604 Genotype: Fch1: A coadaptive 5.3 1.2 B coadaptive 8.1 2.1 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 8.22604 disease 3.5 +1042 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 0.5 3.8 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1043 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 0.5 3.8 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1044 Fitness: 0 Genotype: Fch1: A coadaptive 9.4 6.8 B coadaptive 0.5 3.8 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1045 Fitness: 2.44757 Genotype: Fch1: A coadaptive 7.6 0.4 B coadaptive 2 0.9 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 2.44757 disease 3.5 +1046 Fitness: 2.44757 Genotype: Fch1: A coadaptive 7.6 0.4 B coadaptive 2 0.9 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 2.44757 disease 3.5 +1047 Fitness: 2.44757 Genotype: Fch1: A coadaptive 7.6 0.4 B coadaptive 2 0.9 C disease 1 0 D disease 1 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 2.44757 disease 3.5 +1048 Fitness: 2.35902 Genotype: Fch1: A coadaptive 3.6 0 B coadaptive 2.4 7.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.35902 disease 3.5 +1049 Fitness: 2.35902 Genotype: Fch1: A coadaptive 3.6 0 B coadaptive 2.4 7.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.35902 disease 3.5 +1050 Fitness: 2.35902 Genotype: Fch1: A coadaptive 3.6 0 B coadaptive 2.4 7.7 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 2.35902 disease 3.5 +1051 Fitness: 11.0958 Genotype: Fch1: A coadaptive 3.6 6.1 B coadaptive 4.1 9.9 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.0958 disease 3 +1052 Fitness: 11.0958 Genotype: Fch1: A coadaptive 3.6 6.1 B coadaptive 4.1 9.9 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.0958 disease 3 +1053 Fitness: 11.0958 Genotype: Fch1: A coadaptive 3.6 6.1 B coadaptive 4.1 9.9 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.0958 disease 3 +1054 Fitness: 12.6312 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 8.1 5.5 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.6312 disease 2.5 +1055 Fitness: 12.6312 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 8.1 5.5 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.6312 disease 2.5 +1056 Fitness: 12.6312 Genotype: Fch1: A coadaptive 7.3 9 B coadaptive 8.1 5.5 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.6312 disease 2.5 +1057 Fitness: 11.114 Genotype: Fch1: A coadaptive 9 0.2 B coadaptive 5.5 3.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.114 disease 3.5 +1058 Fitness: 11.114 Genotype: Fch1: A coadaptive 9 0.2 B coadaptive 5.5 3.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.114 disease 3.5 +1059 Fitness: 11.114 Genotype: Fch1: A coadaptive 9 0.2 B coadaptive 5.5 3.3 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 11.114 disease 3.5 +1060 Fitness: 8.13011 Genotype: Fch1: A coadaptive 7.6 2.5 B coadaptive 6.5 9.6 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.13011 disease 3.5 +1061 Fitness: 8.13011 Genotype: Fch1: A coadaptive 7.6 2.5 B coadaptive 6.5 9.6 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.13011 disease 3.5 +1062 Fitness: 8.13011 Genotype: Fch1: A coadaptive 7.6 2.5 B coadaptive 6.5 9.6 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.13011 disease 3.5 +1063 Fitness: 8.77224 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.4 0.4 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.77224 disease 3.5 +1064 Fitness: 8.77224 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.4 0.4 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.77224 disease 3.5 +1065 Fitness: 8.77224 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.4 0.4 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.77224 disease 3.5 +1066 Fitness: 4.2956 Genotype: Fch1: A coadaptive 7 9 B coadaptive 3.7 4.7 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.2956 disease 4 +1067 Fitness: 4.2956 Genotype: Fch1: A coadaptive 7 9 B coadaptive 3.7 4.7 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.2956 disease 4 +1068 Fitness: 4.2956 Genotype: Fch1: A coadaptive 7 9 B coadaptive 3.7 4.7 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 4.2956 disease 4 +1069 Fitness: 4.01774 Genotype: Fch1: A coadaptive 1.4 8.3 B coadaptive 2.1 2.1 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.01774 disease 3.5 +1070 Fitness: 4.01774 Genotype: Fch1: A coadaptive 1.4 8.3 B coadaptive 2.1 2.1 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.01774 disease 3.5 +1071 Fitness: 4.01774 Genotype: Fch1: A coadaptive 1.4 8.3 B coadaptive 2.1 2.1 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.01774 disease 3.5 +1072 Fitness: 13.4998 Genotype: Fch1: A coadaptive 7.8 4.6 B coadaptive 9.6 1 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 13.4998 disease 2.5 +1073 Fitness: 13.4998 Genotype: Fch1: A coadaptive 7.8 4.6 B coadaptive 9.6 1 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 13.4998 disease 2.5 +1074 Fitness: 13.4998 Genotype: Fch1: A coadaptive 7.8 4.6 B coadaptive 9.6 1 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 13.4998 disease 2.5 +1075 Fitness: 7.64393 Genotype: Fch1: A coadaptive 2.3 6 B coadaptive 5.4 9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.64393 disease 3.5 +1076 Fitness: 7.64393 Genotype: Fch1: A coadaptive 2.3 6 B coadaptive 5.4 9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.64393 disease 3.5 +1077 Fitness: 7.64393 Genotype: Fch1: A coadaptive 2.3 6 B coadaptive 5.4 9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.64393 disease 3.5 +1078 Fitness: 9.22626 Genotype: Fch1: A coadaptive 5.1 4.1 B coadaptive 5.9 1.2 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 9.22626 disease 2 +1079 Fitness: 9.22626 Genotype: Fch1: A coadaptive 5.1 4.1 B coadaptive 5.9 1.2 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 9.22626 disease 2 +1080 Fitness: 9.22626 Genotype: Fch1: A coadaptive 5.1 4.1 B coadaptive 5.9 1.2 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 9.22626 disease 2 +1081 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 7.9 B coadaptive 0.1 6.6 C disease 0.5 0 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1082 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 7.9 B coadaptive 0.1 6.6 C disease 0.5 0 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1083 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 7.9 B coadaptive 0.1 6.6 C disease 0.5 0 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1084 Fitness: 5.3036 Genotype: Fch1: A coadaptive 3.7 1.9 B coadaptive 3.9 1.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.3036 disease 2 +1085 Fitness: 5.3036 Genotype: Fch1: A coadaptive 3.7 1.9 B coadaptive 3.9 1.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.3036 disease 2 +1086 Fitness: 5.3036 Genotype: Fch1: A coadaptive 3.7 1.9 B coadaptive 3.9 1.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.3036 disease 2 +1087 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.3 B coadaptive 7.8 4.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1088 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.3 B coadaptive 7.8 4.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1089 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.3 B coadaptive 7.8 4.5 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1090 Fitness: 7.38497 Genotype: Fch1: A coadaptive 8.4 6.5 B coadaptive 4.5 4.1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 7.38497 disease 3 +1091 Fitness: 7.38497 Genotype: Fch1: A coadaptive 8.4 6.5 B coadaptive 4.5 4.1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 7.38497 disease 3 +1092 Fitness: 7.38497 Genotype: Fch1: A coadaptive 8.4 6.5 B coadaptive 4.5 4.1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 7.38497 disease 3 +1093 Fitness: 7.56172 Genotype: Fch1: A coadaptive 1.6 6.9 B coadaptive 5.1 0.9 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 7.56172 disease 3.5 +1094 Fitness: 7.56172 Genotype: Fch1: A coadaptive 1.6 6.9 B coadaptive 5.1 0.9 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 7.56172 disease 3.5 +1095 Fitness: 7.56172 Genotype: Fch1: A coadaptive 1.6 6.9 B coadaptive 5.1 0.9 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 7.56172 disease 3.5 +1096 Fitness: 11.9747 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 4 5.7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.9747 disease 2.5 +1097 Fitness: 11.9747 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 4 5.7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.9747 disease 2.5 +1098 Fitness: 11.9747 Genotype: Fch1: A coadaptive 7.2 2.3 B coadaptive 4 5.7 C disease 0 0 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.9747 disease 2.5 +1099 Fitness: 12.401 Genotype: Fch1: A coadaptive 6.1 4.5 B coadaptive 6.6 7.5 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.401 disease 2 +1100 Fitness: 12.401 Genotype: Fch1: A coadaptive 6.1 4.5 B coadaptive 6.6 7.5 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.401 disease 2 +1101 Fitness: 12.401 Genotype: Fch1: A coadaptive 6.1 4.5 B coadaptive 6.6 7.5 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.401 disease 2 +1102 Fitness: 10.9614 Genotype: Fch1: A coadaptive 7.4 2.3 B coadaptive 3.4 5 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.9614 disease 3.5 +1103 Fitness: 10.9614 Genotype: Fch1: A coadaptive 7.4 2.3 B coadaptive 3.4 5 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.9614 disease 3.5 +1104 Fitness: 10.9614 Genotype: Fch1: A coadaptive 7.4 2.3 B coadaptive 3.4 5 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 10.9614 disease 3.5 +1105 Fitness: 7.28739 Genotype: Fch1: A coadaptive 4.8 3.1 B coadaptive 3.7 2.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.28739 disease 3 +1106 Fitness: 7.28739 Genotype: Fch1: A coadaptive 4.8 3.1 B coadaptive 3.7 2.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.28739 disease 3 +1107 Fitness: 7.28739 Genotype: Fch1: A coadaptive 4.8 3.1 B coadaptive 3.7 2.2 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.28739 disease 3 +1108 Fitness: 11.3003 Genotype: Fch1: A coadaptive 0.6 8 B coadaptive 8 2.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.3003 disease 2.5 +1109 Fitness: 11.3003 Genotype: Fch1: A coadaptive 0.6 8 B coadaptive 8 2.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.3003 disease 2.5 +1110 Fitness: 11.3003 Genotype: Fch1: A coadaptive 0.6 8 B coadaptive 8 2.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 11.3003 disease 2.5 +1111 Fitness: 5.05158 Genotype: Fch1: A coadaptive 6.6 2.4 B coadaptive 7.8 8.5 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 5.05158 disease 3.5 +1112 Fitness: 5.05158 Genotype: Fch1: A coadaptive 6.6 2.4 B coadaptive 7.8 8.5 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 5.05158 disease 3.5 +1113 Fitness: 5.05158 Genotype: Fch1: A coadaptive 6.6 2.4 B coadaptive 7.8 8.5 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 5.05158 disease 3.5 +1114 Fitness: 8.30064 Genotype: Fch1: A coadaptive 10 7 B coadaptive 5.2 6.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 8.30064 disease 2.5 +1115 Fitness: 8.30064 Genotype: Fch1: A coadaptive 10 7 B coadaptive 5.2 6.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 8.30064 disease 2.5 +1116 Fitness: 8.30064 Genotype: Fch1: A coadaptive 10 7 B coadaptive 5.2 6.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 8.30064 disease 2.5 +1117 Fitness: 6.04074 Genotype: Fch1: A coadaptive 7.5 0.9 B coadaptive 6.3 9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.04074 disease 2 +1118 Fitness: 6.04074 Genotype: Fch1: A coadaptive 7.5 0.9 B coadaptive 6.3 9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.04074 disease 2 +1119 Fitness: 6.04074 Genotype: Fch1: A coadaptive 7.5 0.9 B coadaptive 6.3 9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 6.04074 disease 2 +1120 Fitness: 9.56864 Genotype: Fch1: A coadaptive 0.5 6.8 B coadaptive 6.1 3.9 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.56864 disease 2 +1121 Fitness: 9.56864 Genotype: Fch1: A coadaptive 0.5 6.8 B coadaptive 6.1 3.9 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.56864 disease 2 +1122 Fitness: 9.56864 Genotype: Fch1: A coadaptive 0.5 6.8 B coadaptive 6.1 3.9 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 9.56864 disease 2 +1123 Fitness: 4.3604 Genotype: Fch1: A coadaptive 1.7 3.3 B coadaptive 4.3 0.3 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.3604 disease 3 +1124 Fitness: 4.3604 Genotype: Fch1: A coadaptive 1.7 3.3 B coadaptive 4.3 0.3 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.3604 disease 3 +1125 Fitness: 4.3604 Genotype: Fch1: A coadaptive 1.7 3.3 B coadaptive 4.3 0.3 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.3604 disease 3 +1126 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 6.3 B coadaptive 0.9 1.3 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1127 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 6.3 B coadaptive 0.9 1.3 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1128 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 6.3 B coadaptive 0.9 1.3 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1129 Fitness: 11.9708 Genotype: Fch1: A coadaptive 8.5 5 B coadaptive 0.1 9.8 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.9708 disease 3.5 +1130 Fitness: 11.9708 Genotype: Fch1: A coadaptive 8.5 5 B coadaptive 0.1 9.8 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.9708 disease 3.5 +1131 Fitness: 11.9708 Genotype: Fch1: A coadaptive 8.5 5 B coadaptive 0.1 9.8 C disease 1 0 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 11.9708 disease 3.5 +1132 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.4 B coadaptive 5.3 8 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1133 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.4 B coadaptive 5.3 8 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1134 Fitness: 0 Genotype: Fch1: A coadaptive 0.1 2.4 B coadaptive 5.3 8 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1135 Fitness: 11.1851 Genotype: Fch1: A coadaptive 6.9 7.3 B coadaptive 0.9 9 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 11.1851 disease 3 +1136 Fitness: 11.1851 Genotype: Fch1: A coadaptive 6.9 7.3 B coadaptive 0.9 9 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 11.1851 disease 3 +1137 Fitness: 11.1851 Genotype: Fch1: A coadaptive 6.9 7.3 B coadaptive 0.9 9 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 11.1851 disease 3 +1138 Fitness: 13.099 Genotype: Fch1: A coadaptive 9.1 7.1 B coadaptive 6.3 8.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 13.099 disease 2.5 +1139 Fitness: 13.099 Genotype: Fch1: A coadaptive 9.1 7.1 B coadaptive 6.3 8.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 13.099 disease 2.5 +1140 Fitness: 13.099 Genotype: Fch1: A coadaptive 9.1 7.1 B coadaptive 6.3 8.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 13.099 disease 2.5 +1141 Fitness: 1.15071 Genotype: Fch1: A coadaptive 1.2 2.4 B coadaptive 4.5 6.6 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 1.15071 disease 3 +1142 Fitness: 1.15071 Genotype: Fch1: A coadaptive 1.2 2.4 B coadaptive 4.5 6.6 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 1.15071 disease 3 +1143 Fitness: 1.15071 Genotype: Fch1: A coadaptive 1.2 2.4 B coadaptive 4.5 6.6 C disease 1 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 1.15071 disease 3 +1144 Fitness: 9.12157 Genotype: Fch1: A coadaptive 2.8 6.5 B coadaptive 7.7 7.1 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.12157 disease 3 +1145 Fitness: 9.12157 Genotype: Fch1: A coadaptive 2.8 6.5 B coadaptive 7.7 7.1 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.12157 disease 3 +1146 Fitness: 9.12157 Genotype: Fch1: A coadaptive 2.8 6.5 B coadaptive 7.7 7.1 C disease 0 1 D disease 0 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.12157 disease 3 +1147 Fitness: 6.0714 Genotype: Fch1: A coadaptive 3.9 8.3 B coadaptive 0.2 6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.0714 disease 3 +1148 Fitness: 6.0714 Genotype: Fch1: A coadaptive 3.9 8.3 B coadaptive 0.2 6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.0714 disease 3 +1149 Fitness: 6.0714 Genotype: Fch1: A coadaptive 3.9 8.3 B coadaptive 0.2 6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.0714 disease 3 +1150 Fitness: 11.474 Genotype: Fch1: A coadaptive 2.8 7.6 B coadaptive 8.4 0.3 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.474 disease 2 +1151 Fitness: 11.474 Genotype: Fch1: A coadaptive 2.8 7.6 B coadaptive 8.4 0.3 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.474 disease 2 +1152 Fitness: 11.474 Genotype: Fch1: A coadaptive 2.8 7.6 B coadaptive 8.4 0.3 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.474 disease 2 +1153 Fitness: 11.1052 Genotype: Fch1: A coadaptive 7.3 1.1 B coadaptive 9.9 0.5 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.1052 disease 3.5 +1154 Fitness: 11.1052 Genotype: Fch1: A coadaptive 7.3 1.1 B coadaptive 9.9 0.5 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.1052 disease 3.5 +1155 Fitness: 11.1052 Genotype: Fch1: A coadaptive 7.3 1.1 B coadaptive 9.9 0.5 C disease 0.5 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.1052 disease 3.5 +1156 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 9.9 3.7 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1157 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 9.9 3.7 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1158 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 3.9 B coadaptive 9.9 3.7 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1159 Fitness: 6.49162 Genotype: Fch1: A coadaptive 9.4 1.5 B coadaptive 4.4 1.4 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.49162 disease 3 +1160 Fitness: 6.49162 Genotype: Fch1: A coadaptive 9.4 1.5 B coadaptive 4.4 1.4 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.49162 disease 3 +1161 Fitness: 6.49162 Genotype: Fch1: A coadaptive 9.4 1.5 B coadaptive 4.4 1.4 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.49162 disease 3 +1162 Fitness: 5.68785 Genotype: Fch1: A coadaptive 9.7 9.6 B coadaptive 8.2 6 C disease 0 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 5.68785 disease 1.5 +1163 Fitness: 5.68785 Genotype: Fch1: A coadaptive 9.7 9.6 B coadaptive 8.2 6 C disease 0 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 5.68785 disease 1.5 +1164 Fitness: 5.68785 Genotype: Fch1: A coadaptive 9.7 9.6 B coadaptive 8.2 6 C disease 0 0 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 5.68785 disease 1.5 +1165 Fitness: 5.12443 Genotype: Fch1: A coadaptive 1.8 3 B coadaptive 0.6 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.12443 disease 2.5 +1166 Fitness: 5.12443 Genotype: Fch1: A coadaptive 1.8 3 B coadaptive 0.6 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.12443 disease 2.5 +1167 Fitness: 5.12443 Genotype: Fch1: A coadaptive 1.8 3 B coadaptive 0.6 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 5.12443 disease 2.5 +1168 Fitness: 12.6373 Genotype: Fch1: A coadaptive 9.1 1.2 B coadaptive 8.1 5.3 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.6373 disease 1.5 +1169 Fitness: 12.6373 Genotype: Fch1: A coadaptive 9.1 1.2 B coadaptive 8.1 5.3 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.6373 disease 1.5 +1170 Fitness: 12.6373 Genotype: Fch1: A coadaptive 9.1 1.2 B coadaptive 8.1 5.3 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 12.6373 disease 1.5 +1171 Fitness: 13.6395 Genotype: Fch1: A coadaptive 2.9 7.8 B coadaptive 5.1 6.7 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.6395 disease 3.5 +1172 Fitness: 13.6395 Genotype: Fch1: A coadaptive 2.9 7.8 B coadaptive 5.1 6.7 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.6395 disease 3.5 +1173 Fitness: 13.6395 Genotype: Fch1: A coadaptive 2.9 7.8 B coadaptive 5.1 6.7 C disease 0.5 1 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.6395 disease 3.5 +1174 Fitness: 7.59375 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 7.3 1.7 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.59375 disease 3 +1175 Fitness: 7.59375 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 7.3 1.7 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.59375 disease 3 +1176 Fitness: 7.59375 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 7.3 1.7 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.59375 disease 3 +1177 Fitness: 1.82371 Genotype: Fch1: A coadaptive 7.6 6.7 B coadaptive 1.1 4.9 C disease 0 0.5 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 1.82371 disease 2.5 +1178 Fitness: 1.82371 Genotype: Fch1: A coadaptive 7.6 6.7 B coadaptive 1.1 4.9 C disease 0 0.5 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 1.82371 disease 2.5 +1179 Fitness: 1.82371 Genotype: Fch1: A coadaptive 7.6 6.7 B coadaptive 1.1 4.9 C disease 0 0.5 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 1.82371 disease 2.5 +1180 Fitness: 10.9456 Genotype: Fch1: A coadaptive 5.3 4.1 B coadaptive 7.3 1.2 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.9456 disease 2.5 +1181 Fitness: 10.9456 Genotype: Fch1: A coadaptive 5.3 4.1 B coadaptive 7.3 1.2 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.9456 disease 2.5 +1182 Fitness: 10.9456 Genotype: Fch1: A coadaptive 5.3 4.1 B coadaptive 7.3 1.2 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.9456 disease 2.5 +1183 Fitness: 8.22919 Genotype: Fch1: A coadaptive 0.4 6.1 B coadaptive 0.9 7.5 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.22919 disease 3 +1184 Fitness: 8.22919 Genotype: Fch1: A coadaptive 0.4 6.1 B coadaptive 0.9 7.5 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.22919 disease 3 +1185 Fitness: 8.22919 Genotype: Fch1: A coadaptive 0.4 6.1 B coadaptive 0.9 7.5 C disease 0.5 0.5 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 8.22919 disease 3 +1186 Fitness: 10.2545 Genotype: Fch1: A coadaptive 7.1 5.7 B coadaptive 8.2 0.3 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 10.2545 disease 2.5 +1187 Fitness: 10.2545 Genotype: Fch1: A coadaptive 7.1 5.7 B coadaptive 8.2 0.3 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 10.2545 disease 2.5 +1188 Fitness: 10.2545 Genotype: Fch1: A coadaptive 7.1 5.7 B coadaptive 8.2 0.3 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 10.2545 disease 2.5 +1189 Fitness: 6.98617 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 2.2 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.98617 disease 2.5 +1190 Fitness: 6.98617 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 2.2 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.98617 disease 2.5 +1191 Fitness: 6.98617 Genotype: Fch1: A coadaptive 1 5.1 B coadaptive 2.2 4.6 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 6.98617 disease 2.5 +1192 Fitness: 4.37849 Genotype: Fch1: A coadaptive 6.5 1.6 B coadaptive 1.7 2.3 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.37849 disease 2 +1193 Fitness: 4.37849 Genotype: Fch1: A coadaptive 6.5 1.6 B coadaptive 1.7 2.3 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.37849 disease 2 +1194 Fitness: 4.37849 Genotype: Fch1: A coadaptive 6.5 1.6 B coadaptive 1.7 2.3 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.37849 disease 2 +1195 Fitness: 6.91962 Genotype: Fch1: A coadaptive 7.4 5.4 B coadaptive 4.7 2.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 6.91962 disease 3 +1196 Fitness: 6.91962 Genotype: Fch1: A coadaptive 7.4 5.4 B coadaptive 4.7 2.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 6.91962 disease 3 +1197 Fitness: 6.91962 Genotype: Fch1: A coadaptive 7.4 5.4 B coadaptive 4.7 2.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 6.91962 disease 3 +1198 Fitness: 12.5657 Genotype: Fch1: A coadaptive 9 0.9 B coadaptive 2.7 10 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.5657 disease 3 +1199 Fitness: 12.5657 Genotype: Fch1: A coadaptive 9 0.9 B coadaptive 2.7 10 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.5657 disease 3 +1200 Fitness: 12.5657 Genotype: Fch1: A coadaptive 9 0.9 B coadaptive 2.7 10 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 12.5657 disease 3 +1201 Fitness: 3.36818 Genotype: Fch1: A coadaptive 2.7 6.8 B coadaptive 8.9 8.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.36818 disease 2.5 +1202 Fitness: 3.36818 Genotype: Fch1: A coadaptive 2.7 6.8 B coadaptive 8.9 8.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.36818 disease 2.5 +1203 Fitness: 3.36818 Genotype: Fch1: A coadaptive 2.7 6.8 B coadaptive 8.9 8.4 C disease 0 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.36818 disease 2.5 +1204 Fitness: 5.74841 Genotype: Fch1: A coadaptive 4.2 1 B coadaptive 3 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.74841 disease 2 +1205 Fitness: 5.74841 Genotype: Fch1: A coadaptive 4.2 1 B coadaptive 3 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.74841 disease 2 +1206 Fitness: 5.74841 Genotype: Fch1: A coadaptive 4.2 1 B coadaptive 3 3.3 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.74841 disease 2 +1207 Fitness: 10.7852 Genotype: Fch1: A coadaptive 6.5 1.7 B coadaptive 7.3 3.7 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.7852 disease 4 +1208 Fitness: 10.7852 Genotype: Fch1: A coadaptive 6.5 1.7 B coadaptive 7.3 3.7 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.7852 disease 4 +1209 Fitness: 10.7852 Genotype: Fch1: A coadaptive 6.5 1.7 B coadaptive 7.3 3.7 C disease 1 1 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 10.7852 disease 4 +1210 Fitness: 11.1025 Genotype: Fch1: A coadaptive 6.4 10 B coadaptive 6.2 6 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 11.1025 disease 2.5 +1211 Fitness: 11.1025 Genotype: Fch1: A coadaptive 6.4 10 B coadaptive 6.2 6 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 11.1025 disease 2.5 +1212 Fitness: 11.1025 Genotype: Fch1: A coadaptive 6.4 10 B coadaptive 6.2 6 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 11.1025 disease 2.5 +1213 Fitness: 11.7033 Genotype: Fch1: A coadaptive 7.2 5.9 B coadaptive 5.4 4.1 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.7033 disease 3 +1214 Fitness: 11.7033 Genotype: Fch1: A coadaptive 7.2 5.9 B coadaptive 5.4 4.1 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.7033 disease 3 +1215 Fitness: 11.7033 Genotype: Fch1: A coadaptive 7.2 5.9 B coadaptive 5.4 4.1 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.7033 disease 3 +1216 Fitness: 2.86153 Genotype: Fch1: A coadaptive 2.9 0.3 B coadaptive 1.6 6.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.86153 disease 2.5 +1217 Fitness: 2.86153 Genotype: Fch1: A coadaptive 2.9 0.3 B coadaptive 1.6 6.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.86153 disease 2.5 +1218 Fitness: 2.86153 Genotype: Fch1: A coadaptive 2.9 0.3 B coadaptive 1.6 6.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.86153 disease 2.5 +1219 Fitness: 11.2296 Genotype: Fch1: A coadaptive 0.5 8.3 B coadaptive 3.4 6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.2296 disease 3 +1220 Fitness: 11.2296 Genotype: Fch1: A coadaptive 0.5 8.3 B coadaptive 3.4 6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.2296 disease 3 +1221 Fitness: 11.2296 Genotype: Fch1: A coadaptive 0.5 8.3 B coadaptive 3.4 6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.2296 disease 3 +1222 Fitness: 12.4666 Genotype: Fch1: A coadaptive 3.3 7.3 B coadaptive 1.5 8.1 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.4666 disease 3 +1223 Fitness: 12.4666 Genotype: Fch1: A coadaptive 3.3 7.3 B coadaptive 1.5 8.1 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.4666 disease 3 +1224 Fitness: 12.4666 Genotype: Fch1: A coadaptive 3.3 7.3 B coadaptive 1.5 8.1 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.4666 disease 3 +1225 Fitness: 14.0591 Genotype: Fch1: A coadaptive 7.8 3.6 B coadaptive 6.7 6.3 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 14.0591 disease 3.5 +1226 Fitness: 14.0591 Genotype: Fch1: A coadaptive 7.8 3.6 B coadaptive 6.7 6.3 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 14.0591 disease 3.5 +1227 Fitness: 14.0591 Genotype: Fch1: A coadaptive 7.8 3.6 B coadaptive 6.7 6.3 C disease 1 0.5 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 14.0591 disease 3.5 +1228 Fitness: 2.7682 Genotype: Fch1: A coadaptive 1.8 2.4 B coadaptive 9.9 1.1 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.7682 disease 2.5 +1229 Fitness: 2.7682 Genotype: Fch1: A coadaptive 1.8 2.4 B coadaptive 9.9 1.1 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.7682 disease 2.5 +1230 Fitness: 2.7682 Genotype: Fch1: A coadaptive 1.8 2.4 B coadaptive 9.9 1.1 C disease 0 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.7682 disease 2.5 +1231 Fitness: 10.6025 Genotype: Fch1: A coadaptive 8.6 0.2 B coadaptive 7.8 0.7 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 10.6025 disease 4 +1232 Fitness: 10.6025 Genotype: Fch1: A coadaptive 8.6 0.2 B coadaptive 7.8 0.7 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 10.6025 disease 4 +1233 Fitness: 10.6025 Genotype: Fch1: A coadaptive 8.6 0.2 B coadaptive 7.8 0.7 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 10.6025 disease 4 +1234 Fitness: 3.47155 Genotype: Fch1: A coadaptive 8.8 7 B coadaptive 0.2 7.7 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.47155 disease 3 +1235 Fitness: 3.47155 Genotype: Fch1: A coadaptive 8.8 7 B coadaptive 0.2 7.7 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.47155 disease 3 +1236 Fitness: 3.47155 Genotype: Fch1: A coadaptive 8.8 7 B coadaptive 0.2 7.7 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 3.47155 disease 3 +1237 Fitness: 12.3752 Genotype: Fch1: A coadaptive 6.2 3.8 B coadaptive 4.9 8.3 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 12.3752 disease 4 +1238 Fitness: 12.3752 Genotype: Fch1: A coadaptive 6.2 3.8 B coadaptive 4.9 8.3 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 12.3752 disease 4 +1239 Fitness: 12.3752 Genotype: Fch1: A coadaptive 6.2 3.8 B coadaptive 4.9 8.3 C disease 0.5 1 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 12.3752 disease 4 +1240 Fitness: 14.1294 Genotype: Fch1: A coadaptive 9.5 2.3 B coadaptive 8.2 5.4 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.1294 disease 3.5 +1241 Fitness: 14.1294 Genotype: Fch1: A coadaptive 9.5 2.3 B coadaptive 8.2 5.4 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.1294 disease 3.5 +1242 Fitness: 14.1294 Genotype: Fch1: A coadaptive 9.5 2.3 B coadaptive 8.2 5.4 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 14.1294 disease 3.5 +1243 Fitness: 3.63855 Genotype: Fch1: A coadaptive 0.1 7.3 B coadaptive 5.3 9.9 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.63855 disease 3.5 +1244 Fitness: 3.63855 Genotype: Fch1: A coadaptive 0.1 7.3 B coadaptive 5.3 9.9 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.63855 disease 3.5 +1245 Fitness: 3.63855 Genotype: Fch1: A coadaptive 0.1 7.3 B coadaptive 5.3 9.9 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.63855 disease 3.5 +1246 Fitness: 8.65625 Genotype: Fch1: A coadaptive 5.1 1.9 B coadaptive 4.6 3.4 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 8.65625 disease 3.5 +1247 Fitness: 8.65625 Genotype: Fch1: A coadaptive 5.1 1.9 B coadaptive 4.6 3.4 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 8.65625 disease 3.5 +1248 Fitness: 8.65625 Genotype: Fch1: A coadaptive 5.1 1.9 B coadaptive 4.6 3.4 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 8.65625 disease 3.5 +1249 Fitness: 14.4373 Genotype: Fch1: A coadaptive 4.3 8.5 B coadaptive 6.6 7.6 C disease 1 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.4373 disease 3 +1250 Fitness: 14.4373 Genotype: Fch1: A coadaptive 4.3 8.5 B coadaptive 6.6 7.6 C disease 1 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.4373 disease 3 +1251 Fitness: 14.4373 Genotype: Fch1: A coadaptive 4.3 8.5 B coadaptive 6.6 7.6 C disease 1 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 14.4373 disease 3 +1252 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 3.8 B coadaptive 0.2 0.1 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1253 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 3.8 B coadaptive 0.2 0.1 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1254 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 3.8 B coadaptive 0.2 0.1 C disease 1 1 D disease 0.5 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1255 Fitness: 11.0579 Genotype: Fch1: A coadaptive 4 4.4 B coadaptive 6.1 5 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.0579 disease 2.5 +1256 Fitness: 11.0579 Genotype: Fch1: A coadaptive 4 4.4 B coadaptive 6.1 5 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.0579 disease 2.5 +1257 Fitness: 11.0579 Genotype: Fch1: A coadaptive 4 4.4 B coadaptive 6.1 5 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.0579 disease 2.5 +1258 Fitness: 14.122 Genotype: Fch1: A coadaptive 4.5 7.2 B coadaptive 7.5 4 C disease 0 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.122 disease 2.5 +1259 Fitness: 14.122 Genotype: Fch1: A coadaptive 4.5 7.2 B coadaptive 7.5 4 C disease 0 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.122 disease 2.5 +1260 Fitness: 14.122 Genotype: Fch1: A coadaptive 4.5 7.2 B coadaptive 7.5 4 C disease 0 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.122 disease 2.5 +1261 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 1 B coadaptive 9.4 4.4 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1262 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 1 B coadaptive 9.4 4.4 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1263 Fitness: 0 Genotype: Fch1: A coadaptive 2.7 1 B coadaptive 9.4 4.4 C disease 0.5 0 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1264 Fitness: 3.60473 Genotype: Fch1: A coadaptive 1 7.3 B coadaptive 3.3 0.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.60473 disease 2 +1265 Fitness: 3.60473 Genotype: Fch1: A coadaptive 1 7.3 B coadaptive 3.3 0.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.60473 disease 2 +1266 Fitness: 3.60473 Genotype: Fch1: A coadaptive 1 7.3 B coadaptive 3.3 0.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.60473 disease 2 +1267 Fitness: 8.25781 Genotype: Fch1: A coadaptive 5.4 1.1 B coadaptive 7.8 0.7 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.25781 disease 2.5 +1268 Fitness: 8.25781 Genotype: Fch1: A coadaptive 5.4 1.1 B coadaptive 7.8 0.7 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.25781 disease 2.5 +1269 Fitness: 8.25781 Genotype: Fch1: A coadaptive 5.4 1.1 B coadaptive 7.8 0.7 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 8.25781 disease 2.5 +1270 Fitness: 5.0265 Genotype: Fch1: A coadaptive 5.6 1.8 B coadaptive 4.7 9.9 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 5.0265 disease 2.5 +1271 Fitness: 5.0265 Genotype: Fch1: A coadaptive 5.6 1.8 B coadaptive 4.7 9.9 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 5.0265 disease 2.5 +1272 Fitness: 5.0265 Genotype: Fch1: A coadaptive 5.6 1.8 B coadaptive 4.7 9.9 C disease 0 1 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 5.0265 disease 2.5 +1273 Fitness: 4.67013 Genotype: Fch1: A coadaptive 9 2.2 B coadaptive 0.6 4.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.67013 disease 2 +1274 Fitness: 4.67013 Genotype: Fch1: A coadaptive 9 2.2 B coadaptive 0.6 4.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.67013 disease 2 +1275 Fitness: 4.67013 Genotype: Fch1: A coadaptive 9 2.2 B coadaptive 0.6 4.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 4.67013 disease 2 +1276 Fitness: 9.56864 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 2.1 5.2 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 9.56864 disease 3 +1277 Fitness: 9.56864 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 2.1 5.2 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 9.56864 disease 3 +1278 Fitness: 9.56864 Genotype: Fch1: A coadaptive 2.2 7.8 B coadaptive 2.1 5.2 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 9.56864 disease 3 +1279 Fitness: 12.8356 Genotype: Fch1: A coadaptive 8.9 3.1 B coadaptive 7.7 2.2 C disease 0 0 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.8356 disease 2.5 +1280 Fitness: 12.8356 Genotype: Fch1: A coadaptive 8.9 3.1 B coadaptive 7.7 2.2 C disease 0 0 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.8356 disease 2.5 +1281 Fitness: 12.8356 Genotype: Fch1: A coadaptive 8.9 3.1 B coadaptive 7.7 2.2 C disease 0 0 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 12.8356 disease 2.5 +1282 Fitness: 13.3547 Genotype: Fch1: A coadaptive 7.4 3.1 B coadaptive 3.9 7.2 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.3547 disease 2.5 +1283 Fitness: 13.3547 Genotype: Fch1: A coadaptive 7.4 3.1 B coadaptive 3.9 7.2 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.3547 disease 2.5 +1284 Fitness: 13.3547 Genotype: Fch1: A coadaptive 7.4 3.1 B coadaptive 3.9 7.2 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.3547 disease 2.5 +1285 Fitness: 2.30317 Genotype: Fch1: A coadaptive 7.3 9.2 B coadaptive 8.1 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 2.30317 disease 3 +1286 Fitness: 2.30317 Genotype: Fch1: A coadaptive 7.3 9.2 B coadaptive 8.1 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 2.30317 disease 3 +1287 Fitness: 2.30317 Genotype: Fch1: A coadaptive 7.3 9.2 B coadaptive 8.1 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 2.30317 disease 3 +1288 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 1.4 B coadaptive 6.7 9.3 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1289 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 1.4 B coadaptive 6.7 9.3 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1290 Fitness: 0 Genotype: Fch1: A coadaptive 4.8 1.4 B coadaptive 6.7 9.3 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1291 Fitness: 10.2902 Genotype: Fch1: A coadaptive 5.1 2.9 B coadaptive 5.9 3.2 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 10.2902 disease 4 +1292 Fitness: 10.2902 Genotype: Fch1: A coadaptive 5.1 2.9 B coadaptive 5.9 3.2 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 10.2902 disease 4 +1293 Fitness: 10.2902 Genotype: Fch1: A coadaptive 5.1 2.9 B coadaptive 5.9 3.2 C disease 1 1 D disease 0 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 10.2902 disease 4 +1294 Fitness: 14.2568 Genotype: Fch1: A coadaptive 4.4 8.7 B coadaptive 2.2 9.5 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.2568 disease 3 +1295 Fitness: 14.2568 Genotype: Fch1: A coadaptive 4.4 8.7 B coadaptive 2.2 9.5 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.2568 disease 3 +1296 Fitness: 14.2568 Genotype: Fch1: A coadaptive 4.4 8.7 B coadaptive 2.2 9.5 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 14.2568 disease 3 +1297 Fitness: 13.9494 Genotype: Fch1: A coadaptive 8.7 3.9 B coadaptive 6.3 8.4 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.9494 disease 3 +1298 Fitness: 13.9494 Genotype: Fch1: A coadaptive 8.7 3.9 B coadaptive 6.3 8.4 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.9494 disease 3 +1299 Fitness: 13.9494 Genotype: Fch1: A coadaptive 8.7 3.9 B coadaptive 6.3 8.4 C disease 1 1 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.9494 disease 3 +1300 Fitness: 2.91699 Genotype: Fch1: A coadaptive 6.3 9.8 B coadaptive 7 1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.91699 disease 1.5 +1301 Fitness: 2.91699 Genotype: Fch1: A coadaptive 6.3 9.8 B coadaptive 7 1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.91699 disease 1.5 +1302 Fitness: 2.91699 Genotype: Fch1: A coadaptive 6.3 9.8 B coadaptive 7 1 C disease 1 0 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.91699 disease 1.5 +1303 Fitness: 2.38931 Genotype: Fch1: A coadaptive 1.7 2.4 B coadaptive 1.8 1.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.38931 disease 3.5 +1304 Fitness: 2.38931 Genotype: Fch1: A coadaptive 1.7 2.4 B coadaptive 1.8 1.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.38931 disease 3.5 +1305 Fitness: 2.38931 Genotype: Fch1: A coadaptive 1.7 2.4 B coadaptive 1.8 1.1 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.38931 disease 3.5 +1306 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 2.1 B coadaptive 0.9 0.4 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1307 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 2.1 B coadaptive 0.9 0.4 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1308 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 2.1 B coadaptive 0.9 0.4 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 4 +1309 Fitness: 13.5589 Genotype: Fch1: A coadaptive 5.7 6.2 B coadaptive 5.5 5.1 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.5589 disease 3 +1310 Fitness: 13.5589 Genotype: Fch1: A coadaptive 5.7 6.2 B coadaptive 5.5 5.1 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.5589 disease 3 +1311 Fitness: 13.5589 Genotype: Fch1: A coadaptive 5.7 6.2 B coadaptive 5.5 5.1 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.5589 disease 3 +1312 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.7 B coadaptive 8 5 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1313 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.7 B coadaptive 8 5 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1314 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.7 B coadaptive 8 5 C disease 0.5 1 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1315 Fitness: 2.00435 Genotype: Fch1: A coadaptive 7.6 2.4 B coadaptive 0.1 3.3 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 2.00435 disease 3 +1316 Fitness: 2.00435 Genotype: Fch1: A coadaptive 7.6 2.4 B coadaptive 0.1 3.3 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 2.00435 disease 3 +1317 Fitness: 2.00435 Genotype: Fch1: A coadaptive 7.6 2.4 B coadaptive 0.1 3.3 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 2.00435 disease 3 +1318 Fitness: 8.35217 Genotype: Fch1: A coadaptive 3.9 3 B coadaptive 2.1 9.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 8.35217 disease 2.5 +1319 Fitness: 8.35217 Genotype: Fch1: A coadaptive 3.9 3 B coadaptive 2.1 9.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 8.35217 disease 2.5 +1320 Fitness: 8.35217 Genotype: Fch1: A coadaptive 3.9 3 B coadaptive 2.1 9.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 8.35217 disease 2.5 +1321 Fitness: 13.4673 Genotype: Fch1: A coadaptive 3.9 6.6 B coadaptive 10 1.7 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 13.4673 disease 3 +1322 Fitness: 13.4673 Genotype: Fch1: A coadaptive 3.9 6.6 B coadaptive 10 1.7 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 13.4673 disease 3 +1323 Fitness: 13.4673 Genotype: Fch1: A coadaptive 3.9 6.6 B coadaptive 10 1.7 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 13.4673 disease 3 +1324 Fitness: 9.24286 Genotype: Fch1: A coadaptive 7.3 1.2 B coadaptive 5.2 2.1 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 9.24286 disease 4 +1325 Fitness: 9.24286 Genotype: Fch1: A coadaptive 7.3 1.2 B coadaptive 5.2 2.1 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 9.24286 disease 4 +1326 Fitness: 9.24286 Genotype: Fch1: A coadaptive 7.3 1.2 B coadaptive 5.2 2.1 C disease 1 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 9.24286 disease 4 +1327 Fitness: 9.4986 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 6.6 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.4986 disease 2.5 +1328 Fitness: 9.4986 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 6.6 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.4986 disease 2.5 +1329 Fitness: 9.4986 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 6.6 0.8 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.4986 disease 2.5 +1330 Fitness: 11.1848 Genotype: Fch1: A coadaptive 8.1 2 B coadaptive 7.6 0.9 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1848 disease 3 +1331 Fitness: 11.1848 Genotype: Fch1: A coadaptive 8.1 2 B coadaptive 7.6 0.9 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1848 disease 3 +1332 Fitness: 11.1848 Genotype: Fch1: A coadaptive 8.1 2 B coadaptive 7.6 0.9 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1848 disease 3 +1333 Fitness: 11.3773 Genotype: Fch1: A coadaptive 8.2 7 B coadaptive 3.2 7.7 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.3773 disease 3.5 +1334 Fitness: 11.3773 Genotype: Fch1: A coadaptive 8.2 7 B coadaptive 3.2 7.7 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.3773 disease 3.5 +1335 Fitness: 11.3773 Genotype: Fch1: A coadaptive 8.2 7 B coadaptive 3.2 7.7 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.3773 disease 3.5 +1336 Fitness: 14.5832 Genotype: Fch1: A coadaptive 8.6 3.7 B coadaptive 6.5 5.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.5832 disease 3 +1337 Fitness: 14.5832 Genotype: Fch1: A coadaptive 8.6 3.7 B coadaptive 6.5 5.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.5832 disease 3 +1338 Fitness: 14.5832 Genotype: Fch1: A coadaptive 8.6 3.7 B coadaptive 6.5 5.9 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.5832 disease 3 +1339 Fitness: 1.33435 Genotype: Fch1: A coadaptive 9.1 6.1 B coadaptive 0 6.6 C disease 0 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.33435 disease 3 +1340 Fitness: 1.33435 Genotype: Fch1: A coadaptive 9.1 6.1 B coadaptive 0 6.6 C disease 0 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.33435 disease 3 +1341 Fitness: 1.33435 Genotype: Fch1: A coadaptive 9.1 6.1 B coadaptive 0 6.6 C disease 0 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.33435 disease 3 +1342 Fitness: 13.3514 Genotype: Fch1: A coadaptive 7.4 8 B coadaptive 7.2 8.6 C disease 0 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 13.3514 disease 3.5 +1343 Fitness: 13.3514 Genotype: Fch1: A coadaptive 7.4 8 B coadaptive 7.2 8.6 C disease 0 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 13.3514 disease 3.5 +1344 Fitness: 13.3514 Genotype: Fch1: A coadaptive 7.4 8 B coadaptive 7.2 8.6 C disease 0 1 D disease 0.5 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 13.3514 disease 3.5 +1345 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.6 B coadaptive 9.6 8 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1346 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.6 B coadaptive 9.6 8 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1347 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.6 B coadaptive 9.6 8 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1348 Fitness: 14.2837 Genotype: Fch1: A coadaptive 2.3 9.4 B coadaptive 5.4 7.6 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.2837 disease 2 +1349 Fitness: 14.2837 Genotype: Fch1: A coadaptive 2.3 9.4 B coadaptive 5.4 7.6 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.2837 disease 2 +1350 Fitness: 14.2837 Genotype: Fch1: A coadaptive 2.3 9.4 B coadaptive 5.4 7.6 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.2837 disease 2 +1351 Fitness: 13.6134 Genotype: Fch1: A coadaptive 9.1 2.2 B coadaptive 9.2 4.5 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.6134 disease 3.5 +1352 Fitness: 13.6134 Genotype: Fch1: A coadaptive 9.1 2.2 B coadaptive 9.2 4.5 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.6134 disease 3.5 +1353 Fitness: 13.6134 Genotype: Fch1: A coadaptive 9.1 2.2 B coadaptive 9.2 4.5 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.6134 disease 3.5 +1354 Fitness: 9.9392 Genotype: Fch1: A coadaptive 7.8 5.8 B coadaptive 0.4 8.4 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.9392 disease 3.5 +1355 Fitness: 9.9392 Genotype: Fch1: A coadaptive 7.8 5.8 B coadaptive 0.4 8.4 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.9392 disease 3.5 +1356 Fitness: 9.9392 Genotype: Fch1: A coadaptive 7.8 5.8 B coadaptive 0.4 8.4 C disease 0.5 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 9.9392 disease 3.5 +1357 Fitness: 0 Genotype: Fch1: A coadaptive 8.5 9.3 B coadaptive 4.6 2 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1358 Fitness: 0 Genotype: Fch1: A coadaptive 8.5 9.3 B coadaptive 4.6 2 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1359 Fitness: 0 Genotype: Fch1: A coadaptive 8.5 9.3 B coadaptive 4.6 2 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1360 Fitness: 11.4955 Genotype: Fch1: A coadaptive 2.9 5.8 B coadaptive 7.2 3.4 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.4955 disease 3.5 +1361 Fitness: 11.4955 Genotype: Fch1: A coadaptive 2.9 5.8 B coadaptive 7.2 3.4 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.4955 disease 3.5 +1362 Fitness: 11.4955 Genotype: Fch1: A coadaptive 2.9 5.8 B coadaptive 7.2 3.4 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.4955 disease 3.5 +1363 Fitness: 7.57391 Genotype: Fch1: A coadaptive 2.5 8.6 B coadaptive 5.8 0.6 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.57391 disease 2 +1364 Fitness: 7.57391 Genotype: Fch1: A coadaptive 2.5 8.6 B coadaptive 5.8 0.6 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.57391 disease 2 +1365 Fitness: 7.57391 Genotype: Fch1: A coadaptive 2.5 8.6 B coadaptive 5.8 0.6 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 7.57391 disease 2 +1366 Fitness: 4.23799 Genotype: Fch1: A coadaptive 2 7 B coadaptive 0.9 3.2 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.23799 disease 2.5 +1367 Fitness: 4.23799 Genotype: Fch1: A coadaptive 2 7 B coadaptive 0.9 3.2 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.23799 disease 2.5 +1368 Fitness: 4.23799 Genotype: Fch1: A coadaptive 2 7 B coadaptive 0.9 3.2 C disease 0 1 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 4.23799 disease 2.5 +1369 Fitness: 3.71018 Genotype: Fch1: A coadaptive 1.2 2.3 B coadaptive 1.6 5 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.71018 disease 2.5 +1370 Fitness: 3.71018 Genotype: Fch1: A coadaptive 1.2 2.3 B coadaptive 1.6 5 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.71018 disease 2.5 +1371 Fitness: 3.71018 Genotype: Fch1: A coadaptive 1.2 2.3 B coadaptive 1.6 5 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 3.71018 disease 2.5 +1372 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.8 B coadaptive 8.4 8.4 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1373 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.8 B coadaptive 8.4 8.4 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1374 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.8 B coadaptive 8.4 8.4 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1375 Fitness: 0.428406 Genotype: Fch1: A coadaptive 9 6.2 B coadaptive 0.6 5.7 C disease 1 0 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.428406 disease 3.5 +1376 Fitness: 0.428406 Genotype: Fch1: A coadaptive 9 6.2 B coadaptive 0.6 5.7 C disease 1 0 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.428406 disease 3.5 +1377 Fitness: 0.428406 Genotype: Fch1: A coadaptive 9 6.2 B coadaptive 0.6 5.7 C disease 1 0 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0.428406 disease 3.5 +1378 Fitness: 4.9745 Genotype: Fch1: A coadaptive 2 8.9 B coadaptive 4.1 1 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.9745 disease 3 +1379 Fitness: 4.9745 Genotype: Fch1: A coadaptive 2 8.9 B coadaptive 4.1 1 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.9745 disease 3 +1380 Fitness: 4.9745 Genotype: Fch1: A coadaptive 2 8.9 B coadaptive 4.1 1 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.9745 disease 3 +1381 Fitness: 6.29855 Genotype: Fch1: A coadaptive 4.7 0.9 B coadaptive 5 5.6 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 6.29855 disease 3 +1382 Fitness: 6.29855 Genotype: Fch1: A coadaptive 4.7 0.9 B coadaptive 5 5.6 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 6.29855 disease 3 +1383 Fitness: 6.29855 Genotype: Fch1: A coadaptive 4.7 0.9 B coadaptive 5 5.6 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 6.29855 disease 3 +1384 Fitness: 2.38551 Genotype: Fch1: A coadaptive 2 1.9 B coadaptive 0.2 2.8 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.38551 disease 1.5 +1385 Fitness: 2.38551 Genotype: Fch1: A coadaptive 2 1.9 B coadaptive 0.2 2.8 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.38551 disease 1.5 +1386 Fitness: 2.38551 Genotype: Fch1: A coadaptive 2 1.9 B coadaptive 0.2 2.8 C disease 0 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 2.38551 disease 1.5 +1387 Fitness: 13.7064 Genotype: Fch1: A coadaptive 6.6 5.7 B coadaptive 1.7 9.1 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.7064 disease 2.5 +1388 Fitness: 13.7064 Genotype: Fch1: A coadaptive 6.6 5.7 B coadaptive 1.7 9.1 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.7064 disease 2.5 +1389 Fitness: 13.7064 Genotype: Fch1: A coadaptive 6.6 5.7 B coadaptive 1.7 9.1 C disease 1 0.5 D disease 0 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 13.7064 disease 2.5 +1390 Fitness: 9.03353 Genotype: Fch1: A coadaptive 5.3 1.9 B coadaptive 0.5 7.8 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.03353 disease 2.5 +1391 Fitness: 9.03353 Genotype: Fch1: A coadaptive 5.3 1.9 B coadaptive 0.5 7.8 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.03353 disease 2.5 +1392 Fitness: 9.03353 Genotype: Fch1: A coadaptive 5.3 1.9 B coadaptive 0.5 7.8 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.03353 disease 2.5 +1393 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 7 9.9 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1394 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 7 9.9 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1395 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 7 9.9 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1396 Fitness: 2.61883 Genotype: Fch1: A coadaptive 7.8 0.3 B coadaptive 9.6 6.7 C disease 0 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.61883 disease 3 +1397 Fitness: 2.61883 Genotype: Fch1: A coadaptive 7.8 0.3 B coadaptive 9.6 6.7 C disease 0 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.61883 disease 3 +1398 Fitness: 2.61883 Genotype: Fch1: A coadaptive 7.8 0.3 B coadaptive 9.6 6.7 C disease 0 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 2.61883 disease 3 +1399 Fitness: 8.40571 Genotype: Fch1: A coadaptive 1.6 9.9 B coadaptive 9.3 7.8 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.40571 disease 3.5 +1400 Fitness: 8.40571 Genotype: Fch1: A coadaptive 1.6 9.9 B coadaptive 9.3 7.8 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.40571 disease 3.5 +1401 Fitness: 8.40571 Genotype: Fch1: A coadaptive 1.6 9.9 B coadaptive 9.3 7.8 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 8.40571 disease 3.5 +1402 Fitness: 2.95171 Genotype: Fch1: A coadaptive 3.7 0 B coadaptive 6.7 3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.95171 disease 2.5 +1403 Fitness: 2.95171 Genotype: Fch1: A coadaptive 3.7 0 B coadaptive 6.7 3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.95171 disease 2.5 +1404 Fitness: 2.95171 Genotype: Fch1: A coadaptive 3.7 0 B coadaptive 6.7 3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 2.95171 disease 2.5 +1405 Fitness: 0 Genotype: Fch1: A coadaptive 0 4.2 B coadaptive 7.7 7.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1406 Fitness: 0 Genotype: Fch1: A coadaptive 0 4.2 B coadaptive 7.7 7.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1407 Fitness: 0 Genotype: Fch1: A coadaptive 0 4.2 B coadaptive 7.7 7.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1408 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.3 B coadaptive 0.6 1.3 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1409 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.3 B coadaptive 0.6 1.3 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1410 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.3 B coadaptive 0.6 1.3 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1411 Fitness: 14.0347 Genotype: Fch1: A coadaptive 6.2 5.1 B coadaptive 6.9 5.9 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.0347 disease 3.5 +1412 Fitness: 14.0347 Genotype: Fch1: A coadaptive 6.2 5.1 B coadaptive 6.9 5.9 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.0347 disease 3.5 +1413 Fitness: 14.0347 Genotype: Fch1: A coadaptive 6.2 5.1 B coadaptive 6.9 5.9 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.0347 disease 3.5 +1414 Fitness: 10.2399 Genotype: Fch1: A coadaptive 2.1 6.2 B coadaptive 2.4 10 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.2399 disease 2.5 +1415 Fitness: 10.2399 Genotype: Fch1: A coadaptive 2.1 6.2 B coadaptive 2.4 10 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.2399 disease 2.5 +1416 Fitness: 10.2399 Genotype: Fch1: A coadaptive 2.1 6.2 B coadaptive 2.4 10 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 10.2399 disease 2.5 +1417 Fitness: 0 Genotype: Fch1: A coadaptive 1.3 1.2 B coadaptive 9.9 5.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1418 Fitness: 0 Genotype: Fch1: A coadaptive 1.3 1.2 B coadaptive 9.9 5.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1419 Fitness: 0 Genotype: Fch1: A coadaptive 1.3 1.2 B coadaptive 9.9 5.3 C disease 0.5 0 D disease 0.5 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1420 Fitness: 6.34555 Genotype: Fch1: A coadaptive 4.8 1.8 B coadaptive 4.6 1 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.34555 disease 3.5 +1421 Fitness: 6.34555 Genotype: Fch1: A coadaptive 4.8 1.8 B coadaptive 4.6 1 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.34555 disease 3.5 +1422 Fitness: 6.34555 Genotype: Fch1: A coadaptive 4.8 1.8 B coadaptive 4.6 1 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.34555 disease 3.5 +1423 Fitness: 6.60546 Genotype: Fch1: A coadaptive 4.6 1 B coadaptive 1 6.1 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 6.60546 disease 2 +1424 Fitness: 6.60546 Genotype: Fch1: A coadaptive 4.6 1 B coadaptive 1 6.1 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 6.60546 disease 2 +1425 Fitness: 6.60546 Genotype: Fch1: A coadaptive 4.6 1 B coadaptive 1 6.1 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 6.60546 disease 2 +1426 Fitness: 4.1544 Genotype: Fch1: A coadaptive 1.2 6.2 B coadaptive 3.2 0.6 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.1544 disease 2 +1427 Fitness: 4.1544 Genotype: Fch1: A coadaptive 1.2 6.2 B coadaptive 3.2 0.6 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.1544 disease 2 +1428 Fitness: 4.1544 Genotype: Fch1: A coadaptive 1.2 6.2 B coadaptive 3.2 0.6 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.1544 disease 2 +1429 Fitness: 6.16398 Genotype: Fch1: A coadaptive 0.5 6.2 B coadaptive 6.1 6.9 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.16398 disease 2.5 +1430 Fitness: 6.16398 Genotype: Fch1: A coadaptive 0.5 6.2 B coadaptive 6.1 6.9 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.16398 disease 2.5 +1431 Fitness: 6.16398 Genotype: Fch1: A coadaptive 0.5 6.2 B coadaptive 6.1 6.9 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.16398 disease 2.5 +1432 Fitness: 10.4129 Genotype: Fch1: A coadaptive 3.8 7.8 B coadaptive 2.9 5.2 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.4129 disease 3.5 +1433 Fitness: 10.4129 Genotype: Fch1: A coadaptive 3.8 7.8 B coadaptive 2.9 5.2 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.4129 disease 3.5 +1434 Fitness: 10.4129 Genotype: Fch1: A coadaptive 3.8 7.8 B coadaptive 2.9 5.2 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.4129 disease 3.5 +1435 Fitness: 4.20766 Genotype: Fch1: A coadaptive 3.3 1.6 B coadaptive 2.2 2.3 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.20766 disease 2.5 +1436 Fitness: 4.20766 Genotype: Fch1: A coadaptive 3.3 1.6 B coadaptive 2.2 2.3 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.20766 disease 2.5 +1437 Fitness: 4.20766 Genotype: Fch1: A coadaptive 3.3 1.6 B coadaptive 2.2 2.3 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 4.20766 disease 2.5 +1438 Fitness: 4.29323 Genotype: Fch1: A coadaptive 2.6 7.3 B coadaptive 2.6 1.8 C disease 0.5 1 D disease 1 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.29323 disease 4 +1439 Fitness: 4.29323 Genotype: Fch1: A coadaptive 2.6 7.3 B coadaptive 2.6 1.8 C disease 0.5 1 D disease 1 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.29323 disease 4 +1440 Fitness: 4.29323 Genotype: Fch1: A coadaptive 2.6 7.3 B coadaptive 2.6 1.8 C disease 0.5 1 D disease 1 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.29323 disease 4 +1441 Fitness: 7.01855 Genotype: Fch1: A coadaptive 5.1 0.6 B coadaptive 4.6 3.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.01855 disease 2.5 +1442 Fitness: 7.01855 Genotype: Fch1: A coadaptive 5.1 0.6 B coadaptive 4.6 3.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.01855 disease 2.5 +1443 Fitness: 7.01855 Genotype: Fch1: A coadaptive 5.1 0.6 B coadaptive 4.6 3.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.01855 disease 2.5 +1444 Fitness: 2.82718 Genotype: Fch1: A coadaptive 1.2 1.8 B coadaptive 4.5 0.6 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 2.82718 disease 3.5 +1445 Fitness: 2.82718 Genotype: Fch1: A coadaptive 1.2 1.8 B coadaptive 4.5 0.6 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 2.82718 disease 3.5 +1446 Fitness: 2.82718 Genotype: Fch1: A coadaptive 1.2 1.8 B coadaptive 4.5 0.6 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 2.82718 disease 3.5 +1447 Fitness: 13.4629 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.4 4.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.4629 disease 2.5 +1448 Fitness: 13.4629 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.4 4.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.4629 disease 2.5 +1449 Fitness: 13.4629 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.4 4.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.4629 disease 2.5 +1450 Fitness: 13.9628 Genotype: Fch1: A coadaptive 8.4 5.2 B coadaptive 8.7 2.9 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.9628 disease 2.5 +1451 Fitness: 13.9628 Genotype: Fch1: A coadaptive 8.4 5.2 B coadaptive 8.7 2.9 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.9628 disease 2.5 +1452 Fitness: 13.9628 Genotype: Fch1: A coadaptive 8.4 5.2 B coadaptive 8.7 2.9 C disease 0.5 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 13.9628 disease 2.5 +1453 Fitness: 4.29519 Genotype: Fch1: A coadaptive 5.4 0.3 B coadaptive 5.9 6.7 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.29519 disease 2 +1454 Fitness: 4.29519 Genotype: Fch1: A coadaptive 5.4 0.3 B coadaptive 5.9 6.7 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.29519 disease 2 +1455 Fitness: 4.29519 Genotype: Fch1: A coadaptive 5.4 0.3 B coadaptive 5.9 6.7 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.29519 disease 2 +1456 Fitness: 11.8133 Genotype: Fch1: A coadaptive 0 9 B coadaptive 7.7 2.7 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 11.8133 disease 3.5 +1457 Fitness: 11.8133 Genotype: Fch1: A coadaptive 0 9 B coadaptive 7.7 2.7 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 11.8133 disease 3.5 +1458 Fitness: 11.8133 Genotype: Fch1: A coadaptive 0 9 B coadaptive 7.7 2.7 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 11.8133 disease 3.5 +1459 Fitness: 10.9127 Genotype: Fch1: A coadaptive 9.7 6.6 B coadaptive 8.2 9.2 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.9127 disease 3 +1460 Fitness: 10.9127 Genotype: Fch1: A coadaptive 9.7 6.6 B coadaptive 8.2 9.2 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.9127 disease 3 +1461 Fitness: 10.9127 Genotype: Fch1: A coadaptive 9.7 6.6 B coadaptive 8.2 9.2 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 10.9127 disease 3 +1462 Fitness: 2.96195 Genotype: Fch1: A coadaptive 1 2.4 B coadaptive 3.3 1.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.96195 disease 3 +1463 Fitness: 2.96195 Genotype: Fch1: A coadaptive 1 2.4 B coadaptive 3.3 1.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.96195 disease 3 +1464 Fitness: 2.96195 Genotype: Fch1: A coadaptive 1 2.4 B coadaptive 3.3 1.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.96195 disease 3 +1465 Fitness: 7.6348 Genotype: Fch1: A coadaptive 0.9 5.9 B coadaptive 7.9 4.1 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.6348 disease 3.5 +1466 Fitness: 7.6348 Genotype: Fch1: A coadaptive 0.9 5.9 B coadaptive 7.9 4.1 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.6348 disease 3.5 +1467 Fitness: 7.6348 Genotype: Fch1: A coadaptive 0.9 5.9 B coadaptive 7.9 4.1 C disease 0.5 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 7.6348 disease 3.5 +1468 Fitness: 11.5012 Genotype: Fch1: A coadaptive 1.9 8.9 B coadaptive 4.5 4.2 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.5012 disease 3 +1469 Fitness: 11.5012 Genotype: Fch1: A coadaptive 1.9 8.9 B coadaptive 4.5 4.2 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.5012 disease 3 +1470 Fitness: 11.5012 Genotype: Fch1: A coadaptive 1.9 8.9 B coadaptive 4.5 4.2 C disease 0.5 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.5012 disease 3 +1471 Fitness: 13.8277 Genotype: Fch1: A coadaptive 3.9 7.5 B coadaptive 9.4 1.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.8277 disease 2 +1472 Fitness: 13.8277 Genotype: Fch1: A coadaptive 3.9 7.5 B coadaptive 9.4 1.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.8277 disease 2 +1473 Fitness: 13.8277 Genotype: Fch1: A coadaptive 3.9 7.5 B coadaptive 9.4 1.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.8277 disease 2 +1474 Fitness: 11.5441 Genotype: Fch1: A coadaptive 0.4 9.1 B coadaptive 0.9 8.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.5441 disease 3 +1475 Fitness: 11.5441 Genotype: Fch1: A coadaptive 0.4 9.1 B coadaptive 0.9 8.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.5441 disease 3 +1476 Fitness: 11.5441 Genotype: Fch1: A coadaptive 0.4 9.1 B coadaptive 0.9 8.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.5441 disease 3 +1477 Fitness: 8.80647 Genotype: Fch1: A coadaptive 5.7 1.2 B coadaptive 5.3 3.3 C disease 1 1 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.80647 disease 4 +1478 Fitness: 8.80647 Genotype: Fch1: A coadaptive 5.7 1.2 B coadaptive 5.3 3.3 C disease 1 1 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.80647 disease 4 +1479 Fitness: 8.80647 Genotype: Fch1: A coadaptive 5.7 1.2 B coadaptive 5.3 3.3 C disease 1 1 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.80647 disease 4 +1480 Fitness: 10.2837 Genotype: Fch1: A coadaptive 1.5 6.3 B coadaptive 9.1 1.3 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.2837 disease 2.5 +1481 Fitness: 10.2837 Genotype: Fch1: A coadaptive 1.5 6.3 B coadaptive 9.1 1.3 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.2837 disease 2.5 +1482 Fitness: 10.2837 Genotype: Fch1: A coadaptive 1.5 6.3 B coadaptive 9.1 1.3 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.2837 disease 2.5 +1483 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.2 B coadaptive 4.7 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1484 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.2 B coadaptive 4.7 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1485 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.2 B coadaptive 4.7 0.6 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1486 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 0.6 B coadaptive 2.8 4.2 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1487 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 0.6 B coadaptive 2.8 4.2 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1488 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 0.6 B coadaptive 2.8 4.2 C disease 1 0.5 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1489 Fitness: 8.0105 Genotype: Fch1: A coadaptive 6.3 0 B coadaptive 2.2 7.5 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.0105 disease 3.5 +1490 Fitness: 8.0105 Genotype: Fch1: A coadaptive 6.3 0 B coadaptive 2.2 7.5 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.0105 disease 3.5 +1491 Fitness: 8.0105 Genotype: Fch1: A coadaptive 6.3 0 B coadaptive 2.2 7.5 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.0105 disease 3.5 +1492 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 7.8 B coadaptive 1.3 1.7 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1493 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 7.8 B coadaptive 1.3 1.7 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1494 Fitness: 0 Genotype: Fch1: A coadaptive 4.3 7.8 B coadaptive 1.3 1.7 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1495 Fitness: 9.51824 Genotype: Fch1: A coadaptive 5.1 2.2 B coadaptive 5.9 4.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.51824 disease 3 +1496 Fitness: 9.51824 Genotype: Fch1: A coadaptive 5.1 2.2 B coadaptive 5.9 4.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.51824 disease 3 +1497 Fitness: 9.51824 Genotype: Fch1: A coadaptive 5.1 2.2 B coadaptive 5.9 4.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.51824 disease 3 +1498 Fitness: 5.53409 Genotype: Fch1: A coadaptive 7 8.3 B coadaptive 7.7 0.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.53409 disease 2 +1499 Fitness: 5.53409 Genotype: Fch1: A coadaptive 7 8.3 B coadaptive 7.7 0.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.53409 disease 2 +1500 Fitness: 5.53409 Genotype: Fch1: A coadaptive 7 8.3 B coadaptive 7.7 0.5 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 5.53409 disease 2 +1501 Fitness: 4.38359 Genotype: Fch1: A coadaptive 3.2 0.8 B coadaptive 4.2 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 4.38359 disease 3 +1502 Fitness: 4.38359 Genotype: Fch1: A coadaptive 3.2 0.8 B coadaptive 4.2 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 4.38359 disease 3 +1503 Fitness: 4.38359 Genotype: Fch1: A coadaptive 3.2 0.8 B coadaptive 4.2 2.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 4.38359 disease 3 +1504 Fitness: 9.21601 Genotype: Fch1: A coadaptive 7.3 3 B coadaptive 4.8 2.3 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.21601 disease 2.5 +1505 Fitness: 9.21601 Genotype: Fch1: A coadaptive 7.3 3 B coadaptive 4.8 2.3 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.21601 disease 2.5 +1506 Fitness: 9.21601 Genotype: Fch1: A coadaptive 7.3 3 B coadaptive 4.8 2.3 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.21601 disease 2.5 +1507 Fitness: 9.475 Genotype: Fch1: A coadaptive 7.4 0.4 B coadaptive 2.9 9.3 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 9.475 disease 3.5 +1508 Fitness: 9.475 Genotype: Fch1: A coadaptive 7.4 0.4 B coadaptive 2.9 9.3 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 9.475 disease 3.5 +1509 Fitness: 9.475 Genotype: Fch1: A coadaptive 7.4 0.4 B coadaptive 2.9 9.3 C disease 1 0 D disease 0 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 9.475 disease 3.5 +1510 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 6.4 B coadaptive 2.3 1.5 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1511 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 6.4 B coadaptive 2.3 1.5 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1512 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 6.4 B coadaptive 2.3 1.5 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1513 Fitness: 9.70829 Genotype: Fch1: A coadaptive 6.2 5.1 B coadaptive 4.9 2.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.70829 disease 3.5 +1514 Fitness: 9.70829 Genotype: Fch1: A coadaptive 6.2 5.1 B coadaptive 4.9 2.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.70829 disease 3.5 +1515 Fitness: 9.70829 Genotype: Fch1: A coadaptive 6.2 5.1 B coadaptive 4.9 2.7 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.70829 disease 3.5 +1516 Fitness: 11.454 Genotype: Fch1: A coadaptive 6.9 6.3 B coadaptive 8.1 1.3 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.454 disease 3.5 +1517 Fitness: 11.454 Genotype: Fch1: A coadaptive 6.9 6.3 B coadaptive 8.1 1.3 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.454 disease 3.5 +1518 Fitness: 11.454 Genotype: Fch1: A coadaptive 6.9 6.3 B coadaptive 8.1 1.3 C disease 1 0 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 11.454 disease 3.5 +1519 Fitness: 3.5325 Genotype: Fch1: A coadaptive 5.4 6 B coadaptive 9.2 9.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 3.5325 disease 3 +1520 Fitness: 3.5325 Genotype: Fch1: A coadaptive 5.4 6 B coadaptive 9.2 9.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 3.5325 disease 3 +1521 Fitness: 3.5325 Genotype: Fch1: A coadaptive 5.4 6 B coadaptive 9.2 9.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 3.5325 disease 3 +1522 Fitness: 14.5866 Genotype: Fch1: A coadaptive 5.6 8.8 B coadaptive 8.1 5.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 14.5866 disease 3.5 +1523 Fitness: 14.5866 Genotype: Fch1: A coadaptive 5.6 8.8 B coadaptive 8.1 5.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 14.5866 disease 3.5 +1524 Fitness: 14.5866 Genotype: Fch1: A coadaptive 5.6 8.8 B coadaptive 8.1 5.6 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 14.5866 disease 3.5 +1525 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 2.6 B coadaptive 8.4 7.3 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1526 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 2.6 B coadaptive 8.4 7.3 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1527 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 2.6 B coadaptive 8.4 7.3 C disease 0 0 D disease 1 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1528 Fitness: 10.1467 Genotype: Fch1: A coadaptive 0.8 9.2 B coadaptive 3.1 4.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.1467 disease 4 +1529 Fitness: 10.1467 Genotype: Fch1: A coadaptive 0.8 9.2 B coadaptive 3.1 4.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.1467 disease 4 +1530 Fitness: 10.1467 Genotype: Fch1: A coadaptive 0.8 9.2 B coadaptive 3.1 4.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 10.1467 disease 4 +1531 Fitness: 2.39689 Genotype: Fch1: A coadaptive 3.9 6.6 B coadaptive 2.1 1.7 C disease 0 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 2.39689 disease 2.5 +1532 Fitness: 2.39689 Genotype: Fch1: A coadaptive 3.9 6.6 B coadaptive 2.1 1.7 C disease 0 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 2.39689 disease 2.5 +1533 Fitness: 2.39689 Genotype: Fch1: A coadaptive 3.9 6.6 B coadaptive 2.1 1.7 C disease 0 0 D disease 1 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 2.39689 disease 2.5 +1534 Fitness: 14.1511 Genotype: Fch1: A coadaptive 9.6 5.5 B coadaptive 4.5 9.3 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 14.1511 disease 3.5 +1535 Fitness: 14.1511 Genotype: Fch1: A coadaptive 9.6 5.5 B coadaptive 4.5 9.3 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 14.1511 disease 3.5 +1536 Fitness: 14.1511 Genotype: Fch1: A coadaptive 9.6 5.5 B coadaptive 4.5 9.3 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 14.1511 disease 3.5 +1537 Fitness: 0.902894 Genotype: Fch1: A coadaptive 0.6 1.8 B coadaptive 1.6 0.1 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0.902894 disease 3 +1538 Fitness: 0.902894 Genotype: Fch1: A coadaptive 0.6 1.8 B coadaptive 1.6 0.1 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0.902894 disease 3 +1539 Fitness: 0.902894 Genotype: Fch1: A coadaptive 0.6 1.8 B coadaptive 1.6 0.1 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0.902894 disease 3 +1540 Fitness: 8.06129 Genotype: Fch1: A coadaptive 5.9 1.4 B coadaptive 4.1 8.5 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 8.06129 disease 3.5 +1541 Fitness: 8.06129 Genotype: Fch1: A coadaptive 5.9 1.4 B coadaptive 4.1 8.5 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 8.06129 disease 3.5 +1542 Fitness: 8.06129 Genotype: Fch1: A coadaptive 5.9 1.4 B coadaptive 4.1 8.5 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 8.06129 disease 3.5 +1543 Fitness: 10.3263 Genotype: Fch1: A coadaptive 1.5 7.2 B coadaptive 9.1 4 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 10.3263 disease 2 +1544 Fitness: 10.3263 Genotype: Fch1: A coadaptive 1.5 7.2 B coadaptive 9.1 4 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 10.3263 disease 2 +1545 Fitness: 10.3263 Genotype: Fch1: A coadaptive 1.5 7.2 B coadaptive 9.1 4 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 10.3263 disease 2 +1546 Fitness: 14.0099 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 2.7 8.8 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.0099 disease 2.5 +1547 Fitness: 14.0099 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 2.7 8.8 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.0099 disease 2.5 +1548 Fitness: 14.0099 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 2.7 8.8 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 14.0099 disease 2.5 +1549 Fitness: 1.25995 Genotype: Fch1: A coadaptive 6.3 1.8 B coadaptive 2.2 0.1 C disease 1 0.5 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 1.25995 disease 4 +1550 Fitness: 1.25995 Genotype: Fch1: A coadaptive 6.3 1.8 B coadaptive 2.2 0.1 C disease 1 0.5 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 1.25995 disease 4 +1551 Fitness: 1.25995 Genotype: Fch1: A coadaptive 6.3 1.8 B coadaptive 2.2 0.1 C disease 1 0.5 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 1.25995 disease 4 +1552 Fitness: 5.39306 Genotype: Fch1: A coadaptive 5.1 7.6 B coadaptive 5.9 0.3 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.39306 disease 2.5 +1553 Fitness: 5.39306 Genotype: Fch1: A coadaptive 5.1 7.6 B coadaptive 5.9 0.3 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.39306 disease 2.5 +1554 Fitness: 5.39306 Genotype: Fch1: A coadaptive 5.1 7.6 B coadaptive 5.9 0.3 C disease 1 0.5 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.39306 disease 2.5 +1555 Fitness: 6.74905 Genotype: Fch1: A coadaptive 8.3 5.1 B coadaptive 6 1.2 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.74905 disease 2 +1556 Fitness: 6.74905 Genotype: Fch1: A coadaptive 8.3 5.1 B coadaptive 6 1.2 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.74905 disease 2 +1557 Fitness: 6.74905 Genotype: Fch1: A coadaptive 8.3 5.1 B coadaptive 6 1.2 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.74905 disease 2 +1558 Fitness: 6.81615 Genotype: Fch1: A coadaptive 6.3 9.3 B coadaptive 7 2 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.81615 disease 3.5 +1559 Fitness: 6.81615 Genotype: Fch1: A coadaptive 6.3 9.3 B coadaptive 7 2 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.81615 disease 3.5 +1560 Fitness: 6.81615 Genotype: Fch1: A coadaptive 6.3 9.3 B coadaptive 7 2 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 6.81615 disease 3.5 +1561 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 2.4 B coadaptive 7.2 8.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1562 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 2.4 B coadaptive 7.2 8.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1563 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 2.4 B coadaptive 7.2 8.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1564 Fitness: 9.802 Genotype: Fch1: A coadaptive 7 8.6 B coadaptive 1.5 8.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.802 disease 2 +1565 Fitness: 9.802 Genotype: Fch1: A coadaptive 7 8.6 B coadaptive 1.5 8.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.802 disease 2 +1566 Fitness: 9.802 Genotype: Fch1: A coadaptive 7 8.6 B coadaptive 1.5 8.9 C disease 0.5 0.5 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 9.802 disease 2 +1567 Fitness: 11.7902 Genotype: Fch1: A coadaptive 3.9 5.2 B coadaptive 3.4 8.6 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.7902 disease 4 +1568 Fitness: 11.7902 Genotype: Fch1: A coadaptive 3.9 5.2 B coadaptive 3.4 8.6 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.7902 disease 4 +1569 Fitness: 11.7902 Genotype: Fch1: A coadaptive 3.9 5.2 B coadaptive 3.4 8.6 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.7902 disease 4 +1570 Fitness: 0 Genotype: Fch1: A coadaptive 10 8 B coadaptive 3.1 3.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1571 Fitness: 0 Genotype: Fch1: A coadaptive 10 8 B coadaptive 3.1 3.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1572 Fitness: 0 Genotype: Fch1: A coadaptive 10 8 B coadaptive 3.1 3.7 C disease 0.5 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1573 Fitness: 8.88923 Genotype: Fch1: A coadaptive 1.3 6.2 B coadaptive 8.8 3.4 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.88923 disease 3 +1574 Fitness: 8.88923 Genotype: Fch1: A coadaptive 1.3 6.2 B coadaptive 8.8 3.4 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.88923 disease 3 +1575 Fitness: 8.88923 Genotype: Fch1: A coadaptive 1.3 6.2 B coadaptive 8.8 3.4 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.88923 disease 3 +1576 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 8.9 B coadaptive 1.3 1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1577 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 8.9 B coadaptive 1.3 1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1578 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 8.9 B coadaptive 1.3 1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +1579 Fitness: 5.2493 Genotype: Fch1: A coadaptive 2.5 3.3 B coadaptive 4.7 0.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 5.2493 disease 3.5 +1580 Fitness: 5.2493 Genotype: Fch1: A coadaptive 2.5 3.3 B coadaptive 4.7 0.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 5.2493 disease 3.5 +1581 Fitness: 5.2493 Genotype: Fch1: A coadaptive 2.5 3.3 B coadaptive 4.7 0.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 5.2493 disease 3.5 +1582 Fitness: 13.3211 Genotype: Fch1: A coadaptive 8.6 1.9 B coadaptive 6.5 4.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 13.3211 disease 3 +1583 Fitness: 13.3211 Genotype: Fch1: A coadaptive 8.6 1.9 B coadaptive 6.5 4.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 13.3211 disease 3 +1584 Fitness: 13.3211 Genotype: Fch1: A coadaptive 8.6 1.9 B coadaptive 6.5 4.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 13.3211 disease 3 +1585 Fitness: 5.9638 Genotype: Fch1: A coadaptive 0.6 5.3 B coadaptive 4.4 7.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 5.9638 disease 2.5 +1586 Fitness: 5.9638 Genotype: Fch1: A coadaptive 0.6 5.3 B coadaptive 4.4 7.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 5.9638 disease 2.5 +1587 Fitness: 5.9638 Genotype: Fch1: A coadaptive 0.6 5.3 B coadaptive 4.4 7.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 5.9638 disease 2.5 +1588 Fitness: 9.09131 Genotype: Fch1: A coadaptive 8.9 3.9 B coadaptive 4.2 3.7 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.09131 disease 3 +1589 Fitness: 9.09131 Genotype: Fch1: A coadaptive 8.9 3.9 B coadaptive 4.2 3.7 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.09131 disease 3 +1590 Fitness: 9.09131 Genotype: Fch1: A coadaptive 8.9 3.9 B coadaptive 4.2 3.7 C disease 0 1 D disease 0.5 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.09131 disease 3 +1591 Fitness: 10.8557 Genotype: Fch1: A coadaptive 7.8 0.5 B coadaptive 5.2 6.1 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.8557 disease 3 +1592 Fitness: 10.8557 Genotype: Fch1: A coadaptive 7.8 0.5 B coadaptive 5.2 6.1 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.8557 disease 3 +1593 Fitness: 10.8557 Genotype: Fch1: A coadaptive 7.8 0.5 B coadaptive 5.2 6.1 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.8557 disease 3 +1594 Fitness: 10.2602 Genotype: Fch1: A coadaptive 1.6 9 B coadaptive 5.1 2.7 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.2602 disease 3 +1595 Fitness: 10.2602 Genotype: Fch1: A coadaptive 1.6 9 B coadaptive 5.1 2.7 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.2602 disease 3 +1596 Fitness: 10.2602 Genotype: Fch1: A coadaptive 1.6 9 B coadaptive 5.1 2.7 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 10.2602 disease 3 +1597 Fitness: 8.63898 Genotype: Fch1: A coadaptive 4.8 4.2 B coadaptive 3.7 3 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.63898 disease 1.5 +1598 Fitness: 8.63898 Genotype: Fch1: A coadaptive 4.8 4.2 B coadaptive 3.7 3 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.63898 disease 1.5 +1599 Fitness: 8.63898 Genotype: Fch1: A coadaptive 4.8 4.2 B coadaptive 3.7 3 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.63898 disease 1.5 +1600 Fitness: 11.3588 Genotype: Fch1: A coadaptive 5.8 2.9 B coadaptive 8.4 3.2 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.3588 disease 3.5 +1601 Fitness: 11.3588 Genotype: Fch1: A coadaptive 5.8 2.9 B coadaptive 8.4 3.2 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.3588 disease 3.5 +1602 Fitness: 11.3588 Genotype: Fch1: A coadaptive 5.8 2.9 B coadaptive 8.4 3.2 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 11.3588 disease 3.5 +1603 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 3.3 B coadaptive 0.4 1.5 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1604 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 3.3 B coadaptive 0.4 1.5 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1605 Fitness: 0 Genotype: Fch1: A coadaptive 7.7 3.3 B coadaptive 0.4 1.5 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1606 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.4 B coadaptive 2.9 0.5 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1607 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.4 B coadaptive 2.9 0.5 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1608 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 9.4 B coadaptive 2.9 0.5 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1609 Fitness: 13.8003 Genotype: Fch1: A coadaptive 6.2 8.5 B coadaptive 5.7 6.7 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 13.8003 disease 3 +1610 Fitness: 13.8003 Genotype: Fch1: A coadaptive 6.2 8.5 B coadaptive 5.7 6.7 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 13.8003 disease 3 +1611 Fitness: 13.8003 Genotype: Fch1: A coadaptive 6.2 8.5 B coadaptive 5.7 6.7 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 13.8003 disease 3 +1612 Fitness: 9.87349 Genotype: Fch1: A coadaptive 7.6 6.2 B coadaptive 2 6.9 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 9.87349 disease 3 +1613 Fitness: 9.87349 Genotype: Fch1: A coadaptive 7.6 6.2 B coadaptive 2 6.9 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 9.87349 disease 3 +1614 Fitness: 9.87349 Genotype: Fch1: A coadaptive 7.6 6.2 B coadaptive 2 6.9 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 9.87349 disease 3 +1615 Fitness: 10.6912 Genotype: Fch1: A coadaptive 3.6 5.1 B coadaptive 4.1 4.6 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.6912 disease 3 +1616 Fitness: 10.6912 Genotype: Fch1: A coadaptive 3.6 5.1 B coadaptive 4.1 4.6 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.6912 disease 3 +1617 Fitness: 10.6912 Genotype: Fch1: A coadaptive 3.6 5.1 B coadaptive 4.1 4.6 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 10.6912 disease 3 +1618 Fitness: 4.79178 Genotype: Fch1: A coadaptive 6.6 8.9 B coadaptive 1.7 6.4 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.79178 disease 1.5 +1619 Fitness: 4.79178 Genotype: Fch1: A coadaptive 6.6 8.9 B coadaptive 1.7 6.4 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.79178 disease 1.5 +1620 Fitness: 4.79178 Genotype: Fch1: A coadaptive 6.6 8.9 B coadaptive 1.7 6.4 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.79178 disease 1.5 +1621 Fitness: 10.716 Genotype: Fch1: A coadaptive 5.5 9.7 B coadaptive 6.1 4.4 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 10.716 disease 3.5 +1622 Fitness: 10.716 Genotype: Fch1: A coadaptive 5.5 9.7 B coadaptive 6.1 4.4 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 10.716 disease 3.5 +1623 Fitness: 10.716 Genotype: Fch1: A coadaptive 5.5 9.7 B coadaptive 6.1 4.4 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 10.716 disease 3.5 +1624 Fitness: 7.61718 Genotype: Fch1: A coadaptive 6.6 8.3 B coadaptive 1.7 7 C disease 0 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.61718 disease 2 +1625 Fitness: 7.61718 Genotype: Fch1: A coadaptive 6.6 8.3 B coadaptive 1.7 7 C disease 0 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.61718 disease 2 +1626 Fitness: 7.61718 Genotype: Fch1: A coadaptive 6.6 8.3 B coadaptive 1.7 7 C disease 0 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.61718 disease 2 +1627 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 1.7 B coadaptive 9.3 4.3 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1628 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 1.7 B coadaptive 9.3 4.3 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1629 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 1.7 B coadaptive 9.3 4.3 C disease 0.5 0 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1630 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 8.3 B coadaptive 0.1 2.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1631 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 8.3 B coadaptive 0.1 2.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1632 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 8.3 B coadaptive 0.1 2.1 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1633 Fitness: 7.5267 Genotype: Fch1: A coadaptive 6.1 7.7 B coadaptive 9.9 8.7 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 7.5267 disease 3 +1634 Fitness: 7.5267 Genotype: Fch1: A coadaptive 6.1 7.7 B coadaptive 9.9 8.7 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 7.5267 disease 3 +1635 Fitness: 7.5267 Genotype: Fch1: A coadaptive 6.1 7.7 B coadaptive 9.9 8.7 C disease 0.5 1 D disease 0.5 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 7.5267 disease 3 +1636 Fitness: 5.94503 Genotype: Fch1: A coadaptive 3.7 8.6 B coadaptive 5.9 0.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.94503 disease 3.5 +1637 Fitness: 5.94503 Genotype: Fch1: A coadaptive 3.7 8.6 B coadaptive 5.9 0.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.94503 disease 3.5 +1638 Fitness: 5.94503 Genotype: Fch1: A coadaptive 3.7 8.6 B coadaptive 5.9 0.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.94503 disease 3.5 +1639 Fitness: 2.44015 Genotype: Fch1: A coadaptive 1.1 1.5 B coadaptive 1 5 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.44015 disease 2.5 +1640 Fitness: 2.44015 Genotype: Fch1: A coadaptive 1.1 1.5 B coadaptive 1 5 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.44015 disease 2.5 +1641 Fitness: 2.44015 Genotype: Fch1: A coadaptive 1.1 1.5 B coadaptive 1 5 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 2.44015 disease 2.5 +1642 Fitness: 10.5038 Genotype: Fch1: A coadaptive 4.3 7.1 B coadaptive 3.5 4.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.5038 disease 3 +1643 Fitness: 10.5038 Genotype: Fch1: A coadaptive 4.3 7.1 B coadaptive 3.5 4.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.5038 disease 3 +1644 Fitness: 10.5038 Genotype: Fch1: A coadaptive 4.3 7.1 B coadaptive 3.5 4.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.5038 disease 3 +1645 Fitness: 5.75355 Genotype: Fch1: A coadaptive 2.3 4.5 B coadaptive 2.6 2.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 5.75355 disease 3 +1646 Fitness: 5.75355 Genotype: Fch1: A coadaptive 2.3 4.5 B coadaptive 2.6 2.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 5.75355 disease 3 +1647 Fitness: 5.75355 Genotype: Fch1: A coadaptive 2.3 4.5 B coadaptive 2.6 2.4 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 5.75355 disease 3 +1648 Fitness: 4.83351 Genotype: Fch1: A coadaptive 2.2 3.4 B coadaptive 4.5 0.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.83351 disease 3.5 +1649 Fitness: 4.83351 Genotype: Fch1: A coadaptive 2.2 3.4 B coadaptive 4.5 0.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.83351 disease 3.5 +1650 Fitness: 4.83351 Genotype: Fch1: A coadaptive 2.2 3.4 B coadaptive 4.5 0.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 4.83351 disease 3.5 +1651 Fitness: 5.4792 Genotype: Fch1: A coadaptive 3.8 1.2 B coadaptive 2.9 3.3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 5.4792 disease 3 +1652 Fitness: 5.4792 Genotype: Fch1: A coadaptive 3.8 1.2 B coadaptive 2.9 3.3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 5.4792 disease 3 +1653 Fitness: 5.4792 Genotype: Fch1: A coadaptive 3.8 1.2 B coadaptive 2.9 3.3 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 5.4792 disease 3 +1654 Fitness: 3.93247 Genotype: Fch1: A coadaptive 7.5 0.3 B coadaptive 1.7 2 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.93247 disease 4 +1655 Fitness: 3.93247 Genotype: Fch1: A coadaptive 7.5 0.3 B coadaptive 1.7 2 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.93247 disease 4 +1656 Fitness: 3.93247 Genotype: Fch1: A coadaptive 7.5 0.3 B coadaptive 1.7 2 C disease 0.5 1 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 3.93247 disease 4 +1657 Fitness: 8.17411 Genotype: Fch1: A coadaptive 3.5 9 B coadaptive 0.1 7.2 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 8.17411 disease 2.5 +1658 Fitness: 8.17411 Genotype: Fch1: A coadaptive 3.5 9 B coadaptive 0.1 7.2 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 8.17411 disease 2.5 +1659 Fitness: 8.17411 Genotype: Fch1: A coadaptive 3.5 9 B coadaptive 0.1 7.2 C disease 0.5 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 8.17411 disease 2.5 +1660 Fitness: 5.67052 Genotype: Fch1: A coadaptive 1.2 7.3 B coadaptive 4.5 0.3 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.67052 disease 2.5 +1661 Fitness: 5.67052 Genotype: Fch1: A coadaptive 1.2 7.3 B coadaptive 4.5 0.3 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.67052 disease 2.5 +1662 Fitness: 5.67052 Genotype: Fch1: A coadaptive 1.2 7.3 B coadaptive 4.5 0.3 C disease 1 1 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.67052 disease 2.5 +1663 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 1.8 B coadaptive 6.1 9.9 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1664 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 1.8 B coadaptive 6.1 9.9 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1665 Fitness: 0 Genotype: Fch1: A coadaptive 1.9 1.8 B coadaptive 6.1 9.9 C disease 1 1 D disease 1 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1666 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.7 B coadaptive 10 8.5 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1667 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.7 B coadaptive 10 8.5 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1668 Fitness: 0 Genotype: Fch1: A coadaptive 0 1.7 B coadaptive 10 8.5 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1669 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.6 B coadaptive 8.5 5.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1670 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.6 B coadaptive 8.5 5.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1671 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.6 B coadaptive 8.5 5.1 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1672 Fitness: 4.22465 Genotype: Fch1: A coadaptive 3.1 0.9 B coadaptive 2.2 6.4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.22465 disease 3.5 +1673 Fitness: 4.22465 Genotype: Fch1: A coadaptive 3.1 0.9 B coadaptive 2.2 6.4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.22465 disease 3.5 +1674 Fitness: 4.22465 Genotype: Fch1: A coadaptive 3.1 0.9 B coadaptive 2.2 6.4 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.22465 disease 3.5 +1675 Fitness: 11.5483 Genotype: Fch1: A coadaptive 8.5 1.7 B coadaptive 7.6 1.2 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.5483 disease 2.5 +1676 Fitness: 11.5483 Genotype: Fch1: A coadaptive 8.5 1.7 B coadaptive 7.6 1.2 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.5483 disease 2.5 +1677 Fitness: 11.5483 Genotype: Fch1: A coadaptive 8.5 1.7 B coadaptive 7.6 1.2 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.5483 disease 2.5 +1678 Fitness: 0.313529 Genotype: Fch1: A coadaptive 5.4 2.9 B coadaptive 7.9 9.3 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0.313529 disease 3.5 +1679 Fitness: 0.313529 Genotype: Fch1: A coadaptive 5.4 2.9 B coadaptive 7.9 9.3 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0.313529 disease 3.5 +1680 Fitness: 0.313529 Genotype: Fch1: A coadaptive 5.4 2.9 B coadaptive 7.9 9.3 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0.313529 disease 3.5 +1681 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 6.3 B coadaptive 2.5 1.3 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1682 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 6.3 B coadaptive 2.5 1.3 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1683 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 6.3 B coadaptive 2.5 1.3 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1684 Fitness: 1.99668 Genotype: Fch1: A coadaptive 0.3 2.1 B coadaptive 3.9 0.4 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.99668 disease 2.5 +1685 Fitness: 1.99668 Genotype: Fch1: A coadaptive 0.3 2.1 B coadaptive 3.9 0.4 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.99668 disease 2.5 +1686 Fitness: 1.99668 Genotype: Fch1: A coadaptive 0.3 2.1 B coadaptive 3.9 0.4 C disease 0.5 0 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 1.99668 disease 2.5 +1687 Fitness: 1.92645 Genotype: Fch1: A coadaptive 1.5 3.3 B coadaptive 9.1 3.5 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.92645 disease 1.5 +1688 Fitness: 1.92645 Genotype: Fch1: A coadaptive 1.5 3.3 B coadaptive 9.1 3.5 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.92645 disease 1.5 +1689 Fitness: 1.92645 Genotype: Fch1: A coadaptive 1.5 3.3 B coadaptive 9.1 3.5 C disease 0.5 0 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 1.92645 disease 1.5 +1690 Fitness: 9.07143 Genotype: Fch1: A coadaptive 1.7 5.3 B coadaptive 8.6 0.5 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.07143 disease 1.5 +1691 Fitness: 9.07143 Genotype: Fch1: A coadaptive 1.7 5.3 B coadaptive 8.6 0.5 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.07143 disease 1.5 +1692 Fitness: 9.07143 Genotype: Fch1: A coadaptive 1.7 5.3 B coadaptive 8.6 0.5 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.07143 disease 1.5 +1693 Fitness: 8.21026 Genotype: Fch1: A coadaptive 4.8 2.3 B coadaptive 4.6 2.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.21026 disease 2.5 +1694 Fitness: 8.21026 Genotype: Fch1: A coadaptive 4.8 2.3 B coadaptive 4.6 2.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.21026 disease 2.5 +1695 Fitness: 8.21026 Genotype: Fch1: A coadaptive 4.8 2.3 B coadaptive 4.6 2.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.21026 disease 2.5 +1696 Fitness: 3.96502 Genotype: Fch1: A coadaptive 4.3 2.1 B coadaptive 1.3 2.4 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 3.96502 disease 3 +1697 Fitness: 3.96502 Genotype: Fch1: A coadaptive 4.3 2.1 B coadaptive 1.3 2.4 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 3.96502 disease 3 +1698 Fitness: 3.96502 Genotype: Fch1: A coadaptive 4.3 2.1 B coadaptive 1.3 2.4 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 0.5 1 Phenotype: coadaptive 3.96502 disease 3 +1699 Fitness: 8.78288 Genotype: Fch1: A coadaptive 4.3 4 B coadaptive 4.8 8.9 C disease 0.5 1 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.78288 disease 2 +1700 Fitness: 8.78288 Genotype: Fch1: A coadaptive 4.3 4 B coadaptive 4.8 8.9 C disease 0.5 1 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.78288 disease 2 +1701 Fitness: 8.78288 Genotype: Fch1: A coadaptive 4.3 4 B coadaptive 4.8 8.9 C disease 0.5 1 D disease 0 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.78288 disease 2 +1702 Fitness: 13.5136 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 4.1 6.6 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 13.5136 disease 4 +1703 Fitness: 13.5136 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 4.1 6.6 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 13.5136 disease 4 +1704 Fitness: 13.5136 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 4.1 6.6 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 13.5136 disease 4 +1705 Fitness: 5.88393 Genotype: Fch1: A coadaptive 4.3 4.8 B coadaptive 1.3 3.7 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.88393 disease 4 +1706 Fitness: 5.88393 Genotype: Fch1: A coadaptive 4.3 4.8 B coadaptive 1.3 3.7 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.88393 disease 4 +1707 Fitness: 5.88393 Genotype: Fch1: A coadaptive 4.3 4.8 B coadaptive 1.3 3.7 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.88393 disease 4 +1708 Fitness: 7.25375 Genotype: Fch1: A coadaptive 6.9 2.3 B coadaptive 3.2 2.6 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 7.25375 disease 3 +1709 Fitness: 7.25375 Genotype: Fch1: A coadaptive 6.9 2.3 B coadaptive 3.2 2.6 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 7.25375 disease 3 +1710 Fitness: 7.25375 Genotype: Fch1: A coadaptive 6.9 2.3 B coadaptive 3.2 2.6 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 7.25375 disease 3 +1711 Fitness: 11.2391 Genotype: Fch1: A coadaptive 6.2 2.3 B coadaptive 0.6 9.9 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.2391 disease 2.5 +1712 Fitness: 11.2391 Genotype: Fch1: A coadaptive 6.2 2.3 B coadaptive 0.6 9.9 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.2391 disease 2.5 +1713 Fitness: 11.2391 Genotype: Fch1: A coadaptive 6.2 2.3 B coadaptive 0.6 9.9 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.2391 disease 2.5 +1714 Fitness: 9.8816 Genotype: Fch1: A coadaptive 6.9 1.3 B coadaptive 8.1 4.5 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.8816 disease 3.5 +1715 Fitness: 9.8816 Genotype: Fch1: A coadaptive 6.9 1.3 B coadaptive 8.1 4.5 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.8816 disease 3.5 +1716 Fitness: 9.8816 Genotype: Fch1: A coadaptive 6.9 1.3 B coadaptive 8.1 4.5 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.8816 disease 3.5 +1717 Fitness: 13.5788 Genotype: Fch1: A coadaptive 5.6 5.1 B coadaptive 6.8 4.6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.5788 disease 1.5 +1718 Fitness: 13.5788 Genotype: Fch1: A coadaptive 5.6 5.1 B coadaptive 6.8 4.6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.5788 disease 1.5 +1719 Fitness: 13.5788 Genotype: Fch1: A coadaptive 5.6 5.1 B coadaptive 6.8 4.6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.5788 disease 1.5 +1720 Fitness: 10.7846 Genotype: Fch1: A coadaptive 5.4 2.8 B coadaptive 2.2 7.7 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.7846 disease 2.5 +1721 Fitness: 10.7846 Genotype: Fch1: A coadaptive 5.4 2.8 B coadaptive 2.2 7.7 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.7846 disease 2.5 +1722 Fitness: 10.7846 Genotype: Fch1: A coadaptive 5.4 2.8 B coadaptive 2.2 7.7 C disease 0 0 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 10.7846 disease 2.5 +1723 Fitness: 7.51446 Genotype: Fch1: A coadaptive 8.5 1 B coadaptive 7.6 8.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.51446 disease 3 +1724 Fitness: 7.51446 Genotype: Fch1: A coadaptive 8.5 1 B coadaptive 7.6 8.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.51446 disease 3 +1725 Fitness: 7.51446 Genotype: Fch1: A coadaptive 8.5 1 B coadaptive 7.6 8.2 C disease 0.5 1 D disease 0 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 7.51446 disease 3 +1726 Fitness: 12.271 Genotype: Fch1: A coadaptive 9.5 0.6 B coadaptive 8 1.6 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 12.271 disease 2.5 +1727 Fitness: 12.271 Genotype: Fch1: A coadaptive 9.5 0.6 B coadaptive 8 1.6 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 12.271 disease 2.5 +1728 Fitness: 12.271 Genotype: Fch1: A coadaptive 9.5 0.6 B coadaptive 8 1.6 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 12.271 disease 2.5 +1729 Fitness: 1.19909 Genotype: Fch1: A coadaptive 0.6 1 B coadaptive 1.6 3.3 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 1.19909 disease 3.5 +1730 Fitness: 1.19909 Genotype: Fch1: A coadaptive 0.6 1 B coadaptive 1.6 3.3 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 1.19909 disease 3.5 +1731 Fitness: 1.19909 Genotype: Fch1: A coadaptive 0.6 1 B coadaptive 1.6 3.3 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 1.19909 disease 3.5 +1732 Fitness: 8.60102 Genotype: Fch1: A coadaptive 5.4 5.4 B coadaptive 8.6 7.9 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 8.60102 disease 3 +1733 Fitness: 8.60102 Genotype: Fch1: A coadaptive 5.4 5.4 B coadaptive 8.6 7.9 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 8.60102 disease 3 +1734 Fitness: 8.60102 Genotype: Fch1: A coadaptive 5.4 5.4 B coadaptive 8.6 7.9 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 8.60102 disease 3 +1735 Fitness: 12.1652 Genotype: Fch1: A coadaptive 7.4 1.9 B coadaptive 3.9 7.8 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.1652 disease 3.5 +1736 Fitness: 12.1652 Genotype: Fch1: A coadaptive 7.4 1.9 B coadaptive 3.9 7.8 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.1652 disease 3.5 +1737 Fitness: 12.1652 Genotype: Fch1: A coadaptive 7.4 1.9 B coadaptive 3.9 7.8 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.1652 disease 3.5 +1738 Fitness: 5.20858 Genotype: Fch1: A coadaptive 3.9 1 B coadaptive 3.7 2.2 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.20858 disease 1.5 +1739 Fitness: 5.20858 Genotype: Fch1: A coadaptive 3.9 1 B coadaptive 3.7 2.2 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.20858 disease 1.5 +1740 Fitness: 5.20858 Genotype: Fch1: A coadaptive 3.9 1 B coadaptive 3.7 2.2 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.20858 disease 1.5 +1741 Fitness: 9.78656 Genotype: Fch1: A coadaptive 4.4 8.3 B coadaptive 2.2 6 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.78656 disease 3.5 +1742 Fitness: 9.78656 Genotype: Fch1: A coadaptive 4.4 8.3 B coadaptive 2.2 6 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.78656 disease 3.5 +1743 Fitness: 9.78656 Genotype: Fch1: A coadaptive 4.4 8.3 B coadaptive 2.2 6 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 9.78656 disease 3.5 +1744 Fitness: 12.7648 Genotype: Fch1: A coadaptive 6.3 4.2 B coadaptive 7 3 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.7648 disease 3 +1745 Fitness: 12.7648 Genotype: Fch1: A coadaptive 6.3 4.2 B coadaptive 7 3 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.7648 disease 3 +1746 Fitness: 12.7648 Genotype: Fch1: A coadaptive 6.3 4.2 B coadaptive 7 3 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.7648 disease 3 +1747 Fitness: 2.53829 Genotype: Fch1: A coadaptive 8.7 3.7 B coadaptive 3.6 1.3 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.53829 disease 3 +1748 Fitness: 2.53829 Genotype: Fch1: A coadaptive 8.7 3.7 B coadaptive 3.6 1.3 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.53829 disease 3 +1749 Fitness: 2.53829 Genotype: Fch1: A coadaptive 8.7 3.7 B coadaptive 3.6 1.3 C disease 0.5 0 D disease 0.5 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 2.53829 disease 3 +1750 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.5 B coadaptive 8 3.4 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1751 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.5 B coadaptive 8 3.4 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1752 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0.5 B coadaptive 8 3.4 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +1753 Fitness: 11.8388 Genotype: Fch1: A coadaptive 7.4 1.8 B coadaptive 8.9 1 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.8388 disease 4 +1754 Fitness: 11.8388 Genotype: Fch1: A coadaptive 7.4 1.8 B coadaptive 8.9 1 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.8388 disease 4 +1755 Fitness: 11.8388 Genotype: Fch1: A coadaptive 7.4 1.8 B coadaptive 8.9 1 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.8388 disease 4 +1756 Fitness: 11.9106 Genotype: Fch1: A coadaptive 3.9 8.5 B coadaptive 9.4 6.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.9106 disease 2.5 +1757 Fitness: 11.9106 Genotype: Fch1: A coadaptive 3.9 8.5 B coadaptive 9.4 6.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.9106 disease 2.5 +1758 Fitness: 11.9106 Genotype: Fch1: A coadaptive 3.9 8.5 B coadaptive 9.4 6.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.9106 disease 2.5 +1759 Fitness: 5.1903 Genotype: Fch1: A coadaptive 6.5 8.5 B coadaptive 7.7 0.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.1903 disease 3 +1760 Fitness: 5.1903 Genotype: Fch1: A coadaptive 6.5 8.5 B coadaptive 7.7 0.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.1903 disease 3 +1761 Fitness: 5.1903 Genotype: Fch1: A coadaptive 6.5 8.5 B coadaptive 7.7 0.1 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 5.1903 disease 3 +1762 Fitness: 8.1824 Genotype: Fch1: A coadaptive 5.2 1.2 B coadaptive 4.3 4.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 8.1824 disease 2.5 +1763 Fitness: 8.1824 Genotype: Fch1: A coadaptive 5.2 1.2 B coadaptive 4.3 4.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 8.1824 disease 2.5 +1764 Fitness: 8.1824 Genotype: Fch1: A coadaptive 5.2 1.2 B coadaptive 4.3 4.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 8.1824 disease 2.5 +1765 Fitness: 13.8835 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 6.7 6.4 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.8835 disease 2 +1766 Fitness: 13.8835 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 6.7 6.4 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.8835 disease 2 +1767 Fitness: 13.8835 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 6.7 6.4 C disease 0 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.8835 disease 2 +1768 Fitness: 9.05986 Genotype: Fch1: A coadaptive 6.1 1 B coadaptive 7.5 3.3 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.05986 disease 1.5 +1769 Fitness: 9.05986 Genotype: Fch1: A coadaptive 6.1 1 B coadaptive 7.5 3.3 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.05986 disease 1.5 +1770 Fitness: 9.05986 Genotype: Fch1: A coadaptive 6.1 1 B coadaptive 7.5 3.3 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 9.05986 disease 1.5 +1771 Fitness: 9.67695 Genotype: Fch1: A coadaptive 3.1 7.3 B coadaptive 2.2 5.2 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.67695 disease 3.5 +1772 Fitness: 9.67695 Genotype: Fch1: A coadaptive 3.1 7.3 B coadaptive 2.2 5.2 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.67695 disease 3.5 +1773 Fitness: 9.67695 Genotype: Fch1: A coadaptive 3.1 7.3 B coadaptive 2.2 5.2 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.67695 disease 3.5 +1774 Fitness: 6.21871 Genotype: Fch1: A coadaptive 9.6 1.5 B coadaptive 8.5 9.1 C disease 1 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.21871 disease 3 +1775 Fitness: 6.21871 Genotype: Fch1: A coadaptive 9.6 1.5 B coadaptive 8.5 9.1 C disease 1 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.21871 disease 3 +1776 Fitness: 6.21871 Genotype: Fch1: A coadaptive 9.6 1.5 B coadaptive 8.5 9.1 C disease 1 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 6.21871 disease 3 +1777 Fitness: 5.73344 Genotype: Fch1: A coadaptive 2.5 2.4 B coadaptive 5.8 3.2 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.73344 disease 2 +1778 Fitness: 5.73344 Genotype: Fch1: A coadaptive 2.5 2.4 B coadaptive 5.8 3.2 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.73344 disease 2 +1779 Fitness: 5.73344 Genotype: Fch1: A coadaptive 2.5 2.4 B coadaptive 5.8 3.2 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.73344 disease 2 +1780 Fitness: 13.0836 Genotype: Fch1: A coadaptive 8.2 3 B coadaptive 4.9 9.3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.0836 disease 3.5 +1781 Fitness: 13.0836 Genotype: Fch1: A coadaptive 8.2 3 B coadaptive 4.9 9.3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.0836 disease 3.5 +1782 Fitness: 13.0836 Genotype: Fch1: A coadaptive 8.2 3 B coadaptive 4.9 9.3 C disease 0 0.5 D disease 1 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.0836 disease 3.5 +1783 Fitness: 6.33753 Genotype: Fch1: A coadaptive 2 3.2 B coadaptive 4.1 4.2 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.33753 disease 3 +1784 Fitness: 6.33753 Genotype: Fch1: A coadaptive 2 3.2 B coadaptive 4.1 4.2 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.33753 disease 3 +1785 Fitness: 6.33753 Genotype: Fch1: A coadaptive 2 3.2 B coadaptive 4.1 4.2 C disease 1 0 D disease 0.5 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.33753 disease 3 +1786 Fitness: 14.0327 Genotype: Fch1: A coadaptive 7.3 7.1 B coadaptive 9.5 5.8 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 14.0327 disease 3.5 +1787 Fitness: 14.0327 Genotype: Fch1: A coadaptive 7.3 7.1 B coadaptive 9.5 5.8 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 14.0327 disease 3.5 +1788 Fitness: 14.0327 Genotype: Fch1: A coadaptive 7.3 7.1 B coadaptive 9.5 5.8 C disease 0.5 0 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 14.0327 disease 3.5 +1789 Fitness: 4.62367 Genotype: Fch1: A coadaptive 3.6 0.6 B coadaptive 2.4 6.1 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.62367 disease 3 +1790 Fitness: 4.62367 Genotype: Fch1: A coadaptive 3.6 0.6 B coadaptive 2.4 6.1 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.62367 disease 3 +1791 Fitness: 4.62367 Genotype: Fch1: A coadaptive 3.6 0.6 B coadaptive 2.4 6.1 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.62367 disease 3 +1792 Fitness: 9.77355 Genotype: Fch1: A coadaptive 9 0.3 B coadaptive 5.5 2 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 9.77355 disease 4 +1793 Fitness: 12.8512 Genotype: Fch1: A coadaptive 5.3 6.7 B coadaptive 8.1 7.1 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 12.8512 disease 3.5 +1794 Fitness: 12.8512 Genotype: Fch1: A coadaptive 5.3 6.7 B coadaptive 8.1 7.1 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 12.8512 disease 3.5 +1795 Fitness: 13.6144 Genotype: Fch1: A coadaptive 6.6 4.2 B coadaptive 9.7 3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 13.6144 disease 3.5 +1796 Fitness: 13.6144 Genotype: Fch1: A coadaptive 6.6 4.2 B coadaptive 9.7 3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 13.6144 disease 3.5 +1797 Fitness: 13.6144 Genotype: Fch1: A coadaptive 6.6 4.2 B coadaptive 9.7 3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 13.6144 disease 3.5 +1798 Fitness: 7.04519 Genotype: Fch1: A coadaptive 4.4 2.1 B coadaptive 1 5.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.04519 disease 2 +1799 Fitness: 7.04519 Genotype: Fch1: A coadaptive 4.4 2.1 B coadaptive 1 5.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.04519 disease 2 +1800 Fitness: 7.04519 Genotype: Fch1: A coadaptive 4.4 2.1 B coadaptive 1 5.4 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 7.04519 disease 2 +1801 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.6 B coadaptive 9.9 5.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1802 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.6 B coadaptive 9.9 5.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1803 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 0.6 B coadaptive 9.9 5.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +1804 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1 B coadaptive 6.2 10 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1805 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1 B coadaptive 6.2 10 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1806 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1 B coadaptive 6.2 10 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 2 +1807 Fitness: 10.2312 Genotype: Fch1: A coadaptive 1.9 6.5 B coadaptive 3.4 5 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.2312 disease 3 +1808 Fitness: 10.2312 Genotype: Fch1: A coadaptive 1.9 6.5 B coadaptive 3.4 5 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.2312 disease 3 +1809 Fitness: 10.2312 Genotype: Fch1: A coadaptive 1.9 6.5 B coadaptive 3.4 5 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.2312 disease 3 +1810 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0 B coadaptive 9.6 4 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1811 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0 B coadaptive 9.6 4 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1812 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0 B coadaptive 9.6 4 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +1813 Fitness: 13.4446 Genotype: Fch1: A coadaptive 5.2 5.7 B coadaptive 6.5 6.8 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.4446 disease 2.5 +1814 Fitness: 13.4446 Genotype: Fch1: A coadaptive 5.2 5.7 B coadaptive 6.5 6.8 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.4446 disease 2.5 +1815 Fitness: 13.4446 Genotype: Fch1: A coadaptive 5.2 5.7 B coadaptive 6.5 6.8 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 13.4446 disease 2.5 +1816 Fitness: 12.494 Genotype: Fch1: A coadaptive 7.2 9.4 B coadaptive 5.4 10 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.494 disease 2.5 +1817 Fitness: 12.494 Genotype: Fch1: A coadaptive 7.2 9.4 B coadaptive 5.4 10 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.494 disease 2.5 +1818 Fitness: 12.494 Genotype: Fch1: A coadaptive 7.2 9.4 B coadaptive 5.4 10 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 12.494 disease 2.5 +1819 Fitness: 12.5627 Genotype: Fch1: A coadaptive 2.4 8.7 B coadaptive 3.3 6.3 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.5627 disease 3.5 +1820 Fitness: 12.5627 Genotype: Fch1: A coadaptive 2.4 8.7 B coadaptive 3.3 6.3 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.5627 disease 3.5 +1821 Fitness: 12.5627 Genotype: Fch1: A coadaptive 2.4 8.7 B coadaptive 3.3 6.3 C disease 1 1 D disease 0 0.5 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 12.5627 disease 3.5 +1822 Fitness: 8.7478 Genotype: Fch1: A coadaptive 1.1 5.8 B coadaptive 5.9 4.8 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.7478 disease 3 +1823 Fitness: 8.7478 Genotype: Fch1: A coadaptive 1.1 5.8 B coadaptive 5.9 4.8 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.7478 disease 3 +1824 Fitness: 8.7478 Genotype: Fch1: A coadaptive 1.1 5.8 B coadaptive 5.9 4.8 C disease 1 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.7478 disease 3 +1825 Fitness: 6.08019 Genotype: Fch1: A coadaptive 8.7 0.5 B coadaptive 10 6.1 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 6.08019 disease 2.5 +1826 Fitness: 6.08019 Genotype: Fch1: A coadaptive 8.7 0.5 B coadaptive 10 6.1 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 6.08019 disease 2.5 +1827 Fitness: 6.08019 Genotype: Fch1: A coadaptive 8.7 0.5 B coadaptive 10 6.1 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 6.08019 disease 2.5 +1828 Fitness: 3.45966 Genotype: Fch1: A coadaptive 1.5 2.4 B coadaptive 3.3 6.3 C disease 0 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 3.45966 disease 2.5 +1829 Fitness: 3.45966 Genotype: Fch1: A coadaptive 1.5 2.4 B coadaptive 3.3 6.3 C disease 0 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 3.45966 disease 2.5 +1830 Fitness: 3.45966 Genotype: Fch1: A coadaptive 1.5 2.4 B coadaptive 3.3 6.3 C disease 0 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 3.45966 disease 2.5 +1831 Fitness: 10.0247 Genotype: Fch1: A coadaptive 6.3 1.7 B coadaptive 1.6 7 C disease 1 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.0247 disease 3 +1832 Fitness: 10.0247 Genotype: Fch1: A coadaptive 6.3 1.7 B coadaptive 1.6 7 C disease 1 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.0247 disease 3 +1833 Fitness: 10.0247 Genotype: Fch1: A coadaptive 6.3 1.7 B coadaptive 1.6 7 C disease 1 0 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 10.0247 disease 3 +1834 Fitness: 4.37849 Genotype: Fch1: A coadaptive 6.3 1.8 B coadaptive 1.5 2.5 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.37849 disease 3 +1835 Fitness: 4.37849 Genotype: Fch1: A coadaptive 6.3 1.8 B coadaptive 1.5 2.5 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.37849 disease 3 +1836 Fitness: 4.37849 Genotype: Fch1: A coadaptive 6.3 1.8 B coadaptive 1.5 2.5 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.37849 disease 3 +1837 Fitness: 8.97853 Genotype: Fch1: A coadaptive 2 5.5 B coadaptive 9 3.1 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.97853 disease 3.5 +1838 Fitness: 8.97853 Genotype: Fch1: A coadaptive 2 5.5 B coadaptive 9 3.1 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.97853 disease 3.5 +1839 Fitness: 8.97853 Genotype: Fch1: A coadaptive 2 5.5 B coadaptive 9 3.1 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.97853 disease 3.5 +1840 Fitness: 12.6702 Genotype: Fch1: A coadaptive 0.2 9.5 B coadaptive 3.6 8 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 12.6702 disease 2.5 +1841 Fitness: 12.6702 Genotype: Fch1: A coadaptive 0.2 9.5 B coadaptive 3.6 8 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 12.6702 disease 2.5 +1842 Fitness: 12.6702 Genotype: Fch1: A coadaptive 0.2 9.5 B coadaptive 3.6 8 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 12.6702 disease 2.5 +1843 Fitness: 12.1768 Genotype: Fch1: A coadaptive 6 7.2 B coadaptive 9.4 7 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 12.1768 disease 2.5 +1844 Fitness: 12.1768 Genotype: Fch1: A coadaptive 6 7.2 B coadaptive 9.4 7 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 12.1768 disease 2.5 +1845 Fitness: 12.1768 Genotype: Fch1: A coadaptive 6 7.2 B coadaptive 9.4 7 C disease 0 1 D disease 0 0 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 12.1768 disease 2.5 +1846 Fitness: 7.5008 Genotype: Fch1: A coadaptive 8.2 3 B coadaptive 4.9 1.5 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.5008 disease 3 +1847 Fitness: 7.5008 Genotype: Fch1: A coadaptive 8.2 3 B coadaptive 4.9 1.5 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.5008 disease 3 +1848 Fitness: 7.5008 Genotype: Fch1: A coadaptive 8.2 3 B coadaptive 4.9 1.5 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 7.5008 disease 3 +1849 Fitness: 8.9624 Genotype: Fch1: A coadaptive 6.3 0.7 B coadaptive 7 3.6 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 8.9624 disease 2.5 +1850 Fitness: 8.9624 Genotype: Fch1: A coadaptive 6.3 0.7 B coadaptive 7 3.6 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 8.9624 disease 2.5 +1851 Fitness: 8.9624 Genotype: Fch1: A coadaptive 6.3 0.7 B coadaptive 7 3.6 C disease 0 0 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 8.9624 disease 2.5 +1852 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0.2 B coadaptive 5.7 6.6 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1853 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0.2 B coadaptive 5.7 6.6 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1854 Fitness: 0 Genotype: Fch1: A coadaptive 3.2 0.2 B coadaptive 5.7 6.6 C disease 1 0 D disease 0.5 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1855 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 3.3 B coadaptive 3.3 9.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1856 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 3.3 B coadaptive 3.3 9.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1857 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 3.3 B coadaptive 3.3 9.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1858 Fitness: 14.2069 Genotype: Fch1: A coadaptive 2.4 9.9 B coadaptive 6.3 7.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 14.2069 disease 3 +1859 Fitness: 14.2069 Genotype: Fch1: A coadaptive 2.4 9.9 B coadaptive 6.3 7.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 14.2069 disease 3 +1860 Fitness: 14.2069 Genotype: Fch1: A coadaptive 2.4 9.9 B coadaptive 6.3 7.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 14.2069 disease 3 +1861 Fitness: 12.4437 Genotype: Fch1: A coadaptive 4.2 5.5 B coadaptive 3 7.3 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.4437 disease 3.5 +1862 Fitness: 12.4437 Genotype: Fch1: A coadaptive 4.2 5.5 B coadaptive 3 7.3 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.4437 disease 3.5 +1863 Fitness: 12.4437 Genotype: Fch1: A coadaptive 4.2 5.5 B coadaptive 3 7.3 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.4437 disease 3.5 +1864 Fitness: 12.5259 Genotype: Fch1: A coadaptive 1.2 10 B coadaptive 5.3 9.4 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.5259 disease 3.5 +1865 Fitness: 12.5259 Genotype: Fch1: A coadaptive 1.2 10 B coadaptive 5.3 9.4 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.5259 disease 3.5 +1866 Fitness: 12.5259 Genotype: Fch1: A coadaptive 1.2 10 B coadaptive 5.3 9.4 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 12.5259 disease 3.5 +1867 Fitness: 4.08828 Genotype: Fch1: A coadaptive 3.7 7.8 B coadaptive 1.6 3.4 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.08828 disease 2.5 +1868 Fitness: 4.08828 Genotype: Fch1: A coadaptive 3.7 7.8 B coadaptive 1.6 3.4 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.08828 disease 2.5 +1869 Fitness: 4.08828 Genotype: Fch1: A coadaptive 3.7 7.8 B coadaptive 1.6 3.4 C disease 0.5 1 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 4.08828 disease 2.5 +1870 Fitness: 6.1388 Genotype: Fch1: A coadaptive 5.6 2.4 B coadaptive 6.8 8 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.1388 disease 2.5 +1871 Fitness: 6.1388 Genotype: Fch1: A coadaptive 5.6 2.4 B coadaptive 6.8 8 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.1388 disease 2.5 +1872 Fitness: 6.1388 Genotype: Fch1: A coadaptive 5.6 2.4 B coadaptive 6.8 8 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.1388 disease 2.5 +1873 Fitness: 9.234 Genotype: Fch1: A coadaptive 6.7 0.5 B coadaptive 4.7 6.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.234 disease 2.5 +1874 Fitness: 9.234 Genotype: Fch1: A coadaptive 6.7 0.5 B coadaptive 4.7 6.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.234 disease 2.5 +1875 Fitness: 9.234 Genotype: Fch1: A coadaptive 6.7 0.5 B coadaptive 4.7 6.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.234 disease 2.5 +1876 Fitness: 0.302918 Genotype: Fch1: A coadaptive 2.4 6.4 B coadaptive 1.1 1 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0.302918 disease 3 +1877 Fitness: 0.302918 Genotype: Fch1: A coadaptive 2.4 6.4 B coadaptive 1.1 1 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0.302918 disease 3 +1878 Fitness: 0.302918 Genotype: Fch1: A coadaptive 2.4 6.4 B coadaptive 1.1 1 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 0.302918 disease 3 +1879 Fitness: 1.46407 Genotype: Fch1: A coadaptive 5.2 7.2 B coadaptive 0.5 4 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 1.46407 disease 3 +1880 Fitness: 1.46407 Genotype: Fch1: A coadaptive 5.2 7.2 B coadaptive 0.5 4 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 1.46407 disease 3 +1881 Fitness: 1.46407 Genotype: Fch1: A coadaptive 5.2 7.2 B coadaptive 0.5 4 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 1.46407 disease 3 +1882 Fitness: 10.3632 Genotype: Fch1: A coadaptive 2.4 8.1 B coadaptive 8 7.4 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 10.3632 disease 2 +1883 Fitness: 10.3632 Genotype: Fch1: A coadaptive 2.4 8.1 B coadaptive 8 7.4 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 10.3632 disease 2 +1884 Fitness: 10.3632 Genotype: Fch1: A coadaptive 2.4 8.1 B coadaptive 8 7.4 C disease 0.5 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 10.3632 disease 2 +1885 Fitness: 4.4456 Genotype: Fch1: A coadaptive 2.7 2.5 B coadaptive 5.8 5.8 C disease 0 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.4456 disease 2.5 +1886 Fitness: 4.4456 Genotype: Fch1: A coadaptive 2.7 2.5 B coadaptive 5.8 5.8 C disease 0 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.4456 disease 2.5 +1887 Fitness: 4.4456 Genotype: Fch1: A coadaptive 2.7 2.5 B coadaptive 5.8 5.8 C disease 0 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 4.4456 disease 2.5 +1888 Fitness: 9.40888 Genotype: Fch1: A coadaptive 1.5 6.9 B coadaptive 5 2.5 C disease 0.5 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.40888 disease 2 +1889 Fitness: 9.40888 Genotype: Fch1: A coadaptive 1.5 6.9 B coadaptive 5 2.5 C disease 0.5 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.40888 disease 2 +1890 Fitness: 9.40888 Genotype: Fch1: A coadaptive 1.5 6.9 B coadaptive 5 2.5 C disease 0.5 1 D disease 0 0 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.40888 disease 2 +1891 Fitness: 9.56014 Genotype: Fch1: A coadaptive 2.9 5.8 B coadaptive 3.8 3.7 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.56014 disease 4 +1892 Fitness: 9.56014 Genotype: Fch1: A coadaptive 2.9 5.8 B coadaptive 3.8 3.7 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.56014 disease 4 +1893 Fitness: 9.56014 Genotype: Fch1: A coadaptive 2.9 5.8 B coadaptive 3.8 3.7 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 9.56014 disease 4 +1894 Fitness: 2.98471 Genotype: Fch1: A coadaptive 1.8 1.7 B coadaptive 7.3 1.8 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 2.98471 disease 4 +1895 Fitness: 2.98471 Genotype: Fch1: A coadaptive 1.8 1.7 B coadaptive 7.3 1.8 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 2.98471 disease 4 +1896 Fitness: 2.98471 Genotype: Fch1: A coadaptive 1.8 1.7 B coadaptive 7.3 1.8 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 2.98471 disease 4 +1897 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.4 B coadaptive 2.2 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1898 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.4 B coadaptive 2.2 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1899 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.4 B coadaptive 2.2 9.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1900 Fitness: 9.95435 Genotype: Fch1: A coadaptive 1 6.7 B coadaptive 4.4 4.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.95435 disease 2.5 +1901 Fitness: 9.95435 Genotype: Fch1: A coadaptive 1 6.7 B coadaptive 4.4 4.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.95435 disease 2.5 +1902 Fitness: 9.95435 Genotype: Fch1: A coadaptive 1 6.7 B coadaptive 4.4 4.7 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 9.95435 disease 2.5 +1903 Fitness: 4.29122 Genotype: Fch1: A coadaptive 9.9 6.2 B coadaptive 3.9 4.6 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 4.29122 disease 2.5 +1904 Fitness: 4.29122 Genotype: Fch1: A coadaptive 9.9 6.2 B coadaptive 3.9 4.6 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 4.29122 disease 2.5 +1905 Fitness: 4.29122 Genotype: Fch1: A coadaptive 9.9 6.2 B coadaptive 3.9 4.6 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 4.29122 disease 2.5 +1906 Fitness: 4.5473 Genotype: Fch1: A coadaptive 3.5 5.2 B coadaptive 9.7 6.5 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.5473 disease 2.5 +1907 Fitness: 4.5473 Genotype: Fch1: A coadaptive 3.5 5.2 B coadaptive 9.7 6.5 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.5473 disease 2.5 +1908 Fitness: 4.5473 Genotype: Fch1: A coadaptive 3.5 5.2 B coadaptive 9.7 6.5 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 4.5473 disease 2.5 +1909 Fitness: 12.2977 Genotype: Fch1: A coadaptive 8.7 7.3 B coadaptive 3.6 9 C disease 0 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.2977 disease 3 +1910 Fitness: 12.2977 Genotype: Fch1: A coadaptive 8.7 7.3 B coadaptive 3.6 9 C disease 0 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.2977 disease 3 +1911 Fitness: 12.2977 Genotype: Fch1: A coadaptive 8.7 7.3 B coadaptive 3.6 9 C disease 0 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.2977 disease 3 +1912 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 4.2 B coadaptive 0.5 3 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1913 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 4.2 B coadaptive 0.5 3 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1914 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 4.2 B coadaptive 0.5 3 C disease 1 1 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1915 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 8.3 B coadaptive 7 0.5 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1916 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 8.3 B coadaptive 7 0.5 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1917 Fitness: 0 Genotype: Fch1: A coadaptive 8.3 8.3 B coadaptive 7 0.5 C disease 0 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1918 Fitness: 3.56958 Genotype: Fch1: A coadaptive 1.9 1.5 B coadaptive 3.4 3.3 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 3.56958 disease 3 +1919 Fitness: 3.56958 Genotype: Fch1: A coadaptive 1.9 1.5 B coadaptive 3.4 3.3 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 3.56958 disease 3 +1920 Fitness: 3.56958 Genotype: Fch1: A coadaptive 1.9 1.5 B coadaptive 3.4 3.3 C disease 0.5 0 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 3.56958 disease 3 +1921 Fitness: 10.0298 Genotype: Fch1: A coadaptive 3.9 9.3 B coadaptive 2.1 6.5 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 10.0298 disease 3 +1922 Fitness: 10.0298 Genotype: Fch1: A coadaptive 3.9 9.3 B coadaptive 2.1 6.5 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 10.0298 disease 3 +1923 Fitness: 10.0298 Genotype: Fch1: A coadaptive 3.9 9.3 B coadaptive 2.1 6.5 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 10.0298 disease 3 +1924 Fitness: 8.7875 Genotype: Fch1: A coadaptive 9.1 1.9 B coadaptive 0.4 6.6 C disease 1 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.7875 disease 3.5 +1925 Fitness: 8.7875 Genotype: Fch1: A coadaptive 9.1 1.9 B coadaptive 0.4 6.6 C disease 1 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.7875 disease 3.5 +1926 Fitness: 8.7875 Genotype: Fch1: A coadaptive 9.1 1.9 B coadaptive 0.4 6.6 C disease 1 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.7875 disease 3.5 +1927 Fitness: 8.70974 Genotype: Fch1: A coadaptive 6.7 1.4 B coadaptive 4.9 2.1 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.70974 disease 2.5 +1928 Fitness: 8.70974 Genotype: Fch1: A coadaptive 6.7 1.4 B coadaptive 4.9 2.1 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.70974 disease 2.5 +1929 Fitness: 8.70974 Genotype: Fch1: A coadaptive 6.7 1.4 B coadaptive 4.9 2.1 C disease 0.5 0 D disease 0 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.70974 disease 2.5 +1930 Fitness: 14.1468 Genotype: Fch1: A coadaptive 3.9 9.5 B coadaptive 3.7 8 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 14.1468 disease 2 +1931 Fitness: 14.1468 Genotype: Fch1: A coadaptive 3.9 9.5 B coadaptive 3.7 8 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 14.1468 disease 2 +1932 Fitness: 14.1468 Genotype: Fch1: A coadaptive 3.9 9.5 B coadaptive 3.7 8 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 14.1468 disease 2 +1933 Fitness: 4.5477 Genotype: Fch1: A coadaptive 5.7 0.9 B coadaptive 3.8 10 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 4.5477 disease 2.5 +1934 Fitness: 4.5477 Genotype: Fch1: A coadaptive 5.7 0.9 B coadaptive 3.8 10 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 4.5477 disease 2.5 +1935 Fitness: 4.5477 Genotype: Fch1: A coadaptive 5.7 0.9 B coadaptive 3.8 10 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 4.5477 disease 2.5 +1936 Fitness: 11.9762 Genotype: Fch1: A coadaptive 6.1 4.6 B coadaptive 5.4 3.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.9762 disease 3.5 +1937 Fitness: 11.9762 Genotype: Fch1: A coadaptive 6.1 4.6 B coadaptive 5.4 3.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.9762 disease 3.5 +1938 Fitness: 11.9762 Genotype: Fch1: A coadaptive 6.1 4.6 B coadaptive 5.4 3.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 11.9762 disease 3.5 +1939 Fitness: 9.60683 Genotype: Fch1: A coadaptive 0.3 9.6 B coadaptive 6.7 8.5 C disease 1 1 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.60683 disease 2 +1940 Fitness: 9.60683 Genotype: Fch1: A coadaptive 0.3 9.6 B coadaptive 6.7 8.5 C disease 1 1 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.60683 disease 2 +1941 Fitness: 9.60683 Genotype: Fch1: A coadaptive 0.3 9.6 B coadaptive 6.7 8.5 C disease 1 1 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.60683 disease 2 +1942 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 3.9 B coadaptive 0.3 0.7 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1943 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 3.9 B coadaptive 0.3 0.7 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1944 Fitness: 0 Genotype: Fch1: A coadaptive 5.7 3.9 B coadaptive 0.3 0.7 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +1945 Fitness: 10.6966 Genotype: Fch1: A coadaptive 1.7 7.6 B coadaptive 1.8 6.5 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.6966 disease 3 +1946 Fitness: 10.6966 Genotype: Fch1: A coadaptive 1.7 7.6 B coadaptive 1.8 6.5 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.6966 disease 3 +1947 Fitness: 10.6966 Genotype: Fch1: A coadaptive 1.7 7.6 B coadaptive 1.8 6.5 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 10.6966 disease 3 +1948 Fitness: 6.62263 Genotype: Fch1: A coadaptive 0.6 5.3 B coadaptive 4.2 6.8 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.62263 disease 2.5 +1949 Fitness: 6.62263 Genotype: Fch1: A coadaptive 0.6 5.3 B coadaptive 4.2 6.8 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.62263 disease 2.5 +1950 Fitness: 6.62263 Genotype: Fch1: A coadaptive 0.6 5.3 B coadaptive 4.2 6.8 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.62263 disease 2.5 +1951 Fitness: 10.475 Genotype: Fch1: A coadaptive 7.6 4.2 B coadaptive 6.5 1.7 C disease 0 0 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.475 disease 3 +1952 Fitness: 10.475 Genotype: Fch1: A coadaptive 7.6 4.2 B coadaptive 6.5 1.7 C disease 0 0 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.475 disease 3 +1953 Fitness: 10.475 Genotype: Fch1: A coadaptive 7.6 4.2 B coadaptive 6.5 1.7 C disease 0 0 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.475 disease 3 +1954 Fitness: 12.0694 Genotype: Fch1: A coadaptive 1.2 9.4 B coadaptive 1.6 7.6 C disease 1 0 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.0694 disease 2.5 +1955 Fitness: 12.0694 Genotype: Fch1: A coadaptive 1.2 9.4 B coadaptive 1.6 7.6 C disease 1 0 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.0694 disease 2.5 +1956 Fitness: 12.0694 Genotype: Fch1: A coadaptive 1.2 9.4 B coadaptive 1.6 7.6 C disease 1 0 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.0694 disease 2.5 +1957 Fitness: 13.1502 Genotype: Fch1: A coadaptive 6.4 5.7 B coadaptive 1.1 9.1 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.1502 disease 2.5 +1958 Fitness: 13.1502 Genotype: Fch1: A coadaptive 6.4 5.7 B coadaptive 1.1 9.1 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.1502 disease 2.5 +1959 Fitness: 13.1502 Genotype: Fch1: A coadaptive 6.4 5.7 B coadaptive 1.1 9.1 C disease 0.5 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.1502 disease 2.5 +1960 Fitness: 0 Genotype: Fch1: A coadaptive 8.5 9.9 B coadaptive 3.7 1.5 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1961 Fitness: 0 Genotype: Fch1: A coadaptive 8.5 9.9 B coadaptive 3.7 1.5 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1962 Fitness: 0 Genotype: Fch1: A coadaptive 8.5 9.9 B coadaptive 3.7 1.5 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1963 Fitness: 1.2988 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 0.1 2.9 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 1.2988 disease 3.5 +1964 Fitness: 1.2988 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 0.1 2.9 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 1.2988 disease 3.5 +1965 Fitness: 1.2988 Genotype: Fch1: A coadaptive 2.4 7.4 B coadaptive 0.1 2.9 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 1.2988 disease 3.5 +1966 Fitness: 8.69602 Genotype: Fch1: A coadaptive 6.3 7 B coadaptive 3.2 4.8 C disease 0 0.5 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.69602 disease 3 +1967 Fitness: 8.69602 Genotype: Fch1: A coadaptive 6.3 7 B coadaptive 3.2 4.8 C disease 0 0.5 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.69602 disease 3 +1968 Fitness: 8.69602 Genotype: Fch1: A coadaptive 6.3 7 B coadaptive 3.2 4.8 C disease 0 0.5 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.69602 disease 3 +1969 Fitness: 11.7454 Genotype: Fch1: A coadaptive 5.6 6.5 B coadaptive 3.3 5.8 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.7454 disease 2.5 +1970 Fitness: 11.7454 Genotype: Fch1: A coadaptive 5.6 6.5 B coadaptive 3.3 5.8 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.7454 disease 2.5 +1971 Fitness: 11.7454 Genotype: Fch1: A coadaptive 5.6 6.5 B coadaptive 3.3 5.8 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 11.7454 disease 2.5 +1972 Fitness: 11.4368 Genotype: Fch1: A coadaptive 3.6 5.1 B coadaptive 9 1.2 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.4368 disease 2.5 +1973 Fitness: 11.4368 Genotype: Fch1: A coadaptive 3.6 5.1 B coadaptive 9 1.2 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.4368 disease 2.5 +1974 Fitness: 11.4368 Genotype: Fch1: A coadaptive 3.6 5.1 B coadaptive 9 1.2 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.4368 disease 2.5 +1975 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0 B coadaptive 9.2 8.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +1976 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0 B coadaptive 9.2 8.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +1977 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 0 B coadaptive 9.2 8.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 2.5 +1978 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.1 B coadaptive 0.2 4 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1979 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.1 B coadaptive 0.2 4 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1980 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.1 B coadaptive 0.2 4 C disease 0.5 0.5 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1981 Fitness: 5.48086 Genotype: Fch1: A coadaptive 1.9 9 B coadaptive 7.8 9.9 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.48086 disease 3 +1982 Fitness: 5.48086 Genotype: Fch1: A coadaptive 1.9 9 B coadaptive 7.8 9.9 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.48086 disease 3 +1983 Fitness: 5.48086 Genotype: Fch1: A coadaptive 1.9 9 B coadaptive 7.8 9.9 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 5.48086 disease 3 +1984 Fitness: 12.9951 Genotype: Fch1: A coadaptive 5.9 6.7 B coadaptive 5.3 4.9 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9951 disease 3 +1985 Fitness: 12.9951 Genotype: Fch1: A coadaptive 5.9 6.7 B coadaptive 5.3 4.9 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9951 disease 3 +1986 Fitness: 12.9951 Genotype: Fch1: A coadaptive 5.9 6.7 B coadaptive 5.3 4.9 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.9951 disease 3 +1987 Fitness: 9.40888 Genotype: Fch1: A coadaptive 0 8.4 B coadaptive 3 4.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.40888 disease 2.5 +1988 Fitness: 9.40888 Genotype: Fch1: A coadaptive 0 8.4 B coadaptive 3 4.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.40888 disease 2.5 +1989 Fitness: 9.40888 Genotype: Fch1: A coadaptive 0 8.4 B coadaptive 3 4.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.40888 disease 2.5 +1990 Fitness: 6.02174 Genotype: Fch1: A coadaptive 8.8 2.4 B coadaptive 2.5 3.2 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.02174 disease 3.5 +1991 Fitness: 6.02174 Genotype: Fch1: A coadaptive 8.8 2.4 B coadaptive 2.5 3.2 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.02174 disease 3.5 +1992 Fitness: 6.02174 Genotype: Fch1: A coadaptive 8.8 2.4 B coadaptive 2.5 3.2 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 6.02174 disease 3.5 +1993 Fitness: 11.7502 Genotype: Fch1: A coadaptive 5.3 5.7 B coadaptive 8.6 0.3 C disease 0 1 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.7502 disease 3 +1994 Fitness: 11.7502 Genotype: Fch1: A coadaptive 5.3 5.7 B coadaptive 8.6 0.3 C disease 0 1 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.7502 disease 3 +1995 Fitness: 11.7502 Genotype: Fch1: A coadaptive 5.3 5.7 B coadaptive 8.6 0.3 C disease 0 1 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 11.7502 disease 3 +1996 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.7 B coadaptive 9.6 4.8 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1997 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.7 B coadaptive 9.6 4.8 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1998 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.7 B coadaptive 9.6 4.8 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1999 Fitness: 3.81875 Genotype: Fch1: A coadaptive 0.4 4.6 B coadaptive 0.9 3.1 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 3.81875 disease 1.5 +2000 Fitness: 3.81875 Genotype: Fch1: A coadaptive 0.4 4.6 B coadaptive 0.9 3.1 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 3.81875 disease 1.5 +2001 Fitness: 3.81875 Genotype: Fch1: A coadaptive 0.4 4.6 B coadaptive 0.9 3.1 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 3.81875 disease 1.5 diff --git a/DEC_GUI/DEC-0.0/generation.4.xls b/DEC_GUI/DEC-0.0/generation.4.xls new file mode 100644 index 0000000..b01e503 --- /dev/null +++ b/DEC_GUI/DEC-0.0/generation.4.xls @@ -0,0 +1,2002 @@ +Population size: 2001 +1 Fitness: 7.53254 Genotype: Fch1: A coadaptive 0 6.8 B coadaptive 8.2 3.9 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.53254 disease 3 +2 Fitness: 7.53254 Genotype: Fch1: A coadaptive 0 6.8 B coadaptive 8.2 3.9 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.53254 disease 3 +3 Fitness: 7.53254 Genotype: Fch1: A coadaptive 0 6.8 B coadaptive 8.2 3.9 C disease 0 1 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 7.53254 disease 3 +4 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 3.9 B coadaptive 9.9 10 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +5 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 3.9 B coadaptive 9.9 10 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +6 Fitness: 0 Genotype: Fch1: A coadaptive 6.1 3.9 B coadaptive 9.9 10 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +7 Fitness: 8.79178 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 9 3.7 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.79178 disease 3.5 +8 Fitness: 8.79178 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 9 3.7 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.79178 disease 3.5 +9 Fitness: 8.79178 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 9 3.7 C disease 1 1 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 8.79178 disease 3.5 +10 Fitness: 9.09429 Genotype: Fch1: A coadaptive 2.3 5.2 B coadaptive 5 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.09429 disease 3 +11 Fitness: 9.09429 Genotype: Fch1: A coadaptive 2.3 5.2 B coadaptive 5 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.09429 disease 3 +12 Fitness: 9.09429 Genotype: Fch1: A coadaptive 2.3 5.2 B coadaptive 5 2.9 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.09429 disease 3 +13 Fitness: 1.87519 Genotype: Fch1: A coadaptive 5 5.4 B coadaptive 9.8 8.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.87519 disease 2 +14 Fitness: 1.87519 Genotype: Fch1: A coadaptive 5 5.4 B coadaptive 9.8 8.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.87519 disease 2 +15 Fitness: 1.87519 Genotype: Fch1: A coadaptive 5 5.4 B coadaptive 9.8 8.6 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.87519 disease 2 +16 Fitness: 1.73488 Genotype: Fch1: A coadaptive 1.1 1.2 B coadaptive 0.5 3.2 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.73488 disease 2 +17 Fitness: 1.73488 Genotype: Fch1: A coadaptive 1.1 1.2 B coadaptive 0.5 3.2 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.73488 disease 2 +18 Fitness: 1.73488 Genotype: Fch1: A coadaptive 1.1 1.2 B coadaptive 0.5 3.2 C disease 0 0 D disease 1 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 1.73488 disease 2 +19 Fitness: 8.76542 Genotype: Fch1: A coadaptive 4.1 2.7 B coadaptive 1.2 8.9 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.76542 disease 3 +20 Fitness: 8.76542 Genotype: Fch1: A coadaptive 4.1 2.7 B coadaptive 1.2 8.9 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.76542 disease 3 +21 Fitness: 8.76542 Genotype: Fch1: A coadaptive 4.1 2.7 B coadaptive 1.2 8.9 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.76542 disease 3 +22 Fitness: 1.50305 Genotype: Fch1: A coadaptive 1.7 3.5 B coadaptive 3.7 9.7 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 1.50305 disease 3.5 +23 Fitness: 1.50305 Genotype: Fch1: A coadaptive 1.7 3.5 B coadaptive 3.7 9.7 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 1.50305 disease 3.5 +24 Fitness: 1.50305 Genotype: Fch1: A coadaptive 1.7 3.5 B coadaptive 3.7 9.7 C disease 1 0.5 D disease 1 1 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 1.50305 disease 3.5 +25 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0 B coadaptive 0.7 7.5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +26 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0 B coadaptive 0.7 7.5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +27 Fitness: 0 Genotype: Fch1: A coadaptive 0.2 0 B coadaptive 0.7 7.5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +28 Fitness: 9.27224 Genotype: Fch1: A coadaptive 7.2 5.8 B coadaptive 4 4.1 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.27224 disease 2 +29 Fitness: 9.27224 Genotype: Fch1: A coadaptive 7.2 5.8 B coadaptive 4 4.1 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.27224 disease 2 +30 Fitness: 9.27224 Genotype: Fch1: A coadaptive 7.2 5.8 B coadaptive 4 4.1 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 9.27224 disease 2 +31 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.3 B coadaptive 0.1 1.3 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +32 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.3 B coadaptive 0.1 1.3 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +33 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 4.3 B coadaptive 0.1 1.3 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +34 Fitness: 9.70965 Genotype: Fch1: A coadaptive 6.2 1.6 B coadaptive 5.1 3.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.70965 disease 3 +35 Fitness: 9.70965 Genotype: Fch1: A coadaptive 6.2 1.6 B coadaptive 5.1 3.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.70965 disease 3 +36 Fitness: 9.70965 Genotype: Fch1: A coadaptive 6.2 1.6 B coadaptive 5.1 3.3 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.70965 disease 3 +37 Fitness: 8.92994 Genotype: Fch1: A coadaptive 3.7 6.4 B coadaptive 5.9 1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.92994 disease 3 +38 Fitness: 8.92994 Genotype: Fch1: A coadaptive 3.7 6.4 B coadaptive 5.9 1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.92994 disease 3 +39 Fitness: 8.92994 Genotype: Fch1: A coadaptive 3.7 6.4 B coadaptive 5.9 1 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 8.92994 disease 3 +40 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 8.5 B coadaptive 0.6 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +41 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 8.5 B coadaptive 0.6 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +42 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 8.5 B coadaptive 0.6 0.1 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +43 Fitness: 13.117 Genotype: Fch1: A coadaptive 5.7 8.3 B coadaptive 9.1 7 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.117 disease 2 +44 Fitness: 13.117 Genotype: Fch1: A coadaptive 5.7 8.3 B coadaptive 9.1 7 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.117 disease 2 +45 Fitness: 13.117 Genotype: Fch1: A coadaptive 5.7 8.3 B coadaptive 9.1 7 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.117 disease 2 +46 Fitness: 14.1787 Genotype: Fch1: A coadaptive 6.2 7.3 B coadaptive 10 1.8 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.1787 disease 3.5 +47 Fitness: 14.1787 Genotype: Fch1: A coadaptive 6.2 7.3 B coadaptive 10 1.8 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.1787 disease 3.5 +48 Fitness: 14.1787 Genotype: Fch1: A coadaptive 6.2 7.3 B coadaptive 10 1.8 C disease 0.5 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.1787 disease 3.5 +49 Fitness: 11.9938 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 3.3 7.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.9938 disease 2.5 +50 Fitness: 11.9938 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 3.3 7.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.9938 disease 2.5 +51 Fitness: 11.9938 Genotype: Fch1: A coadaptive 0.6 8.5 B coadaptive 3.3 7.6 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.9938 disease 2.5 +52 Fitness: 8.05106 Genotype: Fch1: A coadaptive 5.9 3.5 B coadaptive 4.1 2.2 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.05106 disease 3 +53 Fitness: 8.05106 Genotype: Fch1: A coadaptive 5.9 3.5 B coadaptive 4.1 2.2 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.05106 disease 3 +54 Fitness: 8.05106 Genotype: Fch1: A coadaptive 5.9 3.5 B coadaptive 4.1 2.2 C disease 0 1 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.05106 disease 3 +55 Fitness: 2.47587 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 1.7 5.2 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.47587 disease 2.5 +56 Fitness: 2.47587 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 1.7 5.2 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.47587 disease 2.5 +57 Fitness: 2.47587 Genotype: Fch1: A coadaptive 7.8 7.3 B coadaptive 1.7 5.2 C disease 0 0.5 D disease 0.5 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.47587 disease 2.5 +58 Fitness: 10.6235 Genotype: Fch1: A coadaptive 6 2.2 B coadaptive 9.4 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 10.6235 disease 3.5 +59 Fitness: 10.6235 Genotype: Fch1: A coadaptive 6 2.2 B coadaptive 9.4 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 10.6235 disease 3.5 +60 Fitness: 10.6235 Genotype: Fch1: A coadaptive 6 2.2 B coadaptive 9.4 2.1 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 10.6235 disease 3.5 +61 Fitness: 13.4071 Genotype: Fch1: A coadaptive 7.2 3.5 B coadaptive 4 6.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 13.4071 disease 3.5 +62 Fitness: 13.4071 Genotype: Fch1: A coadaptive 7.2 3.5 B coadaptive 4 6.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 13.4071 disease 3.5 +63 Fitness: 13.4071 Genotype: Fch1: A coadaptive 7.2 3.5 B coadaptive 4 6.9 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 13.4071 disease 3.5 +64 Fitness: 12.9944 Genotype: Fch1: A coadaptive 8 3.6 B coadaptive 3.7 6.3 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.9944 disease 3.5 +65 Fitness: 12.9944 Genotype: Fch1: A coadaptive 8 3.6 B coadaptive 3.7 6.3 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.9944 disease 3.5 +66 Fitness: 12.9944 Genotype: Fch1: A coadaptive 8 3.6 B coadaptive 3.7 6.3 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.9944 disease 3.5 +67 Fitness: 8.17678 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 3 9.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.17678 disease 3.5 +68 Fitness: 8.17678 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 3 9.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.17678 disease 3.5 +69 Fitness: 8.17678 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 3 9.3 C disease 0 0.5 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 8.17678 disease 3.5 +70 Fitness: 2.99375 Genotype: Fch1: A coadaptive 9.7 4.2 B coadaptive 4.4 1.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 2.99375 disease 4 +71 Fitness: 2.99375 Genotype: Fch1: A coadaptive 9.7 4.2 B coadaptive 4.4 1.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 2.99375 disease 4 +72 Fitness: 2.99375 Genotype: Fch1: A coadaptive 9.7 4.2 B coadaptive 4.4 1.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 2.99375 disease 4 +73 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 6.9 B coadaptive 0.2 0.9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +74 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 6.9 B coadaptive 0.2 0.9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +75 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 6.9 B coadaptive 0.2 0.9 C disease 0.5 1 D disease 0.5 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +76 Fitness: 3.24005 Genotype: Fch1: A coadaptive 1.7 1.9 B coadaptive 1.2 3.4 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.24005 disease 3.5 +77 Fitness: 3.24005 Genotype: Fch1: A coadaptive 1.7 1.9 B coadaptive 1.2 3.4 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.24005 disease 3.5 +78 Fitness: 3.24005 Genotype: Fch1: A coadaptive 1.7 1.9 B coadaptive 1.2 3.4 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 3.24005 disease 3.5 +79 Fitness: 12.7862 Genotype: Fch1: A coadaptive 4 9 B coadaptive 8.9 1.3 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.7862 disease 2.5 +80 Fitness: 12.7862 Genotype: Fch1: A coadaptive 4 9 B coadaptive 8.9 1.3 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.7862 disease 2.5 +81 Fitness: 12.7862 Genotype: Fch1: A coadaptive 4 9 B coadaptive 8.9 1.3 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.7862 disease 2.5 +82 Fitness: 4.91028 Genotype: Fch1: A coadaptive 0.6 6.6 B coadaptive 1.6 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 4.91028 disease 3 +83 Fitness: 4.91028 Genotype: Fch1: A coadaptive 0.6 6.6 B coadaptive 1.6 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 4.91028 disease 3 +84 Fitness: 4.91028 Genotype: Fch1: A coadaptive 0.6 6.6 B coadaptive 1.6 2.7 C disease 1 0.5 D disease 0 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 4.91028 disease 3 +85 Fitness: 2.21114 Genotype: Fch1: A coadaptive 1.8 3 B coadaptive 1 1.5 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 2.21114 disease 4 +86 Fitness: 2.21114 Genotype: Fch1: A coadaptive 1.8 3 B coadaptive 1 1.5 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 2.21114 disease 4 +87 Fitness: 2.21114 Genotype: Fch1: A coadaptive 1.8 3 B coadaptive 1 1.5 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 2.21114 disease 4 +88 Fitness: 10.4614 Genotype: Fch1: A coadaptive 2.4 6.1 B coadaptive 3.2 5.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.4614 disease 3.5 +89 Fitness: 10.4614 Genotype: Fch1: A coadaptive 2.4 6.1 B coadaptive 3.2 5.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.4614 disease 3.5 +90 Fitness: 10.4614 Genotype: Fch1: A coadaptive 2.4 6.1 B coadaptive 3.2 5.4 C disease 0 1 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 10.4614 disease 3.5 +91 Fitness: 1.56484 Genotype: Fch1: A coadaptive 1 5.5 B coadaptive 10 5 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 1.56484 disease 2 +92 Fitness: 1.56484 Genotype: Fch1: A coadaptive 1 5.5 B coadaptive 10 5 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 1.56484 disease 2 +93 Fitness: 1.56484 Genotype: Fch1: A coadaptive 1 5.5 B coadaptive 10 5 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 1.56484 disease 2 +94 Fitness: 5.50032 Genotype: Fch1: A coadaptive 1.7 3 B coadaptive 7 1.5 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.50032 disease 2.5 +95 Fitness: 5.50032 Genotype: Fch1: A coadaptive 1.7 3 B coadaptive 7 1.5 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.50032 disease 2.5 +96 Fitness: 5.50032 Genotype: Fch1: A coadaptive 1.7 3 B coadaptive 7 1.5 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 5.50032 disease 2.5 +97 Fitness: 5.88071 Genotype: Fch1: A coadaptive 3.3 7.5 B coadaptive 9.9 7.6 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 5.88071 disease 3 +98 Fitness: 5.88071 Genotype: Fch1: A coadaptive 3.3 7.5 B coadaptive 9.9 7.6 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 5.88071 disease 3 +99 Fitness: 5.88071 Genotype: Fch1: A coadaptive 3.3 7.5 B coadaptive 9.9 7.6 C disease 0.5 1 D disease 0 0 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 5.88071 disease 3 +100 Fitness: 12.3804 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.4 7.2 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3804 disease 2 +101 Fitness: 12.3804 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.4 7.2 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3804 disease 2 +102 Fitness: 12.3804 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.4 7.2 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3804 disease 2 +103 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 0 B coadaptive 9 8.2 C disease 0 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +104 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 0 B coadaptive 9 8.2 C disease 0 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +105 Fitness: 0 Genotype: Fch1: A coadaptive 7.3 0 B coadaptive 9 8.2 C disease 0 0 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3 +106 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.5 B coadaptive 10 4.7 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +107 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.5 B coadaptive 10 4.7 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +108 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.5 B coadaptive 10 4.7 C disease 1 1 D disease 0.5 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +109 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9 B coadaptive 1.5 7.3 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +110 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9 B coadaptive 1.5 7.3 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +111 Fitness: 0 Genotype: Fch1: A coadaptive 9.9 9 B coadaptive 1.5 7.3 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2 +112 Fitness: 14.5925 Genotype: Fch1: A coadaptive 8.4 6 B coadaptive 4.5 9.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.5925 disease 2.5 +113 Fitness: 14.5925 Genotype: Fch1: A coadaptive 8.4 6 B coadaptive 4.5 9.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.5925 disease 2.5 +114 Fitness: 14.5925 Genotype: Fch1: A coadaptive 8.4 6 B coadaptive 4.5 9.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.5925 disease 2.5 +115 Fitness: 0.575219 Genotype: Fch1: A coadaptive 0.6 1.2 B coadaptive 6.1 1.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.575219 disease 2.5 +116 Fitness: 0.575219 Genotype: Fch1: A coadaptive 0.6 1.2 B coadaptive 6.1 1.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.575219 disease 2.5 +117 Fitness: 0.575219 Genotype: Fch1: A coadaptive 0.6 1.2 B coadaptive 6.1 1.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 0.575219 disease 2.5 +118 Fitness: 14.4298 Genotype: Fch1: A coadaptive 6.4 5.5 B coadaptive 6.2 6.1 C disease 0.5 1 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 14.4298 disease 3.5 +119 Fitness: 14.4298 Genotype: Fch1: A coadaptive 6.4 5.5 B coadaptive 6.2 6.1 C disease 0.5 1 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 14.4298 disease 3.5 +120 Fitness: 14.4298 Genotype: Fch1: A coadaptive 6.4 5.5 B coadaptive 6.2 6.1 C disease 0.5 1 D disease 1 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 14.4298 disease 3.5 +121 Fitness: 7.90216 Genotype: Fch1: A coadaptive 9.7 1.2 B coadaptive 4.4 2.1 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.90216 disease 3.5 +122 Fitness: 7.90216 Genotype: Fch1: A coadaptive 9.7 1.2 B coadaptive 4.4 2.1 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.90216 disease 3.5 +123 Fitness: 7.90216 Genotype: Fch1: A coadaptive 9.7 1.2 B coadaptive 4.4 2.1 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 7.90216 disease 3.5 +124 Fitness: 0 Genotype: Fch1: A coadaptive 3.8 0 B coadaptive 8.3 7.7 C disease 0 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +125 Fitness: 0 Genotype: Fch1: A coadaptive 3.8 0 B coadaptive 8.3 7.7 C disease 0 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +126 Fitness: 0 Genotype: Fch1: A coadaptive 3.8 0 B coadaptive 8.3 7.7 C disease 0 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +127 Fitness: 6.24138 Genotype: Fch1: A coadaptive 8.9 0.2 B coadaptive 1.9 3.3 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.24138 disease 2.5 +128 Fitness: 6.24138 Genotype: Fch1: A coadaptive 8.9 0.2 B coadaptive 1.9 3.3 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.24138 disease 2.5 +129 Fitness: 6.24138 Genotype: Fch1: A coadaptive 8.9 0.2 B coadaptive 1.9 3.3 C disease 0 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.24138 disease 2.5 +130 Fitness: 5.76641 Genotype: Fch1: A coadaptive 6.2 4.8 B coadaptive 5.1 0.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.76641 disease 3 +131 Fitness: 5.76641 Genotype: Fch1: A coadaptive 6.2 4.8 B coadaptive 5.1 0.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.76641 disease 3 +132 Fitness: 5.76641 Genotype: Fch1: A coadaptive 6.2 4.8 B coadaptive 5.1 0.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.76641 disease 3 +133 Fitness: 0.113281 Genotype: Fch1: A coadaptive 1.8 4.6 B coadaptive 0.1 1 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.113281 disease 2 +134 Fitness: 0.113281 Genotype: Fch1: A coadaptive 1.8 4.6 B coadaptive 0.1 1 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.113281 disease 2 +135 Fitness: 0.113281 Genotype: Fch1: A coadaptive 1.8 4.6 B coadaptive 0.1 1 C disease 0 1 D disease 0.5 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.113281 disease 2 +136 Fitness: 9.42299 Genotype: Fch1: A coadaptive 1.8 7.9 B coadaptive 0.6 6.6 C disease 1 0 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.42299 disease 2.5 +137 Fitness: 9.42299 Genotype: Fch1: A coadaptive 1.8 7.9 B coadaptive 0.6 6.6 C disease 1 0 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.42299 disease 2.5 +138 Fitness: 9.42299 Genotype: Fch1: A coadaptive 1.8 7.9 B coadaptive 0.6 6.6 C disease 1 0 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 9.42299 disease 2.5 +139 Fitness: 11.5904 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 6.3 4.1 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.5904 disease 3 +140 Fitness: 11.5904 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 6.3 4.1 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.5904 disease 3 +141 Fitness: 11.5904 Genotype: Fch1: A coadaptive 2.3 6.5 B coadaptive 6.3 4.1 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 11.5904 disease 3 +142 Fitness: 7.8893 Genotype: Fch1: A coadaptive 3.9 2.3 B coadaptive 3.7 5.7 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 7.8893 disease 3.5 +143 Fitness: 7.8893 Genotype: Fch1: A coadaptive 3.9 2.3 B coadaptive 3.7 5.7 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 7.8893 disease 3.5 +144 Fitness: 7.8893 Genotype: Fch1: A coadaptive 3.9 2.3 B coadaptive 3.7 5.7 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 7.8893 disease 3.5 +145 Fitness: 2.0384 Genotype: Fch1: A coadaptive 5.3 3.1 B coadaptive 0.6 2.2 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 2.0384 disease 2.5 +146 Fitness: 2.0384 Genotype: Fch1: A coadaptive 5.3 3.1 B coadaptive 0.6 2.2 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 2.0384 disease 2.5 +147 Fitness: 2.0384 Genotype: Fch1: A coadaptive 5.3 3.1 B coadaptive 0.6 2.2 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 2.0384 disease 2.5 +148 Fitness: 9.23688 Genotype: Fch1: A coadaptive 4.5 7 B coadaptive 1.3 6.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.23688 disease 2.5 +149 Fitness: 9.23688 Genotype: Fch1: A coadaptive 4.5 7 B coadaptive 1.3 6.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.23688 disease 2.5 +150 Fitness: 9.23688 Genotype: Fch1: A coadaptive 4.5 7 B coadaptive 1.3 6.1 C disease 1 0.5 D disease 0 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.23688 disease 2.5 +151 Fitness: 5.8712 Genotype: Fch1: A coadaptive 6.7 3.3 B coadaptive 4.9 0.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.8712 disease 3 +152 Fitness: 5.8712 Genotype: Fch1: A coadaptive 6.7 3.3 B coadaptive 4.9 0.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.8712 disease 3 +153 Fitness: 5.8712 Genotype: Fch1: A coadaptive 6.7 3.3 B coadaptive 4.9 0.3 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 5.8712 disease 3 +154 Fitness: 11.3747 Genotype: Fch1: A coadaptive 8.3 2.4 B coadaptive 7 8 C disease 0 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.3747 disease 2.5 +155 Fitness: 11.3747 Genotype: Fch1: A coadaptive 8.3 2.4 B coadaptive 7 8 C disease 0 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.3747 disease 2.5 +156 Fitness: 11.3747 Genotype: Fch1: A coadaptive 8.3 2.4 B coadaptive 7 8 C disease 0 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.3747 disease 2.5 +157 Fitness: 13.1767 Genotype: Fch1: A coadaptive 3.9 7.1 B coadaptive 2.1 8.2 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 13.1767 disease 3.5 +158 Fitness: 13.1767 Genotype: Fch1: A coadaptive 3.9 7.1 B coadaptive 2.1 8.2 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 13.1767 disease 3.5 +159 Fitness: 13.1767 Genotype: Fch1: A coadaptive 3.9 7.1 B coadaptive 2.1 8.2 C disease 0 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 13.1767 disease 3.5 +160 Fitness: 14.4832 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 8.6 6 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4832 disease 2.5 +161 Fitness: 14.4832 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 8.6 6 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4832 disease 2.5 +162 Fitness: 14.4832 Genotype: Fch1: A coadaptive 5.4 8.3 B coadaptive 8.6 6 C disease 1 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4832 disease 2.5 +163 Fitness: 8.2944 Genotype: Fch1: A coadaptive 3.3 3.9 B coadaptive 3.5 3.7 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.2944 disease 3.5 +164 Fitness: 8.2944 Genotype: Fch1: A coadaptive 3.3 3.9 B coadaptive 3.5 3.7 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.2944 disease 3.5 +165 Fitness: 8.2944 Genotype: Fch1: A coadaptive 3.3 3.9 B coadaptive 3.5 3.7 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.2944 disease 3.5 +166 Fitness: 1.51082 Genotype: Fch1: A coadaptive 8.7 3 B coadaptive 10 9.3 C disease 0 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.51082 disease 3 +167 Fitness: 1.51082 Genotype: Fch1: A coadaptive 8.7 3 B coadaptive 10 9.3 C disease 0 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.51082 disease 3 +168 Fitness: 1.51082 Genotype: Fch1: A coadaptive 8.7 3 B coadaptive 10 9.3 C disease 0 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.51082 disease 3 +169 Fitness: 7.47987 Genotype: Fch1: A coadaptive 6.3 7.8 B coadaptive 1.3 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.47987 disease 2.5 +170 Fitness: 7.47987 Genotype: Fch1: A coadaptive 6.3 7.8 B coadaptive 1.3 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.47987 disease 2.5 +171 Fitness: 7.47987 Genotype: Fch1: A coadaptive 6.3 7.8 B coadaptive 1.3 6.7 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 7.47987 disease 2.5 +172 Fitness: 6.12265 Genotype: Fch1: A coadaptive 5.8 4.1 B coadaptive 4.1 1.2 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 6.12265 disease 2 +173 Fitness: 6.12265 Genotype: Fch1: A coadaptive 5.8 4.1 B coadaptive 4.1 1.2 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 6.12265 disease 2 +174 Fitness: 6.12265 Genotype: Fch1: A coadaptive 5.8 4.1 B coadaptive 4.1 1.2 C disease 0 0.5 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 6.12265 disease 2 +175 Fitness: 6.25423 Genotype: Fch1: A coadaptive 1.7 5.1 B coadaptive 8.5 4.6 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.25423 disease 3 +176 Fitness: 6.25423 Genotype: Fch1: A coadaptive 1.7 5.1 B coadaptive 8.5 4.6 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.25423 disease 3 +177 Fitness: 6.25423 Genotype: Fch1: A coadaptive 1.7 5.1 B coadaptive 8.5 4.6 C disease 1 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.25423 disease 3 +178 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 0.9 B coadaptive 9 10 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +179 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 0.9 B coadaptive 9 10 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +180 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 0.9 B coadaptive 9 10 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +181 Fitness: 2.50665 Genotype: Fch1: A coadaptive 9.4 1 B coadaptive 0.5 3.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.50665 disease 2.5 +182 Fitness: 2.50665 Genotype: Fch1: A coadaptive 9.4 1 B coadaptive 0.5 3.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.50665 disease 2.5 +183 Fitness: 2.50665 Genotype: Fch1: A coadaptive 9.4 1 B coadaptive 0.5 3.3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 2.50665 disease 2.5 +184 Fitness: 7.20841 Genotype: Fch1: A coadaptive 9.2 5.9 B coadaptive 4.6 4.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.20841 disease 3.5 +185 Fitness: 7.20841 Genotype: Fch1: A coadaptive 9.2 5.9 B coadaptive 4.6 4.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.20841 disease 3.5 +186 Fitness: 7.20841 Genotype: Fch1: A coadaptive 9.2 5.9 B coadaptive 4.6 4.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.20841 disease 3.5 +187 Fitness: 1.75169 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 7.7 8.1 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 1.75169 disease 3 +188 Fitness: 1.75169 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 7.7 8.1 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 1.75169 disease 3 +189 Fitness: 1.75169 Genotype: Fch1: A coadaptive 0 7.3 B coadaptive 7.7 8.1 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 1.75169 disease 3 +190 Fitness: 1.0237 Genotype: Fch1: A coadaptive 2.4 0.2 B coadaptive 1.1 0.7 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 1.0237 disease 3 +191 Fitness: 1.0237 Genotype: Fch1: A coadaptive 2.4 0.2 B coadaptive 1.1 0.7 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 1.0237 disease 3 +192 Fitness: 1.0237 Genotype: Fch1: A coadaptive 2.4 0.2 B coadaptive 1.1 0.7 C disease 0.5 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 1.0237 disease 3 +193 Fitness: 7.04639 Genotype: Fch1: A coadaptive 3.4 2.3 B coadaptive 4 5.4 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.04639 disease 3.5 +194 Fitness: 7.04639 Genotype: Fch1: A coadaptive 3.4 2.3 B coadaptive 4 5.4 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.04639 disease 3.5 +195 Fitness: 7.04639 Genotype: Fch1: A coadaptive 3.4 2.3 B coadaptive 4 5.4 C disease 0.5 1 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.04639 disease 3.5 +196 Fitness: 11.0192 Genotype: Fch1: A coadaptive 7.3 1.9 B coadaptive 9.9 3.4 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.0192 disease 4 +197 Fitness: 11.0192 Genotype: Fch1: A coadaptive 7.3 1.9 B coadaptive 9.9 3.4 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.0192 disease 4 +198 Fitness: 11.0192 Genotype: Fch1: A coadaptive 7.3 1.9 B coadaptive 9.9 3.4 C disease 0.5 1 D disease 1 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 11.0192 disease 4 +199 Fitness: 7.73323 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 3.7 5 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.73323 disease 3 +200 Fitness: 7.73323 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 3.7 5 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.73323 disease 3 +201 Fitness: 7.73323 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 3.7 5 C disease 1 0.5 D disease 1 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.73323 disease 3 +202 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 7.3 B coadaptive 0.5 0.3 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +203 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 7.3 B coadaptive 0.5 0.3 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +204 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 7.3 B coadaptive 0.5 0.3 C disease 0 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +205 Fitness: 4.1011 Genotype: Fch1: A coadaptive 1.6 2.2 B coadaptive 3.3 4.5 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 4.1011 disease 3 +206 Fitness: 4.1011 Genotype: Fch1: A coadaptive 1.6 2.2 B coadaptive 3.3 4.5 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 4.1011 disease 3 +207 Fitness: 4.1011 Genotype: Fch1: A coadaptive 1.6 2.2 B coadaptive 3.3 4.5 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 4.1011 disease 3 +208 Fitness: 6.60302 Genotype: Fch1: A coadaptive 2.5 3.1 B coadaptive 7.9 2.2 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.60302 disease 4 +209 Fitness: 6.60302 Genotype: Fch1: A coadaptive 2.5 3.1 B coadaptive 7.9 2.2 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.60302 disease 4 +210 Fitness: 6.60302 Genotype: Fch1: A coadaptive 2.5 3.1 B coadaptive 7.9 2.2 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 1 0.5 Phenotype: coadaptive 6.60302 disease 4 +211 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 1.4 B coadaptive 6.9 9.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +212 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 1.4 B coadaptive 6.9 9.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +213 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 1.4 B coadaptive 6.9 9.3 C disease 1 1 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +214 Fitness: 6.54985 Genotype: Fch1: A coadaptive 1.7 3.9 B coadaptive 1.8 8.4 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.54985 disease 3.5 +215 Fitness: 6.54985 Genotype: Fch1: A coadaptive 1.7 3.9 B coadaptive 1.8 8.4 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.54985 disease 3.5 +216 Fitness: 6.54985 Genotype: Fch1: A coadaptive 1.7 3.9 B coadaptive 1.8 8.4 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 6.54985 disease 3.5 +217 Fitness: 7.2245 Genotype: Fch1: A coadaptive 6.1 2.1 B coadaptive 5.4 0.4 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 7.2245 disease 3.5 +218 Fitness: 7.2245 Genotype: Fch1: A coadaptive 6.1 2.1 B coadaptive 5.4 0.4 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 7.2245 disease 3.5 +219 Fitness: 7.2245 Genotype: Fch1: A coadaptive 6.1 2.1 B coadaptive 5.4 0.4 C disease 1 0 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 7.2245 disease 3.5 +220 Fitness: 7.92011 Genotype: Fch1: A coadaptive 5.5 2.4 B coadaptive 3.1 3.3 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 7.92011 disease 3 +221 Fitness: 7.92011 Genotype: Fch1: A coadaptive 5.5 2.4 B coadaptive 3.1 3.3 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 7.92011 disease 3 +222 Fitness: 7.92011 Genotype: Fch1: A coadaptive 5.5 2.4 B coadaptive 3.1 3.3 C disease 1 1 D disease 0 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 7.92011 disease 3 +223 Fitness: 6.6876 Genotype: Fch1: A coadaptive 6.2 6.6 B coadaptive 5.1 1.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.6876 disease 2.5 +224 Fitness: 6.6876 Genotype: Fch1: A coadaptive 6.2 6.6 B coadaptive 5.1 1.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.6876 disease 2.5 +225 Fitness: 6.6876 Genotype: Fch1: A coadaptive 6.2 6.6 B coadaptive 5.1 1.7 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.6876 disease 2.5 +226 Fitness: 7.64285 Genotype: Fch1: A coadaptive 9 2 B coadaptive 5.5 0.9 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.64285 disease 2 +227 Fitness: 7.64285 Genotype: Fch1: A coadaptive 9 2 B coadaptive 5.5 0.9 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.64285 disease 2 +228 Fitness: 7.64285 Genotype: Fch1: A coadaptive 9 2 B coadaptive 5.5 0.9 C disease 0 0.5 D disease 0 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.64285 disease 2 +229 Fitness: 9.45466 Genotype: Fch1: A coadaptive 1.3 6.1 B coadaptive 4.5 6.6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.45466 disease 3 +230 Fitness: 9.45466 Genotype: Fch1: A coadaptive 1.3 6.1 B coadaptive 4.5 6.6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.45466 disease 3 +231 Fitness: 9.45466 Genotype: Fch1: A coadaptive 1.3 6.1 B coadaptive 4.5 6.6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 9.45466 disease 3 +232 Fitness: 7.3261 Genotype: Fch1: A coadaptive 0.9 9.4 B coadaptive 9 7.6 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.3261 disease 2.5 +233 Fitness: 7.3261 Genotype: Fch1: A coadaptive 0.9 9.4 B coadaptive 9 7.6 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.3261 disease 2.5 +234 Fitness: 7.3261 Genotype: Fch1: A coadaptive 0.9 9.4 B coadaptive 9 7.6 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0 1 Phenotype: coadaptive 7.3261 disease 2.5 +235 Fitness: 9.99121 Genotype: Fch1: A coadaptive 7.6 5.8 B coadaptive 0.3 8.4 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.99121 disease 2.5 +236 Fitness: 9.99121 Genotype: Fch1: A coadaptive 7.6 5.8 B coadaptive 0.3 8.4 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.99121 disease 2.5 +237 Fitness: 9.99121 Genotype: Fch1: A coadaptive 7.6 5.8 B coadaptive 0.3 8.4 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.99121 disease 2.5 +238 Fitness: 6.59272 Genotype: Fch1: A coadaptive 6.1 8.6 B coadaptive 7.5 0.6 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.59272 disease 3 +239 Fitness: 6.59272 Genotype: Fch1: A coadaptive 6.1 8.6 B coadaptive 7.5 0.6 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.59272 disease 3 +240 Fitness: 6.59272 Genotype: Fch1: A coadaptive 6.1 8.6 B coadaptive 7.5 0.6 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 6.59272 disease 3 +241 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 6.7 8.4 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +242 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 6.7 8.4 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +243 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 2.8 B coadaptive 6.7 8.4 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +244 Fitness: 1.60655 Genotype: Fch1: A coadaptive 1.9 0.9 B coadaptive 3.4 5.6 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 1.60655 disease 3.5 +245 Fitness: 1.60655 Genotype: Fch1: A coadaptive 1.9 0.9 B coadaptive 3.4 5.6 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 1.60655 disease 3.5 +246 Fitness: 1.60655 Genotype: Fch1: A coadaptive 1.9 0.9 B coadaptive 3.4 5.6 C disease 1 0 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 1.60655 disease 3.5 +247 Fitness: 5.46875 Genotype: Fch1: A coadaptive 3.1 1.9 B coadaptive 2.2 7.8 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.46875 disease 3.5 +248 Fitness: 5.46875 Genotype: Fch1: A coadaptive 3.1 1.9 B coadaptive 2.2 7.8 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.46875 disease 3.5 +249 Fitness: 5.46875 Genotype: Fch1: A coadaptive 3.1 1.9 B coadaptive 2.2 7.8 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 5.46875 disease 3.5 +250 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.3 B coadaptive 5 6.7 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +251 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.3 B coadaptive 5 6.7 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +252 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.3 B coadaptive 5 6.7 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +253 Fitness: 11.2988 Genotype: Fch1: A coadaptive 8 4.2 B coadaptive 8.6 7.7 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2988 disease 4 +254 Fitness: 11.2988 Genotype: Fch1: A coadaptive 8 4.2 B coadaptive 8.6 7.7 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2988 disease 4 +255 Fitness: 11.2988 Genotype: Fch1: A coadaptive 8 4.2 B coadaptive 8.6 7.7 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 11.2988 disease 4 +256 Fitness: 12.5668 Genotype: Fch1: A coadaptive 6.2 6.2 B coadaptive 5.7 10 C disease 0 0.5 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 12.5668 disease 3 +257 Fitness: 12.5668 Genotype: Fch1: A coadaptive 6.2 6.2 B coadaptive 5.7 10 C disease 0 0.5 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 12.5668 disease 3 +258 Fitness: 12.5668 Genotype: Fch1: A coadaptive 6.2 6.2 B coadaptive 5.7 10 C disease 0 0.5 D disease 1 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 12.5668 disease 3 +259 Fitness: 6.34187 Genotype: Fch1: A coadaptive 4.3 1 B coadaptive 1.3 6.1 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 6.34187 disease 2 +260 Fitness: 6.34187 Genotype: Fch1: A coadaptive 4.3 1 B coadaptive 1.3 6.1 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 6.34187 disease 2 +261 Fitness: 6.34187 Genotype: Fch1: A coadaptive 4.3 1 B coadaptive 1.3 6.1 C disease 1 1 D disease 0.5 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 6.34187 disease 2 +262 Fitness: 9.86951 Genotype: Fch1: A coadaptive 7.3 6.2 B coadaptive 1.8 6.9 C disease 1 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.86951 disease 4 +263 Fitness: 2.44066 Genotype: Fch1: A coadaptive 2.6 0.5 B coadaptive 2.6 6.1 C disease 1 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 2.44066 disease 4 +264 Fitness: 2.44066 Genotype: Fch1: A coadaptive 2.6 0.5 B coadaptive 2.6 6.1 C disease 1 0.5 D disease 1 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 2.44066 disease 4 +265 Fitness: 11.0348 Genotype: Fch1: A coadaptive 9.9 1.3 B coadaptive 3.9 4.5 C disease 0 1 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 11.0348 disease 3.5 +266 Fitness: 11.0348 Genotype: Fch1: A coadaptive 9.9 1.3 B coadaptive 3.9 4.5 C disease 0 1 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 11.0348 disease 3.5 +267 Fitness: 11.0348 Genotype: Fch1: A coadaptive 9.9 1.3 B coadaptive 3.9 4.5 C disease 0 1 D disease 0.5 0 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 11.0348 disease 3.5 +268 Fitness: 10.926 Genotype: Fch1: A coadaptive 3.9 4.5 B coadaptive 2.1 7.5 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 10.926 disease 2.5 +269 Fitness: 10.926 Genotype: Fch1: A coadaptive 3.9 4.5 B coadaptive 2.1 7.5 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 10.926 disease 2.5 +270 Fitness: 10.926 Genotype: Fch1: A coadaptive 3.9 4.5 B coadaptive 2.1 7.5 C disease 0 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 10.926 disease 2.5 +271 Fitness: 6.87881 Genotype: Fch1: A coadaptive 5.7 0.6 B coadaptive 0.3 6.1 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.87881 disease 3.5 +272 Fitness: 6.87881 Genotype: Fch1: A coadaptive 5.7 0.6 B coadaptive 0.3 6.1 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.87881 disease 3.5 +273 Fitness: 6.87881 Genotype: Fch1: A coadaptive 5.7 0.6 B coadaptive 0.3 6.1 C disease 0 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 6.87881 disease 3.5 +274 Fitness: 7.57745 Genotype: Fch1: A coadaptive 8.5 9.1 B coadaptive 3.7 8.1 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.57745 disease 3 +275 Fitness: 7.57745 Genotype: Fch1: A coadaptive 8.5 9.1 B coadaptive 3.7 8.1 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.57745 disease 3 +276 Fitness: 7.57745 Genotype: Fch1: A coadaptive 8.5 9.1 B coadaptive 3.7 8.1 C disease 1 0 D disease 0 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 7.57745 disease 3 +277 Fitness: 5.00742 Genotype: Fch1: A coadaptive 9.2 7.3 B coadaptive 0.2 9 C disease 0.5 0.5 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 5.00742 disease 2.5 +278 Fitness: 5.00742 Genotype: Fch1: A coadaptive 9.2 7.3 B coadaptive 0.2 9 C disease 0.5 0.5 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 5.00742 disease 2.5 +279 Fitness: 5.00742 Genotype: Fch1: A coadaptive 9.2 7.3 B coadaptive 0.2 9 C disease 0.5 0.5 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 5.00742 disease 2.5 +280 Fitness: 6.57634 Genotype: Fch1: A coadaptive 0.6 8.3 B coadaptive 9.6 6 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.57634 disease 3.5 +281 Fitness: 6.57634 Genotype: Fch1: A coadaptive 0.6 8.3 B coadaptive 9.6 6 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.57634 disease 3.5 +282 Fitness: 6.57634 Genotype: Fch1: A coadaptive 0.6 8.3 B coadaptive 9.6 6 C disease 1 0 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 6.57634 disease 3.5 +283 Fitness: 9.47391 Genotype: Fch1: A coadaptive 8.7 0 B coadaptive 6.3 7.5 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 9.47391 disease 3.5 +284 Fitness: 9.47391 Genotype: Fch1: A coadaptive 8.7 0 B coadaptive 6.3 7.5 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 9.47391 disease 3.5 +285 Fitness: 9.47391 Genotype: Fch1: A coadaptive 8.7 0 B coadaptive 6.3 7.5 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 9.47391 disease 3.5 +286 Fitness: 1.67981 Genotype: Fch1: A coadaptive 3.4 6.9 B coadaptive 0.2 3.2 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 1.67981 disease 3.5 +287 Fitness: 1.67981 Genotype: Fch1: A coadaptive 3.4 6.9 B coadaptive 0.2 3.2 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 1.67981 disease 3.5 +288 Fitness: 1.67981 Genotype: Fch1: A coadaptive 3.4 6.9 B coadaptive 0.2 3.2 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 1.67981 disease 3.5 +289 Fitness: 2.04636 Genotype: Fch1: A coadaptive 4.5 1.1 B coadaptive 1.3 1 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 2.04636 disease 3 +290 Fitness: 2.04636 Genotype: Fch1: A coadaptive 4.5 1.1 B coadaptive 1.3 1 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 2.04636 disease 3 +291 Fitness: 2.04636 Genotype: Fch1: A coadaptive 4.5 1.1 B coadaptive 1.3 1 C disease 0 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 2.04636 disease 3 +292 Fitness: 9.47902 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 9.2 7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.47902 disease 3.5 +293 Fitness: 9.47902 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 9.2 7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.47902 disease 3.5 +294 Fitness: 9.47902 Genotype: Fch1: A coadaptive 2.6 8.3 B coadaptive 9.2 7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 9.47902 disease 3.5 +295 Fitness: 12.5571 Genotype: Fch1: A coadaptive 7 8.9 B coadaptive 5 7.7 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5571 disease 4 +296 Fitness: 12.5571 Genotype: Fch1: A coadaptive 7 8.9 B coadaptive 5 7.7 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5571 disease 4 +297 Fitness: 12.5571 Genotype: Fch1: A coadaptive 7 8.9 B coadaptive 5 7.7 C disease 0 1 D disease 0 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 12.5571 disease 4 +298 Fitness: 1.31381 Genotype: Fch1: A coadaptive 2.9 0.2 B coadaptive 9.3 0.7 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.31381 disease 2 +299 Fitness: 1.31381 Genotype: Fch1: A coadaptive 2.9 0.2 B coadaptive 9.3 0.7 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.31381 disease 2 +300 Fitness: 1.31381 Genotype: Fch1: A coadaptive 2.9 0.2 B coadaptive 9.3 0.7 C disease 0 0 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.31381 disease 2 +301 Fitness: 13.1643 Genotype: Fch1: A coadaptive 7.4 2.8 B coadaptive 2.9 8.4 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.1643 disease 3 +302 Fitness: 13.1643 Genotype: Fch1: A coadaptive 7.4 2.8 B coadaptive 2.9 8.4 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.1643 disease 3 +303 Fitness: 13.1643 Genotype: Fch1: A coadaptive 7.4 2.8 B coadaptive 2.9 8.4 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 13.1643 disease 3 +304 Fitness: 9.03353 Genotype: Fch1: A coadaptive 0.9 7.4 B coadaptive 3.3 3.9 C disease 0 0 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.03353 disease 3 +305 Fitness: 9.03353 Genotype: Fch1: A coadaptive 0.9 7.4 B coadaptive 3.3 3.9 C disease 0 0 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.03353 disease 3 +306 Fitness: 9.03353 Genotype: Fch1: A coadaptive 0.9 7.4 B coadaptive 3.3 3.9 C disease 0 0 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 9.03353 disease 3 +307 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 9.7 B coadaptive 4.5 4.5 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +308 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 9.7 B coadaptive 4.5 4.5 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +309 Fitness: 0 Genotype: Fch1: A coadaptive 8.4 9.7 B coadaptive 4.5 4.5 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +310 Fitness: 8.6883 Genotype: Fch1: A coadaptive 5 7.2 B coadaptive 3.9 3.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.6883 disease 2.5 +311 Fitness: 8.6883 Genotype: Fch1: A coadaptive 5 7.2 B coadaptive 3.9 3.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.6883 disease 2.5 +312 Fitness: 8.6883 Genotype: Fch1: A coadaptive 5 7.2 B coadaptive 3.9 3.5 C disease 0 1 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.6883 disease 2.5 +313 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 9.4 B coadaptive 0.9 0.5 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +314 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 9.4 B coadaptive 0.9 0.5 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +315 Fitness: 0 Genotype: Fch1: A coadaptive 6.9 9.4 B coadaptive 0.9 0.5 C disease 0 0.5 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 2.5 +316 Fitness: 5.76029 Genotype: Fch1: A coadaptive 0 7 B coadaptive 10 3.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 5.76029 disease 3 +317 Fitness: 5.76029 Genotype: Fch1: A coadaptive 0 7 B coadaptive 10 3.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 5.76029 disease 3 +318 Fitness: 5.76029 Genotype: Fch1: A coadaptive 0 7 B coadaptive 10 3.7 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 5.76029 disease 3 +319 Fitness: 8.30545 Genotype: Fch1: A coadaptive 0.3 8.4 B coadaptive 2 4.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 8.30545 disease 2 +320 Fitness: 8.30545 Genotype: Fch1: A coadaptive 0.3 8.4 B coadaptive 2 4.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 8.30545 disease 2 +321 Fitness: 8.30545 Genotype: Fch1: A coadaptive 0.3 8.4 B coadaptive 2 4.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 8.30545 disease 2 +322 Fitness: 13.7123 Genotype: Fch1: A coadaptive 4.1 10 B coadaptive 6.5 5.2 C disease 0 0.5 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.7123 disease 2 +323 Fitness: 13.7123 Genotype: Fch1: A coadaptive 4.1 10 B coadaptive 6.5 5.2 C disease 0 0.5 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.7123 disease 2 +324 Fitness: 13.7123 Genotype: Fch1: A coadaptive 4.1 10 B coadaptive 6.5 5.2 C disease 0 0.5 D disease 0 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.7123 disease 2 +325 Fitness: 4.92196 Genotype: Fch1: A coadaptive 3.2 1.2 B coadaptive 4.2 4.5 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 4.92196 disease 3.5 +326 Fitness: 4.92196 Genotype: Fch1: A coadaptive 3.2 1.2 B coadaptive 4.2 4.5 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 4.92196 disease 3.5 +327 Fitness: 4.92196 Genotype: Fch1: A coadaptive 3.2 1.2 B coadaptive 4.2 4.5 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 4.92196 disease 3.5 +328 Fitness: 4.47312 Genotype: Fch1: A coadaptive 3.9 1.8 B coadaptive 3.7 0.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.47312 disease 2.5 +329 Fitness: 4.47312 Genotype: Fch1: A coadaptive 3.9 1.8 B coadaptive 3.7 0.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.47312 disease 2.5 +330 Fitness: 4.47312 Genotype: Fch1: A coadaptive 3.9 1.8 B coadaptive 3.7 0.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 1 Phenotype: coadaptive 4.47312 disease 2.5 +331 Fitness: 11.7027 Genotype: Fch1: A coadaptive 8.8 1 B coadaptive 6.9 2.2 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.7027 disease 3.5 +332 Fitness: 11.7027 Genotype: Fch1: A coadaptive 8.8 1 B coadaptive 6.9 2.2 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.7027 disease 3.5 +333 Fitness: 11.7027 Genotype: Fch1: A coadaptive 8.8 1 B coadaptive 6.9 2.2 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 11.7027 disease 3.5 +334 Fitness: 9.83897 Genotype: Fch1: A coadaptive 4.5 7.2 B coadaptive 2.4 5.4 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.83897 disease 3 +335 Fitness: 9.83897 Genotype: Fch1: A coadaptive 4.5 7.2 B coadaptive 2.4 5.4 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.83897 disease 3 +336 Fitness: 9.83897 Genotype: Fch1: A coadaptive 4.5 7.2 B coadaptive 2.4 5.4 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.83897 disease 3 +337 Fitness: 11.6411 Genotype: Fch1: A coadaptive 9.3 6.2 B coadaptive 6.5 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.6411 disease 3.5 +338 Fitness: 11.6411 Genotype: Fch1: A coadaptive 9.3 6.2 B coadaptive 6.5 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.6411 disease 3.5 +339 Fitness: 11.6411 Genotype: Fch1: A coadaptive 9.3 6.2 B coadaptive 6.5 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 11.6411 disease 3.5 +340 Fitness: 2.53662 Genotype: Fch1: A coadaptive 1.9 1 B coadaptive 4.5 3.3 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 2.53662 disease 3 +341 Fitness: 2.53662 Genotype: Fch1: A coadaptive 1.9 1 B coadaptive 4.5 3.3 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 2.53662 disease 3 +342 Fitness: 2.53662 Genotype: Fch1: A coadaptive 1.9 1 B coadaptive 4.5 3.3 C disease 0 1 D disease 1 0 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 2.53662 disease 3 +343 Fitness: 14.4244 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.6 6.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.4244 disease 2 +344 Fitness: 14.4244 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.6 6.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.4244 disease 2 +345 Fitness: 14.4244 Genotype: Fch1: A coadaptive 8.1 4.8 B coadaptive 7.6 6.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 14.4244 disease 2 +346 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 9.9 8 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +347 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 9.9 8 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +348 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 9.9 8 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 3 +349 Fitness: 13.8013 Genotype: Fch1: A coadaptive 2.3 8.6 B coadaptive 5.4 6.5 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.8013 disease 3 +350 Fitness: 13.8013 Genotype: Fch1: A coadaptive 2.3 8.6 B coadaptive 5.4 6.5 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.8013 disease 3 +351 Fitness: 13.8013 Genotype: Fch1: A coadaptive 2.3 8.6 B coadaptive 5.4 6.5 C disease 0 1 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.8013 disease 3 +352 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 10 7.2 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +353 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 10 7.2 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +354 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 10 7.2 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +355 Fitness: 0.635751 Genotype: Fch1: A coadaptive 7.2 6.6 B coadaptive 3.5 1.7 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0.635751 disease 3.5 +356 Fitness: 0.635751 Genotype: Fch1: A coadaptive 7.2 6.6 B coadaptive 3.5 1.7 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0.635751 disease 3.5 +357 Fitness: 0.635751 Genotype: Fch1: A coadaptive 7.2 6.6 B coadaptive 3.5 1.7 C disease 0.5 0.5 D disease 1 0 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 0.635751 disease 3.5 +358 Fitness: 7.90352 Genotype: Fch1: A coadaptive 7.2 6.2 B coadaptive 0.8 6.9 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.90352 disease 3 +359 Fitness: 7.90352 Genotype: Fch1: A coadaptive 7.2 6.2 B coadaptive 0.8 6.9 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.90352 disease 3 +360 Fitness: 7.90352 Genotype: Fch1: A coadaptive 7.2 6.2 B coadaptive 0.8 6.9 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.90352 disease 3 +361 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.3 B coadaptive 0.1 2.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2 +362 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.3 B coadaptive 0.1 2.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2 +363 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.3 B coadaptive 0.1 2.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 2 +364 Fitness: 0.818506 Genotype: Fch1: A coadaptive 2 0 B coadaptive 0.2 7.7 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.818506 disease 3 +365 Fitness: 0.818506 Genotype: Fch1: A coadaptive 2 0 B coadaptive 0.2 7.7 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.818506 disease 3 +366 Fitness: 0.818506 Genotype: Fch1: A coadaptive 2 0 B coadaptive 0.2 7.7 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.818506 disease 3 +367 Fitness: 9.67076 Genotype: Fch1: A coadaptive 3 5.7 B coadaptive 2.3 5.3 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.67076 disease 3.5 +368 Fitness: 9.67076 Genotype: Fch1: A coadaptive 3 5.7 B coadaptive 2.3 5.3 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.67076 disease 3.5 +369 Fitness: 9.67076 Genotype: Fch1: A coadaptive 3 5.7 B coadaptive 2.3 5.3 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 9.67076 disease 3.5 +370 Fitness: 13.7441 Genotype: Fch1: A coadaptive 6.8 7 B coadaptive 3.8 7.7 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.7441 disease 3.5 +371 Fitness: 13.7441 Genotype: Fch1: A coadaptive 6.8 7 B coadaptive 3.8 7.7 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.7441 disease 3.5 +372 Fitness: 13.7441 Genotype: Fch1: A coadaptive 6.8 7 B coadaptive 3.8 7.7 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.7441 disease 3.5 +373 Fitness: 14.7686 Genotype: Fch1: A coadaptive 8.4 5.4 B coadaptive 4.5 9.2 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.7686 disease 2.5 +374 Fitness: 14.7686 Genotype: Fch1: A coadaptive 8.4 5.4 B coadaptive 4.5 9.2 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.7686 disease 2.5 +375 Fitness: 14.7686 Genotype: Fch1: A coadaptive 8.4 5.4 B coadaptive 4.5 9.2 C disease 1 1 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.7686 disease 2.5 +376 Fitness: 7.5968 Genotype: Fch1: A coadaptive 7.4 5.9 B coadaptive 3.4 4.1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.5968 disease 3 +377 Fitness: 7.5968 Genotype: Fch1: A coadaptive 7.4 5.9 B coadaptive 3.4 4.1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.5968 disease 3 +378 Fitness: 7.5968 Genotype: Fch1: A coadaptive 7.4 5.9 B coadaptive 3.4 4.1 C disease 1 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 7.5968 disease 3 +379 Fitness: 6.32786 Genotype: Fch1: A coadaptive 5 0.8 B coadaptive 3.9 7.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 6.32786 disease 2.5 +380 Fitness: 6.32786 Genotype: Fch1: A coadaptive 5 0.8 B coadaptive 3.9 7.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 6.32786 disease 2.5 +381 Fitness: 6.32786 Genotype: Fch1: A coadaptive 5 0.8 B coadaptive 3.9 7.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 6.32786 disease 2.5 +382 Fitness: 4.88239 Genotype: Fch1: A coadaptive 8.7 8.6 B coadaptive 3.6 6.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 4.88239 disease 2.5 +383 Fitness: 4.88239 Genotype: Fch1: A coadaptive 8.7 8.6 B coadaptive 3.6 6.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 4.88239 disease 2.5 +384 Fitness: 4.88239 Genotype: Fch1: A coadaptive 8.7 8.6 B coadaptive 3.6 6.5 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 4.88239 disease 2.5 +385 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 7.7 B coadaptive 6.3 0.4 C disease 0.5 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +386 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 7.7 B coadaptive 6.3 0.4 C disease 0.5 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +387 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 7.7 B coadaptive 6.3 0.4 C disease 0.5 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3 +388 Fitness: 10.002 Genotype: Fch1: A coadaptive 1 6.6 B coadaptive 8.2 1.7 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.002 disease 2.5 +389 Fitness: 10.002 Genotype: Fch1: A coadaptive 1 6.6 B coadaptive 8.2 1.7 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.002 disease 2.5 +390 Fitness: 10.002 Genotype: Fch1: A coadaptive 1 6.6 B coadaptive 8.2 1.7 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 10.002 disease 2.5 +391 Fitness: 13.1331 Genotype: Fch1: A coadaptive 8.1 2.3 B coadaptive 8.1 2.6 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.1331 disease 3 +392 Fitness: 13.1331 Genotype: Fch1: A coadaptive 8.1 2.3 B coadaptive 8.1 2.6 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.1331 disease 3 +393 Fitness: 13.1331 Genotype: Fch1: A coadaptive 8.1 2.3 B coadaptive 8.1 2.6 C disease 0.5 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 13.1331 disease 3 +394 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 0 B coadaptive 7.3 10 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +395 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 0 B coadaptive 7.3 10 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +396 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 0 B coadaptive 7.3 10 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +397 Fitness: 8.73779 Genotype: Fch1: A coadaptive 9.9 1.5 B coadaptive 7.8 9.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 8.73779 disease 2 +398 Fitness: 8.73779 Genotype: Fch1: A coadaptive 9.9 1.5 B coadaptive 7.8 9.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 8.73779 disease 2 +399 Fitness: 8.73779 Genotype: Fch1: A coadaptive 9.9 1.5 B coadaptive 7.8 9.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 8.73779 disease 2 +400 Fitness: 8.7478 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 7.5 3.2 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.7478 disease 2.5 +401 Fitness: 8.7478 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 7.5 3.2 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.7478 disease 2.5 +402 Fitness: 8.7478 Genotype: Fch1: A coadaptive 0 6.9 B coadaptive 7.5 3.2 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 8.7478 disease 2.5 +403 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0.6 B coadaptive 9.9 1.6 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +404 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0.6 B coadaptive 9.9 1.6 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +405 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 0.6 B coadaptive 9.9 1.6 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +406 Fitness: 3.96502 Genotype: Fch1: A coadaptive 7.8 8.7 B coadaptive 5.2 3.6 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.96502 disease 2.5 +407 Fitness: 3.96502 Genotype: Fch1: A coadaptive 7.8 8.7 B coadaptive 5.2 3.6 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.96502 disease 2.5 +408 Fitness: 3.96502 Genotype: Fch1: A coadaptive 7.8 8.7 B coadaptive 5.2 3.6 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 3.96502 disease 2.5 +409 Fitness: 14.4837 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 7 7.5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4837 disease 3 +410 Fitness: 14.4837 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 7 7.5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4837 disease 3 +411 Fitness: 14.4837 Genotype: Fch1: A coadaptive 8.3 6.1 B coadaptive 7 7.5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4837 disease 3 +412 Fitness: 11.7525 Genotype: Fch1: A coadaptive 5.3 3.6 B coadaptive 8.5 2.4 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.7525 disease 3 +413 Fitness: 11.7525 Genotype: Fch1: A coadaptive 5.3 3.6 B coadaptive 8.5 2.4 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.7525 disease 3 +414 Fitness: 11.7525 Genotype: Fch1: A coadaptive 5.3 3.6 B coadaptive 8.5 2.4 C disease 0 0.5 D disease 1 0.5 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 11.7525 disease 3 +415 Fitness: 1.67981 Genotype: Fch1: A coadaptive 0.2 3.2 B coadaptive 0.7 9.6 C disease 0 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.67981 disease 2.5 +416 Fitness: 1.67981 Genotype: Fch1: A coadaptive 0.2 3.2 B coadaptive 0.7 9.6 C disease 0 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.67981 disease 2.5 +417 Fitness: 1.67981 Genotype: Fch1: A coadaptive 0.2 3.2 B coadaptive 0.7 9.6 C disease 0 0 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 1.67981 disease 2.5 +418 Fitness: 11.7902 Genotype: Fch1: A coadaptive 2.8 6.3 B coadaptive 8.4 1.6 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.7902 disease 3.5 +419 Fitness: 11.7902 Genotype: Fch1: A coadaptive 2.8 6.3 B coadaptive 8.4 1.6 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.7902 disease 3.5 +420 Fitness: 11.7902 Genotype: Fch1: A coadaptive 2.8 6.3 B coadaptive 8.4 1.6 C disease 1 0 D disease 0.5 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.7902 disease 3.5 +421 Fitness: 12.4666 Genotype: Fch1: A coadaptive 7.4 3.2 B coadaptive 3.9 5.7 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.4666 disease 2.5 +422 Fitness: 12.4666 Genotype: Fch1: A coadaptive 7.4 3.2 B coadaptive 3.9 5.7 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.4666 disease 2.5 +423 Fitness: 12.4666 Genotype: Fch1: A coadaptive 7.4 3.2 B coadaptive 3.9 5.7 C disease 0 0 D disease 0 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.4666 disease 2.5 +424 Fitness: 5.2848 Genotype: Fch1: A coadaptive 9.7 6.7 B coadaptive 4.5 4.7 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 5.2848 disease 3 +425 Fitness: 5.2848 Genotype: Fch1: A coadaptive 9.7 6.7 B coadaptive 4.5 4.7 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 5.2848 disease 3 +426 Fitness: 5.2848 Genotype: Fch1: A coadaptive 9.7 6.7 B coadaptive 4.5 4.7 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 5.2848 disease 3 +427 Fitness: 13.093 Genotype: Fch1: A coadaptive 9.9 1.8 B coadaptive 2.8 7.3 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.093 disease 3 +428 Fitness: 13.093 Genotype: Fch1: A coadaptive 9.9 1.8 B coadaptive 2.8 7.3 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.093 disease 3 +429 Fitness: 13.093 Genotype: Fch1: A coadaptive 9.9 1.8 B coadaptive 2.8 7.3 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.093 disease 3 +430 Fitness: 14.1 Genotype: Fch1: A coadaptive 5.3 8.3 B coadaptive 8.1 7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.1 disease 3.5 +431 Fitness: 14.1 Genotype: Fch1: A coadaptive 5.3 8.3 B coadaptive 8.1 7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.1 disease 3.5 +432 Fitness: 14.1 Genotype: Fch1: A coadaptive 5.3 8.3 B coadaptive 8.1 7 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 14.1 disease 3.5 +433 Fitness: 9.51824 Genotype: Fch1: A coadaptive 7 0.3 B coadaptive 3.7 6.7 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.51824 disease 3.5 +434 Fitness: 9.51824 Genotype: Fch1: A coadaptive 7 0.3 B coadaptive 3.7 6.7 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.51824 disease 3.5 +435 Fitness: 9.51824 Genotype: Fch1: A coadaptive 7 0.3 B coadaptive 3.7 6.7 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 9.51824 disease 3.5 +436 Fitness: 1.03139 Genotype: Fch1: A coadaptive 8.4 8.5 B coadaptive 4.5 3.7 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.03139 disease 3 +437 Fitness: 1.03139 Genotype: Fch1: A coadaptive 8.4 8.5 B coadaptive 4.5 3.7 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.03139 disease 3 +438 Fitness: 1.03139 Genotype: Fch1: A coadaptive 8.4 8.5 B coadaptive 4.5 3.7 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 1.03139 disease 3 +439 Fitness: 14.4115 Genotype: Fch1: A coadaptive 10 1.9 B coadaptive 5.2 7.8 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.4115 disease 2.5 +440 Fitness: 14.4115 Genotype: Fch1: A coadaptive 10 1.9 B coadaptive 5.2 7.8 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.4115 disease 2.5 +441 Fitness: 14.4115 Genotype: Fch1: A coadaptive 10 1.9 B coadaptive 5.2 7.8 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.4115 disease 2.5 +442 Fitness: 14.6586 Genotype: Fch1: A coadaptive 9.1 4.8 B coadaptive 6.3 6.7 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.6586 disease 2.5 +443 Fitness: 14.6586 Genotype: Fch1: A coadaptive 9.1 4.8 B coadaptive 6.3 6.7 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.6586 disease 2.5 +444 Fitness: 14.6586 Genotype: Fch1: A coadaptive 9.1 4.8 B coadaptive 6.3 6.7 C disease 1 0.5 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.6586 disease 2.5 +445 Fitness: 13.146 Genotype: Fch1: A coadaptive 1.8 8.7 B coadaptive 0.6 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.146 disease 3.5 +446 Fitness: 13.146 Genotype: Fch1: A coadaptive 1.8 8.7 B coadaptive 0.6 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.146 disease 3.5 +447 Fitness: 13.146 Genotype: Fch1: A coadaptive 1.8 8.7 B coadaptive 0.6 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 13.146 disease 3.5 +448 Fitness: 7.82605 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 1.7 4.5 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.82605 disease 3 +449 Fitness: 7.82605 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 1.7 4.5 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.82605 disease 3 +450 Fitness: 7.82605 Genotype: Fch1: A coadaptive 6.5 1.9 B coadaptive 1.7 4.5 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 7.82605 disease 3 +451 Fitness: 10.9445 Genotype: Fch1: A coadaptive 0.5 7.8 B coadaptive 3.4 6.7 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 10.9445 disease 4 +452 Fitness: 10.9445 Genotype: Fch1: A coadaptive 0.5 7.8 B coadaptive 3.4 6.7 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 10.9445 disease 4 +453 Fitness: 10.9445 Genotype: Fch1: A coadaptive 0.5 7.8 B coadaptive 3.4 6.7 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 10.9445 disease 4 +454 Fitness: 11.3353 Genotype: Fch1: A coadaptive 0.1 9.6 B coadaptive 5.3 8.5 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 11.3353 disease 3.5 +455 Fitness: 11.3353 Genotype: Fch1: A coadaptive 0.1 9.6 B coadaptive 5.3 8.5 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 11.3353 disease 3.5 +456 Fitness: 11.3353 Genotype: Fch1: A coadaptive 0.1 9.6 B coadaptive 5.3 8.5 C disease 0 1 D disease 1 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 11.3353 disease 3.5 +457 Fitness: 1.4101 Genotype: Fch1: A coadaptive 5.6 9.9 B coadaptive 4.7 2.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 1.4101 disease 3 +458 Fitness: 1.4101 Genotype: Fch1: A coadaptive 5.6 9.9 B coadaptive 4.7 2.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 1.4101 disease 3 +459 Fitness: 1.4101 Genotype: Fch1: A coadaptive 5.6 9.9 B coadaptive 4.7 2.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 1.4101 disease 3 +460 Fitness: 13.9691 Genotype: Fch1: A coadaptive 4.4 7.3 B coadaptive 2.2 9 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 13.9691 disease 3 +461 Fitness: 13.9691 Genotype: Fch1: A coadaptive 4.4 7.3 B coadaptive 2.2 9 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 13.9691 disease 3 +462 Fitness: 13.9691 Genotype: Fch1: A coadaptive 4.4 7.3 B coadaptive 2.2 9 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 13.9691 disease 3 +463 Fitness: 6.88128 Genotype: Fch1: A coadaptive 3.9 3.7 B coadaptive 10 3.9 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.88128 disease 2.5 +464 Fitness: 6.88128 Genotype: Fch1: A coadaptive 3.9 3.7 B coadaptive 10 3.9 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.88128 disease 2.5 +465 Fitness: 6.88128 Genotype: Fch1: A coadaptive 3.9 3.7 B coadaptive 10 3.9 C disease 0 0.5 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.88128 disease 2.5 +466 Fitness: 13.075 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 5.4 4.7 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 13.075 disease 3 +467 Fitness: 13.075 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 5.4 4.7 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 13.075 disease 3 +468 Fitness: 13.075 Genotype: Fch1: A coadaptive 2.3 9 B coadaptive 5.4 4.7 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 13.075 disease 3 +469 Fitness: 13.2626 Genotype: Fch1: A coadaptive 3.9 6.5 B coadaptive 8.4 4.1 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 13.2626 disease 4 +470 Fitness: 13.2626 Genotype: Fch1: A coadaptive 3.9 6.5 B coadaptive 8.4 4.1 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 13.2626 disease 4 +471 Fitness: 13.2626 Genotype: Fch1: A coadaptive 3.9 6.5 B coadaptive 8.4 4.1 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 1 Phenotype: coadaptive 13.2626 disease 4 +472 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 0.9 B coadaptive 9.3 8.5 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +473 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 0.9 B coadaptive 9.3 8.5 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +474 Fitness: 0 Genotype: Fch1: A coadaptive 1.6 0.9 B coadaptive 9.3 8.5 C disease 0 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +475 Fitness: 7.06354 Genotype: Fch1: A coadaptive 1.2 6.9 B coadaptive 3.2 2.5 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.06354 disease 3.5 +476 Fitness: 7.06354 Genotype: Fch1: A coadaptive 1.2 6.9 B coadaptive 3.2 2.5 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.06354 disease 3.5 +477 Fitness: 7.06354 Genotype: Fch1: A coadaptive 1.2 6.9 B coadaptive 3.2 2.5 C disease 0.5 1 D disease 0.5 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.06354 disease 3.5 +478 Fitness: 14.5832 Genotype: Fch1: A coadaptive 8.4 3.9 B coadaptive 8.7 3.7 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.5832 disease 2.5 +479 Fitness: 14.5832 Genotype: Fch1: A coadaptive 8.4 3.9 B coadaptive 8.7 3.7 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.5832 disease 2.5 +480 Fitness: 14.5832 Genotype: Fch1: A coadaptive 8.4 3.9 B coadaptive 8.7 3.7 C disease 1 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 14.5832 disease 2.5 +481 Fitness: 11.6438 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 9.4 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.6438 disease 2 +482 Fitness: 11.6438 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 9.4 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.6438 disease 2 +483 Fitness: 11.6438 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 9.4 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.6438 disease 2 +484 Fitness: 8.06129 Genotype: Fch1: A coadaptive 4.3 8.3 B coadaptive 1.3 6 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 8.06129 disease 3.5 +485 Fitness: 8.06129 Genotype: Fch1: A coadaptive 4.3 8.3 B coadaptive 1.3 6 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 8.06129 disease 3.5 +486 Fitness: 8.06129 Genotype: Fch1: A coadaptive 4.3 8.3 B coadaptive 1.3 6 C disease 0 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 8.06129 disease 3.5 +487 Fitness: 12.92 Genotype: Fch1: A coadaptive 6.2 4.5 B coadaptive 4.9 8.8 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.92 disease 4 +488 Fitness: 12.92 Genotype: Fch1: A coadaptive 6.2 4.5 B coadaptive 4.9 8.8 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.92 disease 4 +489 Fitness: 12.92 Genotype: Fch1: A coadaptive 6.2 4.5 B coadaptive 4.9 8.8 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.92 disease 4 +490 Fitness: 2.00435 Genotype: Fch1: A coadaptive 0.6 2.8 B coadaptive 1.6 8.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.00435 disease 3 +491 Fitness: 2.00435 Genotype: Fch1: A coadaptive 0.6 2.8 B coadaptive 1.6 8.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.00435 disease 3 +492 Fitness: 2.00435 Genotype: Fch1: A coadaptive 0.6 2.8 B coadaptive 1.6 8.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 2.00435 disease 3 +493 Fitness: 14.1294 Genotype: Fch1: A coadaptive 6.3 7.3 B coadaptive 7 4.8 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.1294 disease 3.5 +494 Fitness: 14.1294 Genotype: Fch1: A coadaptive 6.3 7.3 B coadaptive 7 4.8 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.1294 disease 3.5 +495 Fitness: 14.1294 Genotype: Fch1: A coadaptive 6.3 7.3 B coadaptive 7 4.8 C disease 1 0 D disease 1 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.1294 disease 3.5 +496 Fitness: 1.5876 Genotype: Fch1: A coadaptive 2.5 3.5 B coadaptive 4.7 9.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 1.5876 disease 3 +497 Fitness: 1.5876 Genotype: Fch1: A coadaptive 2.5 3.5 B coadaptive 4.7 9.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 1.5876 disease 3 +498 Fitness: 1.5876 Genotype: Fch1: A coadaptive 2.5 3.5 B coadaptive 4.7 9.7 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 1.5876 disease 3 +499 Fitness: 8.37701 Genotype: Fch1: A coadaptive 7.7 8.2 B coadaptive 0.4 9.6 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.37701 disease 3 +500 Fitness: 8.37701 Genotype: Fch1: A coadaptive 7.7 8.2 B coadaptive 0.4 9.6 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.37701 disease 3 +501 Fitness: 8.37701 Genotype: Fch1: A coadaptive 7.7 8.2 B coadaptive 0.4 9.6 C disease 1 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.37701 disease 3 +502 Fitness: 10.9588 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 1.7 8.5 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.9588 disease 1.5 +503 Fitness: 10.9588 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 1.7 8.5 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.9588 disease 1.5 +504 Fitness: 10.9588 Genotype: Fch1: A coadaptive 6.6 1.7 B coadaptive 1.7 8.5 C disease 0 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.9588 disease 1.5 +505 Fitness: 6.99159 Genotype: Fch1: A coadaptive 2.3 5.5 B coadaptive 2.6 3.1 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 6.99159 disease 3 +506 Fitness: 6.99159 Genotype: Fch1: A coadaptive 2.3 5.5 B coadaptive 2.6 3.1 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 6.99159 disease 3 +507 Fitness: 6.99159 Genotype: Fch1: A coadaptive 2.3 5.5 B coadaptive 2.6 3.1 C disease 1 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 6.99159 disease 3 +508 Fitness: 6.6692 Genotype: Fch1: A coadaptive 0.9 5.1 B coadaptive 8.5 2.7 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.6692 disease 3 +509 Fitness: 6.6692 Genotype: Fch1: A coadaptive 0.9 5.1 B coadaptive 8.5 2.7 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.6692 disease 3 +510 Fitness: 6.6692 Genotype: Fch1: A coadaptive 0.9 5.1 B coadaptive 8.5 2.7 C disease 0.5 0 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 6.6692 disease 3 +511 Fitness: 12.1739 Genotype: Fch1: A coadaptive 1.7 7.6 B coadaptive 8.6 2 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.1739 disease 3.5 +512 Fitness: 12.1739 Genotype: Fch1: A coadaptive 1.7 7.6 B coadaptive 8.6 2 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.1739 disease 3.5 +513 Fitness: 12.1739 Genotype: Fch1: A coadaptive 1.7 7.6 B coadaptive 8.6 2 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.1739 disease 3.5 +514 Fitness: 0 Genotype: Fch1: A coadaptive 6.2 7.1 B coadaptive 0.6 3.7 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +515 Fitness: 0 Genotype: Fch1: A coadaptive 6.2 7.1 B coadaptive 0.6 3.7 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +516 Fitness: 0 Genotype: Fch1: A coadaptive 6.2 7.1 B coadaptive 0.6 3.7 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +517 Fitness: 6.40355 Genotype: Fch1: A coadaptive 7.4 5.6 B coadaptive 3.9 2.9 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.40355 disease 2.5 +518 Fitness: 6.40355 Genotype: Fch1: A coadaptive 7.4 5.6 B coadaptive 3.9 2.9 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.40355 disease 2.5 +519 Fitness: 6.40355 Genotype: Fch1: A coadaptive 7.4 5.6 B coadaptive 3.9 2.9 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 6.40355 disease 2.5 +520 Fitness: 3.63089 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 9.4 5.1 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 3.63089 disease 2 +521 Fitness: 3.63089 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 9.4 5.1 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 3.63089 disease 2 +522 Fitness: 3.63089 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 9.4 5.1 C disease 0.5 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 3.63089 disease 2 +523 Fitness: 8.89297 Genotype: Fch1: A coadaptive 2.5 6 B coadaptive 5.8 1.2 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.89297 disease 2.5 +524 Fitness: 8.89297 Genotype: Fch1: A coadaptive 2.5 6 B coadaptive 5.8 1.2 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.89297 disease 2.5 +525 Fitness: 8.89297 Genotype: Fch1: A coadaptive 2.5 6 B coadaptive 5.8 1.2 C disease 0 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.89297 disease 2.5 +526 Fitness: 2.16805 Genotype: Fch1: A coadaptive 4.4 10 B coadaptive 1 5.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 2.16805 disease 2 +527 Fitness: 2.16805 Genotype: Fch1: A coadaptive 4.4 10 B coadaptive 1 5.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 2.16805 disease 2 +528 Fitness: 2.16805 Genotype: Fch1: A coadaptive 4.4 10 B coadaptive 1 5.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 2.16805 disease 2 +529 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 1.3 B coadaptive 5.9 4.5 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +530 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 1.3 B coadaptive 5.9 4.5 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +531 Fitness: 0 Genotype: Fch1: A coadaptive 1.1 1.3 B coadaptive 5.9 4.5 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +532 Fitness: 8.47871 Genotype: Fch1: A coadaptive 6 9.1 B coadaptive 9.4 9.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.47871 disease 2.5 +533 Fitness: 8.47871 Genotype: Fch1: A coadaptive 6 9.1 B coadaptive 9.4 9.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.47871 disease 2.5 +534 Fitness: 8.47871 Genotype: Fch1: A coadaptive 6 9.1 B coadaptive 9.4 9.2 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.47871 disease 2.5 +535 Fitness: 8.6591 Genotype: Fch1: A coadaptive 1.2 7.4 B coadaptive 5.3 8.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.6591 disease 3.5 +536 Fitness: 8.6591 Genotype: Fch1: A coadaptive 1.2 7.4 B coadaptive 5.3 8.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.6591 disease 3.5 +537 Fitness: 8.6591 Genotype: Fch1: A coadaptive 1.2 7.4 B coadaptive 5.3 8.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 8.6591 disease 3.5 +538 Fitness: 2.63956 Genotype: Fch1: A coadaptive 1.5 1.7 B coadaptive 5 3.7 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 2.63956 disease 3 +539 Fitness: 2.63956 Genotype: Fch1: A coadaptive 1.5 1.7 B coadaptive 5 3.7 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 2.63956 disease 3 +540 Fitness: 2.63956 Genotype: Fch1: A coadaptive 1.5 1.7 B coadaptive 5 3.7 C disease 1 0 D disease 0 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 2.63956 disease 3 +541 Fitness: 3.5325 Genotype: Fch1: A coadaptive 8.7 9.9 B coadaptive 3.6 7.8 C disease 0 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.5325 disease 3 +542 Fitness: 3.5325 Genotype: Fch1: A coadaptive 8.7 9.9 B coadaptive 3.6 7.8 C disease 0 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.5325 disease 3 +543 Fitness: 3.5325 Genotype: Fch1: A coadaptive 8.7 9.9 B coadaptive 3.6 7.8 C disease 0 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 3.5325 disease 3 +544 Fitness: 11.2747 Genotype: Fch1: A coadaptive 5.7 4.3 B coadaptive 3.8 4.8 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.2747 disease 3 +545 Fitness: 11.2747 Genotype: Fch1: A coadaptive 5.7 4.3 B coadaptive 3.8 4.8 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.2747 disease 3 +546 Fitness: 11.2747 Genotype: Fch1: A coadaptive 5.7 4.3 B coadaptive 3.8 4.8 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 11.2747 disease 3 +547 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 8.8 B coadaptive 1.6 0.2 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +548 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 8.8 B coadaptive 1.6 0.2 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +549 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 8.8 B coadaptive 1.6 0.2 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +550 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 8.1 B coadaptive 0.2 1.6 C disease 0.5 1 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +551 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 8.1 B coadaptive 0.2 1.6 C disease 0.5 1 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +552 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 8.1 B coadaptive 0.2 1.6 C disease 0.5 1 D disease 0 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3 +553 Fitness: 9.64649 Genotype: Fch1: A coadaptive 7 10 B coadaptive 6.1 6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.64649 disease 2 +554 Fitness: 9.64649 Genotype: Fch1: A coadaptive 7 10 B coadaptive 6.1 6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.64649 disease 2 +555 Fitness: 9.64649 Genotype: Fch1: A coadaptive 7 10 B coadaptive 6.1 6 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 9.64649 disease 2 +556 Fitness: 11.8621 Genotype: Fch1: A coadaptive 9.6 3.3 B coadaptive 6 3.5 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 11.8621 disease 3 +557 Fitness: 11.8621 Genotype: Fch1: A coadaptive 9.6 3.3 B coadaptive 6 3.5 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 11.8621 disease 3 +558 Fitness: 11.8621 Genotype: Fch1: A coadaptive 9.6 3.3 B coadaptive 6 3.5 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 11.8621 disease 3 +559 Fitness: 6.74905 Genotype: Fch1: A coadaptive 4.4 2.8 B coadaptive 5 8.4 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.74905 disease 3 +560 Fitness: 6.74905 Genotype: Fch1: A coadaptive 4.4 2.8 B coadaptive 5 8.4 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.74905 disease 3 +561 Fitness: 6.74905 Genotype: Fch1: A coadaptive 4.4 2.8 B coadaptive 5 8.4 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.74905 disease 3 +562 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 3.5 B coadaptive 9.2 9.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +563 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 3.5 B coadaptive 9.2 9.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +564 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 3.5 B coadaptive 9.2 9.2 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +565 Fitness: 9.84755 Genotype: Fch1: A coadaptive 2.9 6.2 B coadaptive 7.2 6.9 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 9.84755 disease 2.5 +566 Fitness: 9.84755 Genotype: Fch1: A coadaptive 2.9 6.2 B coadaptive 7.2 6.9 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 9.84755 disease 2.5 +567 Fitness: 9.84755 Genotype: Fch1: A coadaptive 2.9 6.2 B coadaptive 7.2 6.9 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 9.84755 disease 2.5 +568 Fitness: 2.847 Genotype: Fch1: A coadaptive 5.6 9.8 B coadaptive 6.3 1 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 2.847 disease 2.5 +569 Fitness: 2.847 Genotype: Fch1: A coadaptive 5.6 9.8 B coadaptive 6.3 1 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 2.847 disease 2.5 +570 Fitness: 2.847 Genotype: Fch1: A coadaptive 5.6 9.8 B coadaptive 6.3 1 C disease 0 0 D disease 0 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 2.847 disease 2.5 +571 Fitness: 14.5356 Genotype: Fch1: A coadaptive 4.8 8.1 B coadaptive 6.7 7.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 14.5356 disease 3 +572 Fitness: 14.5356 Genotype: Fch1: A coadaptive 4.8 8.1 B coadaptive 6.7 7.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 14.5356 disease 3 +573 Fitness: 14.5356 Genotype: Fch1: A coadaptive 4.8 8.1 B coadaptive 6.7 7.4 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 14.5356 disease 3 +574 Fitness: 12.2204 Genotype: Fch1: A coadaptive 8.4 1.6 B coadaptive 4.5 5.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2204 disease 3.5 +575 Fitness: 12.2204 Genotype: Fch1: A coadaptive 8.4 1.6 B coadaptive 4.5 5.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2204 disease 3.5 +576 Fitness: 12.2204 Genotype: Fch1: A coadaptive 8.4 1.6 B coadaptive 4.5 5.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2204 disease 3.5 +577 Fitness: 8.04519 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 9 4.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 8.04519 disease 2.5 +578 Fitness: 8.04519 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 9 4.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 8.04519 disease 2.5 +579 Fitness: 8.04519 Genotype: Fch1: A coadaptive 6 1.7 B coadaptive 9 4.3 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 8.04519 disease 2.5 +580 Fitness: 8.1359 Genotype: Fch1: A coadaptive 4.5 7.3 B coadaptive 7.5 9.9 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.1359 disease 3.5 +581 Fitness: 8.1359 Genotype: Fch1: A coadaptive 4.5 7.3 B coadaptive 7.5 9.9 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.1359 disease 3.5 +582 Fitness: 8.1359 Genotype: Fch1: A coadaptive 4.5 7.3 B coadaptive 7.5 9.9 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 8.1359 disease 3.5 +583 Fitness: 10.4066 Genotype: Fch1: A coadaptive 7.5 0.4 B coadaptive 9 0.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.4066 disease 3 +584 Fitness: 10.4066 Genotype: Fch1: A coadaptive 7.5 0.4 B coadaptive 9 0.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.4066 disease 3 +585 Fitness: 10.4066 Genotype: Fch1: A coadaptive 7.5 0.4 B coadaptive 9 0.9 C disease 0.5 0.5 D disease 0.5 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.4066 disease 3 +586 Fitness: 11.2279 Genotype: Fch1: A coadaptive 9 7.2 B coadaptive 6.6 5.4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.2279 disease 3.5 +587 Fitness: 11.2279 Genotype: Fch1: A coadaptive 9 7.2 B coadaptive 6.6 5.4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.2279 disease 3.5 +588 Fitness: 11.2279 Genotype: Fch1: A coadaptive 9 7.2 B coadaptive 6.6 5.4 C disease 0 0.5 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.2279 disease 3.5 +589 Fitness: 2.2543 Genotype: Fch1: A coadaptive 3.2 0.1 B coadaptive 4.2 5.3 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 2.2543 disease 4 +590 Fitness: 2.2543 Genotype: Fch1: A coadaptive 3.2 0.1 B coadaptive 4.2 5.3 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 2.2543 disease 4 +591 Fitness: 2.2543 Genotype: Fch1: A coadaptive 3.2 0.1 B coadaptive 4.2 5.3 C disease 1 0 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 2.2543 disease 4 +592 Fitness: 12.5517 Genotype: Fch1: A coadaptive 2 9 B coadaptive 9 0.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 12.5517 disease 2.5 +593 Fitness: 12.5517 Genotype: Fch1: A coadaptive 2 9 B coadaptive 9 0.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 12.5517 disease 2.5 +594 Fitness: 12.5517 Genotype: Fch1: A coadaptive 2 9 B coadaptive 9 0.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 12.5517 disease 2.5 +595 Fitness: 3.00933 Genotype: Fch1: A coadaptive 2.6 1.7 B coadaptive 9.2 1.8 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 3.00933 disease 3.5 +596 Fitness: 3.00933 Genotype: Fch1: A coadaptive 2.6 1.7 B coadaptive 9.2 1.8 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 3.00933 disease 3.5 +597 Fitness: 3.00933 Genotype: Fch1: A coadaptive 2.6 1.7 B coadaptive 9.2 1.8 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 3.00933 disease 3.5 +598 Fitness: 13.4377 Genotype: Fch1: A coadaptive 7.3 8.2 B coadaptive 9.9 3.2 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 13.4377 disease 2.5 +599 Fitness: 13.4377 Genotype: Fch1: A coadaptive 7.3 8.2 B coadaptive 9.9 3.2 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 13.4377 disease 2.5 +600 Fitness: 13.4377 Genotype: Fch1: A coadaptive 7.3 8.2 B coadaptive 9.9 3.2 C disease 0 1 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 13.4377 disease 2.5 +601 Fitness: 6.69995 Genotype: Fch1: A coadaptive 3.9 2 B coadaptive 10 0.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.69995 disease 2.5 +602 Fitness: 6.69995 Genotype: Fch1: A coadaptive 3.9 2 B coadaptive 10 0.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.69995 disease 2.5 +603 Fitness: 6.69995 Genotype: Fch1: A coadaptive 3.9 2 B coadaptive 10 0.9 C disease 1 1 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.69995 disease 2.5 +604 Fitness: 5.50032 Genotype: Fch1: A coadaptive 3 1.7 B coadaptive 1.5 7 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.50032 disease 2 +605 Fitness: 5.50032 Genotype: Fch1: A coadaptive 3 1.7 B coadaptive 1.5 7 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.50032 disease 2 +606 Fitness: 5.50032 Genotype: Fch1: A coadaptive 3 1.7 B coadaptive 1.5 7 C disease 0.5 0 D disease 0.5 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 5.50032 disease 2 +607 Fitness: 7.64591 Genotype: Fch1: A coadaptive 1.6 4.6 B coadaptive 9.3 1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.64591 disease 2 +608 Fitness: 7.64591 Genotype: Fch1: A coadaptive 1.6 4.6 B coadaptive 9.3 1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.64591 disease 2 +609 Fitness: 7.64591 Genotype: Fch1: A coadaptive 1.6 4.6 B coadaptive 9.3 1 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.64591 disease 2 +610 Fitness: 14.8112 Genotype: Fch1: A coadaptive 7.9 5.4 B coadaptive 7.3 5.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.8112 disease 2.5 +611 Fitness: 14.8112 Genotype: Fch1: A coadaptive 7.9 5.4 B coadaptive 7.3 5.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.8112 disease 2.5 +612 Fitness: 14.8112 Genotype: Fch1: A coadaptive 7.9 5.4 B coadaptive 7.3 5.9 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.8112 disease 2.5 +613 Fitness: 4.5083 Genotype: Fch1: A coadaptive 0.4 5.7 B coadaptive 7.8 5.3 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.5083 disease 3.5 +614 Fitness: 4.5083 Genotype: Fch1: A coadaptive 0.4 5.7 B coadaptive 7.8 5.3 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.5083 disease 3.5 +615 Fitness: 4.5083 Genotype: Fch1: A coadaptive 0.4 5.7 B coadaptive 7.8 5.3 C disease 0 1 D disease 1 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 4.5083 disease 3.5 +616 Fitness: 8.69688 Genotype: Fch1: A coadaptive 5.1 7.3 B coadaptive 2.7 4.8 C disease 0 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.69688 disease 1.5 +617 Fitness: 8.69688 Genotype: Fch1: A coadaptive 5.1 7.3 B coadaptive 2.7 4.8 C disease 0 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.69688 disease 1.5 +618 Fitness: 8.69688 Genotype: Fch1: A coadaptive 5.1 7.3 B coadaptive 2.7 4.8 C disease 0 0 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 8.69688 disease 1.5 +619 Fitness: 6.17653 Genotype: Fch1: A coadaptive 7.6 0.8 B coadaptive 2 3.1 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.17653 disease 3.5 +620 Fitness: 6.17653 Genotype: Fch1: A coadaptive 7.6 0.8 B coadaptive 2 3.1 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.17653 disease 3.5 +621 Fitness: 6.17653 Genotype: Fch1: A coadaptive 7.6 0.8 B coadaptive 2 3.1 C disease 0.5 0.5 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 6.17653 disease 3.5 +622 Fitness: 14.2819 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 7.3 5.9 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 14.2819 disease 2.5 +623 Fitness: 14.2819 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 7.3 5.9 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 14.2819 disease 2.5 +624 Fitness: 14.2819 Genotype: Fch1: A coadaptive 9.6 5.1 B coadaptive 7.3 5.9 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 14.2819 disease 2.5 +625 Fitness: 4.00822 Genotype: Fch1: A coadaptive 1.2 2.5 B coadaptive 2.1 4.7 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 4.00822 disease 3 +626 Fitness: 4.00822 Genotype: Fch1: A coadaptive 1.2 2.5 B coadaptive 2.1 4.7 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 4.00822 disease 3 +627 Fitness: 4.00822 Genotype: Fch1: A coadaptive 1.2 2.5 B coadaptive 2.1 4.7 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 4.00822 disease 3 +628 Fitness: 2.0454 Genotype: Fch1: A coadaptive 8.4 7.4 B coadaptive 4.5 2.9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 2.0454 disease 3.5 +629 Fitness: 2.0454 Genotype: Fch1: A coadaptive 8.4 7.4 B coadaptive 4.5 2.9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 2.0454 disease 3.5 +630 Fitness: 2.0454 Genotype: Fch1: A coadaptive 8.4 7.4 B coadaptive 4.5 2.9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 2.0454 disease 3.5 +631 Fitness: 11.3169 Genotype: Fch1: A coadaptive 8 1.8 B coadaptive 8.6 0.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.3169 disease 3.5 +632 Fitness: 11.3169 Genotype: Fch1: A coadaptive 8 1.8 B coadaptive 8.6 0.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.3169 disease 3.5 +633 Fitness: 11.3169 Genotype: Fch1: A coadaptive 8 1.8 B coadaptive 8.6 0.1 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.3169 disease 3.5 +634 Fitness: 10.5408 Genotype: Fch1: A coadaptive 7.7 7.5 B coadaptive 8.7 1.7 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.5408 disease 4 +635 Fitness: 10.5408 Genotype: Fch1: A coadaptive 7.7 7.5 B coadaptive 8.7 1.7 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.5408 disease 4 +636 Fitness: 10.5408 Genotype: Fch1: A coadaptive 7.7 7.5 B coadaptive 8.7 1.7 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.5408 disease 4 +637 Fitness: 9.98299 Genotype: Fch1: A coadaptive 0.1 8.8 B coadaptive 5.3 2.5 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 9.98299 disease 2.5 +638 Fitness: 9.98299 Genotype: Fch1: A coadaptive 0.1 8.8 B coadaptive 5.3 2.5 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 9.98299 disease 2.5 +639 Fitness: 9.98299 Genotype: Fch1: A coadaptive 0.1 8.8 B coadaptive 5.3 2.5 C disease 0 0 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 9.98299 disease 2.5 +640 Fitness: 12.6976 Genotype: Fch1: A coadaptive 8.4 4.3 B coadaptive 8.7 1.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.6976 disease 2.5 +641 Fitness: 12.6976 Genotype: Fch1: A coadaptive 8.4 4.3 B coadaptive 8.7 1.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.6976 disease 2.5 +642 Fitness: 12.6976 Genotype: Fch1: A coadaptive 8.4 4.3 B coadaptive 8.7 1.3 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.6976 disease 2.5 +643 Fitness: 11.876 Genotype: Fch1: A coadaptive 8.1 5.4 B coadaptive 8.1 8.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 11.876 disease 3 +644 Fitness: 11.876 Genotype: Fch1: A coadaptive 8.1 5.4 B coadaptive 8.1 8.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 11.876 disease 3 +645 Fitness: 11.876 Genotype: Fch1: A coadaptive 8.1 5.4 B coadaptive 8.1 8.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 11.876 disease 3 +646 Fitness: 12.675 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 0.3 9.4 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.675 disease 2.5 +647 Fitness: 12.675 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 0.3 9.4 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.675 disease 2.5 +648 Fitness: 12.675 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 0.3 9.4 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 12.675 disease 2.5 +649 Fitness: 9.55109 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 3.2 4.1 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.55109 disease 2 +650 Fitness: 9.55109 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 3.2 4.1 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.55109 disease 2 +651 Fitness: 9.55109 Genotype: Fch1: A coadaptive 8.2 2 B coadaptive 3.2 4.1 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 9.55109 disease 2 +652 Fitness: 1.70234 Genotype: Fch1: A coadaptive 0.6 1.9 B coadaptive 4.6 3.4 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 1.70234 disease 1.5 +653 Fitness: 1.70234 Genotype: Fch1: A coadaptive 0.6 1.9 B coadaptive 4.6 3.4 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 1.70234 disease 1.5 +654 Fitness: 1.70234 Genotype: Fch1: A coadaptive 0.6 1.9 B coadaptive 4.6 3.4 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 1.70234 disease 1.5 +655 Fitness: 4.2176 Genotype: Fch1: A coadaptive 7.8 6.3 B coadaptive 5.2 1.5 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.2176 disease 2.5 +656 Fitness: 4.2176 Genotype: Fch1: A coadaptive 7.8 6.3 B coadaptive 5.2 1.5 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.2176 disease 2.5 +657 Fitness: 4.2176 Genotype: Fch1: A coadaptive 7.8 6.3 B coadaptive 5.2 1.5 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 4.2176 disease 2.5 +658 Fitness: 7.00892 Genotype: Fch1: A coadaptive 5.4 2.4 B coadaptive 7.8 6.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 7.00892 disease 3 +659 Fitness: 7.00892 Genotype: Fch1: A coadaptive 5.4 2.4 B coadaptive 7.8 6.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 7.00892 disease 3 +660 Fitness: 7.00892 Genotype: Fch1: A coadaptive 5.4 2.4 B coadaptive 7.8 6.3 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 7.00892 disease 3 +661 Fitness: 11.1696 Genotype: Fch1: A coadaptive 6.2 2.4 B coadaptive 3.7 8 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 11.1696 disease 1.5 +662 Fitness: 11.1696 Genotype: Fch1: A coadaptive 6.2 2.4 B coadaptive 3.7 8 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 11.1696 disease 1.5 +663 Fitness: 11.1696 Genotype: Fch1: A coadaptive 6.2 2.4 B coadaptive 3.7 8 C disease 0.5 0 D disease 0 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 11.1696 disease 1.5 +664 Fitness: 0.862563 Genotype: Fch1: A coadaptive 7.2 8.7 B coadaptive 3.5 3.6 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0.862563 disease 3.5 +665 Fitness: 0.862563 Genotype: Fch1: A coadaptive 7.2 8.7 B coadaptive 3.5 3.6 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0.862563 disease 3.5 +666 Fitness: 0.862563 Genotype: Fch1: A coadaptive 7.2 8.7 B coadaptive 3.5 3.6 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 0.862563 disease 3.5 +667 Fitness: 12.95 Genotype: Fch1: A coadaptive 3.9 6.1 B coadaptive 6.6 5.4 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.95 disease 3.5 +668 Fitness: 12.95 Genotype: Fch1: A coadaptive 3.9 6.1 B coadaptive 6.6 5.4 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.95 disease 3.5 +669 Fitness: 12.95 Genotype: Fch1: A coadaptive 3.9 6.1 B coadaptive 6.6 5.4 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 12.95 disease 3.5 +670 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 2.4 B coadaptive 0.2 0.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +671 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 2.4 B coadaptive 0.2 0.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +672 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 2.4 B coadaptive 0.2 0.1 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +673 Fitness: 0 Genotype: Fch1: A coadaptive 8 8.8 B coadaptive 3.7 2.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +674 Fitness: 0 Genotype: Fch1: A coadaptive 8 8.8 B coadaptive 3.7 2.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +675 Fitness: 0 Genotype: Fch1: A coadaptive 8 8.8 B coadaptive 3.7 2.5 C disease 0.5 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +676 Fitness: 13.3376 Genotype: Fch1: A coadaptive 7.3 8.7 B coadaptive 8.1 6.3 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 13.3376 disease 2.5 +677 Fitness: 13.3376 Genotype: Fch1: A coadaptive 7.3 8.7 B coadaptive 8.1 6.3 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 13.3376 disease 2.5 +678 Fitness: 13.3376 Genotype: Fch1: A coadaptive 7.3 8.7 B coadaptive 8.1 6.3 C disease 0 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 13.3376 disease 2.5 +679 Fitness: 13.8651 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 3.9 8.9 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.8651 disease 4 +680 Fitness: 13.8651 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 3.9 8.9 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.8651 disease 4 +681 Fitness: 13.8651 Genotype: Fch1: A coadaptive 3.7 7.4 B coadaptive 3.9 8.9 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 13.8651 disease 4 +682 Fitness: 12.8456 Genotype: Fch1: A coadaptive 7.5 5.8 B coadaptive 6.3 4.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.8456 disease 2 +683 Fitness: 12.8456 Genotype: Fch1: A coadaptive 7.5 5.8 B coadaptive 6.3 4.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.8456 disease 2 +684 Fitness: 12.8456 Genotype: Fch1: A coadaptive 7.5 5.8 B coadaptive 6.3 4.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 12.8456 disease 2 +685 Fitness: 8.08215 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 0.2 7.2 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 8.08215 disease 2 +686 Fitness: 8.08215 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 0.2 7.2 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 8.08215 disease 2 +687 Fitness: 8.08215 Genotype: Fch1: A coadaptive 3.9 2.9 B coadaptive 0.2 7.2 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 8.08215 disease 2 +688 Fitness: 0.0192014 Genotype: Fch1: A coadaptive 7.6 7.3 B coadaptive 1.1 4.8 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0.0192014 disease 2.5 +689 Fitness: 0.0192014 Genotype: Fch1: A coadaptive 7.6 7.3 B coadaptive 1.1 4.8 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0.0192014 disease 2.5 +690 Fitness: 0.0192014 Genotype: Fch1: A coadaptive 7.6 7.3 B coadaptive 1.1 4.8 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 0.0192014 disease 2.5 +691 Fitness: 14.0861 Genotype: Fch1: A coadaptive 6.4 7.5 B coadaptive 6.2 9 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0861 disease 3 +692 Fitness: 14.0861 Genotype: Fch1: A coadaptive 6.4 7.5 B coadaptive 6.2 9 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0861 disease 3 +693 Fitness: 14.0861 Genotype: Fch1: A coadaptive 6.4 7.5 B coadaptive 6.2 9 C disease 1 1 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0861 disease 3 +694 Fitness: 5.08974 Genotype: Fch1: A coadaptive 0.1 4.8 B coadaptive 5.3 0.4 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.08974 disease 3.5 +695 Fitness: 5.08974 Genotype: Fch1: A coadaptive 0.1 4.8 B coadaptive 5.3 0.4 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.08974 disease 3.5 +696 Fitness: 5.08974 Genotype: Fch1: A coadaptive 0.1 4.8 B coadaptive 5.3 0.4 C disease 0 1 D disease 1 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 5.08974 disease 3.5 +697 Fitness: 7.87981 Genotype: Fch1: A coadaptive 2.2 6.5 B coadaptive 2.1 4.1 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.87981 disease 4 +698 Fitness: 7.87981 Genotype: Fch1: A coadaptive 2.2 6.5 B coadaptive 2.1 4.1 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.87981 disease 4 +699 Fitness: 7.87981 Genotype: Fch1: A coadaptive 2.2 6.5 B coadaptive 2.1 4.1 C disease 1 1 D disease 1 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 7.87981 disease 4 +700 Fitness: 8.1259 Genotype: Fch1: A coadaptive 6.9 6.5 B coadaptive 0.9 6.9 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 8.1259 disease 2.5 +701 Fitness: 8.1259 Genotype: Fch1: A coadaptive 6.9 6.5 B coadaptive 0.9 6.9 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 8.1259 disease 2.5 +702 Fitness: 8.1259 Genotype: Fch1: A coadaptive 6.9 6.5 B coadaptive 0.9 6.9 C disease 0 0.5 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 8.1259 disease 2.5 +703 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 8.5 B coadaptive 0 4.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +704 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 8.5 B coadaptive 0 4.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +705 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 8.5 B coadaptive 0 4.6 C disease 0.5 0 D disease 0 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +706 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.1 B coadaptive 1.6 7 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +707 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.1 B coadaptive 1.6 7 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +708 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.1 B coadaptive 1.6 7 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3 +709 Fitness: 7.51042 Genotype: Fch1: A coadaptive 3.7 2.4 B coadaptive 6.7 1.1 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.51042 disease 3.5 +710 Fitness: 7.51042 Genotype: Fch1: A coadaptive 3.7 2.4 B coadaptive 6.7 1.1 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.51042 disease 3.5 +711 Fitness: 7.51042 Genotype: Fch1: A coadaptive 3.7 2.4 B coadaptive 6.7 1.1 C disease 1 0 D disease 0 0.5 E disease 0 1 F disease 0 1 Phenotype: coadaptive 7.51042 disease 3.5 +712 Fitness: 10.6938 Genotype: Fch1: A coadaptive 3.8 4.5 B coadaptive 2.9 8.8 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.6938 disease 4 +713 Fitness: 10.6938 Genotype: Fch1: A coadaptive 3.8 4.5 B coadaptive 2.9 8.8 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.6938 disease 4 +714 Fitness: 10.6938 Genotype: Fch1: A coadaptive 3.8 4.5 B coadaptive 2.9 8.8 C disease 1 1 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 10.6938 disease 4 +715 Fitness: 13.7381 Genotype: Fch1: A coadaptive 9.7 1.2 B coadaptive 8.2 3.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.7381 disease 3 +716 Fitness: 13.7381 Genotype: Fch1: A coadaptive 9.7 1.2 B coadaptive 8.2 3.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.7381 disease 3 +717 Fitness: 13.7381 Genotype: Fch1: A coadaptive 9.7 1.2 B coadaptive 8.2 3.3 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.7381 disease 3 +718 Fitness: 2.78765 Genotype: Fch1: A coadaptive 0.5 7.1 B coadaptive 2.8 0.2 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 2.78765 disease 2.5 +719 Fitness: 2.78765 Genotype: Fch1: A coadaptive 0.5 7.1 B coadaptive 2.8 0.2 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 2.78765 disease 2.5 +720 Fitness: 2.78765 Genotype: Fch1: A coadaptive 0.5 7.1 B coadaptive 2.8 0.2 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 2.78765 disease 2.5 +721 Fitness: 4.15315 Genotype: Fch1: A coadaptive 6.2 7.8 B coadaptive 4.9 1.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 4.15315 disease 3 +722 Fitness: 4.15315 Genotype: Fch1: A coadaptive 6.2 7.8 B coadaptive 4.9 1.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 4.15315 disease 3 +723 Fitness: 4.15315 Genotype: Fch1: A coadaptive 6.2 7.8 B coadaptive 4.9 1.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 4.15315 disease 3 +724 Fitness: 13.6449 Genotype: Fch1: A coadaptive 5.9 7.9 B coadaptive 4.1 7.3 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 13.6449 disease 3.5 +725 Fitness: 13.6449 Genotype: Fch1: A coadaptive 5.9 7.9 B coadaptive 4.1 7.3 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 13.6449 disease 3.5 +726 Fitness: 13.6449 Genotype: Fch1: A coadaptive 5.9 7.9 B coadaptive 4.1 7.3 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 13.6449 disease 3.5 +727 Fitness: 8.54663 Genotype: Fch1: A coadaptive 3.9 7.2 B coadaptive 3.4 3.5 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.54663 disease 4 +728 Fitness: 8.54663 Genotype: Fch1: A coadaptive 3.9 7.2 B coadaptive 3.4 3.5 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.54663 disease 4 +729 Fitness: 8.54663 Genotype: Fch1: A coadaptive 3.9 7.2 B coadaptive 3.4 3.5 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 8.54663 disease 4 +730 Fitness: 14.3619 Genotype: Fch1: A coadaptive 7.8 5.6 B coadaptive 5.2 6.8 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 14.3619 disease 2.5 +731 Fitness: 14.3619 Genotype: Fch1: A coadaptive 7.8 5.6 B coadaptive 5.2 6.8 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 14.3619 disease 2.5 +732 Fitness: 14.3619 Genotype: Fch1: A coadaptive 7.8 5.6 B coadaptive 5.2 6.8 C disease 1 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 14.3619 disease 2.5 +733 Fitness: 12.1716 Genotype: Fch1: A coadaptive 6.6 5.5 B coadaptive 1.7 7.7 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.1716 disease 2 +734 Fitness: 12.1716 Genotype: Fch1: A coadaptive 6.6 5.5 B coadaptive 1.7 7.7 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.1716 disease 2 +735 Fitness: 12.1716 Genotype: Fch1: A coadaptive 6.6 5.5 B coadaptive 1.7 7.7 C disease 1 0.5 D disease 0 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 12.1716 disease 2 +736 Fitness: 3.04419 Genotype: Fch1: A coadaptive 2.3 1 B coadaptive 2.6 2.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.04419 disease 2.5 +737 Fitness: 3.04419 Genotype: Fch1: A coadaptive 2.3 1 B coadaptive 2.6 2.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.04419 disease 2.5 +738 Fitness: 3.04419 Genotype: Fch1: A coadaptive 2.3 1 B coadaptive 2.6 2.2 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 3.04419 disease 2.5 +739 Fitness: 5.69594 Genotype: Fch1: A coadaptive 3.1 1.8 B coadaptive 2.2 4.8 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.69594 disease 3 +740 Fitness: 5.69594 Genotype: Fch1: A coadaptive 3.1 1.8 B coadaptive 2.2 4.8 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.69594 disease 3 +741 Fitness: 5.69594 Genotype: Fch1: A coadaptive 3.1 1.8 B coadaptive 2.2 4.8 C disease 0.5 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 5.69594 disease 3 +742 Fitness: 10.5289 Genotype: Fch1: A coadaptive 4.3 7.4 B coadaptive 4.8 3.4 C disease 1 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5289 disease 3 +743 Fitness: 10.5289 Genotype: Fch1: A coadaptive 4.3 7.4 B coadaptive 4.8 3.4 C disease 1 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5289 disease 3 +744 Fitness: 10.5289 Genotype: Fch1: A coadaptive 4.3 7.4 B coadaptive 4.8 3.4 C disease 1 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 10.5289 disease 3 +745 Fitness: 12.3758 Genotype: Fch1: A coadaptive 8.5 7.7 B coadaptive 7.6 8.7 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3758 disease 3 +746 Fitness: 12.3758 Genotype: Fch1: A coadaptive 8.5 7.7 B coadaptive 7.6 8.7 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3758 disease 3 +747 Fitness: 12.3758 Genotype: Fch1: A coadaptive 8.5 7.7 B coadaptive 7.6 8.7 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 12.3758 disease 3 +748 Fitness: 11.3559 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 8 0.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.3559 disease 2.5 +749 Fitness: 11.3559 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 8 0.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.3559 disease 2.5 +750 Fitness: 11.3559 Genotype: Fch1: A coadaptive 2.4 8.6 B coadaptive 8 0.6 C disease 0.5 1 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.3559 disease 2.5 +751 Fitness: 10.133 Genotype: Fch1: A coadaptive 8.2 9.1 B coadaptive 4.9 8.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.133 disease 3.5 +752 Fitness: 10.133 Genotype: Fch1: A coadaptive 8.2 9.1 B coadaptive 4.9 8.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.133 disease 3.5 +753 Fitness: 10.133 Genotype: Fch1: A coadaptive 8.2 9.1 B coadaptive 4.9 8.1 C disease 0.5 0.5 D disease 1 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 10.133 disease 3.5 +754 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.8 B coadaptive 6.2 7.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +755 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.8 B coadaptive 6.2 7.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +756 Fitness: 0 Genotype: Fch1: A coadaptive 0.8 1.8 B coadaptive 6.2 7.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 0 disease 3 +757 Fitness: 5.54555 Genotype: Fch1: A coadaptive 6.3 8.3 B coadaptive 1.6 6 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.54555 disease 1.5 +758 Fitness: 5.54555 Genotype: Fch1: A coadaptive 6.3 8.3 B coadaptive 1.6 6 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.54555 disease 1.5 +759 Fitness: 5.54555 Genotype: Fch1: A coadaptive 6.3 8.3 B coadaptive 1.6 6 C disease 0 0 D disease 0 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.54555 disease 1.5 +760 Fitness: 3.71328 Genotype: Fch1: A coadaptive 2.4 1.1 B coadaptive 6.3 0.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 3.71328 disease 3.5 +761 Fitness: 3.71328 Genotype: Fch1: A coadaptive 2.4 1.1 B coadaptive 6.3 0.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 3.71328 disease 3.5 +762 Fitness: 3.71328 Genotype: Fch1: A coadaptive 2.4 1.1 B coadaptive 6.3 0.7 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 3.71328 disease 3.5 +763 Fitness: 1.29398 Genotype: Fch1: A coadaptive 2.7 3.2 B coadaptive 5.8 8.6 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 1.29398 disease 2 +764 Fitness: 1.29398 Genotype: Fch1: A coadaptive 2.7 3.2 B coadaptive 5.8 8.6 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 1.29398 disease 2 +765 Fitness: 1.29398 Genotype: Fch1: A coadaptive 2.7 3.2 B coadaptive 5.8 8.6 C disease 0.5 0 D disease 0 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 1.29398 disease 2 +766 Fitness: 8.78287 Genotype: Fch1: A coadaptive 8.3 5.4 B coadaptive 0.5 7.8 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 8.78287 disease 3 +767 Fitness: 8.78287 Genotype: Fch1: A coadaptive 8.3 5.4 B coadaptive 0.5 7.8 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 8.78287 disease 3 +768 Fitness: 8.78287 Genotype: Fch1: A coadaptive 8.3 5.4 B coadaptive 0.5 7.8 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 8.78287 disease 3 +769 Fitness: 10.5164 Genotype: Fch1: A coadaptive 5.7 3.1 B coadaptive 0.3 8.1 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.5164 disease 3.5 +770 Fitness: 10.5164 Genotype: Fch1: A coadaptive 5.7 3.1 B coadaptive 0.3 8.1 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.5164 disease 3.5 +771 Fitness: 10.5164 Genotype: Fch1: A coadaptive 5.7 3.1 B coadaptive 0.3 8.1 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 10.5164 disease 3.5 +772 Fitness: 14.2754 Genotype: Fch1: A coadaptive 5.6 6.6 B coadaptive 3.3 8.3 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.2754 disease 2.5 +773 Fitness: 14.2754 Genotype: Fch1: A coadaptive 5.6 6.6 B coadaptive 3.3 8.3 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.2754 disease 2.5 +774 Fitness: 14.2754 Genotype: Fch1: A coadaptive 5.6 6.6 B coadaptive 3.3 8.3 C disease 0 0.5 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.2754 disease 2.5 +775 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 1.1 B coadaptive 9.6 0.7 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +776 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 1.1 B coadaptive 9.6 0.7 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +777 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 1.1 B coadaptive 9.6 0.7 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +778 Fitness: 13.7921 Genotype: Fch1: A coadaptive 9.6 2.2 B coadaptive 6 4.9 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.7921 disease 3 +779 Fitness: 13.7921 Genotype: Fch1: A coadaptive 9.6 2.2 B coadaptive 6 4.9 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.7921 disease 3 +780 Fitness: 13.7921 Genotype: Fch1: A coadaptive 9.6 2.2 B coadaptive 6 4.9 C disease 0 0.5 D disease 1 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 13.7921 disease 3 +781 Fitness: 3.85441 Genotype: Fch1: A coadaptive 4.5 3.6 B coadaptive 1.3 2.4 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 3.85441 disease 3 +782 Fitness: 3.85441 Genotype: Fch1: A coadaptive 4.5 3.6 B coadaptive 1.3 2.4 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 3.85441 disease 3 +783 Fitness: 3.85441 Genotype: Fch1: A coadaptive 4.5 3.6 B coadaptive 1.3 2.4 C disease 0 0.5 D disease 0 1 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 3.85441 disease 3 +784 Fitness: 3.83945 Genotype: Fch1: A coadaptive 1.7 3.7 B coadaptive 8.5 3.9 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.83945 disease 3.5 +785 Fitness: 3.83945 Genotype: Fch1: A coadaptive 1.7 3.7 B coadaptive 8.5 3.9 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.83945 disease 3.5 +786 Fitness: 3.83945 Genotype: Fch1: A coadaptive 1.7 3.7 B coadaptive 8.5 3.9 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.83945 disease 3.5 +787 Fitness: 11.8388 Genotype: Fch1: A coadaptive 8.2 1.7 B coadaptive 4.9 4.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 11.8388 disease 3.5 +788 Fitness: 11.8388 Genotype: Fch1: A coadaptive 8.2 1.7 B coadaptive 4.9 4.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 11.8388 disease 3.5 +789 Fitness: 11.8388 Genotype: Fch1: A coadaptive 8.2 1.7 B coadaptive 4.9 4.3 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 11.8388 disease 3.5 +790 Fitness: 9.19861 Genotype: Fch1: A coadaptive 3.3 9.4 B coadaptive 3.5 4.4 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 9.19861 disease 4 +791 Fitness: 9.19861 Genotype: Fch1: A coadaptive 3.3 9.4 B coadaptive 3.5 4.4 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 9.19861 disease 4 +792 Fitness: 9.19861 Genotype: Fch1: A coadaptive 3.3 9.4 B coadaptive 3.5 4.4 C disease 0 1 D disease 1 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 9.19861 disease 4 +793 Fitness: 9.20202 Genotype: Fch1: A coadaptive 0.4 7.4 B coadaptive 7.8 4.7 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 9.20202 disease 2.5 +794 Fitness: 9.20202 Genotype: Fch1: A coadaptive 0.4 7.4 B coadaptive 7.8 4.7 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 9.20202 disease 2.5 +795 Fitness: 9.20202 Genotype: Fch1: A coadaptive 0.4 7.4 B coadaptive 7.8 4.7 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 9.20202 disease 2.5 +796 Fitness: 6.54119 Genotype: Fch1: A coadaptive 4.1 1.8 B coadaptive 1.2 9.9 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 6.54119 disease 3 +797 Fitness: 6.54119 Genotype: Fch1: A coadaptive 4.1 1.8 B coadaptive 1.2 9.9 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 6.54119 disease 3 +798 Fitness: 6.54119 Genotype: Fch1: A coadaptive 4.1 1.8 B coadaptive 1.2 9.9 C disease 1 0.5 D disease 0.5 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 6.54119 disease 3 +799 Fitness: 11.1565 Genotype: Fch1: A coadaptive 8.1 5.4 B coadaptive 1.6 7.8 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.1565 disease 2.5 +800 Fitness: 11.1565 Genotype: Fch1: A coadaptive 8.1 5.4 B coadaptive 1.6 7.8 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.1565 disease 2.5 +801 Fitness: 11.1565 Genotype: Fch1: A coadaptive 8.1 5.4 B coadaptive 1.6 7.8 C disease 0 0.5 D disease 0 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 11.1565 disease 2.5 +802 Fitness: 14.7211 Genotype: Fch1: A coadaptive 7 6.3 B coadaptive 5.7 7 C disease 1 0 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.7211 disease 3 +803 Fitness: 14.7211 Genotype: Fch1: A coadaptive 7 6.3 B coadaptive 5.7 7 C disease 1 0 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.7211 disease 3 +804 Fitness: 14.7211 Genotype: Fch1: A coadaptive 7 6.3 B coadaptive 5.7 7 C disease 1 0 D disease 0 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.7211 disease 3 +805 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.1 B coadaptive 7.3 0 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +806 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.1 B coadaptive 7.3 0 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +807 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.1 B coadaptive 7.3 0 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +808 Fitness: 12.5517 Genotype: Fch1: A coadaptive 2 9 B coadaptive 9 0.6 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.5517 disease 3.5 +809 Fitness: 12.5517 Genotype: Fch1: A coadaptive 2 9 B coadaptive 9 0.6 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.5517 disease 3.5 +810 Fitness: 12.5517 Genotype: Fch1: A coadaptive 2 9 B coadaptive 9 0.6 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 12.5517 disease 3.5 +811 Fitness: 3.0212 Genotype: Fch1: A coadaptive 0.3 6.2 B coadaptive 7.5 6.9 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.0212 disease 2.5 +812 Fitness: 3.0212 Genotype: Fch1: A coadaptive 0.3 6.2 B coadaptive 7.5 6.9 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.0212 disease 2.5 +813 Fitness: 3.0212 Genotype: Fch1: A coadaptive 0.3 6.2 B coadaptive 7.5 6.9 C disease 0.5 0.5 D disease 0.5 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.0212 disease 2.5 +814 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 1.2 B coadaptive 8.4 4.5 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +815 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 1.2 B coadaptive 8.4 4.5 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +816 Fitness: 0 Genotype: Fch1: A coadaptive 2.8 1.2 B coadaptive 8.4 4.5 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +817 Fitness: 2.47608 Genotype: Fch1: A coadaptive 2.4 0.4 B coadaptive 6.6 0.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.47608 disease 2.5 +818 Fitness: 2.47608 Genotype: Fch1: A coadaptive 2.4 0.4 B coadaptive 6.6 0.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.47608 disease 2.5 +819 Fitness: 2.47608 Genotype: Fch1: A coadaptive 2.4 0.4 B coadaptive 6.6 0.9 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 2.47608 disease 2.5 +820 Fitness: 14.0347 Genotype: Fch1: A coadaptive 3.9 7.4 B coadaptive 9.9 2.9 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0347 disease 2.5 +821 Fitness: 14.0347 Genotype: Fch1: A coadaptive 3.9 7.4 B coadaptive 9.9 2.9 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0347 disease 2.5 +822 Fitness: 14.0347 Genotype: Fch1: A coadaptive 3.9 7.4 B coadaptive 9.9 2.9 C disease 0.5 0 D disease 1 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.0347 disease 2.5 +823 Fitness: 7.85996 Genotype: Fch1: A coadaptive 7.9 9.6 B coadaptive 7.3 4.5 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.85996 disease 3.5 +824 Fitness: 7.85996 Genotype: Fch1: A coadaptive 7.9 9.6 B coadaptive 7.3 4.5 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.85996 disease 3.5 +825 Fitness: 7.85996 Genotype: Fch1: A coadaptive 7.9 9.6 B coadaptive 7.3 4.5 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 7.85996 disease 3.5 +826 Fitness: 8.54663 Genotype: Fch1: A coadaptive 7.2 3.9 B coadaptive 3.5 3.4 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.54663 disease 4 +827 Fitness: 8.54663 Genotype: Fch1: A coadaptive 7.2 3.9 B coadaptive 3.5 3.4 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.54663 disease 4 +828 Fitness: 8.54663 Genotype: Fch1: A coadaptive 7.2 3.9 B coadaptive 3.5 3.4 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 8.54663 disease 4 +829 Fitness: 1.92645 Genotype: Fch1: A coadaptive 0 4.8 B coadaptive 8.9 3.7 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 1.92645 disease 3 +830 Fitness: 1.92645 Genotype: Fch1: A coadaptive 0 4.8 B coadaptive 8.9 3.7 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 1.92645 disease 3 +831 Fitness: 1.92645 Genotype: Fch1: A coadaptive 0 4.8 B coadaptive 8.9 3.7 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 1.92645 disease 3 +832 Fitness: 2.89981 Genotype: Fch1: A coadaptive 2 1.6 B coadaptive 0.2 9.3 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.89981 disease 3.5 +833 Fitness: 2.89981 Genotype: Fch1: A coadaptive 2 1.6 B coadaptive 0.2 9.3 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.89981 disease 3.5 +834 Fitness: 2.89981 Genotype: Fch1: A coadaptive 2 1.6 B coadaptive 0.2 9.3 C disease 1 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 2.89981 disease 3.5 +835 Fitness: 12.6802 Genotype: Fch1: A coadaptive 7.8 3.5 B coadaptive 9.6 0.1 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.6802 disease 2.5 +836 Fitness: 12.6802 Genotype: Fch1: A coadaptive 7.8 3.5 B coadaptive 9.6 0.1 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.6802 disease 2.5 +837 Fitness: 12.6802 Genotype: Fch1: A coadaptive 7.8 3.5 B coadaptive 9.6 0.1 C disease 0 0 D disease 0 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 12.6802 disease 2.5 +838 Fitness: 0 Genotype: Fch1: A coadaptive 4 1.5 B coadaptive 8.9 9.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +839 Fitness: 0 Genotype: Fch1: A coadaptive 4 1.5 B coadaptive 8.9 9.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +840 Fitness: 0 Genotype: Fch1: A coadaptive 4 1.5 B coadaptive 8.9 9.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +841 Fitness: 13.3499 Genotype: Fch1: A coadaptive 4.8 5.6 B coadaptive 4.6 6.8 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3499 disease 3 +842 Fitness: 13.3499 Genotype: Fch1: A coadaptive 4.8 5.6 B coadaptive 4.6 6.8 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3499 disease 3 +843 Fitness: 13.3499 Genotype: Fch1: A coadaptive 4.8 5.6 B coadaptive 4.6 6.8 C disease 1 0.5 D disease 0 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 13.3499 disease 3 +844 Fitness: 10.4281 Genotype: Fch1: A coadaptive 1.7 8.7 B coadaptive 4.3 3.6 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 10.4281 disease 2.5 +845 Fitness: 10.4281 Genotype: Fch1: A coadaptive 1.7 8.7 B coadaptive 4.3 3.6 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 10.4281 disease 2.5 +846 Fitness: 10.4281 Genotype: Fch1: A coadaptive 1.7 8.7 B coadaptive 4.3 3.6 C disease 1 0 D disease 0 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 10.4281 disease 2.5 +847 Fitness: 14.6512 Genotype: Fch1: A coadaptive 4.5 8.2 B coadaptive 7.5 4.9 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 14.6512 disease 4 +848 Fitness: 14.6512 Genotype: Fch1: A coadaptive 4.5 8.2 B coadaptive 7.5 4.9 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 14.6512 disease 4 +849 Fitness: 14.6512 Genotype: Fch1: A coadaptive 4.5 8.2 B coadaptive 7.5 4.9 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 14.6512 disease 4 +850 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3.2 B coadaptive 9 9.6 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +851 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3.2 B coadaptive 9 9.6 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +852 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3.2 B coadaptive 9 9.6 C disease 1 0 D disease 0 1 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 0 disease 3.5 +853 Fitness: 4.30504 Genotype: Fch1: A coadaptive 7.3 0.2 B coadaptive 0.3 3.6 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.30504 disease 2.5 +854 Fitness: 4.30504 Genotype: Fch1: A coadaptive 7.3 0.2 B coadaptive 0.3 3.6 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.30504 disease 2.5 +855 Fitness: 4.30504 Genotype: Fch1: A coadaptive 7.3 0.2 B coadaptive 0.3 3.6 C disease 1 0.5 D disease 1 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 4.30504 disease 2.5 +856 Fitness: 14.0601 Genotype: Fch1: A coadaptive 6.5 5.6 B coadaptive 7.3 6.8 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.0601 disease 2.5 +857 Fitness: 14.0601 Genotype: Fch1: A coadaptive 6.5 5.6 B coadaptive 7.3 6.8 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.0601 disease 2.5 +858 Fitness: 14.0601 Genotype: Fch1: A coadaptive 6.5 5.6 B coadaptive 7.3 6.8 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 14.0601 disease 2.5 +859 Fitness: 7.11262 Genotype: Fch1: A coadaptive 5.1 1 B coadaptive 2.6 4.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.11262 disease 3 +860 Fitness: 7.11262 Genotype: Fch1: A coadaptive 5.1 1 B coadaptive 2.6 4.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.11262 disease 3 +861 Fitness: 7.11262 Genotype: Fch1: A coadaptive 5.1 1 B coadaptive 2.6 4.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.11262 disease 3 +862 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3.9 B coadaptive 10 3.7 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +863 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3.9 B coadaptive 10 3.7 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +864 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 3.9 B coadaptive 10 3.7 C disease 1 0.5 D disease 1 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 3.5 +865 Fitness: 13.9678 Genotype: Fch1: A coadaptive 7.7 6.3 B coadaptive 8.7 3.2 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.9678 disease 2.5 +866 Fitness: 13.9678 Genotype: Fch1: A coadaptive 7.7 6.3 B coadaptive 8.7 3.2 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.9678 disease 2.5 +867 Fitness: 13.9678 Genotype: Fch1: A coadaptive 7.7 6.3 B coadaptive 8.7 3.2 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.9678 disease 2.5 +868 Fitness: 5.084 Genotype: Fch1: A coadaptive 7.2 0.4 B coadaptive 3.5 0.9 C disease 0.5 0 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.084 disease 3.5 +869 Fitness: 5.084 Genotype: Fch1: A coadaptive 7.2 0.4 B coadaptive 3.5 0.9 C disease 0.5 0 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.084 disease 3.5 +870 Fitness: 5.084 Genotype: Fch1: A coadaptive 7.2 0.4 B coadaptive 3.5 0.9 C disease 0.5 0 D disease 1 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 5.084 disease 3.5 +871 Fitness: 8.70048 Genotype: Fch1: A coadaptive 6.8 7.1 B coadaptive 2.6 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 8.70048 disease 2 +872 Fitness: 8.70048 Genotype: Fch1: A coadaptive 6.8 7.1 B coadaptive 2.6 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 8.70048 disease 2 +873 Fitness: 8.70048 Genotype: Fch1: A coadaptive 6.8 7.1 B coadaptive 2.6 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 8.70048 disease 2 +874 Fitness: 9.85583 Genotype: Fch1: A coadaptive 4.5 3 B coadaptive 8.3 1.5 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.85583 disease 3.5 +875 Fitness: 9.85583 Genotype: Fch1: A coadaptive 4.5 3 B coadaptive 8.3 1.5 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.85583 disease 3.5 +876 Fitness: 9.85583 Genotype: Fch1: A coadaptive 4.5 3 B coadaptive 8.3 1.5 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 9.85583 disease 3.5 +877 Fitness: 3.9554 Genotype: Fch1: A coadaptive 7.6 7 B coadaptive 2 5 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.9554 disease 2.5 +878 Fitness: 3.9554 Genotype: Fch1: A coadaptive 7.6 7 B coadaptive 2 5 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.9554 disease 2.5 +879 Fitness: 3.9554 Genotype: Fch1: A coadaptive 7.6 7 B coadaptive 2 5 C disease 0 0 D disease 1 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 3.9554 disease 2.5 +880 Fitness: 2.51615 Genotype: Fch1: A coadaptive 9.2 2 B coadaptive 0.1 4.1 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 2.51615 disease 2 +881 Fitness: 2.51615 Genotype: Fch1: A coadaptive 9.2 2 B coadaptive 0.1 4.1 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 2.51615 disease 2 +882 Fitness: 2.51615 Genotype: Fch1: A coadaptive 9.2 2 B coadaptive 0.1 4.1 C disease 0 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 2.51615 disease 2 +883 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 5.5 B coadaptive 6.1 9.3 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +884 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 5.5 B coadaptive 6.1 9.3 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +885 Fitness: 0 Genotype: Fch1: A coadaptive 0.5 5.5 B coadaptive 6.1 9.3 C disease 0 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2 +886 Fitness: 7.64393 Genotype: Fch1: A coadaptive 9.4 5 B coadaptive 4.4 3.9 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 7.64393 disease 2.5 +887 Fitness: 7.64393 Genotype: Fch1: A coadaptive 9.4 5 B coadaptive 4.4 3.9 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 7.64393 disease 2.5 +888 Fitness: 7.64393 Genotype: Fch1: A coadaptive 9.4 5 B coadaptive 4.4 3.9 C disease 1 0 D disease 0 0 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 7.64393 disease 2.5 +889 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 8.1 B coadaptive 4.7 1.6 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +890 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 8.1 B coadaptive 4.7 1.6 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +891 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 8.1 B coadaptive 4.7 1.6 C disease 0 0 D disease 1 0 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +892 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 6.2 B coadaptive 0.2 0.6 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +893 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 6.2 B coadaptive 0.2 0.6 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +894 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 6.2 B coadaptive 0.2 0.6 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +895 Fitness: 5.50496 Genotype: Fch1: A coadaptive 5.6 0.1 B coadaptive 4.7 7 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.50496 disease 3 +896 Fitness: 5.50496 Genotype: Fch1: A coadaptive 5.6 0.1 B coadaptive 4.7 7 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.50496 disease 3 +897 Fitness: 5.50496 Genotype: Fch1: A coadaptive 5.6 0.1 B coadaptive 4.7 7 C disease 1 0 D disease 0 1 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 5.50496 disease 3 +898 Fitness: 8.03287 Genotype: Fch1: A coadaptive 5.7 6.1 B coadaptive 5.5 1.4 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 8.03287 disease 3.5 +899 Fitness: 8.03287 Genotype: Fch1: A coadaptive 5.7 6.1 B coadaptive 5.5 1.4 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 8.03287 disease 3.5 +900 Fitness: 8.03287 Genotype: Fch1: A coadaptive 5.7 6.1 B coadaptive 5.5 1.4 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 8.03287 disease 3.5 +901 Fitness: 11.4243 Genotype: Fch1: A coadaptive 2.2 6.7 B coadaptive 9.6 0 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.4243 disease 3.5 +902 Fitness: 11.4243 Genotype: Fch1: A coadaptive 2.2 6.7 B coadaptive 9.6 0 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.4243 disease 3.5 +903 Fitness: 11.4243 Genotype: Fch1: A coadaptive 2.2 6.7 B coadaptive 9.6 0 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 11.4243 disease 3.5 +904 Fitness: 7.34678 Genotype: Fch1: A coadaptive 2 3.9 B coadaptive 0.2 9.4 C disease 0 1 D disease 0 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.34678 disease 2.5 +905 Fitness: 7.34678 Genotype: Fch1: A coadaptive 2 3.9 B coadaptive 0.2 9.4 C disease 0 1 D disease 0 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.34678 disease 2.5 +906 Fitness: 7.34678 Genotype: Fch1: A coadaptive 2 3.9 B coadaptive 0.2 9.4 C disease 0 1 D disease 0 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 7.34678 disease 2.5 +907 Fitness: 12.9061 Genotype: Fch1: A coadaptive 4.8 6.1 B coadaptive 4.6 5.4 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.9061 disease 3.5 +908 Fitness: 12.9061 Genotype: Fch1: A coadaptive 4.8 6.1 B coadaptive 4.6 5.4 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.9061 disease 3.5 +909 Fitness: 12.9061 Genotype: Fch1: A coadaptive 4.8 6.1 B coadaptive 4.6 5.4 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 12.9061 disease 3.5 +910 Fitness: 3.38786 Genotype: Fch1: A coadaptive 0 3.4 B coadaptive 7.7 0.2 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.38786 disease 3.5 +911 Fitness: 3.38786 Genotype: Fch1: A coadaptive 0 3.4 B coadaptive 7.7 0.2 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.38786 disease 3.5 +912 Fitness: 3.38786 Genotype: Fch1: A coadaptive 0 3.4 B coadaptive 7.7 0.2 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.38786 disease 3.5 +913 Fitness: 1.73345 Genotype: Fch1: A coadaptive 0.5 1.7 B coadaptive 2.8 1.2 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 1.73345 disease 2 +914 Fitness: 1.73345 Genotype: Fch1: A coadaptive 0.5 1.7 B coadaptive 2.8 1.2 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 1.73345 disease 2 +915 Fitness: 1.73345 Genotype: Fch1: A coadaptive 0.5 1.7 B coadaptive 2.8 1.2 C disease 0.5 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 1.73345 disease 2 +916 Fitness: 3.1921 Genotype: Fch1: A coadaptive 5.4 2.4 B coadaptive 9.2 6.6 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 3.1921 disease 3.5 +917 Fitness: 3.1921 Genotype: Fch1: A coadaptive 5.4 2.4 B coadaptive 9.2 6.6 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 3.1921 disease 3.5 +918 Fitness: 3.1921 Genotype: Fch1: A coadaptive 5.4 2.4 B coadaptive 9.2 6.6 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 3.1921 disease 3.5 +919 Fitness: 7.28091 Genotype: Fch1: A coadaptive 6.3 9.6 B coadaptive 2.2 7.3 C disease 0.5 1 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.28091 disease 4 +920 Fitness: 7.28091 Genotype: Fch1: A coadaptive 6.3 9.6 B coadaptive 2.2 7.3 C disease 0.5 1 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.28091 disease 4 +921 Fitness: 7.28091 Genotype: Fch1: A coadaptive 6.3 9.6 B coadaptive 2.2 7.3 C disease 0.5 1 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 7.28091 disease 4 +922 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 9.2 B coadaptive 6.5 0.1 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +923 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 9.2 B coadaptive 6.5 0.1 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +924 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 9.2 B coadaptive 6.5 0.1 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3 +925 Fitness: 13.095 Genotype: Fch1: A coadaptive 7.6 2.5 B coadaptive 2 9.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.095 disease 2 +926 Fitness: 13.095 Genotype: Fch1: A coadaptive 7.6 2.5 B coadaptive 2 9.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.095 disease 2 +927 Fitness: 13.095 Genotype: Fch1: A coadaptive 7.6 2.5 B coadaptive 2 9.6 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.095 disease 2 +928 Fitness: 14.4494 Genotype: Fch1: A coadaptive 4.3 7.7 B coadaptive 3.5 9.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4494 disease 3 +929 Fitness: 14.4494 Genotype: Fch1: A coadaptive 4.3 7.7 B coadaptive 3.5 9.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4494 disease 3 +930 Fitness: 14.4494 Genotype: Fch1: A coadaptive 4.3 7.7 B coadaptive 3.5 9.6 C disease 0.5 0 D disease 0 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 14.4494 disease 3 +931 Fitness: 11.3886 Genotype: Fch1: A coadaptive 5.4 3.4 B coadaptive 7.9 4 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.3886 disease 4 +932 Fitness: 11.3886 Genotype: Fch1: A coadaptive 5.4 3.4 B coadaptive 7.9 4 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.3886 disease 4 +933 Fitness: 11.3886 Genotype: Fch1: A coadaptive 5.4 3.4 B coadaptive 7.9 4 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 11.3886 disease 4 +934 Fitness: 9.8721 Genotype: Fch1: A coadaptive 6.9 5.5 B coadaptive 3.2 4.9 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.8721 disease 2.5 +935 Fitness: 9.8721 Genotype: Fch1: A coadaptive 6.9 5.5 B coadaptive 3.2 4.9 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.8721 disease 2.5 +936 Fitness: 9.8721 Genotype: Fch1: A coadaptive 6.9 5.5 B coadaptive 3.2 4.9 C disease 1 1 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.8721 disease 2.5 +937 Fitness: 13.3641 Genotype: Fch1: A coadaptive 4.4 7.1 B coadaptive 2.2 8.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.3641 disease 2.5 +938 Fitness: 13.3641 Genotype: Fch1: A coadaptive 4.4 7.1 B coadaptive 2.2 8.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.3641 disease 2.5 +939 Fitness: 13.3641 Genotype: Fch1: A coadaptive 4.4 7.1 B coadaptive 2.2 8.2 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 13.3641 disease 2.5 +940 Fitness: 4.32393 Genotype: Fch1: A coadaptive 3.1 1.2 B coadaptive 2.2 3.2 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.32393 disease 3.5 +941 Fitness: 4.32393 Genotype: Fch1: A coadaptive 3.1 1.2 B coadaptive 2.2 3.2 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.32393 disease 3.5 +942 Fitness: 4.32393 Genotype: Fch1: A coadaptive 3.1 1.2 B coadaptive 2.2 3.2 C disease 0.5 0 D disease 0 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 4.32393 disease 3.5 +943 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 3.2 B coadaptive 9.9 8.6 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +944 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 3.2 B coadaptive 9.9 8.6 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +945 Fitness: 0 Genotype: Fch1: A coadaptive 2.2 3.2 B coadaptive 9.9 8.6 C disease 1 0 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +946 Fitness: 13.1062 Genotype: Fch1: A coadaptive 2 10 B coadaptive 9 6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.1062 disease 3.5 +947 Fitness: 13.1062 Genotype: Fch1: A coadaptive 2 10 B coadaptive 9 6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.1062 disease 3.5 +948 Fitness: 13.1062 Genotype: Fch1: A coadaptive 2 10 B coadaptive 9 6 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 13.1062 disease 3.5 +949 Fitness: 6.99294 Genotype: Fch1: A coadaptive 3.7 5.9 B coadaptive 1.6 4.1 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.99294 disease 2.5 +950 Fitness: 6.99294 Genotype: Fch1: A coadaptive 3.7 5.9 B coadaptive 1.6 4.1 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.99294 disease 2.5 +951 Fitness: 6.99294 Genotype: Fch1: A coadaptive 3.7 5.9 B coadaptive 1.6 4.1 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.99294 disease 2.5 +952 Fitness: 5.83109 Genotype: Fch1: A coadaptive 1 6.6 B coadaptive 2.2 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.83109 disease 3 +953 Fitness: 5.83109 Genotype: Fch1: A coadaptive 1 6.6 B coadaptive 2.2 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.83109 disease 3 +954 Fitness: 5.83109 Genotype: Fch1: A coadaptive 1 6.6 B coadaptive 2.2 2.7 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 5.83109 disease 3 +955 Fitness: 10.6956 Genotype: Fch1: A coadaptive 3.9 4.5 B coadaptive 3.7 8.3 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.6956 disease 3 +956 Fitness: 10.6956 Genotype: Fch1: A coadaptive 3.9 4.5 B coadaptive 3.7 8.3 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.6956 disease 3 +957 Fitness: 10.6956 Genotype: Fch1: A coadaptive 3.9 4.5 B coadaptive 3.7 8.3 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 10.6956 disease 3 +958 Fitness: 0.406081 Genotype: Fch1: A coadaptive 6.3 7.6 B coadaptive 3.2 2 C disease 0.5 0 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.406081 disease 2.5 +959 Fitness: 0.406081 Genotype: Fch1: A coadaptive 6.3 7.6 B coadaptive 3.2 2 C disease 0.5 0 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.406081 disease 2.5 +960 Fitness: 0.406081 Genotype: Fch1: A coadaptive 6.3 7.6 B coadaptive 3.2 2 C disease 0.5 0 D disease 0 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0.406081 disease 2.5 +961 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.4 B coadaptive 0.9 7.8 C disease 0 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +962 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.4 B coadaptive 0.9 7.8 C disease 0 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +963 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 0.4 B coadaptive 0.9 7.8 C disease 0 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +964 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 8.5 B coadaptive 0.2 0.1 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +965 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 8.5 B coadaptive 0.2 0.1 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +966 Fitness: 0 Genotype: Fch1: A coadaptive 3.4 8.5 B coadaptive 0.2 0.1 C disease 1 0 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 3 +967 Fitness: 14.0889 Genotype: Fch1: A coadaptive 8.6 2.9 B coadaptive 6.5 5.1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.0889 disease 3 +968 Fitness: 14.0889 Genotype: Fch1: A coadaptive 8.6 2.9 B coadaptive 6.5 5.1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.0889 disease 3 +969 Fitness: 14.0889 Genotype: Fch1: A coadaptive 8.6 2.9 B coadaptive 6.5 5.1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 14.0889 disease 3 +970 Fitness: 3.98483 Genotype: Fch1: A coadaptive 1.4 6.4 B coadaptive 9.3 6.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 3.98483 disease 4 +971 Fitness: 3.98483 Genotype: Fch1: A coadaptive 1.4 6.4 B coadaptive 9.3 6.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 3.98483 disease 4 +972 Fitness: 3.98483 Genotype: Fch1: A coadaptive 1.4 6.4 B coadaptive 9.3 6.2 C disease 0.5 1 D disease 1 0 E disease 1 1 F disease 1 0 Phenotype: coadaptive 3.98483 disease 4 +973 Fitness: 14.3227 Genotype: Fch1: A coadaptive 8.8 4 B coadaptive 5.6 6.1 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3227 disease 3 +974 Fitness: 14.3227 Genotype: Fch1: A coadaptive 8.8 4 B coadaptive 5.6 6.1 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3227 disease 3 +975 Fitness: 14.3227 Genotype: Fch1: A coadaptive 8.8 4 B coadaptive 5.6 6.1 C disease 1 0.5 D disease 0.5 0 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 14.3227 disease 3 +976 Fitness: 9.84755 Genotype: Fch1: A coadaptive 0.4 8.7 B coadaptive 7.8 6.3 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.84755 disease 3 +977 Fitness: 9.84755 Genotype: Fch1: A coadaptive 0.4 8.7 B coadaptive 7.8 6.3 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.84755 disease 3 +978 Fitness: 9.84755 Genotype: Fch1: A coadaptive 0.4 8.7 B coadaptive 7.8 6.3 C disease 0 1 D disease 0.5 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.84755 disease 3 +979 Fitness: 9.51379 Genotype: Fch1: A coadaptive 8.7 7.4 B coadaptive 3.6 7.2 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 9.51379 disease 3 +980 Fitness: 9.51379 Genotype: Fch1: A coadaptive 8.7 7.4 B coadaptive 3.6 7.2 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 9.51379 disease 3 +981 Fitness: 9.51379 Genotype: Fch1: A coadaptive 8.7 7.4 B coadaptive 3.6 7.2 C disease 0.5 1 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 9.51379 disease 3 +982 Fitness: 3.94375 Genotype: Fch1: A coadaptive 9 4.7 B coadaptive 1.3 5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.94375 disease 3 +983 Fitness: 3.94375 Genotype: Fch1: A coadaptive 9 4.7 B coadaptive 1.3 5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.94375 disease 3 +984 Fitness: 3.94375 Genotype: Fch1: A coadaptive 9 4.7 B coadaptive 1.3 5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 3.94375 disease 3 +985 Fitness: 1.36985 Genotype: Fch1: A coadaptive 1 1.2 B coadaptive 4.4 3.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 1.36985 disease 2 +986 Fitness: 1.36985 Genotype: Fch1: A coadaptive 1 1.2 B coadaptive 4.4 3.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 1.36985 disease 2 +987 Fitness: 1.36985 Genotype: Fch1: A coadaptive 1 1.2 B coadaptive 4.4 3.2 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 1.36985 disease 2 +988 Fitness: 3.4732 Genotype: Fch1: A coadaptive 3.8 1 B coadaptive 8.3 3.3 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 3.4732 disease 3.5 +989 Fitness: 3.4732 Genotype: Fch1: A coadaptive 3.8 1 B coadaptive 8.3 3.3 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 3.4732 disease 3.5 +990 Fitness: 3.4732 Genotype: Fch1: A coadaptive 3.8 1 B coadaptive 8.3 3.3 C disease 0 0.5 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 3.4732 disease 3.5 +991 Fitness: 3.35984 Genotype: Fch1: A coadaptive 0.3 7 B coadaptive 7.5 7.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.35984 disease 2 +992 Fitness: 3.35984 Genotype: Fch1: A coadaptive 0.3 7 B coadaptive 7.5 7.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.35984 disease 2 +993 Fitness: 3.35984 Genotype: Fch1: A coadaptive 0.3 7 B coadaptive 7.5 7.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 3.35984 disease 2 +994 Fitness: 12.1607 Genotype: Fch1: A coadaptive 6.6 9.6 B coadaptive 8.3 4.5 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.1607 disease 3 +995 Fitness: 12.1607 Genotype: Fch1: A coadaptive 6.6 9.6 B coadaptive 8.3 4.5 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.1607 disease 3 +996 Fitness: 12.1607 Genotype: Fch1: A coadaptive 6.6 9.6 B coadaptive 8.3 4.5 C disease 0 0.5 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 12.1607 disease 3 +997 Fitness: 0.6104 Genotype: Fch1: A coadaptive 3 10 B coadaptive 1.5 3.1 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0.6104 disease 3.5 +998 Fitness: 0.6104 Genotype: Fch1: A coadaptive 3 10 B coadaptive 1.5 3.1 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0.6104 disease 3.5 +999 Fitness: 0.6104 Genotype: Fch1: A coadaptive 3 10 B coadaptive 1.5 3.1 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0.6104 disease 3.5 +1000 Fitness: 9.69775 Genotype: Fch1: A coadaptive 2.2 7.4 B coadaptive 4.5 2.9 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.69775 disease 4 +1001 Fitness: 9.69775 Genotype: Fch1: A coadaptive 2.2 7.4 B coadaptive 4.5 2.9 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.69775 disease 4 +1002 Fitness: 9.69775 Genotype: Fch1: A coadaptive 2.2 7.4 B coadaptive 4.5 2.9 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 9.69775 disease 4 +1003 Fitness: 2.72714 Genotype: Fch1: A coadaptive 3 1.1 B coadaptive 2.3 1 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 2.72714 disease 2 +1004 Fitness: 2.72714 Genotype: Fch1: A coadaptive 3 1.1 B coadaptive 2.3 1 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 2.72714 disease 2 +1005 Fitness: 2.72714 Genotype: Fch1: A coadaptive 3 1.1 B coadaptive 2.3 1 C disease 1 0.5 D disease 0.5 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 2.72714 disease 2 +1006 Fitness: 14.4837 Genotype: Fch1: A coadaptive 9 5.4 B coadaptive 6.6 7.9 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 14.4837 disease 3 +1007 Fitness: 14.4837 Genotype: Fch1: A coadaptive 9 5.4 B coadaptive 6.6 7.9 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 14.4837 disease 3 +1008 Fitness: 14.4837 Genotype: Fch1: A coadaptive 9 5.4 B coadaptive 6.6 7.9 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 14.4837 disease 3 +1009 Fitness: 8.09583 Genotype: Fch1: A coadaptive 0.7 6.9 B coadaptive 5 8.1 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.09583 disease 3 +1010 Fitness: 8.09583 Genotype: Fch1: A coadaptive 0.7 6.9 B coadaptive 5 8.1 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.09583 disease 3 +1011 Fitness: 8.09583 Genotype: Fch1: A coadaptive 0.7 6.9 B coadaptive 5 8.1 C disease 1 0.5 D disease 0.5 1 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 8.09583 disease 3 +1012 Fitness: 2.35902 Genotype: Fch1: A coadaptive 1.2 2.4 B coadaptive 2.1 8 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 2.35902 disease 2.5 +1013 Fitness: 2.35902 Genotype: Fch1: A coadaptive 1.2 2.4 B coadaptive 2.1 8 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 2.35902 disease 2.5 +1014 Fitness: 2.35902 Genotype: Fch1: A coadaptive 1.2 2.4 B coadaptive 2.1 8 C disease 1 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 2.35902 disease 2.5 +1015 Fitness: 13.5141 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 6 9.5 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.5141 disease 4 +1016 Fitness: 13.5141 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 6 9.5 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.5141 disease 4 +1017 Fitness: 13.5141 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 6 9.5 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 1 Phenotype: coadaptive 13.5141 disease 4 +1018 Fitness: 12.891 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 6.6 3.3 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.891 disease 2.5 +1019 Fitness: 12.891 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 6.6 3.3 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.891 disease 2.5 +1020 Fitness: 12.891 Genotype: Fch1: A coadaptive 9 2.4 B coadaptive 6.6 3.3 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 12.891 disease 2.5 +1021 Fitness: 3.73246 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 0.6 3.3 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 3.73246 disease 3 +1022 Fitness: 3.73246 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 0.6 3.3 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 3.73246 disease 3 +1023 Fitness: 3.73246 Genotype: Fch1: A coadaptive 8.6 0.6 B coadaptive 0.6 3.3 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 3.73246 disease 3 +1024 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.9 B coadaptive 9 3.8 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1025 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.9 B coadaptive 9 3.8 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1026 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 2.9 B coadaptive 9 3.8 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1027 Fitness: 14.719 Genotype: Fch1: A coadaptive 7.1 6.7 B coadaptive 8.2 4.9 C disease 0.5 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 14.719 disease 2.5 +1028 Fitness: 14.719 Genotype: Fch1: A coadaptive 7.1 6.7 B coadaptive 8.2 4.9 C disease 0.5 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 14.719 disease 2.5 +1029 Fitness: 14.719 Genotype: Fch1: A coadaptive 7.1 6.7 B coadaptive 8.2 4.9 C disease 0.5 0 D disease 1 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 14.719 disease 2.5 +1030 Fitness: 8.7539 Genotype: Fch1: A coadaptive 1.7 5.6 B coadaptive 8.6 3.3 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.7539 disease 3 +1031 Fitness: 8.7539 Genotype: Fch1: A coadaptive 1.7 5.6 B coadaptive 8.6 3.3 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.7539 disease 3 +1032 Fitness: 8.7539 Genotype: Fch1: A coadaptive 1.7 5.6 B coadaptive 8.6 3.3 C disease 0.5 0 D disease 1 0 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.7539 disease 3 +1033 Fitness: 1.36375 Genotype: Fch1: A coadaptive 1.1 1.5 B coadaptive 1 1.4 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 1.36375 disease 3.5 +1034 Fitness: 1.36375 Genotype: Fch1: A coadaptive 1.1 1.5 B coadaptive 1 1.4 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 1.36375 disease 3.5 +1035 Fitness: 1.36375 Genotype: Fch1: A coadaptive 1.1 1.5 B coadaptive 1 1.4 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 1.36375 disease 3.5 +1036 Fitness: 4.8123 Genotype: Fch1: A coadaptive 8.3 9.1 B coadaptive 2.1 8.1 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.8123 disease 3.5 +1037 Fitness: 4.8123 Genotype: Fch1: A coadaptive 8.3 9.1 B coadaptive 2.1 8.1 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.8123 disease 3.5 +1038 Fitness: 4.8123 Genotype: Fch1: A coadaptive 8.3 9.1 B coadaptive 2.1 8.1 C disease 1 0.5 D disease 0 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 4.8123 disease 3.5 +1039 Fitness: 12.9877 Genotype: Fch1: A coadaptive 6.9 5.4 B coadaptive 0.9 9.2 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9877 disease 3.5 +1040 Fitness: 12.9877 Genotype: Fch1: A coadaptive 6.9 5.4 B coadaptive 0.9 9.2 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9877 disease 3.5 +1041 Fitness: 12.9877 Genotype: Fch1: A coadaptive 6.9 5.4 B coadaptive 0.9 9.2 C disease 1 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 12.9877 disease 3.5 +1042 Fitness: 0 Genotype: Fch1: A coadaptive 3 0.1 B coadaptive 2.3 9.4 C disease 1 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1043 Fitness: 0 Genotype: Fch1: A coadaptive 3 0.1 B coadaptive 2.3 9.4 C disease 1 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1044 Fitness: 0 Genotype: Fch1: A coadaptive 3 0.1 B coadaptive 2.3 9.4 C disease 1 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 0 disease 4 +1045 Fitness: 2.91851 Genotype: Fch1: A coadaptive 2.4 5.5 B coadaptive 6.7 9.3 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 2.91851 disease 3 +1046 Fitness: 2.91851 Genotype: Fch1: A coadaptive 2.4 5.5 B coadaptive 6.7 9.3 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 2.91851 disease 3 +1047 Fitness: 2.91851 Genotype: Fch1: A coadaptive 2.4 5.5 B coadaptive 6.7 9.3 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 2.91851 disease 3 +1048 Fitness: 4.3145 Genotype: Fch1: A coadaptive 7 4.1 B coadaptive 3.7 1.2 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 4.3145 disease 3.5 +1049 Fitness: 4.3145 Genotype: Fch1: A coadaptive 7 4.1 B coadaptive 3.7 1.2 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 4.3145 disease 3.5 +1050 Fitness: 4.3145 Genotype: Fch1: A coadaptive 7 4.1 B coadaptive 3.7 1.2 C disease 0.5 1 D disease 1 0.5 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 4.3145 disease 3.5 +1051 Fitness: 3.53588 Genotype: Fch1: A coadaptive 0.6 6.5 B coadaptive 8 6.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.53588 disease 3 +1052 Fitness: 3.53588 Genotype: Fch1: A coadaptive 0.6 6.5 B coadaptive 8 6.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.53588 disease 3 +1053 Fitness: 3.53588 Genotype: Fch1: A coadaptive 0.6 6.5 B coadaptive 8 6.9 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 3.53588 disease 3 +1054 Fitness: 14.3461 Genotype: Fch1: A coadaptive 7.3 6.3 B coadaptive 9.9 2.2 C disease 0 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.3461 disease 2.5 +1055 Fitness: 14.3461 Genotype: Fch1: A coadaptive 7.3 6.3 B coadaptive 9.9 2.2 C disease 0 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.3461 disease 2.5 +1056 Fitness: 14.3461 Genotype: Fch1: A coadaptive 7.3 6.3 B coadaptive 9.9 2.2 C disease 0 0.5 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 14.3461 disease 2.5 +1057 Fitness: 13.8462 Genotype: Fch1: A coadaptive 9 2 B coadaptive 2.7 9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.8462 disease 3 +1058 Fitness: 13.8462 Genotype: Fch1: A coadaptive 9 2 B coadaptive 2.7 9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.8462 disease 3 +1059 Fitness: 13.8462 Genotype: Fch1: A coadaptive 9 2 B coadaptive 2.7 9 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.8462 disease 3 +1060 Fitness: 7.4529 Genotype: Fch1: A coadaptive 9.5 8.7 B coadaptive 8.2 10 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.4529 disease 3 +1061 Fitness: 7.4529 Genotype: Fch1: A coadaptive 9.5 8.7 B coadaptive 8.2 10 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.4529 disease 3 +1062 Fitness: 7.4529 Genotype: Fch1: A coadaptive 9.5 8.7 B coadaptive 8.2 10 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 7.4529 disease 3 +1063 Fitness: 6.72311 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 8.1 9.4 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.72311 disease 3.5 +1064 Fitness: 6.72311 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 8.1 9.4 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.72311 disease 3.5 +1065 Fitness: 6.72311 Genotype: Fch1: A coadaptive 7.3 3.9 B coadaptive 8.1 9.4 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 6.72311 disease 3.5 +1066 Fitness: 10.9588 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 6.6 1.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.9588 disease 2 +1067 Fitness: 10.9588 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 6.6 1.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.9588 disease 2 +1068 Fitness: 10.9588 Genotype: Fch1: A coadaptive 2.4 7.8 B coadaptive 6.6 1.7 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 10.9588 disease 2 +1069 Fitness: 10.2541 Genotype: Fch1: A coadaptive 9 4.5 B coadaptive 0.6 8.3 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.2541 disease 2.5 +1070 Fitness: 10.2541 Genotype: Fch1: A coadaptive 9 4.5 B coadaptive 0.6 8.3 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.2541 disease 2.5 +1071 Fitness: 10.2541 Genotype: Fch1: A coadaptive 9 4.5 B coadaptive 0.6 8.3 C disease 0 0 D disease 1 0 E disease 1 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.2541 disease 2.5 +1072 Fitness: 11.2427 Genotype: Fch1: A coadaptive 1.3 7.2 B coadaptive 9.9 0.8 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.2427 disease 1.5 +1073 Fitness: 11.2427 Genotype: Fch1: A coadaptive 1.3 7.2 B coadaptive 9.9 0.8 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.2427 disease 1.5 +1074 Fitness: 11.2427 Genotype: Fch1: A coadaptive 1.3 7.2 B coadaptive 9.9 0.8 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 11.2427 disease 1.5 +1075 Fitness: 10.8555 Genotype: Fch1: A coadaptive 9.7 2 B coadaptive 8.2 0.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.8555 disease 2.5 +1076 Fitness: 10.8555 Genotype: Fch1: A coadaptive 9.7 2 B coadaptive 8.2 0.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.8555 disease 2.5 +1077 Fitness: 10.8555 Genotype: Fch1: A coadaptive 9.7 2 B coadaptive 8.2 0.2 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.8555 disease 2.5 +1078 Fitness: 10.8873 Genotype: Fch1: A coadaptive 5.1 5.5 B coadaptive 5.9 9.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 10.8873 disease 3 +1079 Fitness: 10.8873 Genotype: Fch1: A coadaptive 5.1 5.5 B coadaptive 5.9 9.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 10.8873 disease 3 +1080 Fitness: 10.8873 Genotype: Fch1: A coadaptive 5.1 5.5 B coadaptive 5.9 9.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 10.8873 disease 3 +1081 Fitness: 1.87853 Genotype: Fch1: A coadaptive 3.9 6 B coadaptive 2.1 1.2 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 1.87853 disease 2.5 +1082 Fitness: 1.87853 Genotype: Fch1: A coadaptive 3.9 6 B coadaptive 2.1 1.2 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 1.87853 disease 2.5 +1083 Fitness: 1.87853 Genotype: Fch1: A coadaptive 3.9 6 B coadaptive 2.1 1.2 C disease 0 0 D disease 0.5 0.5 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 1.87853 disease 2.5 +1084 Fitness: 0 Genotype: Fch1: A coadaptive 1.3 1.7 B coadaptive 8.8 4.3 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +1085 Fitness: 0 Genotype: Fch1: A coadaptive 1.3 1.7 B coadaptive 8.8 4.3 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +1086 Fitness: 0 Genotype: Fch1: A coadaptive 1.3 1.7 B coadaptive 8.8 4.3 C disease 0 1 D disease 0 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2 +1087 Fitness: 7.1745 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 5.7 0.2 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.1745 disease 2 +1088 Fitness: 7.1745 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 5.7 0.2 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.1745 disease 2 +1089 Fitness: 7.1745 Genotype: Fch1: A coadaptive 6.2 3.9 B coadaptive 5.7 0.2 C disease 0.5 0 D disease 0 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.1745 disease 2 +1090 Fitness: 4.17821 Genotype: Fch1: A coadaptive 2.2 1.7 B coadaptive 4.5 3.7 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.17821 disease 3.5 +1091 Fitness: 4.17821 Genotype: Fch1: A coadaptive 2.2 1.7 B coadaptive 4.5 3.7 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.17821 disease 3.5 +1092 Fitness: 4.17821 Genotype: Fch1: A coadaptive 2.2 1.7 B coadaptive 4.5 3.7 C disease 0.5 0 D disease 0.5 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 4.17821 disease 3.5 +1093 Fitness: 8.294 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 3.9 7.3 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.294 disease 2.5 +1094 Fitness: 8.294 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 3.9 7.3 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.294 disease 2.5 +1095 Fitness: 8.294 Genotype: Fch1: A coadaptive 0.3 6.5 B coadaptive 3.9 7.3 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 8.294 disease 2.5 +1096 Fitness: 11.0349 Genotype: Fch1: A coadaptive 5.4 9.5 B coadaptive 2.2 8.2 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 11.0349 disease 2.5 +1097 Fitness: 11.0349 Genotype: Fch1: A coadaptive 5.4 9.5 B coadaptive 2.2 8.2 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 11.0349 disease 2.5 +1098 Fitness: 11.0349 Genotype: Fch1: A coadaptive 5.4 9.5 B coadaptive 2.2 8.2 C disease 0 0.5 D disease 0 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 11.0349 disease 2.5 +1099 Fitness: 10.6694 Genotype: Fch1: A coadaptive 6.5 3.6 B coadaptive 7.7 7.1 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.6694 disease 3 +1100 Fitness: 10.6694 Genotype: Fch1: A coadaptive 6.5 3.6 B coadaptive 7.7 7.1 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.6694 disease 3 +1101 Fitness: 10.6694 Genotype: Fch1: A coadaptive 6.5 3.6 B coadaptive 7.7 7.1 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.6694 disease 3 +1102 Fitness: 14.7397 Genotype: Fch1: A coadaptive 6.6 7.2 B coadaptive 9.7 3.5 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 14.7397 disease 4 +1103 Fitness: 14.7397 Genotype: Fch1: A coadaptive 6.6 7.2 B coadaptive 9.7 3.5 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 14.7397 disease 4 +1104 Fitness: 14.7397 Genotype: Fch1: A coadaptive 6.6 7.2 B coadaptive 9.7 3.5 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 14.7397 disease 4 +1105 Fitness: 5.81652 Genotype: Fch1: A coadaptive 1.5 7.8 B coadaptive 3.3 1.7 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 5.81652 disease 3 +1106 Fitness: 5.81652 Genotype: Fch1: A coadaptive 1.5 7.8 B coadaptive 3.3 1.7 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 5.81652 disease 3 +1107 Fitness: 5.81652 Genotype: Fch1: A coadaptive 1.5 7.8 B coadaptive 3.3 1.7 C disease 0.5 0 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 5.81652 disease 3 +1108 Fitness: 14.421 Genotype: Fch1: A coadaptive 5.6 9 B coadaptive 6.8 6.6 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 14.421 disease 2.5 +1109 Fitness: 14.421 Genotype: Fch1: A coadaptive 5.6 9 B coadaptive 6.8 6.6 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 14.421 disease 2.5 +1110 Fitness: 14.421 Genotype: Fch1: A coadaptive 5.6 9 B coadaptive 6.8 6.6 C disease 0.5 1 D disease 0.5 0 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 14.421 disease 2.5 +1111 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 9.7 5.4 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1112 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 9.7 5.4 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1113 Fitness: 0 Genotype: Fch1: A coadaptive 3.5 2.3 B coadaptive 9.7 5.4 C disease 1 1 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1114 Fitness: 6.09671 Genotype: Fch1: A coadaptive 0.6 6.9 B coadaptive 4.2 0.9 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 6.09671 disease 3.5 +1115 Fitness: 6.09671 Genotype: Fch1: A coadaptive 0.6 6.9 B coadaptive 4.2 0.9 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 6.09671 disease 3.5 +1116 Fitness: 6.09671 Genotype: Fch1: A coadaptive 0.6 6.9 B coadaptive 4.2 0.9 C disease 1 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 6.09671 disease 3.5 +1117 Fitness: 8.89932 Genotype: Fch1: A coadaptive 5.9 1.8 B coadaptive 5.3 7.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.89932 disease 2.5 +1118 Fitness: 8.89932 Genotype: Fch1: A coadaptive 5.9 1.8 B coadaptive 5.3 7.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.89932 disease 2.5 +1119 Fitness: 8.89932 Genotype: Fch1: A coadaptive 5.9 1.8 B coadaptive 5.3 7.3 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.89932 disease 2.5 +1120 Fitness: 4.91592 Genotype: Fch1: A coadaptive 2.9 3.3 B coadaptive 3 1.5 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.91592 disease 2.5 +1121 Fitness: 4.91592 Genotype: Fch1: A coadaptive 2.9 3.3 B coadaptive 3 1.5 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.91592 disease 2.5 +1122 Fitness: 4.91592 Genotype: Fch1: A coadaptive 2.9 3.3 B coadaptive 3 1.5 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.91592 disease 2.5 +1123 Fitness: 1.03535 Genotype: Fch1: A coadaptive 3.5 5.4 B coadaptive 9.7 7.8 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.03535 disease 3.5 +1124 Fitness: 1.03535 Genotype: Fch1: A coadaptive 3.5 5.4 B coadaptive 9.7 7.8 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.03535 disease 3.5 +1125 Fitness: 1.03535 Genotype: Fch1: A coadaptive 3.5 5.4 B coadaptive 9.7 7.8 C disease 0.5 0.5 D disease 1 1 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 1.03535 disease 3.5 +1126 Fitness: 5.7088 Genotype: Fch1: A coadaptive 0.9 3.9 B coadaptive 5.9 2.1 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 5.7088 disease 3 +1127 Fitness: 5.7088 Genotype: Fch1: A coadaptive 0.9 3.9 B coadaptive 5.9 2.1 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 5.7088 disease 3 +1128 Fitness: 5.7088 Genotype: Fch1: A coadaptive 0.9 3.9 B coadaptive 5.9 2.1 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 5.7088 disease 3 +1129 Fitness: 10.5784 Genotype: Fch1: A coadaptive 9.6 2 B coadaptive 7.3 0.9 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.5784 disease 2 +1130 Fitness: 10.5784 Genotype: Fch1: A coadaptive 9.6 2 B coadaptive 7.3 0.9 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.5784 disease 2 +1131 Fitness: 10.5784 Genotype: Fch1: A coadaptive 9.6 2 B coadaptive 7.3 0.9 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 10.5784 disease 2 +1132 Fitness: 7.45933 Genotype: Fch1: A coadaptive 4.8 1.3 B coadaptive 0.4 9.9 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 7.45933 disease 2 +1133 Fitness: 7.45933 Genotype: Fch1: A coadaptive 4.8 1.3 B coadaptive 0.4 9.9 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 7.45933 disease 2 +1134 Fitness: 7.45933 Genotype: Fch1: A coadaptive 4.8 1.3 B coadaptive 0.4 9.9 C disease 1 0 D disease 0.5 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 7.45933 disease 2 +1135 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.9 B coadaptive 5 7.9 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1136 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.9 B coadaptive 5 7.9 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1137 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 0.9 B coadaptive 5 7.9 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1138 Fitness: 7.2869 Genotype: Fch1: A coadaptive 8.5 7.3 B coadaptive 4.6 4.8 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 7.2869 disease 2 +1139 Fitness: 7.2869 Genotype: Fch1: A coadaptive 8.5 7.3 B coadaptive 4.6 4.8 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 7.2869 disease 2 +1140 Fitness: 7.2869 Genotype: Fch1: A coadaptive 8.5 7.3 B coadaptive 4.6 4.8 C disease 0 0 D disease 0.5 0 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 7.2869 disease 2 +1141 Fitness: 0.231887 Genotype: Fch1: A coadaptive 5.1 9 B coadaptive 2.6 2.7 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.231887 disease 2 +1142 Fitness: 0.231887 Genotype: Fch1: A coadaptive 5.1 9 B coadaptive 2.6 2.7 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.231887 disease 2 +1143 Fitness: 0.231887 Genotype: Fch1: A coadaptive 5.1 9 B coadaptive 2.6 2.7 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 0.231887 disease 2 +1144 Fitness: 14.4696 Genotype: Fch1: A coadaptive 3.1 8.9 B coadaptive 8.1 4.2 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.4696 disease 4 +1145 Fitness: 14.4696 Genotype: Fch1: A coadaptive 3.1 8.9 B coadaptive 8.1 4.2 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.4696 disease 4 +1146 Fitness: 14.4696 Genotype: Fch1: A coadaptive 3.1 8.9 B coadaptive 8.1 4.2 C disease 0.5 1 D disease 1 0 E disease 1 0 F disease 1 0 Phenotype: coadaptive 14.4696 disease 4 +1147 Fitness: 9.98219 Genotype: Fch1: A coadaptive 5.8 1.8 B coadaptive 9.6 0.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 9.98219 disease 3 +1148 Fitness: 9.98219 Genotype: Fch1: A coadaptive 5.8 1.8 B coadaptive 9.6 0.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 9.98219 disease 3 +1149 Fitness: 9.98219 Genotype: Fch1: A coadaptive 5.8 1.8 B coadaptive 9.6 0.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0 1 F disease 1 1 Phenotype: coadaptive 9.98219 disease 3 +1150 Fitness: 9.42929 Genotype: Fch1: A coadaptive 8.3 0.9 B coadaptive 6 8.5 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.42929 disease 3.5 +1151 Fitness: 9.42929 Genotype: Fch1: A coadaptive 8.3 0.9 B coadaptive 6 8.5 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.42929 disease 3.5 +1152 Fitness: 9.42929 Genotype: Fch1: A coadaptive 8.3 0.9 B coadaptive 6 8.5 C disease 1 0.5 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 9.42929 disease 3.5 +1153 Fitness: 7.54595 Genotype: Fch1: A coadaptive 7.8 6.9 B coadaptive 0.4 8.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 7.54595 disease 3.5 +1154 Fitness: 7.54595 Genotype: Fch1: A coadaptive 7.8 6.9 B coadaptive 0.4 8.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 7.54595 disease 3.5 +1155 Fitness: 7.54595 Genotype: Fch1: A coadaptive 7.8 6.9 B coadaptive 0.4 8.1 C disease 1 0.5 D disease 1 1 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 7.54595 disease 3.5 +1156 Fitness: 13.909 Genotype: Fch1: A coadaptive 8.2 3.9 B coadaptive 4.9 9.4 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.909 disease 3 +1157 Fitness: 13.909 Genotype: Fch1: A coadaptive 8.2 3.9 B coadaptive 4.9 9.4 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.909 disease 3 +1158 Fitness: 13.909 Genotype: Fch1: A coadaptive 8.2 3.9 B coadaptive 4.9 9.4 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 13.909 disease 3 +1159 Fitness: 8.6376 Genotype: Fch1: A coadaptive 5.5 6.6 B coadaptive 7.7 9.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.6376 disease 2 +1160 Fitness: 8.6376 Genotype: Fch1: A coadaptive 5.5 6.6 B coadaptive 7.7 9.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.6376 disease 2 +1161 Fitness: 8.6376 Genotype: Fch1: A coadaptive 5.5 6.6 B coadaptive 7.7 9.7 C disease 0.5 1 D disease 0 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.6376 disease 2 +1162 Fitness: 8.2736 Genotype: Fch1: A coadaptive 6.8 0.2 B coadaptive 3.8 3.6 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.2736 disease 3.5 +1163 Fitness: 8.2736 Genotype: Fch1: A coadaptive 6.8 0.2 B coadaptive 3.8 3.6 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.2736 disease 3.5 +1164 Fitness: 8.2736 Genotype: Fch1: A coadaptive 6.8 0.2 B coadaptive 3.8 3.6 C disease 0 0.5 D disease 1 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 8.2736 disease 3.5 +1165 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 5.2 B coadaptive 3.4 0.5 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1166 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 5.2 B coadaptive 3.4 0.5 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1167 Fitness: 0 Genotype: Fch1: A coadaptive 7.4 5.2 B coadaptive 3.4 0.5 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1168 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 9.1 B coadaptive 4.6 0.4 C disease 1 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1169 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 9.1 B coadaptive 4.6 0.4 C disease 1 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1170 Fitness: 0 Genotype: Fch1: A coadaptive 5.1 9.1 B coadaptive 4.6 0.4 C disease 1 1 D disease 0 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1171 Fitness: 7.67268 Genotype: Fch1: A coadaptive 1 5.6 B coadaptive 8.2 3.3 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.67268 disease 3 +1172 Fitness: 7.67268 Genotype: Fch1: A coadaptive 1 5.6 B coadaptive 8.2 3.3 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.67268 disease 3 +1173 Fitness: 7.67268 Genotype: Fch1: A coadaptive 1 5.6 B coadaptive 8.2 3.3 C disease 0.5 0 D disease 0.5 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.67268 disease 3 +1174 Fitness: 7.31438 Genotype: Fch1: A coadaptive 5.3 1.5 B coadaptive 7.3 5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 7.31438 disease 3.5 +1175 Fitness: 7.31438 Genotype: Fch1: A coadaptive 5.3 1.5 B coadaptive 7.3 5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 7.31438 disease 3.5 +1176 Fitness: 7.31438 Genotype: Fch1: A coadaptive 5.3 1.5 B coadaptive 7.3 5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 7.31438 disease 3.5 +1177 Fitness: 9.95653 Genotype: Fch1: A coadaptive 1.7 9 B coadaptive 8.6 7.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.95653 disease 3.5 +1178 Fitness: 9.95653 Genotype: Fch1: A coadaptive 1.7 9 B coadaptive 8.6 7.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.95653 disease 3.5 +1179 Fitness: 9.95653 Genotype: Fch1: A coadaptive 1.7 9 B coadaptive 8.6 7.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.95653 disease 3.5 +1180 Fitness: 12.435 Genotype: Fch1: A coadaptive 8.1 1.4 B coadaptive 1.6 9.3 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 12.435 disease 4 +1181 Fitness: 12.435 Genotype: Fch1: A coadaptive 8.1 1.4 B coadaptive 1.6 9.3 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 12.435 disease 4 +1182 Fitness: 12.435 Genotype: Fch1: A coadaptive 8.1 1.4 B coadaptive 1.6 9.3 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 12.435 disease 4 +1183 Fitness: 7.28091 Genotype: Fch1: A coadaptive 6.3 9.6 B coadaptive 2.2 7.3 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.28091 disease 4 +1184 Fitness: 7.28091 Genotype: Fch1: A coadaptive 6.3 9.6 B coadaptive 2.2 7.3 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.28091 disease 4 +1185 Fitness: 7.28091 Genotype: Fch1: A coadaptive 6.3 9.6 B coadaptive 2.2 7.3 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 7.28091 disease 4 +1186 Fitness: 8.4006 Genotype: Fch1: A coadaptive 1.9 8.3 B coadaptive 4.5 2.1 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.4006 disease 2.5 +1187 Fitness: 8.4006 Genotype: Fch1: A coadaptive 1.9 8.3 B coadaptive 4.5 2.1 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.4006 disease 2.5 +1188 Fitness: 8.4006 Genotype: Fch1: A coadaptive 1.9 8.3 B coadaptive 4.5 2.1 C disease 0.5 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 8.4006 disease 2.5 +1189 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.9 B coadaptive 5 8.5 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1190 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.9 B coadaptive 5 8.5 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1191 Fitness: 0 Genotype: Fch1: A coadaptive 0.7 0.9 B coadaptive 5 8.5 C disease 1 1 D disease 0 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1192 Fitness: 13.187 Genotype: Fch1: A coadaptive 7.6 3.9 B coadaptive 6.5 3.7 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.187 disease 3 +1193 Fitness: 13.187 Genotype: Fch1: A coadaptive 7.6 3.9 B coadaptive 6.5 3.7 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.187 disease 3 +1194 Fitness: 13.187 Genotype: Fch1: A coadaptive 7.6 3.9 B coadaptive 6.5 3.7 C disease 0 1 D disease 1 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 13.187 disease 3 +1195 Fitness: 9.59394 Genotype: Fch1: A coadaptive 0.6 8.3 B coadaptive 8 6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.59394 disease 3 +1196 Fitness: 9.59394 Genotype: Fch1: A coadaptive 0.6 8.3 B coadaptive 8 6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.59394 disease 3 +1197 Fitness: 9.59394 Genotype: Fch1: A coadaptive 0.6 8.3 B coadaptive 8 6 C disease 0.5 1 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.59394 disease 3 +1198 Fitness: 7.10298 Genotype: Fch1: A coadaptive 9.7 9.3 B coadaptive 8.2 6.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 7.10298 disease 2 +1199 Fitness: 7.10298 Genotype: Fch1: A coadaptive 9.7 9.3 B coadaptive 8.2 6.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 7.10298 disease 2 +1200 Fitness: 7.10298 Genotype: Fch1: A coadaptive 9.7 9.3 B coadaptive 8.2 6.5 C disease 0 0.5 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 7.10298 disease 2 +1201 Fitness: 4.01774 Genotype: Fch1: A coadaptive 2.9 6.8 B coadaptive 1.6 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.01774 disease 3 +1202 Fitness: 4.01774 Genotype: Fch1: A coadaptive 2.9 6.8 B coadaptive 1.6 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.01774 disease 3 +1203 Fitness: 4.01774 Genotype: Fch1: A coadaptive 2.9 6.8 B coadaptive 1.6 2.6 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 4.01774 disease 3 +1204 Fitness: 7.69177 Genotype: Fch1: A coadaptive 2.7 3.4 B coadaptive 9.4 0.2 C disease 0 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.69177 disease 3 +1205 Fitness: 7.69177 Genotype: Fch1: A coadaptive 2.7 3.4 B coadaptive 9.4 0.2 C disease 0 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.69177 disease 3 +1206 Fitness: 7.69177 Genotype: Fch1: A coadaptive 2.7 3.4 B coadaptive 9.4 0.2 C disease 0 0.5 D disease 1 0 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.69177 disease 3 +1207 Fitness: 7.95899 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 2.1 4.9 C disease 0 1 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.95899 disease 4 +1208 Fitness: 7.95899 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 2.1 4.9 C disease 0 1 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.95899 disease 4 +1209 Fitness: 7.95899 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 2.1 4.9 C disease 0 1 D disease 1 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 7.95899 disease 4 +1210 Fitness: 2.57586 Genotype: Fch1: A coadaptive 2 0.7 B coadaptive 0.9 5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 2.57586 disease 2.5 +1211 Fitness: 2.57586 Genotype: Fch1: A coadaptive 2 0.7 B coadaptive 0.9 5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 2.57586 disease 2.5 +1212 Fitness: 2.57586 Genotype: Fch1: A coadaptive 2 0.7 B coadaptive 0.9 5 C disease 1 1 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 2.57586 disease 2.5 +1213 Fitness: 7.84485 Genotype: Fch1: A coadaptive 4.8 2.4 B coadaptive 4.6 8 C disease 0.5 1 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.84485 disease 4 +1214 Fitness: 7.84485 Genotype: Fch1: A coadaptive 4.8 2.4 B coadaptive 4.6 8 C disease 0.5 1 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.84485 disease 4 +1215 Fitness: 7.84485 Genotype: Fch1: A coadaptive 4.8 2.4 B coadaptive 4.6 8 C disease 0.5 1 D disease 1 1 E disease 1 0 F disease 1 1 Phenotype: coadaptive 7.84485 disease 4 +1216 Fitness: 8.4006 Genotype: Fch1: A coadaptive 1.9 8.3 B coadaptive 4.5 2.1 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 8.4006 disease 3 +1217 Fitness: 8.4006 Genotype: Fch1: A coadaptive 1.9 8.3 B coadaptive 4.5 2.1 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 8.4006 disease 3 +1218 Fitness: 8.4006 Genotype: Fch1: A coadaptive 1.9 8.3 B coadaptive 4.5 2.1 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 8.4006 disease 3 +1219 Fitness: 0.372769 Genotype: Fch1: A coadaptive 9.7 8.3 B coadaptive 2.3 7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.372769 disease 3 +1220 Fitness: 0.372769 Genotype: Fch1: A coadaptive 9.7 8.3 B coadaptive 2.3 7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.372769 disease 3 +1221 Fitness: 0.372769 Genotype: Fch1: A coadaptive 9.7 8.3 B coadaptive 2.3 7 C disease 1 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0.372769 disease 3 +1222 Fitness: 14.6544 Genotype: Fch1: A coadaptive 5.1 9.1 B coadaptive 5.9 8.1 C disease 0.5 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.6544 disease 2 +1223 Fitness: 14.6544 Genotype: Fch1: A coadaptive 5.1 9.1 B coadaptive 5.9 8.1 C disease 0.5 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.6544 disease 2 +1224 Fitness: 14.6544 Genotype: Fch1: A coadaptive 5.1 9.1 B coadaptive 5.9 8.1 C disease 0.5 0 D disease 0 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 14.6544 disease 2 +1225 Fitness: 0.706556 Genotype: Fch1: A coadaptive 1.6 1 B coadaptive 5.1 4.4 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0.706556 disease 2 +1226 Fitness: 0.706556 Genotype: Fch1: A coadaptive 1.6 1 B coadaptive 5.1 4.4 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0.706556 disease 2 +1227 Fitness: 0.706556 Genotype: Fch1: A coadaptive 1.6 1 B coadaptive 5.1 4.4 C disease 0 0 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0.706556 disease 2 +1228 Fitness: 12.7715 Genotype: Fch1: A coadaptive 3.7 9.7 B coadaptive 5.9 4.5 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 12.7715 disease 2.5 +1229 Fitness: 12.7715 Genotype: Fch1: A coadaptive 3.7 9.7 B coadaptive 5.9 4.5 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 12.7715 disease 2.5 +1230 Fitness: 12.7715 Genotype: Fch1: A coadaptive 3.7 9.7 B coadaptive 5.9 4.5 C disease 0.5 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 12.7715 disease 2.5 +1231 Fitness: 12.9361 Genotype: Fch1: A coadaptive 8.8 5.3 B coadaptive 2.5 8.5 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.9361 disease 3 +1232 Fitness: 12.9361 Genotype: Fch1: A coadaptive 8.8 5.3 B coadaptive 2.5 8.5 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.9361 disease 3 +1233 Fitness: 12.9361 Genotype: Fch1: A coadaptive 8.8 5.3 B coadaptive 2.5 8.5 C disease 0 0 D disease 1 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 12.9361 disease 3 +1234 Fitness: 0 Genotype: Fch1: A coadaptive 9.5 10 B coadaptive 8 3.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1235 Fitness: 0 Genotype: Fch1: A coadaptive 9.5 10 B coadaptive 8 3.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1236 Fitness: 0 Genotype: Fch1: A coadaptive 9.5 10 B coadaptive 8 3.1 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1237 Fitness: 11.739 Genotype: Fch1: A coadaptive 6.1 3.1 B coadaptive 7.5 2.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.739 disease 1.5 +1238 Fitness: 11.739 Genotype: Fch1: A coadaptive 6.1 3.1 B coadaptive 7.5 2.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.739 disease 1.5 +1239 Fitness: 11.739 Genotype: Fch1: A coadaptive 6.1 3.1 B coadaptive 7.5 2.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 11.739 disease 1.5 +1240 Fitness: 13.9045 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 6.5 5.5 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.9045 disease 3.5 +1241 Fitness: 13.9045 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 6.5 5.5 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.9045 disease 3.5 +1242 Fitness: 13.9045 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 6.5 5.5 C disease 1 0 D disease 0 0.5 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.9045 disease 3.5 +1243 Fitness: 11.8152 Genotype: Fch1: A coadaptive 3.2 6.6 B coadaptive 5.7 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.8152 disease 2.5 +1244 Fitness: 11.8152 Genotype: Fch1: A coadaptive 3.2 6.6 B coadaptive 5.7 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.8152 disease 2.5 +1245 Fitness: 11.8152 Genotype: Fch1: A coadaptive 3.2 6.6 B coadaptive 5.7 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 11.8152 disease 2.5 +1246 Fitness: 12.7386 Genotype: Fch1: A coadaptive 1 9.1 B coadaptive 2.2 8.1 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.7386 disease 3 +1247 Fitness: 12.7386 Genotype: Fch1: A coadaptive 1 9.1 B coadaptive 2.2 8.1 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.7386 disease 3 +1248 Fitness: 12.7386 Genotype: Fch1: A coadaptive 1 9.1 B coadaptive 2.2 8.1 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 0 Phenotype: coadaptive 12.7386 disease 3 +1249 Fitness: 10.9906 Genotype: Fch1: A coadaptive 1.7 7.8 B coadaptive 1.8 6.7 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.9906 disease 3.5 +1250 Fitness: 10.9906 Genotype: Fch1: A coadaptive 1.7 7.8 B coadaptive 1.8 6.7 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.9906 disease 3.5 +1251 Fitness: 10.9906 Genotype: Fch1: A coadaptive 1.7 7.8 B coadaptive 1.8 6.7 C disease 0 0.5 D disease 1 0 E disease 0 1 F disease 1 0 Phenotype: coadaptive 10.9906 disease 3.5 +1252 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 7.4 B coadaptive 2.5 3.9 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1253 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 7.4 B coadaptive 2.5 3.9 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1254 Fitness: 0 Genotype: Fch1: A coadaptive 8.8 7.4 B coadaptive 2.5 3.9 C disease 1 0 D disease 0.5 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1255 Fitness: 7.09589 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 3.4 3.2 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.09589 disease 3 +1256 Fitness: 7.09589 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 3.4 3.2 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.09589 disease 3 +1257 Fitness: 7.09589 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 3.4 3.2 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 7.09589 disease 3 +1258 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 1.7 B coadaptive 8.5 7 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1259 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 1.7 B coadaptive 8.5 7 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1260 Fitness: 0 Genotype: Fch1: A coadaptive 1.7 1.7 B coadaptive 8.5 7 C disease 1 0 D disease 0 0 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1261 Fitness: 10.0071 Genotype: Fch1: A coadaptive 7.3 8.9 B coadaptive 4.8 6.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.0071 disease 3 +1262 Fitness: 10.0071 Genotype: Fch1: A coadaptive 7.3 8.9 B coadaptive 4.8 6.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.0071 disease 3 +1263 Fitness: 10.0071 Genotype: Fch1: A coadaptive 7.3 8.9 B coadaptive 4.8 6.4 C disease 0 0.5 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 10.0071 disease 3 +1264 Fitness: 13.5136 Genotype: Fch1: A coadaptive 5.6 5.1 B coadaptive 6.8 5.9 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.5136 disease 1.5 +1265 Fitness: 13.5136 Genotype: Fch1: A coadaptive 5.6 5.1 B coadaptive 6.8 5.9 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.5136 disease 1.5 +1266 Fitness: 13.5136 Genotype: Fch1: A coadaptive 5.6 5.1 B coadaptive 6.8 5.9 C disease 0 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 13.5136 disease 1.5 +1267 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 1.5 B coadaptive 7.5 9.1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1268 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 1.5 B coadaptive 7.5 9.1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1269 Fitness: 0 Genotype: Fch1: A coadaptive 4.5 1.5 B coadaptive 7.5 9.1 C disease 0.5 0 D disease 1 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1270 Fitness: 9.65585 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 6.6 5.2 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.65585 disease 3.5 +1271 Fitness: 9.65585 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 6.6 5.2 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.65585 disease 3.5 +1272 Fitness: 9.65585 Genotype: Fch1: A coadaptive 9 7.8 B coadaptive 6.6 5.2 C disease 0 1 D disease 1 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 9.65585 disease 3.5 +1273 Fitness: 4.44486 Genotype: Fch1: A coadaptive 3.9 1.1 B coadaptive 3.7 1 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.44486 disease 2 +1274 Fitness: 4.44486 Genotype: Fch1: A coadaptive 3.9 1.1 B coadaptive 3.7 1 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.44486 disease 2 +1275 Fitness: 4.44486 Genotype: Fch1: A coadaptive 3.9 1.1 B coadaptive 3.7 1 C disease 0.5 0.5 D disease 1 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 4.44486 disease 2 +1276 Fitness: 6.03222 Genotype: Fch1: A coadaptive 5.7 1.7 B coadaptive 5.5 8.6 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.03222 disease 2.5 +1277 Fitness: 6.03222 Genotype: Fch1: A coadaptive 5.7 1.7 B coadaptive 5.5 8.6 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.03222 disease 2.5 +1278 Fitness: 6.03222 Genotype: Fch1: A coadaptive 5.7 1.7 B coadaptive 5.5 8.6 C disease 1 0.5 D disease 0 1 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 6.03222 disease 2.5 +1279 Fitness: 0 Genotype: Fch1: A coadaptive 7.1 7.4 B coadaptive 0.2 3.9 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1280 Fitness: 0 Genotype: Fch1: A coadaptive 7.1 7.4 B coadaptive 0.2 3.9 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1281 Fitness: 0 Genotype: Fch1: A coadaptive 7.1 7.4 B coadaptive 0.2 3.9 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1282 Fitness: 4.35699 Genotype: Fch1: A coadaptive 2.3 2 B coadaptive 5.4 4.1 C disease 0 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 4.35699 disease 1.5 +1283 Fitness: 4.35699 Genotype: Fch1: A coadaptive 2.3 2 B coadaptive 5.4 4.1 C disease 0 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 4.35699 disease 1.5 +1284 Fitness: 4.35699 Genotype: Fch1: A coadaptive 2.3 2 B coadaptive 5.4 4.1 C disease 0 0 D disease 0 0 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 4.35699 disease 1.5 +1285 Fitness: 1.35873 Genotype: Fch1: A coadaptive 0.4 1.5 B coadaptive 3.1 3.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.35873 disease 3.5 +1286 Fitness: 1.35873 Genotype: Fch1: A coadaptive 0.4 1.5 B coadaptive 3.1 3.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.35873 disease 3.5 +1287 Fitness: 1.35873 Genotype: Fch1: A coadaptive 0.4 1.5 B coadaptive 3.1 3.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.35873 disease 3.5 +1288 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 2.3 0.5 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1289 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 2.3 0.5 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1290 Fitness: 0 Genotype: Fch1: A coadaptive 6.5 5.2 B coadaptive 2.3 0.5 C disease 1 1 D disease 0.5 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1291 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 6.7 B coadaptive 0.1 4.9 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1292 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 6.7 B coadaptive 0.1 4.9 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1293 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 6.7 B coadaptive 0.1 4.9 C disease 0 0 D disease 0.5 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 0 disease 2.5 +1294 Fitness: 12.5481 Genotype: Fch1: A coadaptive 8.3 1.9 B coadaptive 2.1 7.8 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.5481 disease 2.5 +1295 Fitness: 12.5481 Genotype: Fch1: A coadaptive 8.3 1.9 B coadaptive 2.1 7.8 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.5481 disease 2.5 +1296 Fitness: 12.5481 Genotype: Fch1: A coadaptive 8.3 1.9 B coadaptive 2.1 7.8 C disease 0.5 0.5 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 12.5481 disease 2.5 +1297 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 7.1 B coadaptive 0.6 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1298 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 7.1 B coadaptive 0.6 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1299 Fitness: 0 Genotype: Fch1: A coadaptive 8.6 7.1 B coadaptive 0.6 5.8 C disease 1 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1300 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.7 B coadaptive 7.9 8.5 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1301 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.7 B coadaptive 7.9 8.5 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1302 Fitness: 0 Genotype: Fch1: A coadaptive 0.9 1.7 B coadaptive 7.9 8.5 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1303 Fitness: 13.3211 Genotype: Fch1: A coadaptive 3.1 7.4 B coadaptive 8.1 2.9 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.3211 disease 2.5 +1304 Fitness: 13.3211 Genotype: Fch1: A coadaptive 3.1 7.4 B coadaptive 8.1 2.9 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.3211 disease 2.5 +1305 Fitness: 13.3211 Genotype: Fch1: A coadaptive 3.1 7.4 B coadaptive 8.1 2.9 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 13.3211 disease 2.5 +1306 Fitness: 8.04931 Genotype: Fch1: A coadaptive 9.5 4.8 B coadaptive 8 0.4 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 8.04931 disease 2.5 +1307 Fitness: 8.04931 Genotype: Fch1: A coadaptive 9.5 4.8 B coadaptive 8 0.4 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 8.04931 disease 2.5 +1308 Fitness: 8.04931 Genotype: Fch1: A coadaptive 9.5 4.8 B coadaptive 8 0.4 C disease 0 1 D disease 0 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 8.04931 disease 2.5 +1309 Fitness: 9.37665 Genotype: Fch1: A coadaptive 3.1 6.5 B coadaptive 8.1 6.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.37665 disease 3.5 +1310 Fitness: 9.37665 Genotype: Fch1: A coadaptive 3.1 6.5 B coadaptive 8.1 6.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.37665 disease 3.5 +1311 Fitness: 9.37665 Genotype: Fch1: A coadaptive 3.1 6.5 B coadaptive 8.1 6.9 C disease 0.5 0.5 D disease 1 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 9.37665 disease 3.5 +1312 Fitness: 14.7164 Genotype: Fch1: A coadaptive 6.8 6.2 B coadaptive 2.6 10 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.7164 disease 2 +1313 Fitness: 14.7164 Genotype: Fch1: A coadaptive 6.8 6.2 B coadaptive 2.6 10 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.7164 disease 2 +1314 Fitness: 14.7164 Genotype: Fch1: A coadaptive 6.8 6.2 B coadaptive 2.6 10 C disease 1 0.5 D disease 0.5 0.5 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 14.7164 disease 2 +1315 Fitness: 6.07078 Genotype: Fch1: A coadaptive 4.5 7.1 B coadaptive 1.3 4.6 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.07078 disease 2.5 +1316 Fitness: 6.07078 Genotype: Fch1: A coadaptive 4.5 7.1 B coadaptive 1.3 4.6 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.07078 disease 2.5 +1317 Fitness: 6.07078 Genotype: Fch1: A coadaptive 4.5 7.1 B coadaptive 1.3 4.6 C disease 1 0.5 D disease 0 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 6.07078 disease 2.5 +1318 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 7.8 10 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1319 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 7.8 10 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1320 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 3.9 B coadaptive 7.8 10 C disease 0.5 1 D disease 1 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1321 Fitness: 6.89552 Genotype: Fch1: A coadaptive 2.8 8.2 B coadaptive 7.7 9.6 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.89552 disease 3 +1322 Fitness: 6.89552 Genotype: Fch1: A coadaptive 2.8 8.2 B coadaptive 7.7 9.6 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.89552 disease 3 +1323 Fitness: 6.89552 Genotype: Fch1: A coadaptive 2.8 8.2 B coadaptive 7.7 9.6 C disease 1 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.89552 disease 3 +1324 Fitness: 4.44833 Genotype: Fch1: A coadaptive 4.2 1.7 B coadaptive 3 1.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.44833 disease 2 +1325 Fitness: 4.44833 Genotype: Fch1: A coadaptive 4.2 1.7 B coadaptive 3 1.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.44833 disease 2 +1326 Fitness: 4.44833 Genotype: Fch1: A coadaptive 4.2 1.7 B coadaptive 3 1.2 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 4.44833 disease 2 +1327 Fitness: 12.0331 Genotype: Fch1: A coadaptive 2.7 6.5 B coadaptive 9.4 2.3 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.0331 disease 2.5 +1328 Fitness: 12.0331 Genotype: Fch1: A coadaptive 2.7 6.5 B coadaptive 9.4 2.3 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.0331 disease 2.5 +1329 Fitness: 12.0331 Genotype: Fch1: A coadaptive 2.7 6.5 B coadaptive 9.4 2.3 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.0331 disease 2.5 +1330 Fitness: 11.7902 Genotype: Fch1: A coadaptive 7.3 1.8 B coadaptive 5.2 4.8 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 11.7902 disease 3.5 +1331 Fitness: 11.7902 Genotype: Fch1: A coadaptive 7.3 1.8 B coadaptive 5.2 4.8 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 11.7902 disease 3.5 +1332 Fitness: 11.7902 Genotype: Fch1: A coadaptive 7.3 1.8 B coadaptive 5.2 4.8 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 11.7902 disease 3.5 +1333 Fitness: 4.60049 Genotype: Fch1: A coadaptive 2 5 B coadaptive 0.2 3.9 C disease 0 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 4.60049 disease 2.5 +1334 Fitness: 4.60049 Genotype: Fch1: A coadaptive 2 5 B coadaptive 0.2 3.9 C disease 0 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 4.60049 disease 2.5 +1335 Fitness: 4.60049 Genotype: Fch1: A coadaptive 2 5 B coadaptive 0.2 3.9 C disease 0 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 4.60049 disease 2.5 +1336 Fitness: 13.0313 Genotype: Fch1: A coadaptive 5.1 8.9 B coadaptive 4.6 6.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.0313 disease 3.5 +1337 Fitness: 13.0313 Genotype: Fch1: A coadaptive 5.1 8.9 B coadaptive 4.6 6.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.0313 disease 3.5 +1338 Fitness: 13.0313 Genotype: Fch1: A coadaptive 5.1 8.9 B coadaptive 4.6 6.4 C disease 0.5 1 D disease 0.5 1 E disease 0 0.5 F disease 1 1 Phenotype: coadaptive 13.0313 disease 3.5 +1339 Fitness: 13.5776 Genotype: Fch1: A coadaptive 6.3 7.3 B coadaptive 2.2 9 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.5776 disease 3.5 +1340 Fitness: 13.5776 Genotype: Fch1: A coadaptive 6.3 7.3 B coadaptive 2.2 9 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.5776 disease 3.5 +1341 Fitness: 13.5776 Genotype: Fch1: A coadaptive 6.3 7.3 B coadaptive 2.2 9 C disease 0.5 0.5 D disease 1 0.5 E disease 1 1 F disease 1 0 Phenotype: coadaptive 13.5776 disease 3.5 +1342 Fitness: 10.475 Genotype: Fch1: A coadaptive 5.9 5.9 B coadaptive 4.1 4.1 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.475 disease 3 +1343 Fitness: 10.475 Genotype: Fch1: A coadaptive 5.9 5.9 B coadaptive 4.1 4.1 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.475 disease 3 +1344 Fitness: 10.475 Genotype: Fch1: A coadaptive 5.9 5.9 B coadaptive 4.1 4.1 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 10.475 disease 3 +1345 Fitness: 10.4097 Genotype: Fch1: A coadaptive 8.9 1.7 B coadaptive 4.2 3.7 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.4097 disease 1.5 +1346 Fitness: 10.4097 Genotype: Fch1: A coadaptive 8.9 1.7 B coadaptive 4.2 3.7 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.4097 disease 1.5 +1347 Fitness: 10.4097 Genotype: Fch1: A coadaptive 8.9 1.7 B coadaptive 4.2 3.7 C disease 1 1 D disease 0 0.5 E disease 0 0 F disease 0 0 Phenotype: coadaptive 10.4097 disease 1.5 +1348 Fitness: 3.05078 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 1 8 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.05078 disease 2.5 +1349 Fitness: 3.05078 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 1 8 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.05078 disease 2.5 +1350 Fitness: 3.05078 Genotype: Fch1: A coadaptive 1.1 2.4 B coadaptive 1 8 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 3.05078 disease 2.5 +1351 Fitness: 11.5485 Genotype: Fch1: A coadaptive 4.8 4.5 B coadaptive 4.6 8.3 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.5485 disease 4 +1352 Fitness: 11.5485 Genotype: Fch1: A coadaptive 4.8 4.5 B coadaptive 4.6 8.3 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.5485 disease 4 +1353 Fitness: 11.5485 Genotype: Fch1: A coadaptive 4.8 4.5 B coadaptive 4.6 8.3 C disease 0.5 1 D disease 0.5 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 11.5485 disease 4 +1354 Fitness: 5.53507 Genotype: Fch1: A coadaptive 3.9 1.4 B coadaptive 3.7 2.1 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 5.53507 disease 4 +1355 Fitness: 5.53507 Genotype: Fch1: A coadaptive 3.9 1.4 B coadaptive 3.7 2.1 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 5.53507 disease 4 +1356 Fitness: 5.53507 Genotype: Fch1: A coadaptive 3.9 1.4 B coadaptive 3.7 2.1 C disease 1 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 5.53507 disease 4 +1357 Fitness: 1.20274 Genotype: Fch1: A coadaptive 3.6 6.9 B coadaptive 2.4 0.9 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.20274 disease 3 +1358 Fitness: 1.20274 Genotype: Fch1: A coadaptive 3.6 6.9 B coadaptive 2.4 0.9 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.20274 disease 3 +1359 Fitness: 1.20274 Genotype: Fch1: A coadaptive 3.6 6.9 B coadaptive 2.4 0.9 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 1.20274 disease 3 +1360 Fitness: 9.45273 Genotype: Fch1: A coadaptive 0.2 7.4 B coadaptive 3.6 4.7 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.45273 disease 2.5 +1361 Fitness: 9.45273 Genotype: Fch1: A coadaptive 0.2 7.4 B coadaptive 3.6 4.7 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.45273 disease 2.5 +1362 Fitness: 9.45273 Genotype: Fch1: A coadaptive 0.2 7.4 B coadaptive 3.6 4.7 C disease 0.5 0 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 9.45273 disease 2.5 +1363 Fitness: 5.19297 Genotype: Fch1: A coadaptive 1.5 4.5 B coadaptive 5 7.5 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.19297 disease 1.5 +1364 Fitness: 5.19297 Genotype: Fch1: A coadaptive 1.5 4.5 B coadaptive 5 7.5 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.19297 disease 1.5 +1365 Fitness: 5.19297 Genotype: Fch1: A coadaptive 1.5 4.5 B coadaptive 5 7.5 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.19297 disease 1.5 +1366 Fitness: 3.10391 Genotype: Fch1: A coadaptive 5.7 7.3 B coadaptive 0.3 5.2 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 3.10391 disease 3.5 +1367 Fitness: 3.10391 Genotype: Fch1: A coadaptive 5.7 7.3 B coadaptive 0.3 5.2 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 3.10391 disease 3.5 +1368 Fitness: 3.10391 Genotype: Fch1: A coadaptive 5.7 7.3 B coadaptive 0.3 5.2 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 3.10391 disease 3.5 +1369 Fitness: 13.2807 Genotype: Fch1: A coadaptive 5.3 6.6 B coadaptive 8.6 1.7 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 13.2807 disease 2.5 +1370 Fitness: 13.2807 Genotype: Fch1: A coadaptive 5.3 6.6 B coadaptive 8.6 1.7 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 13.2807 disease 2.5 +1371 Fitness: 13.2807 Genotype: Fch1: A coadaptive 5.3 6.6 B coadaptive 8.6 1.7 C disease 1 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 13.2807 disease 2.5 +1372 Fitness: 9.74609 Genotype: Fch1: A coadaptive 9.1 8.9 B coadaptive 8.1 6.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 9.74609 disease 3 +1373 Fitness: 9.74609 Genotype: Fch1: A coadaptive 9.1 8.9 B coadaptive 8.1 6.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 9.74609 disease 3 +1374 Fitness: 9.74609 Genotype: Fch1: A coadaptive 9.1 8.9 B coadaptive 8.1 6.4 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 9.74609 disease 3 +1375 Fitness: 14.7304 Genotype: Fch1: A coadaptive 9.6 3.2 B coadaptive 8.5 4.2 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.7304 disease 3.5 +1376 Fitness: 14.7304 Genotype: Fch1: A coadaptive 9.6 3.2 B coadaptive 8.5 4.2 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.7304 disease 3.5 +1377 Fitness: 14.7304 Genotype: Fch1: A coadaptive 9.6 3.2 B coadaptive 8.5 4.2 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 14.7304 disease 3.5 +1378 Fitness: 7.65 Genotype: Fch1: A coadaptive 1.7 6.3 B coadaptive 7 7 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.65 disease 3.5 +1379 Fitness: 7.65 Genotype: Fch1: A coadaptive 1.7 6.3 B coadaptive 7 7 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.65 disease 3.5 +1380 Fitness: 7.65 Genotype: Fch1: A coadaptive 1.7 6.3 B coadaptive 7 7 C disease 0 1 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.65 disease 3.5 +1381 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 7.6 B coadaptive 3.6 2 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1382 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 7.6 B coadaptive 3.6 2 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1383 Fitness: 0 Genotype: Fch1: A coadaptive 8.7 7.6 B coadaptive 3.6 2 C disease 0.5 0.5 D disease 0 0.5 E disease 1 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1384 Fitness: 11.58 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 5.7 6.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.58 disease 3 +1385 Fitness: 11.58 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 5.7 6.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.58 disease 3 +1386 Fitness: 11.58 Genotype: Fch1: A coadaptive 7 1.9 B coadaptive 5.7 6.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 1 1 Phenotype: coadaptive 11.58 disease 3 +1387 Fitness: 7.8893 Genotype: Fch1: A coadaptive 0.8 5.4 B coadaptive 7.2 2.2 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.8893 disease 2.5 +1388 Fitness: 7.8893 Genotype: Fch1: A coadaptive 0.8 5.4 B coadaptive 7.2 2.2 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.8893 disease 2.5 +1389 Fitness: 7.8893 Genotype: Fch1: A coadaptive 0.8 5.4 B coadaptive 7.2 2.2 C disease 1 0 D disease 0 0 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 7.8893 disease 2.5 +1390 Fitness: 8.63804 Genotype: Fch1: A coadaptive 7.3 9.6 B coadaptive 9.9 8.5 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.63804 disease 2.5 +1391 Fitness: 8.63804 Genotype: Fch1: A coadaptive 7.3 9.6 B coadaptive 9.9 8.5 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.63804 disease 2.5 +1392 Fitness: 8.63804 Genotype: Fch1: A coadaptive 7.3 9.6 B coadaptive 9.9 8.5 C disease 0 0 D disease 0 1 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 8.63804 disease 2.5 +1393 Fitness: 1.7375 Genotype: Fch1: A coadaptive 3.5 1.5 B coadaptive 9.7 3.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.7375 disease 3 +1394 Fitness: 1.7375 Genotype: Fch1: A coadaptive 3.5 1.5 B coadaptive 9.7 3.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.7375 disease 3 +1395 Fitness: 1.7375 Genotype: Fch1: A coadaptive 3.5 1.5 B coadaptive 9.7 3.3 C disease 1 0.5 D disease 0.5 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 1.7375 disease 3 +1396 Fitness: 5.52707 Genotype: Fch1: A coadaptive 4.5 2.7 B coadaptive 8.3 5.8 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.52707 disease 1.5 +1397 Fitness: 5.52707 Genotype: Fch1: A coadaptive 4.5 2.7 B coadaptive 8.3 5.8 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.52707 disease 1.5 +1398 Fitness: 5.52707 Genotype: Fch1: A coadaptive 4.5 2.7 B coadaptive 8.3 5.8 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.52707 disease 1.5 +1399 Fitness: 4.47484 Genotype: Fch1: A coadaptive 2.4 1.7 B coadaptive 6.6 1.8 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 4.47484 disease 3 +1400 Fitness: 4.47484 Genotype: Fch1: A coadaptive 2.4 1.7 B coadaptive 6.6 1.8 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 4.47484 disease 3 +1401 Fitness: 4.47484 Genotype: Fch1: A coadaptive 2.4 1.7 B coadaptive 6.6 1.8 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0.5 1 Phenotype: coadaptive 4.47484 disease 3 +1402 Fitness: 12.0827 Genotype: Fch1: A coadaptive 6.2 7 B coadaptive 3.7 6.1 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 12.0827 disease 3 +1403 Fitness: 12.0827 Genotype: Fch1: A coadaptive 6.2 7 B coadaptive 3.7 6.1 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 12.0827 disease 3 +1404 Fitness: 12.0827 Genotype: Fch1: A coadaptive 6.2 7 B coadaptive 3.7 6.1 C disease 0 0.5 D disease 1 0 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 12.0827 disease 3 +1405 Fitness: 13.0169 Genotype: Fch1: A coadaptive 8 3 B coadaptive 8.6 1.5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.0169 disease 3.5 +1406 Fitness: 13.0169 Genotype: Fch1: A coadaptive 8 3 B coadaptive 8.6 1.5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.0169 disease 3.5 +1407 Fitness: 13.0169 Genotype: Fch1: A coadaptive 8 3 B coadaptive 8.6 1.5 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 13.0169 disease 3.5 +1408 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 9.9 B coadaptive 6.3 2.2 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1409 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 9.9 B coadaptive 6.3 2.2 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1410 Fitness: 0 Genotype: Fch1: A coadaptive 9.1 9.9 B coadaptive 6.3 2.2 C disease 0.5 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 3 +1411 Fitness: 1.13838 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 3.7 3.3 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 1.13838 disease 3 +1412 Fitness: 1.13838 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 3.7 3.3 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 1.13838 disease 3 +1413 Fitness: 1.13838 Genotype: Fch1: A coadaptive 1.7 0.2 B coadaptive 3.7 3.3 C disease 0 0 D disease 1 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 1.13838 disease 3 +1414 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 5.3 8.5 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1415 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 5.3 8.5 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1416 Fitness: 0 Genotype: Fch1: A coadaptive 1.2 0.9 B coadaptive 5.3 8.5 C disease 0 1 D disease 0.5 1 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1417 Fitness: 9.37665 Genotype: Fch1: A coadaptive 9.5 0.1 B coadaptive 8 7 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.37665 disease 3.5 +1418 Fitness: 9.37665 Genotype: Fch1: A coadaptive 9.5 0.1 B coadaptive 8 7 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.37665 disease 3.5 +1419 Fitness: 9.37665 Genotype: Fch1: A coadaptive 9.5 0.1 B coadaptive 8 7 C disease 1 0 D disease 0.5 1 E disease 1 0 F disease 0.5 0.5 Phenotype: coadaptive 9.37665 disease 3.5 +1420 Fitness: 13.4883 Genotype: Fch1: A coadaptive 6.6 4.5 B coadaptive 8.3 2.4 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 13.4883 disease 3 +1421 Fitness: 13.4883 Genotype: Fch1: A coadaptive 6.6 4.5 B coadaptive 8.3 2.4 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 13.4883 disease 3 +1422 Fitness: 13.4883 Genotype: Fch1: A coadaptive 6.6 4.5 B coadaptive 8.3 2.4 C disease 0.5 0 D disease 1 1 E disease 1 0.5 F disease 0 0.5 Phenotype: coadaptive 13.4883 disease 3 +1423 Fitness: 13.1509 Genotype: Fch1: A coadaptive 2.2 8.1 B coadaptive 4.9 7.6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.1509 disease 3 +1424 Fitness: 13.1509 Genotype: Fch1: A coadaptive 2.2 8.1 B coadaptive 4.9 7.6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.1509 disease 3 +1425 Fitness: 13.1509 Genotype: Fch1: A coadaptive 2.2 8.1 B coadaptive 4.9 7.6 C disease 0.5 0.5 D disease 1 0 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 13.1509 disease 3 +1426 Fitness: 6.09576 Genotype: Fch1: A coadaptive 5.1 3.9 B coadaptive 5.9 10 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.09576 disease 2.5 +1427 Fitness: 6.09576 Genotype: Fch1: A coadaptive 5.1 3.9 B coadaptive 5.9 10 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.09576 disease 2.5 +1428 Fitness: 6.09576 Genotype: Fch1: A coadaptive 5.1 3.9 B coadaptive 5.9 10 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.09576 disease 2.5 +1429 Fitness: 9.63405 Genotype: Fch1: A coadaptive 2.8 9.2 B coadaptive 7.7 0.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.63405 disease 2.5 +1430 Fitness: 9.63405 Genotype: Fch1: A coadaptive 2.8 9.2 B coadaptive 7.7 0.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.63405 disease 2.5 +1431 Fitness: 9.63405 Genotype: Fch1: A coadaptive 2.8 9.2 B coadaptive 7.7 0.1 C disease 1 0.5 D disease 0 0.5 E disease 0 0 F disease 1 1 Phenotype: coadaptive 9.63405 disease 2.5 +1432 Fitness: 11.0917 Genotype: Fch1: A coadaptive 2.9 5.5 B coadaptive 1.6 9.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.0917 disease 3 +1433 Fitness: 11.0917 Genotype: Fch1: A coadaptive 2.9 5.5 B coadaptive 1.6 9.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.0917 disease 3 +1434 Fitness: 11.0917 Genotype: Fch1: A coadaptive 2.9 5.5 B coadaptive 1.6 9.3 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 11.0917 disease 3 +1435 Fitness: 6.58189 Genotype: Fch1: A coadaptive 7.4 3.9 B coadaptive 3.9 2.1 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.58189 disease 2.5 +1436 Fitness: 6.58189 Genotype: Fch1: A coadaptive 7.4 3.9 B coadaptive 3.9 2.1 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.58189 disease 2.5 +1437 Fitness: 6.58189 Genotype: Fch1: A coadaptive 7.4 3.9 B coadaptive 3.9 2.1 C disease 0 0.5 D disease 0 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 6.58189 disease 2.5 +1438 Fitness: 8.97054 Genotype: Fch1: A coadaptive 9.1 8.4 B coadaptive 9.2 8.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 8.97054 disease 2.5 +1439 Fitness: 8.97054 Genotype: Fch1: A coadaptive 9.1 8.4 B coadaptive 9.2 8.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 8.97054 disease 2.5 +1440 Fitness: 8.97054 Genotype: Fch1: A coadaptive 9.1 8.4 B coadaptive 9.2 8.7 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 8.97054 disease 2.5 +1441 Fitness: 8.5216 Genotype: Fch1: A coadaptive 2.1 4.7 B coadaptive 2.4 8.4 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.5216 disease 2.5 +1442 Fitness: 8.5216 Genotype: Fch1: A coadaptive 2.1 4.7 B coadaptive 2.4 8.4 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.5216 disease 2.5 +1443 Fitness: 8.5216 Genotype: Fch1: A coadaptive 2.1 4.7 B coadaptive 2.4 8.4 C disease 0.5 0 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 8.5216 disease 2.5 +1444 Fitness: 13.9739 Genotype: Fch1: A coadaptive 5.7 9.5 B coadaptive 5.3 8.2 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.9739 disease 2.5 +1445 Fitness: 13.9739 Genotype: Fch1: A coadaptive 5.7 9.5 B coadaptive 5.3 8.2 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.9739 disease 2.5 +1446 Fitness: 13.9739 Genotype: Fch1: A coadaptive 5.7 9.5 B coadaptive 5.3 8.2 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0 Phenotype: coadaptive 13.9739 disease 2.5 +1447 Fitness: 6.6496 Genotype: Fch1: A coadaptive 3.9 3.3 B coadaptive 2.1 3.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.6496 disease 2.5 +1448 Fitness: 6.6496 Genotype: Fch1: A coadaptive 3.9 3.3 B coadaptive 2.1 3.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.6496 disease 2.5 +1449 Fitness: 6.6496 Genotype: Fch1: A coadaptive 3.9 3.3 B coadaptive 2.1 3.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 6.6496 disease 2.5 +1450 Fitness: 0 Genotype: Fch1: A coadaptive 8.9 7.8 B coadaptive 4.2 1.7 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1451 Fitness: 0 Genotype: Fch1: A coadaptive 8.9 7.8 B coadaptive 4.2 1.7 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1452 Fitness: 0 Genotype: Fch1: A coadaptive 8.9 7.8 B coadaptive 4.2 1.7 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 2 +1453 Fitness: 8.2736 Genotype: Fch1: A coadaptive 3.8 3.6 B coadaptive 2.9 4.1 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.2736 disease 3 +1454 Fitness: 8.2736 Genotype: Fch1: A coadaptive 3.8 3.6 B coadaptive 2.9 4.1 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.2736 disease 3 +1455 Fitness: 8.2736 Genotype: Fch1: A coadaptive 3.8 3.6 B coadaptive 2.9 4.1 C disease 1 0.5 D disease 0 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 8.2736 disease 3 +1456 Fitness: 2.29136 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 4.1 0.9 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 2.29136 disease 4 +1457 Fitness: 2.29136 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 4.1 0.9 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 2.29136 disease 4 +1458 Fitness: 2.29136 Genotype: Fch1: A coadaptive 5.8 6.9 B coadaptive 4.1 0.9 C disease 1 0.5 D disease 0 1 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 2.29136 disease 4 +1459 Fitness: 4.8107 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 4.3 2.7 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 4.8107 disease 2.5 +1460 Fitness: 4.8107 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 4.3 2.7 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 4.8107 disease 2.5 +1461 Fitness: 4.8107 Genotype: Fch1: A coadaptive 5.2 9 B coadaptive 4.3 2.7 C disease 1 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 4.8107 disease 2.5 +1462 Fitness: 12.7734 Genotype: Fch1: A coadaptive 7.2 5.6 B coadaptive 5.4 4.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.7734 disease 2.5 +1463 Fitness: 12.7734 Genotype: Fch1: A coadaptive 7.2 5.6 B coadaptive 5.4 4.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.7734 disease 2.5 +1464 Fitness: 12.7734 Genotype: Fch1: A coadaptive 7.2 5.6 B coadaptive 5.4 4.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.7734 disease 2.5 +1465 Fitness: 9.13515 Genotype: Fch1: A coadaptive 6.7 2.2 B coadaptive 4.7 9.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.13515 disease 2.5 +1466 Fitness: 9.13515 Genotype: Fch1: A coadaptive 6.7 2.2 B coadaptive 4.7 9.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.13515 disease 2.5 +1467 Fitness: 9.13515 Genotype: Fch1: A coadaptive 6.7 2.2 B coadaptive 4.7 9.6 C disease 0.5 0.5 D disease 1 1 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 9.13515 disease 2.5 +1468 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 9.2 B coadaptive 3.7 0.6 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1469 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 9.2 B coadaptive 3.7 0.6 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1470 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 9.2 B coadaptive 3.7 0.6 C disease 0.5 1 D disease 0 0.5 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1471 Fitness: 13.2849 Genotype: Fch1: A coadaptive 8.8 1.5 B coadaptive 2.5 9.1 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.2849 disease 3 +1472 Fitness: 13.2849 Genotype: Fch1: A coadaptive 8.8 1.5 B coadaptive 2.5 9.1 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.2849 disease 3 +1473 Fitness: 13.2849 Genotype: Fch1: A coadaptive 8.8 1.5 B coadaptive 2.5 9.1 C disease 1 1 D disease 0.5 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 13.2849 disease 3 +1474 Fitness: 2.29621 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 4.5 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.29621 disease 3.5 +1475 Fitness: 2.29621 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 4.5 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.29621 disease 3.5 +1476 Fitness: 2.29621 Genotype: Fch1: A coadaptive 1.9 0.6 B coadaptive 4.5 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 2.29621 disease 3.5 +1477 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 5.8 B coadaptive 9 8.4 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1478 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 5.8 B coadaptive 9 8.4 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1479 Fitness: 0 Genotype: Fch1: A coadaptive 2.5 5.8 B coadaptive 9 8.4 C disease 1 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 0 disease 3.5 +1480 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.2 B coadaptive 7.8 4.5 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1481 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.2 B coadaptive 7.8 4.5 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1482 Fitness: 0 Genotype: Fch1: A coadaptive 0.4 1.2 B coadaptive 7.8 4.5 C disease 0 1 D disease 0.5 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1483 Fitness: 7.51446 Genotype: Fch1: A coadaptive 1 8.5 B coadaptive 8.2 7.6 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.51446 disease 3 +1484 Fitness: 7.51446 Genotype: Fch1: A coadaptive 1 8.5 B coadaptive 8.2 7.6 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.51446 disease 3 +1485 Fitness: 7.51446 Genotype: Fch1: A coadaptive 1 8.5 B coadaptive 8.2 7.6 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 7.51446 disease 3 +1486 Fitness: 4.09219 Genotype: Fch1: A coadaptive 6.2 7.3 B coadaptive 10 9.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 4.09219 disease 3 +1487 Fitness: 4.09219 Genotype: Fch1: A coadaptive 6.2 7.3 B coadaptive 10 9.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 4.09219 disease 3 +1488 Fitness: 4.09219 Genotype: Fch1: A coadaptive 6.2 7.3 B coadaptive 10 9.5 C disease 0.5 0 D disease 0.5 1 E disease 0.5 0.5 F disease 0 1 Phenotype: coadaptive 4.09219 disease 3 +1489 Fitness: 12.3156 Genotype: Fch1: A coadaptive 4.5 6.3 B coadaptive 2.4 7 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.3156 disease 2.5 +1490 Fitness: 12.3156 Genotype: Fch1: A coadaptive 4.5 6.3 B coadaptive 2.4 7 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.3156 disease 2.5 +1491 Fitness: 12.3156 Genotype: Fch1: A coadaptive 4.5 6.3 B coadaptive 2.4 7 C disease 0 0 D disease 1 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.3156 disease 2.5 +1492 Fitness: 0 Genotype: Fch1: A coadaptive 3 8.3 B coadaptive 1.5 0.5 C disease 0.5 1 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1493 Fitness: 0 Genotype: Fch1: A coadaptive 3 8.3 B coadaptive 1.5 0.5 C disease 0.5 1 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1494 Fitness: 0 Genotype: Fch1: A coadaptive 3 8.3 B coadaptive 1.5 0.5 C disease 0.5 1 D disease 0.5 0 E disease 1 0 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1495 Fitness: 7.4704 Genotype: Fch1: A coadaptive 4.8 2.4 B coadaptive 3.7 9.2 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 7.4704 disease 3 +1496 Fitness: 7.4704 Genotype: Fch1: A coadaptive 4.8 2.4 B coadaptive 3.7 9.2 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 7.4704 disease 3 +1497 Fitness: 7.4704 Genotype: Fch1: A coadaptive 4.8 2.4 B coadaptive 3.7 9.2 C disease 0 0.5 D disease 1 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 7.4704 disease 3 +1498 Fitness: 12.2744 Genotype: Fch1: A coadaptive 8.9 0.6 B coadaptive 4.2 6.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2744 disease 3 +1499 Fitness: 12.2744 Genotype: Fch1: A coadaptive 8.9 0.6 B coadaptive 4.2 6.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2744 disease 3 +1500 Fitness: 12.2744 Genotype: Fch1: A coadaptive 8.9 0.6 B coadaptive 4.2 6.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2744 disease 3 +1501 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 2.5 B coadaptive 8 9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1502 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 2.5 B coadaptive 8 9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1503 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 2.5 B coadaptive 8 9 C disease 1 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1504 Fitness: 12.2576 Genotype: Fch1: A coadaptive 7.7 5.6 B coadaptive 9.6 6.8 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.2576 disease 1.5 +1505 Fitness: 12.2576 Genotype: Fch1: A coadaptive 7.7 5.6 B coadaptive 9.6 6.8 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.2576 disease 1.5 +1506 Fitness: 12.2576 Genotype: Fch1: A coadaptive 7.7 5.6 B coadaptive 9.6 6.8 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.2576 disease 1.5 +1507 Fitness: 10.1569 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 8.9 9 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.1569 disease 2 +1508 Fitness: 10.1569 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 8.9 9 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.1569 disease 2 +1509 Fitness: 10.1569 Genotype: Fch1: A coadaptive 7.4 7.5 B coadaptive 8.9 9 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 1 0 Phenotype: coadaptive 10.1569 disease 2 +1510 Fitness: 3.36157 Genotype: Fch1: A coadaptive 8.2 5.1 B coadaptive 3.2 2.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 3.36157 disease 2.5 +1511 Fitness: 3.36157 Genotype: Fch1: A coadaptive 8.2 5.1 B coadaptive 3.2 2.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 3.36157 disease 2.5 +1512 Fitness: 3.36157 Genotype: Fch1: A coadaptive 8.2 5.1 B coadaptive 3.2 2.6 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 3.36157 disease 2.5 +1513 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.8 B coadaptive 3.3 8.4 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1514 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.8 B coadaptive 3.3 8.4 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1515 Fitness: 0 Genotype: Fch1: A coadaptive 0.6 2.8 B coadaptive 3.3 8.4 C disease 1 1 D disease 0 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1516 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 2.6 B coadaptive 8 9.2 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1517 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 2.6 B coadaptive 8 9.2 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1518 Fitness: 0 Genotype: Fch1: A coadaptive 2.4 2.6 B coadaptive 8 9.2 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 1 1 Phenotype: coadaptive 0 disease 3 +1519 Fitness: 13.5406 Genotype: Fch1: A coadaptive 2.4 8.2 B coadaptive 6.7 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 13.5406 disease 4 +1520 Fitness: 13.5406 Genotype: Fch1: A coadaptive 2.4 8.2 B coadaptive 6.7 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 13.5406 disease 4 +1521 Fitness: 13.5406 Genotype: Fch1: A coadaptive 2.4 8.2 B coadaptive 6.7 4.9 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 13.5406 disease 4 +1522 Fitness: 11.1316 Genotype: Fch1: A coadaptive 6.1 3 B coadaptive 6.6 2.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 11.1316 disease 4 +1523 Fitness: 11.1316 Genotype: Fch1: A coadaptive 6.1 3 B coadaptive 6.6 2.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 11.1316 disease 4 +1524 Fitness: 11.1316 Genotype: Fch1: A coadaptive 6.1 3 B coadaptive 6.6 2.3 C disease 1 0.5 D disease 0 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 11.1316 disease 4 +1525 Fitness: 4.89761 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 7.3 5.4 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 4.89761 disease 3.5 +1526 Fitness: 4.89761 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 7.3 5.4 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 4.89761 disease 3.5 +1527 Fitness: 4.89761 Genotype: Fch1: A coadaptive 1.8 4.2 B coadaptive 7.3 5.4 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 4.89761 disease 3.5 +1528 Fitness: 8.52875 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 6.6 0.2 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.52875 disease 3 +1529 Fitness: 8.52875 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 6.6 0.2 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.52875 disease 3 +1530 Fitness: 8.52875 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 6.6 0.2 C disease 1 0 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 8.52875 disease 3 +1531 Fitness: 11.1716 Genotype: Fch1: A coadaptive 7.3 8.3 B coadaptive 5.2 6 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1716 disease 3.5 +1532 Fitness: 11.1716 Genotype: Fch1: A coadaptive 7.3 8.3 B coadaptive 5.2 6 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1716 disease 3.5 +1533 Fitness: 11.1716 Genotype: Fch1: A coadaptive 7.3 8.3 B coadaptive 5.2 6 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 11.1716 disease 3.5 +1534 Fitness: 12.6344 Genotype: Fch1: A coadaptive 1.6 8.1 B coadaptive 9.3 1.6 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.6344 disease 3 +1535 Fitness: 12.6344 Genotype: Fch1: A coadaptive 1.6 8.1 B coadaptive 9.3 1.6 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.6344 disease 3 +1536 Fitness: 12.6344 Genotype: Fch1: A coadaptive 1.6 8.1 B coadaptive 9.3 1.6 C disease 0 1 D disease 0 0.5 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 12.6344 disease 3 +1537 Fitness: 13.1073 Genotype: Fch1: A coadaptive 3.9 6.9 B coadaptive 9.4 0.9 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 13.1073 disease 3.5 +1538 Fitness: 13.1073 Genotype: Fch1: A coadaptive 3.9 6.9 B coadaptive 9.4 0.9 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 13.1073 disease 3.5 +1539 Fitness: 13.1073 Genotype: Fch1: A coadaptive 3.9 6.9 B coadaptive 9.4 0.9 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 13.1073 disease 3.5 +1540 Fitness: 5.89471 Genotype: Fch1: A coadaptive 3.9 7.2 B coadaptive 2.1 3.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.89471 disease 3 +1541 Fitness: 5.89471 Genotype: Fch1: A coadaptive 3.9 7.2 B coadaptive 2.1 3.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.89471 disease 3 +1542 Fitness: 5.89471 Genotype: Fch1: A coadaptive 3.9 7.2 B coadaptive 2.1 3.5 C disease 0 1 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 5.89471 disease 3 +1543 Fitness: 12.999 Genotype: Fch1: A coadaptive 5.8 6.1 B coadaptive 8.4 6.6 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.999 disease 3 +1544 Fitness: 12.999 Genotype: Fch1: A coadaptive 5.8 6.1 B coadaptive 8.4 6.6 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.999 disease 3 +1545 Fitness: 12.999 Genotype: Fch1: A coadaptive 5.8 6.1 B coadaptive 8.4 6.6 C disease 1 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 12.999 disease 3 +1546 Fitness: 9.40861 Genotype: Fch1: A coadaptive 1.9 7.6 B coadaptive 6.1 1.1 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 9.40861 disease 3 +1547 Fitness: 9.40861 Genotype: Fch1: A coadaptive 1.9 7.6 B coadaptive 6.1 1.1 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 9.40861 disease 3 +1548 Fitness: 9.40861 Genotype: Fch1: A coadaptive 1.9 7.6 B coadaptive 6.1 1.1 C disease 1 0.5 D disease 0 0 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 9.40861 disease 3 +1549 Fitness: 5.39332 Genotype: Fch1: A coadaptive 0.6 4 B coadaptive 1.6 6.1 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.39332 disease 2.5 +1550 Fitness: 5.39332 Genotype: Fch1: A coadaptive 0.6 4 B coadaptive 1.6 6.1 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.39332 disease 2.5 +1551 Fitness: 5.39332 Genotype: Fch1: A coadaptive 0.6 4 B coadaptive 1.6 6.1 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.39332 disease 2.5 +1552 Fitness: 13.3903 Genotype: Fch1: A coadaptive 5.3 7.4 B coadaptive 8.1 7.2 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.3903 disease 4 +1553 Fitness: 13.3903 Genotype: Fch1: A coadaptive 5.3 7.4 B coadaptive 8.1 7.2 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.3903 disease 4 +1554 Fitness: 13.3903 Genotype: Fch1: A coadaptive 5.3 7.4 B coadaptive 8.1 7.2 C disease 1 1 D disease 1 0 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 13.3903 disease 4 +1555 Fitness: 4.21428 Genotype: Fch1: A coadaptive 0.6 4.6 B coadaptive 3.3 1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 4.21428 disease 3 +1556 Fitness: 4.21428 Genotype: Fch1: A coadaptive 0.6 4.6 B coadaptive 3.3 1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 4.21428 disease 3 +1557 Fitness: 4.21428 Genotype: Fch1: A coadaptive 0.6 4.6 B coadaptive 3.3 1 C disease 0.5 1 D disease 0 0.5 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 4.21428 disease 3 +1558 Fitness: 6.93635 Genotype: Fch1: A coadaptive 1.9 6.3 B coadaptive 3.4 2.2 C disease 0 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.93635 disease 3.5 +1559 Fitness: 6.93635 Genotype: Fch1: A coadaptive 1.9 6.3 B coadaptive 3.4 2.2 C disease 0 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.93635 disease 3.5 +1560 Fitness: 6.93635 Genotype: Fch1: A coadaptive 1.9 6.3 B coadaptive 3.4 2.2 C disease 0 0.5 D disease 0.5 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.93635 disease 3.5 +1561 Fitness: 4.67828 Genotype: Fch1: A coadaptive 3.8 4.5 B coadaptive 2.9 1.3 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.67828 disease 3.5 +1562 Fitness: 4.67828 Genotype: Fch1: A coadaptive 3.8 4.5 B coadaptive 2.9 1.3 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.67828 disease 3.5 +1563 Fitness: 4.67828 Genotype: Fch1: A coadaptive 3.8 4.5 B coadaptive 2.9 1.3 C disease 1 0 D disease 1 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 4.67828 disease 3.5 +1564 Fitness: 10.002 Genotype: Fch1: A coadaptive 5.6 4.3 B coadaptive 6.3 1.3 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.002 disease 2 +1565 Fitness: 10.002 Genotype: Fch1: A coadaptive 5.6 4.3 B coadaptive 6.3 1.3 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.002 disease 2 +1566 Fitness: 10.002 Genotype: Fch1: A coadaptive 5.6 4.3 B coadaptive 6.3 1.3 C disease 0 0.5 D disease 0 0 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 10.002 disease 2 +1567 Fitness: 5.07779 Genotype: Fch1: A coadaptive 8.3 7.8 B coadaptive 2.1 6.7 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 5.07779 disease 2.5 +1568 Fitness: 5.07779 Genotype: Fch1: A coadaptive 8.3 7.8 B coadaptive 2.1 6.7 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 5.07779 disease 2.5 +1569 Fitness: 5.07779 Genotype: Fch1: A coadaptive 8.3 7.8 B coadaptive 2.1 6.7 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 5.07779 disease 2.5 +1570 Fitness: 11.676 Genotype: Fch1: A coadaptive 6.9 2 B coadaptive 2.5 9 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 11.676 disease 4 +1571 Fitness: 11.676 Genotype: Fch1: A coadaptive 6.9 2 B coadaptive 2.5 9 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 11.676 disease 4 +1572 Fitness: 11.676 Genotype: Fch1: A coadaptive 6.9 2 B coadaptive 2.5 9 C disease 1 0.5 D disease 0 1 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 11.676 disease 4 +1573 Fitness: 12.5627 Genotype: Fch1: A coadaptive 6.1 3.5 B coadaptive 1.4 9.7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.5627 disease 3.5 +1574 Fitness: 12.5627 Genotype: Fch1: A coadaptive 6.1 3.5 B coadaptive 1.4 9.7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.5627 disease 3.5 +1575 Fitness: 12.5627 Genotype: Fch1: A coadaptive 6.1 3.5 B coadaptive 1.4 9.7 C disease 1 1 D disease 1 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 12.5627 disease 3.5 +1576 Fitness: 11.8598 Genotype: Fch1: A coadaptive 3.9 9.2 B coadaptive 9.4 0.2 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.8598 disease 3.5 +1577 Fitness: 11.8598 Genotype: Fch1: A coadaptive 3.9 9.2 B coadaptive 9.4 0.2 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.8598 disease 3.5 +1578 Fitness: 11.8598 Genotype: Fch1: A coadaptive 3.9 9.2 B coadaptive 9.4 0.2 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 0.5 Phenotype: coadaptive 11.8598 disease 3.5 +1579 Fitness: 3.79153 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 8.5 5 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 3.79153 disease 2 +1580 Fitness: 3.79153 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 8.5 5 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 3.79153 disease 2 +1581 Fitness: 3.79153 Genotype: Fch1: A coadaptive 1.7 4.4 B coadaptive 8.5 5 C disease 0 0 D disease 0.5 0 E disease 0.5 1 F disease 0.5 0 Phenotype: coadaptive 3.79153 disease 2 +1582 Fitness: 10.9499 Genotype: Fch1: A coadaptive 8.9 2 B coadaptive 4.2 4.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.9499 disease 2.5 +1583 Fitness: 10.9499 Genotype: Fch1: A coadaptive 8.9 2 B coadaptive 4.2 4.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.9499 disease 2.5 +1584 Fitness: 10.9499 Genotype: Fch1: A coadaptive 8.9 2 B coadaptive 4.2 4.1 C disease 0.5 0.5 D disease 0 1 E disease 0.5 0 F disease 0.5 0.5 Phenotype: coadaptive 10.9499 disease 2.5 +1585 Fitness: 12.306 Genotype: Fch1: A coadaptive 4 7.9 B coadaptive 8.9 6.6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 12.306 disease 3 +1586 Fitness: 12.306 Genotype: Fch1: A coadaptive 4 7.9 B coadaptive 8.9 6.6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 12.306 disease 3 +1587 Fitness: 12.306 Genotype: Fch1: A coadaptive 4 7.9 B coadaptive 8.9 6.6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 12.306 disease 3 +1588 Fitness: 7.75012 Genotype: Fch1: A coadaptive 5.1 1 B coadaptive 4.6 4.4 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 7.75012 disease 3 +1589 Fitness: 7.75012 Genotype: Fch1: A coadaptive 5.1 1 B coadaptive 4.6 4.4 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 7.75012 disease 3 +1590 Fitness: 7.75012 Genotype: Fch1: A coadaptive 5.1 1 B coadaptive 4.6 4.4 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 7.75012 disease 3 +1591 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 3.1 B coadaptive 7.3 8.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1592 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 3.1 B coadaptive 7.3 8.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1593 Fitness: 0 Genotype: Fch1: A coadaptive 1.8 3.1 B coadaptive 7.3 8.1 C disease 0.5 0.5 D disease 1 1 E disease 0.5 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1594 Fitness: 10.4192 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 2.6 5.4 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.4192 disease 2.5 +1595 Fitness: 10.4192 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 2.6 5.4 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.4192 disease 2.5 +1596 Fitness: 10.4192 Genotype: Fch1: A coadaptive 5.1 6.1 B coadaptive 2.6 5.4 C disease 0 0 D disease 0.5 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 10.4192 disease 2.5 +1597 Fitness: 7.01568 Genotype: Fch1: A coadaptive 3.3 2.9 B coadaptive 3.5 3.2 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 7.01568 disease 3 +1598 Fitness: 7.01568 Genotype: Fch1: A coadaptive 3.3 2.9 B coadaptive 3.5 3.2 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 7.01568 disease 3 +1599 Fitness: 7.01568 Genotype: Fch1: A coadaptive 3.3 2.9 B coadaptive 3.5 3.2 C disease 1 0 D disease 0.5 0 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 7.01568 disease 3 +1600 Fitness: 2.26394 Genotype: Fch1: A coadaptive 3.4 3 B coadaptive 0.2 2.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 2.26394 disease 3.5 +1601 Fitness: 2.26394 Genotype: Fch1: A coadaptive 3.4 3 B coadaptive 0.2 2.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 2.26394 disease 3.5 +1602 Fitness: 2.26394 Genotype: Fch1: A coadaptive 3.4 3 B coadaptive 0.2 2.3 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 2.26394 disease 3.5 +1603 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.9 B coadaptive 0.1 2.1 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1604 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.9 B coadaptive 0.1 2.1 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1605 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 3.9 B coadaptive 0.1 2.1 C disease 0 0.5 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 2.5 +1606 Fitness: 6.58323 Genotype: Fch1: A coadaptive 9.1 0 B coadaptive 8.1 7.7 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.58323 disease 3.5 +1607 Fitness: 6.58323 Genotype: Fch1: A coadaptive 9.1 0 B coadaptive 8.1 7.7 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.58323 disease 3.5 +1608 Fitness: 6.58323 Genotype: Fch1: A coadaptive 9.1 0 B coadaptive 8.1 7.7 C disease 0 0.5 D disease 1 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 6.58323 disease 3.5 +1609 Fitness: 0.339194 Genotype: Fch1: A coadaptive 3.9 1.1 B coadaptive 0.2 0.7 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0.339194 disease 3 +1610 Fitness: 0.339194 Genotype: Fch1: A coadaptive 3.9 1.1 B coadaptive 0.2 0.7 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0.339194 disease 3 +1611 Fitness: 0.339194 Genotype: Fch1: A coadaptive 3.9 1.1 B coadaptive 0.2 0.7 C disease 1 1 D disease 0 1 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 0.339194 disease 3 +1612 Fitness: 0.925089 Genotype: Fch1: A coadaptive 2.2 7.7 B coadaptive 9.6 8.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0.925089 disease 3.5 +1613 Fitness: 0.925089 Genotype: Fch1: A coadaptive 2.2 7.7 B coadaptive 9.6 8.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0.925089 disease 3.5 +1614 Fitness: 0.925089 Genotype: Fch1: A coadaptive 2.2 7.7 B coadaptive 9.6 8.7 C disease 0.5 0.5 D disease 1 0 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0.925089 disease 3.5 +1615 Fitness: 8.48203 Genotype: Fch1: A coadaptive 0.5 7.4 B coadaptive 6.1 7.2 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.48203 disease 4 +1616 Fitness: 8.48203 Genotype: Fch1: A coadaptive 0.5 7.4 B coadaptive 6.1 7.2 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.48203 disease 4 +1617 Fitness: 8.48203 Genotype: Fch1: A coadaptive 0.5 7.4 B coadaptive 6.1 7.2 C disease 0.5 1 D disease 0.5 1 E disease 0 1 F disease 1 0 Phenotype: coadaptive 8.48203 disease 4 +1618 Fitness: 14.1792 Genotype: Fch1: A coadaptive 7.3 7.8 B coadaptive 4.8 9.6 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.1792 disease 1.5 +1619 Fitness: 14.1792 Genotype: Fch1: A coadaptive 7.3 7.8 B coadaptive 4.8 9.6 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.1792 disease 1.5 +1620 Fitness: 14.1792 Genotype: Fch1: A coadaptive 7.3 7.8 B coadaptive 4.8 9.6 C disease 0 1 D disease 0 0 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 14.1792 disease 1.5 +1621 Fitness: 7.725 Genotype: Fch1: A coadaptive 1.3 9.7 B coadaptive 8.8 8.2 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.725 disease 2 +1622 Fitness: 7.725 Genotype: Fch1: A coadaptive 1.3 9.7 B coadaptive 8.8 8.2 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.725 disease 2 +1623 Fitness: 7.725 Genotype: Fch1: A coadaptive 1.3 9.7 B coadaptive 8.8 8.2 C disease 0 0 D disease 0 0.5 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 7.725 disease 2 +1624 Fitness: 3.82237 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 3.5 0.2 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 3.82237 disease 3 +1625 Fitness: 3.82237 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 3.5 0.2 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 3.82237 disease 3 +1626 Fitness: 3.82237 Genotype: Fch1: A coadaptive 4.3 3.9 B coadaptive 3.5 0.2 C disease 0.5 1 D disease 0 0 E disease 1 0 F disease 1 0.5 Phenotype: coadaptive 3.82237 disease 3 +1627 Fitness: 11.2393 Genotype: Fch1: A coadaptive 6.9 9.1 B coadaptive 8.1 9.2 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 11.2393 disease 2.5 +1628 Fitness: 11.2393 Genotype: Fch1: A coadaptive 6.9 9.1 B coadaptive 8.1 9.2 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 11.2393 disease 2.5 +1629 Fitness: 11.2393 Genotype: Fch1: A coadaptive 6.9 9.1 B coadaptive 8.1 9.2 C disease 0.5 0.5 D disease 1 1 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 11.2393 disease 2.5 +1630 Fitness: 5.4792 Genotype: Fch1: A coadaptive 3.6 2.6 B coadaptive 2.4 2.6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 5.4792 disease 3.5 +1631 Fitness: 5.4792 Genotype: Fch1: A coadaptive 3.6 2.6 B coadaptive 2.4 2.6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 5.4792 disease 3.5 +1632 Fitness: 5.4792 Genotype: Fch1: A coadaptive 3.6 2.6 B coadaptive 2.4 2.6 C disease 0.5 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 5.4792 disease 3.5 +1633 Fitness: 13.7071 Genotype: Fch1: A coadaptive 4.2 6.9 B coadaptive 3 8.1 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.7071 disease 3 +1634 Fitness: 13.7071 Genotype: Fch1: A coadaptive 4.2 6.9 B coadaptive 3 8.1 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.7071 disease 3 +1635 Fitness: 13.7071 Genotype: Fch1: A coadaptive 4.2 6.9 B coadaptive 3 8.1 C disease 0 0 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 13.7071 disease 3 +1636 Fitness: 12.606 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 5.4 5.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.606 disease 3 +1637 Fitness: 12.606 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 5.4 5.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.606 disease 3 +1638 Fitness: 12.606 Genotype: Fch1: A coadaptive 6.1 7.8 B coadaptive 5.4 5.2 C disease 0.5 1 D disease 1 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 12.606 disease 3 +1639 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0 B coadaptive 5 10 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1640 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0 B coadaptive 5 10 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1641 Fitness: 0 Genotype: Fch1: A coadaptive 1.5 0 B coadaptive 5 10 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0.5 0.5 F disease 1 1 Phenotype: coadaptive 0 disease 2.5 +1642 Fitness: 10.8029 Genotype: Fch1: A coadaptive 5.4 6.3 B coadaptive 9.2 7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.8029 disease 2.5 +1643 Fitness: 10.8029 Genotype: Fch1: A coadaptive 5.4 6.3 B coadaptive 9.2 7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.8029 disease 2.5 +1644 Fitness: 10.8029 Genotype: Fch1: A coadaptive 5.4 6.3 B coadaptive 9.2 7 C disease 1 0 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 10.8029 disease 2.5 +1645 Fitness: 9.30116 Genotype: Fch1: A coadaptive 5.5 2.4 B coadaptive 9.3 3.3 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.30116 disease 3 +1646 Fitness: 9.30116 Genotype: Fch1: A coadaptive 5.5 2.4 B coadaptive 9.3 3.3 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.30116 disease 3 +1647 Fitness: 9.30116 Genotype: Fch1: A coadaptive 5.5 2.4 B coadaptive 9.3 3.3 C disease 0 1 D disease 1 0.5 E disease 0.5 0 F disease 0 0.5 Phenotype: coadaptive 9.30116 disease 3 +1648 Fitness: 6.84254 Genotype: Fch1: A coadaptive 9 1 B coadaptive 1.3 4.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.84254 disease 2.5 +1649 Fitness: 6.84254 Genotype: Fch1: A coadaptive 9 1 B coadaptive 1.3 4.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.84254 disease 2.5 +1650 Fitness: 6.84254 Genotype: Fch1: A coadaptive 9 1 B coadaptive 1.3 4.4 C disease 1 0.5 D disease 1 0.5 E disease 0.5 0.5 F disease 0 0 Phenotype: coadaptive 6.84254 disease 2.5 +1651 Fitness: 5.95008 Genotype: Fch1: A coadaptive 3.9 1.9 B coadaptive 3.7 7.8 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.95008 disease 1.5 +1652 Fitness: 5.95008 Genotype: Fch1: A coadaptive 3.9 1.9 B coadaptive 3.7 7.8 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.95008 disease 1.5 +1653 Fitness: 5.95008 Genotype: Fch1: A coadaptive 3.9 1.9 B coadaptive 3.7 7.8 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 5.95008 disease 1.5 +1654 Fitness: 0 Genotype: Fch1: A coadaptive 5.8 3.5 B coadaptive 9.6 9.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1655 Fitness: 0 Genotype: Fch1: A coadaptive 5.8 3.5 B coadaptive 9.6 9.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1656 Fitness: 0 Genotype: Fch1: A coadaptive 5.8 3.5 B coadaptive 9.6 9.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0 1 F disease 1 1 Phenotype: coadaptive 0 disease 3.5 +1657 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 9.6 B coadaptive 0.4 7.3 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1658 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 9.6 B coadaptive 0.4 7.3 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1659 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 9.6 B coadaptive 0.4 7.3 C disease 1 1 D disease 1 0 E disease 0.5 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3.5 +1660 Fitness: 8.99666 Genotype: Fch1: A coadaptive 5.5 2.3 B coadaptive 7.7 5 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.99666 disease 3 +1661 Fitness: 8.99666 Genotype: Fch1: A coadaptive 5.5 2.3 B coadaptive 7.7 5 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.99666 disease 3 +1662 Fitness: 8.99666 Genotype: Fch1: A coadaptive 5.5 2.3 B coadaptive 7.7 5 C disease 0.5 1 D disease 0 1 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.99666 disease 3 +1663 Fitness: 11.5263 Genotype: Fch1: A coadaptive 6.9 3.8 B coadaptive 6.6 8.3 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.5263 disease 3 +1664 Fitness: 11.5263 Genotype: Fch1: A coadaptive 6.9 3.8 B coadaptive 6.6 8.3 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.5263 disease 3 +1665 Fitness: 11.5263 Genotype: Fch1: A coadaptive 6.9 3.8 B coadaptive 6.6 8.3 C disease 1 0 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 11.5263 disease 3 +1666 Fitness: 13.4629 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.4 4.5 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.4629 disease 3.5 +1667 Fitness: 13.4629 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.4 4.5 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.4629 disease 3.5 +1668 Fitness: 13.4629 Genotype: Fch1: A coadaptive 8.9 1.9 B coadaptive 6.4 4.5 C disease 1 0 D disease 1 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.4629 disease 3.5 +1669 Fitness: 9.4172 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 7.7 2.3 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.4172 disease 2.5 +1670 Fitness: 9.4172 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 7.7 2.3 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.4172 disease 2.5 +1671 Fitness: 9.4172 Genotype: Fch1: A coadaptive 4.2 3 B coadaptive 7.7 2.3 C disease 0 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0 Phenotype: coadaptive 9.4172 disease 2.5 +1672 Fitness: 13.7381 Genotype: Fch1: A coadaptive 1.7 9.6 B coadaptive 3.7 7.3 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.7381 disease 2.5 +1673 Fitness: 13.7381 Genotype: Fch1: A coadaptive 1.7 9.6 B coadaptive 3.7 7.3 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.7381 disease 2.5 +1674 Fitness: 13.7381 Genotype: Fch1: A coadaptive 1.7 9.6 B coadaptive 3.7 7.3 C disease 1 1 D disease 0.5 1 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 13.7381 disease 2.5 +1675 Fitness: 8.43587 Genotype: Fch1: A coadaptive 3 4.8 B coadaptive 2.3 4.6 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.43587 disease 4 +1676 Fitness: 8.43587 Genotype: Fch1: A coadaptive 3 4.8 B coadaptive 2.3 4.6 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.43587 disease 4 +1677 Fitness: 8.43587 Genotype: Fch1: A coadaptive 3 4.8 B coadaptive 2.3 4.6 C disease 1 1 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.43587 disease 4 +1678 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 0.9 B coadaptive 9.6 9 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +1679 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 0.9 B coadaptive 9.6 9 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +1680 Fitness: 0 Genotype: Fch1: A coadaptive 7.8 0.9 B coadaptive 9.6 9 C disease 1 1 D disease 0 0 E disease 0 0 F disease 0 0.5 Phenotype: coadaptive 0 disease 1.5 +1681 Fitness: 11.114 Genotype: Fch1: A coadaptive 2.9 5.9 B coadaptive 5.1 4.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.114 disease 3.5 +1682 Fitness: 11.114 Genotype: Fch1: A coadaptive 2.9 5.9 B coadaptive 5.1 4.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.114 disease 3.5 +1683 Fitness: 11.114 Genotype: Fch1: A coadaptive 2.9 5.9 B coadaptive 5.1 4.1 C disease 1 0 D disease 0.5 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 11.114 disease 3.5 +1684 Fitness: 6.96412 Genotype: Fch1: A coadaptive 5.4 0.2 B coadaptive 7.8 0.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.96412 disease 2.5 +1685 Fitness: 6.96412 Genotype: Fch1: A coadaptive 5.4 0.2 B coadaptive 7.8 0.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.96412 disease 2.5 +1686 Fitness: 6.96412 Genotype: Fch1: A coadaptive 5.4 0.2 B coadaptive 7.8 0.7 C disease 0.5 0 D disease 1 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 6.96412 disease 2.5 +1687 Fitness: 13.5146 Genotype: Fch1: A coadaptive 2.9 8 B coadaptive 7.2 3.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.5146 disease 2.5 +1688 Fitness: 13.5146 Genotype: Fch1: A coadaptive 2.9 8 B coadaptive 7.2 3.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.5146 disease 2.5 +1689 Fitness: 13.5146 Genotype: Fch1: A coadaptive 2.9 8 B coadaptive 7.2 3.7 C disease 0 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 13.5146 disease 2.5 +1690 Fitness: 5.61638 Genotype: Fch1: A coadaptive 5.4 0.5 B coadaptive 5.9 6.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.61638 disease 2 +1691 Fitness: 5.61638 Genotype: Fch1: A coadaptive 5.4 0.5 B coadaptive 5.9 6.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.61638 disease 2 +1692 Fitness: 5.61638 Genotype: Fch1: A coadaptive 5.4 0.5 B coadaptive 5.9 6.1 C disease 0.5 0 D disease 0.5 0.5 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 5.61638 disease 2 +1693 Fitness: 4.58319 Genotype: Fch1: A coadaptive 9.6 3.3 B coadaptive 4.5 1.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 4.58319 disease 2.5 +1694 Fitness: 4.58319 Genotype: Fch1: A coadaptive 9.6 3.3 B coadaptive 4.5 1.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 4.58319 disease 2.5 +1695 Fitness: 4.58319 Genotype: Fch1: A coadaptive 9.6 3.3 B coadaptive 4.5 1.5 C disease 0.5 0.5 D disease 1 0.5 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 4.58319 disease 2.5 +1696 Fitness: 2.51615 Genotype: Fch1: A coadaptive 3.6 7.6 B coadaptive 4.1 0.1 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 2.51615 disease 4 +1697 Fitness: 2.51615 Genotype: Fch1: A coadaptive 3.6 7.6 B coadaptive 4.1 0.1 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 2.51615 disease 4 +1698 Fitness: 2.51615 Genotype: Fch1: A coadaptive 3.6 7.6 B coadaptive 4.1 0.1 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 2.51615 disease 4 +1699 Fitness: 11.6836 Genotype: Fch1: A coadaptive 4.8 4.8 B coadaptive 4.6 4.6 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 11.6836 disease 3.5 +1700 Fitness: 11.6836 Genotype: Fch1: A coadaptive 4.8 4.8 B coadaptive 4.6 4.6 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 11.6836 disease 3.5 +1701 Fitness: 11.6836 Genotype: Fch1: A coadaptive 4.8 4.8 B coadaptive 4.6 4.6 C disease 0.5 0.5 D disease 0.5 1 E disease 1 1 F disease 0.5 1 Phenotype: coadaptive 11.6836 disease 3.5 +1702 Fitness: 0.72327 Genotype: Fch1: A coadaptive 3.1 9.7 B coadaptive 2.2 2.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.72327 disease 3 +1703 Fitness: 0.72327 Genotype: Fch1: A coadaptive 3.1 9.7 B coadaptive 2.2 2.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.72327 disease 3 +1704 Fitness: 0.72327 Genotype: Fch1: A coadaptive 3.1 9.7 B coadaptive 2.2 2.3 C disease 0.5 1 D disease 0 0.5 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 0.72327 disease 3 +1705 Fitness: 4.3956 Genotype: Fch1: A coadaptive 3.2 1.6 B coadaptive 5.7 5.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.3956 disease 2.5 +1706 Fitness: 4.3956 Genotype: Fch1: A coadaptive 3.2 1.6 B coadaptive 5.7 5.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.3956 disease 2.5 +1707 Fitness: 4.3956 Genotype: Fch1: A coadaptive 3.2 1.6 B coadaptive 5.7 5.1 C disease 0 0 D disease 0.5 0.5 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 4.3956 disease 2.5 +1708 Fitness: 8.92451 Genotype: Fch1: A coadaptive 0.3 8.5 B coadaptive 6.7 7.6 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.92451 disease 3 +1709 Fitness: 8.92451 Genotype: Fch1: A coadaptive 0.3 8.5 B coadaptive 6.7 7.6 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.92451 disease 3 +1710 Fitness: 8.92451 Genotype: Fch1: A coadaptive 0.3 8.5 B coadaptive 6.7 7.6 C disease 1 0 D disease 1 0 E disease 0 0.5 F disease 0 0.5 Phenotype: coadaptive 8.92451 disease 3 +1711 Fitness: 14.4509 Genotype: Fch1: A coadaptive 7 5.2 B coadaptive 7.7 4.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4509 disease 3 +1712 Fitness: 14.4509 Genotype: Fch1: A coadaptive 7 5.2 B coadaptive 7.7 4.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4509 disease 3 +1713 Fitness: 14.4509 Genotype: Fch1: A coadaptive 7 5.2 B coadaptive 7.7 4.3 C disease 0.5 1 D disease 0 0.5 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 14.4509 disease 3 +1714 Fitness: 11.987 Genotype: Fch1: A coadaptive 0.9 8.2 B coadaptive 5.9 4.9 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.987 disease 2.5 +1715 Fitness: 11.987 Genotype: Fch1: A coadaptive 0.9 8.2 B coadaptive 5.9 4.9 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.987 disease 2.5 +1716 Fitness: 11.987 Genotype: Fch1: A coadaptive 0.9 8.2 B coadaptive 5.9 4.9 C disease 0.5 0 D disease 1 1 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 11.987 disease 2.5 +1717 Fitness: 10.6854 Genotype: Fch1: A coadaptive 8.3 0.3 B coadaptive 2.1 6.7 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 10.6854 disease 3 +1718 Fitness: 10.6854 Genotype: Fch1: A coadaptive 8.3 0.3 B coadaptive 2.1 6.7 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 10.6854 disease 3 +1719 Fitness: 10.6854 Genotype: Fch1: A coadaptive 8.3 0.3 B coadaptive 2.1 6.7 C disease 0 1 D disease 0.5 1 E disease 1 0 F disease 0 0 Phenotype: coadaptive 10.6854 disease 3 +1720 Fitness: 10.5534 Genotype: Fch1: A coadaptive 1 8.7 B coadaptive 4.4 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 10.5534 disease 3 +1721 Fitness: 10.5534 Genotype: Fch1: A coadaptive 1 8.7 B coadaptive 4.4 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 10.5534 disease 3 +1722 Fitness: 10.5534 Genotype: Fch1: A coadaptive 1 8.7 B coadaptive 4.4 10 C disease 0.5 0.5 D disease 1 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 10.5534 disease 3 +1723 Fitness: 3.44907 Genotype: Fch1: A coadaptive 5.7 9.9 B coadaptive 5.5 2.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 3.44907 disease 3 +1724 Fitness: 3.44907 Genotype: Fch1: A coadaptive 5.7 9.9 B coadaptive 5.5 2.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 3.44907 disease 3 +1725 Fitness: 3.44907 Genotype: Fch1: A coadaptive 5.7 9.9 B coadaptive 5.5 2.2 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 3.44907 disease 3 +1726 Fitness: 4.2826 Genotype: Fch1: A coadaptive 9.7 6.5 B coadaptive 4.5 4.1 C disease 1 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 4.2826 disease 4 +1727 Fitness: 4.2826 Genotype: Fch1: A coadaptive 9.7 6.5 B coadaptive 4.5 4.1 C disease 1 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 4.2826 disease 4 +1728 Fitness: 4.2826 Genotype: Fch1: A coadaptive 9.7 6.5 B coadaptive 4.5 4.1 C disease 1 1 D disease 0 1 E disease 1 1 F disease 1 1 Phenotype: coadaptive 4.2826 disease 4 +1729 Fitness: 9.81563 Genotype: Fch1: A coadaptive 8.9 1.6 B coadaptive 4.2 3.3 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 9.81563 disease 1.5 +1730 Fitness: 9.81563 Genotype: Fch1: A coadaptive 8.9 1.6 B coadaptive 4.2 3.3 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 9.81563 disease 1.5 +1731 Fitness: 9.81563 Genotype: Fch1: A coadaptive 8.9 1.6 B coadaptive 4.2 3.3 C disease 0.5 0 D disease 0 0 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 9.81563 disease 1.5 +1732 Fitness: 10.7026 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 6 4.8 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 10.7026 disease 3.5 +1733 Fitness: 10.7026 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 6 4.8 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 10.7026 disease 3.5 +1734 Fitness: 10.7026 Genotype: Fch1: A coadaptive 8.2 7.3 B coadaptive 6 4.8 C disease 1 0 D disease 0.5 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 10.7026 disease 3.5 +1735 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.4 B coadaptive 8.2 7.8 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1736 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.4 B coadaptive 8.2 7.8 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1737 Fitness: 0 Genotype: Fch1: A coadaptive 1 0.4 B coadaptive 8.2 7.8 C disease 0.5 0 D disease 0.5 1 E disease 0 1 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1738 Fitness: 5.06624 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 0.7 3.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 5.06624 disease 3 +1739 Fitness: 5.06624 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 0.7 3.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 5.06624 disease 3 +1740 Fitness: 5.06624 Genotype: Fch1: A coadaptive 1.1 6.2 B coadaptive 0.7 3.7 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 5.06624 disease 3 +1741 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 8.7 B coadaptive 2.2 3.6 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1742 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 8.7 B coadaptive 2.2 3.6 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1743 Fitness: 0 Genotype: Fch1: A coadaptive 6.3 8.7 B coadaptive 2.2 3.6 C disease 0.5 0.5 D disease 1 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 0 disease 3.5 +1744 Fitness: 14.5404 Genotype: Fch1: A coadaptive 7.2 5.4 B coadaptive 3.5 8.6 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.5404 disease 3.5 +1745 Fitness: 14.5404 Genotype: Fch1: A coadaptive 7.2 5.4 B coadaptive 3.5 8.6 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.5404 disease 3.5 +1746 Fitness: 14.5404 Genotype: Fch1: A coadaptive 7.2 5.4 B coadaptive 3.5 8.6 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 14.5404 disease 3.5 +1747 Fitness: 12.3609 Genotype: Fch1: A coadaptive 6.9 2.7 B coadaptive 0.9 9.4 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.3609 disease 2.5 +1748 Fitness: 12.3609 Genotype: Fch1: A coadaptive 6.9 2.7 B coadaptive 0.9 9.4 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.3609 disease 2.5 +1749 Fitness: 12.3609 Genotype: Fch1: A coadaptive 6.9 2.7 B coadaptive 0.9 9.4 C disease 0.5 0.5 D disease 1 0 E disease 0 0.5 F disease 0.5 0.5 Phenotype: coadaptive 12.3609 disease 2.5 +1750 Fitness: 12.5548 Genotype: Fch1: A coadaptive 1.8 7.8 B coadaptive 9.9 1.7 C disease 0.5 0 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.5548 disease 3 +1751 Fitness: 12.5548 Genotype: Fch1: A coadaptive 1.8 7.8 B coadaptive 9.9 1.7 C disease 0.5 0 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.5548 disease 3 +1752 Fitness: 12.5548 Genotype: Fch1: A coadaptive 1.8 7.8 B coadaptive 9.9 1.7 C disease 0.5 0 D disease 1 0 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 12.5548 disease 3 +1753 Fitness: 12.2295 Genotype: Fch1: A coadaptive 8.1 7.2 B coadaptive 7.6 4 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2295 disease 2.5 +1754 Fitness: 12.2295 Genotype: Fch1: A coadaptive 8.1 7.2 B coadaptive 7.6 4 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2295 disease 2.5 +1755 Fitness: 12.2295 Genotype: Fch1: A coadaptive 8.1 7.2 B coadaptive 7.6 4 C disease 0.5 0 D disease 0 0.5 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 12.2295 disease 2.5 +1756 Fitness: 6.50413 Genotype: Fch1: A coadaptive 1.2 4.2 B coadaptive 4.5 3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.50413 disease 3 +1757 Fitness: 6.50413 Genotype: Fch1: A coadaptive 1.2 4.2 B coadaptive 4.5 3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.50413 disease 3 +1758 Fitness: 6.50413 Genotype: Fch1: A coadaptive 1.2 4.2 B coadaptive 4.5 3 C disease 1 0.5 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 6.50413 disease 3 +1759 Fitness: 0.127506 Genotype: Fch1: A coadaptive 0.8 2.4 B coadaptive 3.1 8 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0.127506 disease 4 +1760 Fitness: 0.127506 Genotype: Fch1: A coadaptive 0.8 2.4 B coadaptive 3.1 8 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0.127506 disease 4 +1761 Fitness: 0.127506 Genotype: Fch1: A coadaptive 0.8 2.4 B coadaptive 3.1 8 C disease 0.5 1 D disease 1 0 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0.127506 disease 4 +1762 Fitness: 11.3415 Genotype: Fch1: A coadaptive 5.5 3.8 B coadaptive 6.1 2.9 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.3415 disease 4 +1763 Fitness: 11.3415 Genotype: Fch1: A coadaptive 5.5 3.8 B coadaptive 6.1 2.9 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.3415 disease 4 +1764 Fitness: 11.3415 Genotype: Fch1: A coadaptive 5.5 3.8 B coadaptive 6.1 2.9 C disease 0.5 1 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 11.3415 disease 4 +1765 Fitness: 9.27635 Genotype: Fch1: A coadaptive 4.3 2.8 B coadaptive 1.3 8.4 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.27635 disease 3.5 +1766 Fitness: 9.27635 Genotype: Fch1: A coadaptive 4.3 2.8 B coadaptive 1.3 8.4 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.27635 disease 3.5 +1767 Fitness: 9.27635 Genotype: Fch1: A coadaptive 4.3 2.8 B coadaptive 1.3 8.4 C disease 1 0 D disease 1 0.5 E disease 0 1 F disease 0 0.5 Phenotype: coadaptive 9.27635 disease 3.5 +1768 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 6.6 B coadaptive 1 1.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1769 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 6.6 B coadaptive 1 1.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1770 Fitness: 0 Genotype: Fch1: A coadaptive 4.4 6.6 B coadaptive 1 1.7 C disease 0.5 1 D disease 0.5 0 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1771 Fitness: 8.19554 Genotype: Fch1: A coadaptive 2.7 6.2 B coadaptive 5.8 0.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.19554 disease 2 +1772 Fitness: 8.19554 Genotype: Fch1: A coadaptive 2.7 6.2 B coadaptive 5.8 0.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.19554 disease 2 +1773 Fitness: 8.19554 Genotype: Fch1: A coadaptive 2.7 6.2 B coadaptive 5.8 0.6 C disease 0.5 0 D disease 0 0 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 8.19554 disease 2 +1774 Fitness: 0.545731 Genotype: Fch1: A coadaptive 2.4 1.9 B coadaptive 9.2 3.4 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0.545731 disease 2.5 +1775 Fitness: 0.545731 Genotype: Fch1: A coadaptive 2.4 1.9 B coadaptive 9.2 3.4 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0.545731 disease 2.5 +1776 Fitness: 0.545731 Genotype: Fch1: A coadaptive 2.4 1.9 B coadaptive 9.2 3.4 C disease 0.5 1 D disease 0 0 E disease 0.5 0 F disease 1 0.5 Phenotype: coadaptive 0.545731 disease 2.5 +1777 Fitness: 10.9147 Genotype: Fch1: A coadaptive 7.8 1 B coadaptive 6.7 2.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 10.9147 disease 3.5 +1778 Fitness: 10.9147 Genotype: Fch1: A coadaptive 7.8 1 B coadaptive 6.7 2.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 10.9147 disease 3.5 +1779 Fitness: 10.9147 Genotype: Fch1: A coadaptive 7.8 1 B coadaptive 6.7 2.2 C disease 0 0.5 D disease 0.5 1 E disease 1 0.5 F disease 1 1 Phenotype: coadaptive 10.9147 disease 3.5 +1780 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 7 B coadaptive 0.1 6.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1781 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 7 B coadaptive 0.1 6.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1782 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 7 B coadaptive 0.1 6.1 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2 +1783 Fitness: 8.98047 Genotype: Fch1: A coadaptive 6.9 9.6 B coadaptive 2.5 8.5 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.98047 disease 3 +1784 Fitness: 8.98047 Genotype: Fch1: A coadaptive 6.9 9.6 B coadaptive 2.5 8.5 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.98047 disease 3 +1785 Fitness: 8.98047 Genotype: Fch1: A coadaptive 6.9 9.6 B coadaptive 2.5 8.5 C disease 1 1 D disease 0 0 E disease 1 1 F disease 1 0.5 Phenotype: coadaptive 8.98047 disease 3 +1786 Fitness: 11.7113 Genotype: Fch1: A coadaptive 8.7 7.9 B coadaptive 10 6.6 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 11.7113 disease 4 +1787 Fitness: 11.7113 Genotype: Fch1: A coadaptive 8.7 7.9 B coadaptive 10 6.6 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 11.7113 disease 4 +1788 Fitness: 11.7113 Genotype: Fch1: A coadaptive 8.7 7.9 B coadaptive 10 6.6 C disease 1 1 D disease 0 1 E disease 1 0 F disease 1 0 Phenotype: coadaptive 11.7113 disease 4 +1789 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.5 B coadaptive 4.5 4.9 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1790 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.5 B coadaptive 4.5 4.9 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1791 Fitness: 0 Genotype: Fch1: A coadaptive 9.7 8.5 B coadaptive 4.5 4.9 C disease 1 0.5 D disease 0 1 E disease 1 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 4 +1792 Fitness: 8.76781 Genotype: Fch1: A coadaptive 0.7 6.6 B coadaptive 5 2.7 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.76781 disease 3 +1793 Fitness: 8.76781 Genotype: Fch1: A coadaptive 0.7 6.6 B coadaptive 5 2.7 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.76781 disease 3 +1794 Fitness: 8.76781 Genotype: Fch1: A coadaptive 0.7 6.6 B coadaptive 5 2.7 C disease 1 0.5 D disease 0.5 1 E disease 1 1 F disease 0 0 Phenotype: coadaptive 8.76781 disease 3 +1795 Fitness: 7.95899 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 2.1 4.9 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.95899 disease 4 +1796 Fitness: 7.95899 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 2.1 4.9 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.95899 disease 4 +1797 Fitness: 7.95899 Genotype: Fch1: A coadaptive 3.9 8.2 B coadaptive 2.1 4.9 C disease 0.5 1 D disease 0 1 E disease 1 1 F disease 1 0 Phenotype: coadaptive 7.95899 disease 4 +1798 Fitness: 8.2148 Genotype: Fch1: A coadaptive 6.3 2.9 B coadaptive 1.3 5.1 C disease 1 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 8.2148 disease 2 +1799 Fitness: 8.2148 Genotype: Fch1: A coadaptive 6.3 2.9 B coadaptive 1.3 5.1 C disease 1 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 8.2148 disease 2 +1800 Fitness: 8.2148 Genotype: Fch1: A coadaptive 6.3 2.9 B coadaptive 1.3 5.1 C disease 1 0.5 D disease 1 1 E disease 0 0 F disease 0 0 Phenotype: coadaptive 8.2148 disease 2 +1801 Fitness: 8.6432 Genotype: Fch1: A coadaptive 9.5 8.9 B coadaptive 8 6.4 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 8.6432 disease 3.5 +1802 Fitness: 8.6432 Genotype: Fch1: A coadaptive 9.5 8.9 B coadaptive 8 6.4 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 8.6432 disease 3.5 +1803 Fitness: 8.6432 Genotype: Fch1: A coadaptive 9.5 8.9 B coadaptive 8 6.4 C disease 0 1 D disease 0 1 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 8.6432 disease 3.5 +1804 Fitness: 12.676 Genotype: Fch1: A coadaptive 3.9 5.9 B coadaptive 6.6 4.1 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.676 disease 2.5 +1805 Fitness: 12.676 Genotype: Fch1: A coadaptive 3.9 5.9 B coadaptive 6.6 4.1 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.676 disease 2.5 +1806 Fitness: 12.676 Genotype: Fch1: A coadaptive 3.9 5.9 B coadaptive 6.6 4.1 C disease 0 0 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 12.676 disease 2.5 +1807 Fitness: 7.8752 Genotype: Fch1: A coadaptive 1.6 7.3 B coadaptive 5.1 9.9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 7.8752 disease 4 +1808 Fitness: 7.8752 Genotype: Fch1: A coadaptive 1.6 7.3 B coadaptive 5.1 9.9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 7.8752 disease 4 +1809 Fitness: 7.8752 Genotype: Fch1: A coadaptive 1.6 7.3 B coadaptive 5.1 9.9 C disease 0.5 1 D disease 1 0 E disease 0.5 1 F disease 1 0 Phenotype: coadaptive 7.8752 disease 4 +1810 Fitness: 13.4475 Genotype: Fch1: A coadaptive 2.7 9 B coadaptive 8.9 5.5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.4475 disease 4 +1811 Fitness: 13.4475 Genotype: Fch1: A coadaptive 2.7 9 B coadaptive 8.9 5.5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.4475 disease 4 +1812 Fitness: 13.4475 Genotype: Fch1: A coadaptive 2.7 9 B coadaptive 8.9 5.5 C disease 1 0 D disease 1 0.5 E disease 0.5 1 F disease 0 1 Phenotype: coadaptive 13.4475 disease 4 +1813 Fitness: 13.1767 Genotype: Fch1: A coadaptive 3.9 7.1 B coadaptive 2.1 8.2 C disease 0 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.1767 disease 3 +1814 Fitness: 13.1767 Genotype: Fch1: A coadaptive 3.9 7.1 B coadaptive 2.1 8.2 C disease 0 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.1767 disease 3 +1815 Fitness: 13.1767 Genotype: Fch1: A coadaptive 3.9 7.1 B coadaptive 2.1 8.2 C disease 0 1 D disease 1 0 E disease 0 0 F disease 1 0.5 Phenotype: coadaptive 13.1767 disease 3 +1816 Fitness: 14.0448 Genotype: Fch1: A coadaptive 5.1 6.3 B coadaptive 4.6 7 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.0448 disease 2 +1817 Fitness: 14.0448 Genotype: Fch1: A coadaptive 5.1 6.3 B coadaptive 4.6 7 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.0448 disease 2 +1818 Fitness: 14.0448 Genotype: Fch1: A coadaptive 5.1 6.3 B coadaptive 4.6 7 C disease 0.5 0 D disease 0.5 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 14.0448 disease 2 +1819 Fitness: 11.2822 Genotype: Fch1: A coadaptive 9 0.5 B coadaptive 2.7 6.1 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.2822 disease 2.5 +1820 Fitness: 11.2822 Genotype: Fch1: A coadaptive 9 0.5 B coadaptive 2.7 6.1 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.2822 disease 2.5 +1821 Fitness: 11.2822 Genotype: Fch1: A coadaptive 9 0.5 B coadaptive 2.7 6.1 C disease 0 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 11.2822 disease 2.5 +1822 Fitness: 7.87726 Genotype: Fch1: A coadaptive 6.1 0.6 B coadaptive 9.9 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.87726 disease 2.5 +1823 Fitness: 7.87726 Genotype: Fch1: A coadaptive 6.1 0.6 B coadaptive 9.9 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.87726 disease 2.5 +1824 Fitness: 7.87726 Genotype: Fch1: A coadaptive 6.1 0.6 B coadaptive 9.9 1.6 C disease 1 1 D disease 0 0.5 E disease 1 0.5 F disease 0 0 Phenotype: coadaptive 7.87726 disease 2.5 +1825 Fitness: 12.7649 Genotype: Fch1: A coadaptive 7.4 3.7 B coadaptive 3.9 5.9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.7649 disease 2 +1826 Fitness: 12.7649 Genotype: Fch1: A coadaptive 7.4 3.7 B coadaptive 3.9 5.9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.7649 disease 2 +1827 Fitness: 12.7649 Genotype: Fch1: A coadaptive 7.4 3.7 B coadaptive 3.9 5.9 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 12.7649 disease 2 +1828 Fitness: 14.5554 Genotype: Fch1: A coadaptive 8.7 4.4 B coadaptive 10 2.2 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.5554 disease 3 +1829 Fitness: 14.5554 Genotype: Fch1: A coadaptive 8.7 4.4 B coadaptive 10 2.2 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.5554 disease 3 +1830 Fitness: 14.5554 Genotype: Fch1: A coadaptive 8.7 4.4 B coadaptive 10 2.2 C disease 0.5 1 D disease 1 0.5 E disease 0 0.5 F disease 0.5 0 Phenotype: coadaptive 14.5554 disease 3 +1831 Fitness: 14.3238 Genotype: Fch1: A coadaptive 6.7 6 B coadaptive 4.9 9.4 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.3238 disease 3 +1832 Fitness: 14.3238 Genotype: Fch1: A coadaptive 6.7 6 B coadaptive 4.9 9.4 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.3238 disease 3 +1833 Fitness: 14.3238 Genotype: Fch1: A coadaptive 6.7 6 B coadaptive 4.9 9.4 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 14.3238 disease 3 +1834 Fitness: 8.22648 Genotype: Fch1: A coadaptive 3.4 7.6 B coadaptive 0.2 6.5 C disease 1 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.22648 disease 3 +1835 Fitness: 8.22648 Genotype: Fch1: A coadaptive 3.4 7.6 B coadaptive 0.2 6.5 C disease 1 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.22648 disease 3 +1836 Fitness: 8.22648 Genotype: Fch1: A coadaptive 3.4 7.6 B coadaptive 0.2 6.5 C disease 1 0 D disease 1 0 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 8.22648 disease 3 +1837 Fitness: 13.6156 Genotype: Fch1: A coadaptive 3.3 9 B coadaptive 3.5 7.2 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.6156 disease 3.5 +1838 Fitness: 13.6156 Genotype: Fch1: A coadaptive 3.3 9 B coadaptive 3.5 7.2 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.6156 disease 3.5 +1839 Fitness: 13.6156 Genotype: Fch1: A coadaptive 3.3 9 B coadaptive 3.5 7.2 C disease 0 1 D disease 1 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 13.6156 disease 3.5 +1840 Fitness: 6.88128 Genotype: Fch1: A coadaptive 3.9 3.7 B coadaptive 10 3.9 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.88128 disease 3.5 +1841 Fitness: 6.88128 Genotype: Fch1: A coadaptive 3.9 3.7 B coadaptive 10 3.9 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.88128 disease 3.5 +1842 Fitness: 6.88128 Genotype: Fch1: A coadaptive 3.9 3.7 B coadaptive 10 3.9 C disease 1 0.5 D disease 0 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 6.88128 disease 3.5 +1843 Fitness: 8.50394 Genotype: Fch1: A coadaptive 0.3 6.3 B coadaptive 7.5 2.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.50394 disease 2.5 +1844 Fitness: 8.50394 Genotype: Fch1: A coadaptive 0.3 6.3 B coadaptive 7.5 2.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.50394 disease 2.5 +1845 Fitness: 8.50394 Genotype: Fch1: A coadaptive 0.3 6.3 B coadaptive 7.5 2.2 C disease 0.5 0.5 D disease 0.5 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 8.50394 disease 2.5 +1846 Fitness: 7.49873 Genotype: Fch1: A coadaptive 2.3 3.9 B coadaptive 5.4 2.1 C disease 0 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.49873 disease 3 +1847 Fitness: 7.49873 Genotype: Fch1: A coadaptive 2.3 3.9 B coadaptive 5.4 2.1 C disease 0 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.49873 disease 3 +1848 Fitness: 7.49873 Genotype: Fch1: A coadaptive 2.3 3.9 B coadaptive 5.4 2.1 C disease 0 0.5 D disease 0 1 E disease 1 0.5 F disease 0.5 0 Phenotype: coadaptive 7.49873 disease 3 +1849 Fitness: 13.3874 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.4 3.2 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.3874 disease 2.5 +1850 Fitness: 13.3874 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.4 3.2 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.3874 disease 2.5 +1851 Fitness: 13.3874 Genotype: Fch1: A coadaptive 8.1 2.9 B coadaptive 7.4 3.2 C disease 0 0 D disease 0.5 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 13.3874 disease 2.5 +1852 Fitness: 7.08574 Genotype: Fch1: A coadaptive 5.1 0.6 B coadaptive 1.2 8 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 7.08574 disease 3 +1853 Fitness: 7.08574 Genotype: Fch1: A coadaptive 5.1 0.6 B coadaptive 1.2 8 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 7.08574 disease 3 +1854 Fitness: 7.08574 Genotype: Fch1: A coadaptive 5.1 0.6 B coadaptive 1.2 8 C disease 0.5 0 D disease 1 1 E disease 0.5 0 F disease 1 1 Phenotype: coadaptive 7.08574 disease 3 +1855 Fitness: 9.02391 Genotype: Fch1: A coadaptive 9.9 0 B coadaptive 7.8 7.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.02391 disease 3.5 +1856 Fitness: 9.02391 Genotype: Fch1: A coadaptive 9.9 0 B coadaptive 7.8 7.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.02391 disease 3.5 +1857 Fitness: 9.02391 Genotype: Fch1: A coadaptive 9.9 0 B coadaptive 7.8 7.7 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 9.02391 disease 3.5 +1858 Fitness: 12.1463 Genotype: Fch1: A coadaptive 9 1.2 B coadaptive 4.9 4.5 C disease 0 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.1463 disease 3 +1859 Fitness: 12.1463 Genotype: Fch1: A coadaptive 9 1.2 B coadaptive 4.9 4.5 C disease 0 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.1463 disease 3 +1860 Fitness: 12.1463 Genotype: Fch1: A coadaptive 9 1.2 B coadaptive 4.9 4.5 C disease 0 0 D disease 1 0 E disease 0 1 F disease 0 1 Phenotype: coadaptive 12.1463 disease 3 +1861 Fitness: 0 Genotype: Fch1: A coadaptive 9.8 1.1 B coadaptive 1 0.7 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1862 Fitness: 0 Genotype: Fch1: A coadaptive 9.8 1.1 B coadaptive 1 0.7 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1863 Fitness: 0 Genotype: Fch1: A coadaptive 9.8 1.1 B coadaptive 1 0.7 C disease 0 1 D disease 0.5 0 E disease 1 1 F disease 0 1 Phenotype: coadaptive 0 disease 3.5 +1864 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 6.6 B coadaptive 9.9 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1865 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 6.6 B coadaptive 9.9 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1866 Fitness: 0 Genotype: Fch1: A coadaptive 0.3 6.6 B coadaptive 9.9 7.8 C disease 0 0.5 D disease 0.5 0.5 E disease 1 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1867 Fitness: 11.9768 Genotype: Fch1: A coadaptive 5.1 4.3 B coadaptive 5.9 6.6 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 11.9768 disease 4 +1868 Fitness: 11.9768 Genotype: Fch1: A coadaptive 5.1 4.3 B coadaptive 5.9 6.6 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 11.9768 disease 4 +1869 Fitness: 11.9768 Genotype: Fch1: A coadaptive 5.1 4.3 B coadaptive 5.9 6.6 C disease 1 1 D disease 1 0.5 E disease 0 1 F disease 1 0 Phenotype: coadaptive 11.9768 disease 4 +1870 Fitness: 1.47121 Genotype: Fch1: A coadaptive 0 4.7 B coadaptive 7.7 5 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 1.47121 disease 2.5 +1871 Fitness: 1.47121 Genotype: Fch1: A coadaptive 0 4.7 B coadaptive 7.7 5 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 1.47121 disease 2.5 +1872 Fitness: 1.47121 Genotype: Fch1: A coadaptive 0 4.7 B coadaptive 7.7 5 C disease 0.5 0 D disease 1 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 1.47121 disease 2.5 +1873 Fitness: 13.1643 Genotype: Fch1: A coadaptive 2.8 7.4 B coadaptive 8.4 2.9 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.1643 disease 2.5 +1874 Fitness: 13.1643 Genotype: Fch1: A coadaptive 2.8 7.4 B coadaptive 8.4 2.9 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.1643 disease 2.5 +1875 Fitness: 13.1643 Genotype: Fch1: A coadaptive 2.8 7.4 B coadaptive 8.4 2.9 C disease 0 0 D disease 0.5 1 E disease 1 1 F disease 0.5 0 Phenotype: coadaptive 13.1643 disease 2.5 +1876 Fitness: 14.272 Genotype: Fch1: A coadaptive 6.1 6.6 B coadaptive 9.9 1.7 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.272 disease 2.5 +1877 Fitness: 14.272 Genotype: Fch1: A coadaptive 6.1 6.6 B coadaptive 9.9 1.7 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.272 disease 2.5 +1878 Fitness: 14.272 Genotype: Fch1: A coadaptive 6.1 6.6 B coadaptive 9.9 1.7 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 14.272 disease 2.5 +1879 Fitness: 11.8923 Genotype: Fch1: A coadaptive 6.3 5.4 B coadaptive 7 8.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 11.8923 disease 3.5 +1880 Fitness: 11.8923 Genotype: Fch1: A coadaptive 6.3 5.4 B coadaptive 7 8.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 11.8923 disease 3.5 +1881 Fitness: 11.8923 Genotype: Fch1: A coadaptive 6.3 5.4 B coadaptive 7 8.6 C disease 0 0.5 D disease 0.5 1 E disease 1 0 F disease 0 1 Phenotype: coadaptive 11.8923 disease 3.5 +1882 Fitness: 13.5513 Genotype: Fch1: A coadaptive 6.3 8.2 B coadaptive 7 4.9 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.5513 disease 2.5 +1883 Fitness: 13.5513 Genotype: Fch1: A coadaptive 6.3 8.2 B coadaptive 7 4.9 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.5513 disease 2.5 +1884 Fitness: 13.5513 Genotype: Fch1: A coadaptive 6.3 8.2 B coadaptive 7 4.9 C disease 0 0 D disease 0 1 E disease 0.5 0.5 F disease 1 0.5 Phenotype: coadaptive 13.5513 disease 2.5 +1885 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 6.4 B coadaptive 1.1 1.1 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1886 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 6.4 B coadaptive 1.1 1.1 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1887 Fitness: 0 Genotype: Fch1: A coadaptive 6.4 6.4 B coadaptive 1.1 1.1 C disease 1 1 D disease 1 1 E disease 0 0 F disease 0.5 0.5 Phenotype: coadaptive 0 disease 2.5 +1888 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 2.2 B coadaptive 9.2 9.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1889 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 2.2 B coadaptive 9.2 9.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1890 Fitness: 0 Genotype: Fch1: A coadaptive 2.6 2.2 B coadaptive 9.2 9.6 C disease 1 0.5 D disease 1 1 E disease 0.5 1 F disease 0 0.5 Phenotype: coadaptive 0 disease 3.5 +1891 Fitness: 14.2103 Genotype: Fch1: A coadaptive 9 6 B coadaptive 4.7 9 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 14.2103 disease 3 +1892 Fitness: 14.2103 Genotype: Fch1: A coadaptive 9 6 B coadaptive 4.7 9 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 14.2103 disease 3 +1893 Fitness: 14.2103 Genotype: Fch1: A coadaptive 9 6 B coadaptive 4.7 9 C disease 1 0.5 D disease 1 0.5 E disease 0 0 F disease 0 1 Phenotype: coadaptive 14.2103 disease 3 +1894 Fitness: 8.66343 Genotype: Fch1: A coadaptive 1.6 5.1 B coadaptive 3.3 5.9 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.66343 disease 3.5 +1895 Fitness: 8.66343 Genotype: Fch1: A coadaptive 1.6 5.1 B coadaptive 3.3 5.9 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.66343 disease 3.5 +1896 Fitness: 8.66343 Genotype: Fch1: A coadaptive 1.6 5.1 B coadaptive 3.3 5.9 C disease 0 0.5 D disease 0 1 E disease 0 1 F disease 0 1 Phenotype: coadaptive 8.66343 disease 3.5 +1897 Fitness: 11.4243 Genotype: Fch1: A coadaptive 7.3 1.6 B coadaptive 0.3 9.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 11.4243 disease 1.5 +1898 Fitness: 11.4243 Genotype: Fch1: A coadaptive 7.3 1.6 B coadaptive 0.3 9.3 C disease 0.5 0.5 D disease 0 0.5 E disease 0 0 F disease 0.5 0 Phenotype: coadaptive 11.4243 disease 1.5 +1899 Fitness: 5.78045 Genotype: Fch1: A coadaptive 7.8 1.6 B coadaptive 7.1 9.3 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.78045 disease 2 +1900 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 10 8.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1901 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 10 8.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1902 Fitness: 0 Genotype: Fch1: A coadaptive 3.9 2.4 B coadaptive 10 8.8 C disease 0.5 0.5 D disease 1 0.5 E disease 0.5 0 F disease 0.5 0 Phenotype: coadaptive 0 disease 2.5 +1903 Fitness: 5.62949 Genotype: Fch1: A coadaptive 1.6 3.3 B coadaptive 3.3 3.5 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 5.62949 disease 3.5 +1904 Fitness: 5.62949 Genotype: Fch1: A coadaptive 1.6 3.3 B coadaptive 3.3 3.5 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 5.62949 disease 3.5 +1905 Fitness: 5.62949 Genotype: Fch1: A coadaptive 1.6 3.3 B coadaptive 3.3 3.5 C disease 1 1 D disease 0.5 1 E disease 0.5 1 F disease 0.5 0.5 Phenotype: coadaptive 5.62949 disease 3.5 +1906 Fitness: 1.47142 Genotype: Fch1: A coadaptive 0.5 2.4 B coadaptive 2.8 6.6 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 1.47142 disease 2.5 +1907 Fitness: 1.47142 Genotype: Fch1: A coadaptive 0.5 2.4 B coadaptive 2.8 6.6 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 1.47142 disease 2.5 +1908 Fitness: 1.47142 Genotype: Fch1: A coadaptive 0.5 2.4 B coadaptive 2.8 6.6 C disease 1 1 D disease 0 0.5 E disease 1 1 F disease 0 0 Phenotype: coadaptive 1.47142 disease 2.5 +1909 Fitness: 3.79194 Genotype: Fch1: A coadaptive 1.1 2.8 B coadaptive 0.7 8.4 C disease 0.5 1 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.79194 disease 4 +1910 Fitness: 3.79194 Genotype: Fch1: A coadaptive 1.1 2.8 B coadaptive 0.7 8.4 C disease 0.5 1 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.79194 disease 4 +1911 Fitness: 3.79194 Genotype: Fch1: A coadaptive 1.1 2.8 B coadaptive 0.7 8.4 C disease 0.5 1 D disease 1 0.5 E disease 1 0 F disease 0 1 Phenotype: coadaptive 3.79194 disease 4 +1912 Fitness: 0.137806 Genotype: Fch1: A coadaptive 0.5 8.9 B coadaptive 1.3 1 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0.137806 disease 2.5 +1913 Fitness: 0.137806 Genotype: Fch1: A coadaptive 0.5 8.9 B coadaptive 1.3 1 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0.137806 disease 2.5 +1914 Fitness: 0.137806 Genotype: Fch1: A coadaptive 0.5 8.9 B coadaptive 1.3 1 C disease 0 1 D disease 0 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 0.137806 disease 2.5 +1915 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 1.5 B coadaptive 5.7 9.1 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1916 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 1.5 B coadaptive 5.7 9.1 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1917 Fitness: 0 Genotype: Fch1: A coadaptive 2.3 1.5 B coadaptive 5.7 9.1 C disease 0 1 D disease 1 1 E disease 0 1 F disease 0 0 Phenotype: coadaptive 0 disease 3 +1918 Fitness: 5.73344 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 3.7 1.2 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.73344 disease 3 +1919 Fitness: 5.73344 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 3.7 1.2 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.73344 disease 3 +1920 Fitness: 5.73344 Genotype: Fch1: A coadaptive 3.9 5.1 B coadaptive 3.7 1.2 C disease 1 1 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 5.73344 disease 3 +1921 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 6.3 8.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1922 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 6.3 8.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1923 Fitness: 0 Genotype: Fch1: A coadaptive 3.6 2.4 B coadaptive 6.3 8.8 C disease 1 0 D disease 0.5 0.5 E disease 0 0.5 F disease 1 0 Phenotype: coadaptive 0 disease 3 +1924 Fitness: 5.61694 Genotype: Fch1: A coadaptive 2.9 2.8 B coadaptive 3.2 8.4 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 5.61694 disease 3 +1925 Fitness: 5.61694 Genotype: Fch1: A coadaptive 2.9 2.8 B coadaptive 3.2 8.4 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 5.61694 disease 3 +1926 Fitness: 5.61694 Genotype: Fch1: A coadaptive 2.9 2.8 B coadaptive 3.2 8.4 C disease 1 1 D disease 0 0 E disease 1 0.5 F disease 0 1 Phenotype: coadaptive 5.61694 disease 3 +1927 Fitness: 0 Genotype: Fch1: A coadaptive 9.3 9.9 B coadaptive 2 2.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1928 Fitness: 0 Genotype: Fch1: A coadaptive 9.3 9.9 B coadaptive 2 2.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1929 Fitness: 0 Genotype: Fch1: A coadaptive 9.3 9.9 B coadaptive 2 2.8 C disease 1 0.5 D disease 0.5 0.5 E disease 0.5 1 F disease 0 0 Phenotype: coadaptive 0 disease 2.5 +1930 Fitness: 5.996 Genotype: Fch1: A coadaptive 1.6 5.2 B coadaptive 2.3 2.9 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.996 disease 1.5 +1931 Fitness: 5.996 Genotype: Fch1: A coadaptive 1.6 5.2 B coadaptive 2.3 2.9 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.996 disease 1.5 +1932 Fitness: 5.996 Genotype: Fch1: A coadaptive 1.6 5.2 B coadaptive 2.3 2.9 C disease 1 1 D disease 0 0 E disease 0.5 0 F disease 0 0 Phenotype: coadaptive 5.996 disease 1.5 +1933 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.6 B coadaptive 0.6 7.3 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1934 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.6 B coadaptive 0.6 7.3 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1935 Fitness: 0 Genotype: Fch1: A coadaptive 9.2 9.6 B coadaptive 0.6 7.3 C disease 1 0 D disease 1 1 E disease 0.5 1 F disease 0.5 1 Phenotype: coadaptive 0 disease 4 +1936 Fitness: 0 Genotype: Fch1: A coadaptive 7.6 7.8 B coadaptive 0.3 5.2 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1937 Fitness: 0 Genotype: Fch1: A coadaptive 7.6 7.8 B coadaptive 0.3 5.2 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1938 Fitness: 0 Genotype: Fch1: A coadaptive 7.6 7.8 B coadaptive 0.3 5.2 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 1 Phenotype: coadaptive 0 disease 3 +1939 Fitness: 1.40204 Genotype: Fch1: A coadaptive 3.3 6.4 B coadaptive 1.5 1.5 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.40204 disease 3.5 +1940 Fitness: 1.40204 Genotype: Fch1: A coadaptive 3.3 6.4 B coadaptive 1.5 1.5 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.40204 disease 3.5 +1941 Fitness: 1.40204 Genotype: Fch1: A coadaptive 3.3 6.4 B coadaptive 1.5 1.5 C disease 0 1 D disease 1 1 E disease 0 0.5 F disease 1 0.5 Phenotype: coadaptive 1.40204 disease 3.5 +1942 Fitness: 12.3179 Genotype: Fch1: A coadaptive 7.3 2.3 B coadaptive 0.3 9.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.3179 disease 3 +1943 Fitness: 12.3179 Genotype: Fch1: A coadaptive 7.3 2.3 B coadaptive 0.3 9.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.3179 disease 3 +1944 Fitness: 12.3179 Genotype: Fch1: A coadaptive 7.3 2.3 B coadaptive 0.3 9.9 C disease 1 0.5 D disease 0.5 0.5 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 12.3179 disease 3 +1945 Fitness: 3.97843 Genotype: Fch1: A coadaptive 2.3 1.5 B coadaptive 2.6 3.3 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.97843 disease 3.5 +1946 Fitness: 3.97843 Genotype: Fch1: A coadaptive 2.3 1.5 B coadaptive 2.6 3.3 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.97843 disease 3.5 +1947 Fitness: 3.97843 Genotype: Fch1: A coadaptive 2.3 1.5 B coadaptive 2.6 3.3 C disease 0.5 0.5 D disease 1 0 E disease 0 1 F disease 1 1 Phenotype: coadaptive 3.97843 disease 3.5 +1948 Fitness: 1.7918 Genotype: Fch1: A coadaptive 1 9.2 B coadaptive 3.3 0.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 1.7918 disease 2.5 +1949 Fitness: 1.7918 Genotype: Fch1: A coadaptive 1 9.2 B coadaptive 3.3 0.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 1.7918 disease 2.5 +1950 Fitness: 1.7918 Genotype: Fch1: A coadaptive 1 9.2 B coadaptive 3.3 0.1 C disease 0 0.5 D disease 0 0.5 E disease 0 0.5 F disease 0 1 Phenotype: coadaptive 1.7918 disease 2.5 +1951 Fitness: 8.47087 Genotype: Fch1: A coadaptive 5.8 1 B coadaptive 4.8 6.1 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.47087 disease 3 +1952 Fitness: 8.47087 Genotype: Fch1: A coadaptive 5.8 1 B coadaptive 4.8 6.1 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.47087 disease 3 +1953 Fitness: 8.47087 Genotype: Fch1: A coadaptive 5.8 1 B coadaptive 4.8 6.1 C disease 1 0 D disease 0.5 0.5 E disease 1 1 F disease 0.5 0.5 Phenotype: coadaptive 8.47087 disease 3 +1954 Fitness: 8.83815 Genotype: Fch1: A coadaptive 8.1 8.9 B coadaptive 7.4 4.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.83815 disease 2.5 +1955 Fitness: 8.83815 Genotype: Fch1: A coadaptive 8.1 8.9 B coadaptive 7.4 4.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.83815 disease 2.5 +1956 Fitness: 8.83815 Genotype: Fch1: A coadaptive 8.1 8.9 B coadaptive 7.4 4.2 C disease 0.5 0.5 D disease 0.5 1 E disease 0.5 0.5 F disease 0.5 0 Phenotype: coadaptive 8.83815 disease 2.5 +1957 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 0.9 B coadaptive 6.8 8.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1958 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 0.9 B coadaptive 6.8 8.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1959 Fitness: 0 Genotype: Fch1: A coadaptive 5.3 0.9 B coadaptive 6.8 8.5 C disease 1 0.5 D disease 0 0.5 E disease 0.5 0.5 F disease 0 0.5 Phenotype: coadaptive 0 disease 2.5 +1960 Fitness: 7.68836 Genotype: Fch1: A coadaptive 8.1 2.5 B coadaptive 1.6 4.7 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 7.68836 disease 2.5 +1961 Fitness: 7.68836 Genotype: Fch1: A coadaptive 8.1 2.5 B coadaptive 1.6 4.7 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 7.68836 disease 2.5 +1962 Fitness: 7.68836 Genotype: Fch1: A coadaptive 8.1 2.5 B coadaptive 1.6 4.7 C disease 0.5 0.5 D disease 0 0 E disease 1 1 F disease 1 1 Phenotype: coadaptive 7.68836 disease 2.5 +1963 Fitness: 6.69611 Genotype: Fch1: A coadaptive 0.1 7.8 B coadaptive 9.2 5.2 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.69611 disease 3 +1964 Fitness: 6.69611 Genotype: Fch1: A coadaptive 0.1 7.8 B coadaptive 9.2 5.2 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.69611 disease 3 +1965 Fitness: 6.69611 Genotype: Fch1: A coadaptive 0.1 7.8 B coadaptive 9.2 5.2 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 1 Phenotype: coadaptive 6.69611 disease 3 +1966 Fitness: 8.72852 Genotype: Fch1: A coadaptive 0.4 8.8 B coadaptive 9.3 5.6 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.72852 disease 3.5 +1967 Fitness: 8.72852 Genotype: Fch1: A coadaptive 0.4 8.8 B coadaptive 9.3 5.6 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.72852 disease 3.5 +1968 Fitness: 8.72852 Genotype: Fch1: A coadaptive 0.4 8.8 B coadaptive 9.3 5.6 C disease 1 0.5 D disease 0 0.5 E disease 1 0 F disease 1 0 Phenotype: coadaptive 8.72852 disease 3.5 +1969 Fitness: 4.02633 Genotype: Fch1: A coadaptive 0 8.3 B coadaptive 10 6 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.02633 disease 2.5 +1970 Fitness: 4.02633 Genotype: Fch1: A coadaptive 0 8.3 B coadaptive 10 6 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.02633 disease 2.5 +1971 Fitness: 4.02633 Genotype: Fch1: A coadaptive 0 8.3 B coadaptive 10 6 C disease 0.5 0.5 D disease 1 1 E disease 0 0 F disease 0.5 1 Phenotype: coadaptive 4.02633 disease 2.5 +1972 Fitness: 2.91523 Genotype: Fch1: A coadaptive 1.8 7.4 B coadaptive 0.6 2.9 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.91523 disease 3.5 +1973 Fitness: 2.91523 Genotype: Fch1: A coadaptive 1.8 7.4 B coadaptive 0.6 2.9 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.91523 disease 3.5 +1974 Fitness: 2.91523 Genotype: Fch1: A coadaptive 1.8 7.4 B coadaptive 0.6 2.9 C disease 1 1 D disease 0 1 E disease 0.5 0 F disease 0 1 Phenotype: coadaptive 2.91523 disease 3.5 +1975 Fitness: 0.64055 Genotype: Fch1: A coadaptive 2.3 1.9 B coadaptive 6.3 6.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0.64055 disease 2.5 +1976 Fitness: 0.64055 Genotype: Fch1: A coadaptive 2.3 1.9 B coadaptive 6.3 6.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0.64055 disease 2.5 +1977 Fitness: 0.64055 Genotype: Fch1: A coadaptive 2.3 1.9 B coadaptive 6.3 6.1 C disease 1 1 D disease 0 0 E disease 1 0 F disease 0 0.5 Phenotype: coadaptive 0.64055 disease 2.5 +1978 Fitness: 12.5481 Genotype: Fch1: A coadaptive 4 5.9 B coadaptive 6.1 4.1 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.5481 disease 2 +1979 Fitness: 12.5481 Genotype: Fch1: A coadaptive 4 5.9 B coadaptive 6.1 4.1 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.5481 disease 2 +1980 Fitness: 12.5481 Genotype: Fch1: A coadaptive 4 5.9 B coadaptive 6.1 4.1 C disease 1 1 D disease 0 0 E disease 0 1 F disease 0 0 Phenotype: coadaptive 12.5481 disease 2 +1981 Fitness: 3.47895 Genotype: Fch1: A coadaptive 2 7.3 B coadaptive 9 8.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.47895 disease 2 +1982 Fitness: 3.47895 Genotype: Fch1: A coadaptive 2 7.3 B coadaptive 9 8.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.47895 disease 2 +1983 Fitness: 3.47895 Genotype: Fch1: A coadaptive 2 7.3 B coadaptive 9 8.1 C disease 0.5 0 D disease 0.5 1 E disease 0 0.5 F disease 0 0 Phenotype: coadaptive 3.47895 disease 2 +1984 Fitness: 12.4116 Genotype: Fch1: A coadaptive 7.3 8.5 B coadaptive 4.8 7.6 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.4116 disease 4 +1985 Fitness: 12.4116 Genotype: Fch1: A coadaptive 7.3 8.5 B coadaptive 4.8 7.6 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.4116 disease 4 +1986 Fitness: 12.4116 Genotype: Fch1: A coadaptive 7.3 8.5 B coadaptive 4.8 7.6 C disease 1 0.5 D disease 1 0 E disease 0 1 F disease 0.5 1 Phenotype: coadaptive 12.4116 disease 4 +1987 Fitness: 7.79463 Genotype: Fch1: A coadaptive 9.2 2.4 B coadaptive 0.1 6.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.79463 disease 3 +1988 Fitness: 7.79463 Genotype: Fch1: A coadaptive 9.2 2.4 B coadaptive 0.1 6.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.79463 disease 3 +1989 Fitness: 7.79463 Genotype: Fch1: A coadaptive 9.2 2.4 B coadaptive 0.1 6.6 C disease 1 1 D disease 0 0.5 E disease 0 1 F disease 0.5 0 Phenotype: coadaptive 7.79463 disease 3 +1990 Fitness: 6.59936 Genotype: Fch1: A coadaptive 3.6 4.3 B coadaptive 4.1 1.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.59936 disease 3.5 +1991 Fitness: 6.59936 Genotype: Fch1: A coadaptive 3.6 4.3 B coadaptive 4.1 1.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.59936 disease 3.5 +1992 Fitness: 6.59936 Genotype: Fch1: A coadaptive 3.6 4.3 B coadaptive 4.1 1.3 C disease 1 0.5 D disease 0 0.5 E disease 1 0.5 F disease 1 0.5 Phenotype: coadaptive 6.59936 disease 3.5 +1993 Fitness: 3.27241 Genotype: Fch1: A coadaptive 6 0.3 B coadaptive 1.2 2 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 3.27241 disease 3 +1994 Fitness: 3.27241 Genotype: Fch1: A coadaptive 6 0.3 B coadaptive 1.2 2 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 3.27241 disease 3 +1995 Fitness: 3.27241 Genotype: Fch1: A coadaptive 6 0.3 B coadaptive 1.2 2 C disease 1 0.5 D disease 0.5 0 E disease 0.5 0 F disease 0.5 1 Phenotype: coadaptive 3.27241 disease 3 +1996 Fitness: 9.54755 Genotype: Fch1: A coadaptive 0.9 6.4 B coadaptive 8.5 1 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 9.54755 disease 2.5 +1997 Fitness: 9.54755 Genotype: Fch1: A coadaptive 0.9 6.4 B coadaptive 8.5 1 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 9.54755 disease 2.5 +1998 Fitness: 9.54755 Genotype: Fch1: A coadaptive 0.9 6.4 B coadaptive 8.5 1 C disease 0.5 0.5 D disease 0.5 0 E disease 0.5 0.5 F disease 0.5 1 Phenotype: coadaptive 9.54755 disease 2.5 +1999 Fitness: 8.5403 Genotype: Fch1: A coadaptive 6.8 1 B coadaptive 2.6 4.4 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.5403 disease 3 +2000 Fitness: 8.5403 Genotype: Fch1: A coadaptive 6.8 1 B coadaptive 2.6 4.4 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.5403 disease 3 +2001 Fitness: 8.5403 Genotype: Fch1: A coadaptive 6.8 1 B coadaptive 2.6 4.4 C disease 0.5 1 D disease 1 0 E disease 0 0 F disease 1 0 Phenotype: coadaptive 8.5403 disease 3 diff --git a/DEC_GUI/DEC-0.0/individual/AbstractIndividual.h b/DEC_GUI/DEC-0.0/individual/AbstractIndividual.h new file mode 100644 index 0000000..52f1405 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/AbstractIndividual.h @@ -0,0 +1,59 @@ +#pragma once +/* + + +*/ +#include "../environment/AbstractEnvironment.h" +#include "genome/AbstractGenome.h" +#include "InnerSubstratesPool.h" +#include "genome/strategies/PhenotypeToFitnessStrategy.h" +class Phenotype; +class GenotypeToPhenotypeStrategy; +class Individual { +public: + enum Gender { male, female, hermaphrodite }; + friend class GenotypeToPhenotypeStrategy; + friend class InOutBreedingGenotypeToPhenotypeStrategy; + friend class KolchShindyalGenotypeToPhenotypeStrategy; + friend class BisexualPopulation; // MutationStrategy !!! +protected: + // + GenotypeToPhenotypeStrategy* genToPhenStrategy; + PhenotypeToFitnessStrategy* phenToFitStrategy; + ChromosomeRearrangementStrategy* recombinationStrategy; + + //// + //Environment* currentEnvironment; + Region* region; + + unsigned int age; + Gender gender; + Genotype* genotype; + + InnerSubstratesPool* substrateCache ; // + + Phenotype* phenotype; + + double fitness; + + ///////////////// +public: + Individual(const Individual& father, const Individual& mother); // - + Individual(Genotype* gType, Phenotype* pType, InnerSubstratesPool* sub, Gender _gender = hermaphrodite, Region* reg = 0); + virtual ~Individual(); + virtual const Genotype& getGenotype() const { return *genotype;} + virtual const Phenotype& getPhenotype() const {return *phenotype;} + //virtual void setEnvironment(Environment* env) { currentEnvironment = env; } + virtual void setRegion(Region* _region) {}; + virtual void setGenToPhenStrategy(GenotypeToPhenotypeStrategy* s){ genToPhenStrategy = s;} + virtual void setPhenToFitnessStrategy(PhenotypeToFitnessStrategy* p) { if(phenToFitStrategy != 0) {delete phenToFitStrategy;} phenToFitStrategy = p;} + virtual void calculateFitness(); + virtual void calculatePhenotype(); + virtual double getFitness() const { return fitness; } + + Gender getGender() const { return gender; } + virtual bool operator<(const Individual* _ind) const { return this->fitness < _ind->fitness;} +}; + +//bool compareOnFitness(const Individual& a, const Individual& b); +bool compareOnFitness(const Individual* a, const Individual* b); \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/Individual.cpp b/DEC_GUI/DEC-0.0/individual/Individual.cpp new file mode 100644 index 0000000..e2fc434 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/Individual.cpp @@ -0,0 +1,68 @@ +#include "AbstractIndividual.h" +#include "genome/strategies/GenotypeToPhenotypeStrategy.h" +#include + +Individual::Individual(const Individual& father, const Individual& mother) +{ + this->genToPhenStrategy = GenotypeToPhenotypeStrategies::getInstance("inoutbreeding"); + this->phenToFitStrategy = PhenotypeToFitnessStrategy::getInstance("inoutbreeding"); + this->recombinationStrategy = RecombinationStrategies::getInstance("Simple recombination"); + + genotype = new Genotype( + father.getGenotype().recombinantHaploidGenotype(recombinationStrategy), + mother.getGenotype().recombinantHaploidGenotype(recombinationStrategy)); + // + + // + this->substrateCache = new InnerSubstratesPool(); + + phenotype= new Phenotype(father.getPhenotype()); + this->age = 0; + this->calculateFitness(); + +} + +Individual::Individual(Genotype* gType, Phenotype* pType, InnerSubstratesPool* sub, Gender _gender, Region* _reg): +genotype(gType), phenotype(pType), substrateCache(sub), +gender(_gender), region(_reg) +{ + this->genToPhenStrategy = GenotypeToPhenotypeStrategies::getInstance("inoutbreeding"); + this->phenToFitStrategy = PhenotypeToFitnessStrategy::getInstance("inoutbreeding"); + this->recombinationStrategy = RecombinationStrategies::getInstance("Simple recombination"); + + this->age = 0; + + //this->calculateFitness(); + //this->phenotype +} + + +Individual::~Individual(){ +// std::cerr<<"Destructor works"<genotype; + delete this->phenotype; + + delete this->genToPhenStrategy; + delete this->phenToFitStrategy; + delete this->recombinationStrategy; + + if(this->substrateCache != 0) + delete this->substrateCache; +} + +/*bool compareOnFitness(const Individual& a, const Individual& b){ + return a.getFitness() < b.getFitness(); +}*/ + +bool compareOnFitness(const Individual* a, const Individual* b){ + return a->getFitness() < b->getFitness(); +} + +void Individual::calculateFitness(){ + this->genToPhenStrategy->calculatePhenotype(this); + this->fitness = this->phenToFitStrategy->calculateFitness(this->phenotype); +} + +void Individual::calculatePhenotype(){ + this->genToPhenStrategy->calculatePhenotype(this); +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/InnerSubstratesPool.cpp b/DEC_GUI/DEC-0.0/individual/InnerSubstratesPool.cpp new file mode 100644 index 0000000..cba8ea7 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/InnerSubstratesPool.cpp @@ -0,0 +1 @@ +#include "InnerSubstratesPool.h" \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/InnerSubstratesPool.h b/DEC_GUI/DEC-0.0/individual/InnerSubstratesPool.h new file mode 100644 index 0000000..07746b2 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/InnerSubstratesPool.h @@ -0,0 +1,40 @@ +#pragma once +#include +#include +#include + +using std::vector; +using std::map; + +class InnerSubstratesPool { +protected: + std::vector subConcentrations; // + std::map subNamesMap; // ( - ) + // P.S. , , ... + + std::vector regConcentrations; // + std::map regNamesMap; // ( - ) + +public: + InnerSubstratesPool(){}; + InnerSubstratesPool(const vector& _subs, const map& _subNames) + : subConcentrations(_subs), subNamesMap(_subNames){} + + InnerSubstratesPool(const vector& _subs, const map& _subNames, + const vector& _regs, const map& _regNames) + : subConcentrations(_subs), subNamesMap(_subNames), + regConcentrations(_regs), regNamesMap(_regNames){} + + virtual void utilizeSubstrate(int num, float count) { subConcentrations.at(num) -= count; } + virtual void utilizeRegulator(int num, float count) { regConcentrations.at(num) -= count; } + + virtual void utilizeSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) -= count; } + virtual void utilizeRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) -= count; } + + virtual void addSubstrate(int num, float count) { subConcentrations.at(num) += count; } + virtual void addRegulator(int num, float count) { regConcentrations.at(num) += count; } + + virtual void addSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) += count; } + virtual void addRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) += count; } + +}; diff --git a/DEC_GUI/DEC-0.0/individual/Phenotype.cpp b/DEC_GUI/DEC-0.0/individual/Phenotype.cpp new file mode 100644 index 0000000..8fcdd1e --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/Phenotype.cpp @@ -0,0 +1,38 @@ +#include "Phenotype.h" +#include +#include + +Phenotype::Phenotype(Trait _trait){ + this->traitsMap[_trait.getName()] = _trait; +} + +void Phenotype::addTrait(Trait _trait){ + std::map::iterator it; + it = this->traitsMap.find(_trait.getName()); + + if(it == this->traitsMap.end()){ + this->traitsMap[_trait.getName()] = _trait; + } + else{ + std::cerr<<"Phenotype.cpp(16): already has the trait: "<first<::const_iterator it; + for(it = p.traitsMap.begin(); it != p.traitsMap.end(); it++){ + os<<(it->first)<<"\t"<<(it->second.getTraitValueCont())<<"\t"; + } + + return os; +} + +std::string Phenotype::toSimpleString() const { + std::stringstream os; + std::map::const_iterator it; + for(it = this->traitsMap.begin(); it != this->traitsMap.end(); it++){ + os<<(it->second.getTraitValueCont())<<"\t"; + } + + return os.str(); +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/Phenotype.h b/DEC_GUI/DEC-0.0/individual/Phenotype.h new file mode 100644 index 0000000..b3e493d --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/Phenotype.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Trait.h" +#include +#include +#include + +class Phenotype { + friend class GenotypeToPhenotypeStrategy; + friend class InOutBreedingGenotypeToPhenotypeStrategy; + friend class KolchShindyalGenotypeToPhenotypeStrategy; + friend class PhenotypeToFitnessStrategy; + friend std::ostream& operator << (std::ostream& os, const Phenotype& p); +protected: + //std::vector traits; + std::map traitsMap; +public: + Phenotype() { }; + Phenotype(const std::map& _tm) : traitsMap(_tm) {} + Phenotype(Trait _trait); + + Trait getTraitByName(std::string name) const {return this->traitsMap.find(name)->second;}; + void addTrait(Trait _trait); + std::string toSimpleString() const; +}; + diff --git a/DEC_GUI/DEC-0.0/individual/Trait.cpp b/DEC_GUI/DEC-0.0/individual/Trait.cpp new file mode 100644 index 0000000..20a3f11 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/Trait.cpp @@ -0,0 +1,31 @@ +#include "Trait.h" +#include + +//Trait::Trait(const Trait& _t) +//{ +// *this = _t; +//} + +Trait::Trait(Trait::idType _ID, std::string _name, float value): +ID(_ID), name(_name), traitValueCont(value), traitType(Continious) +{} + +Trait::Trait(Trait::idType _ID, std::string _name, int value): +ID(_ID), name(_name), traitValueDiscr(value), traitType(Discrete) +{} + +void Trait::setTraitValue(float _value){ + if(this->traitType == Continious){ + this->traitValueCont = _value; + return; + } + /*throw*/std::cerr<<"Trait.cpp(17) Warning: can't assign float value to discrete trait\n"; +} + +void Trait::setTraitValue(int _value){ + if(this->traitType == Discrete){ + this->traitValueDiscr = _value; + return; + } + /*throw*/std::cerr<<"Trait.cpp(25) Warning: can't assign int value to continious trait\n"; +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/Trait.h b/DEC_GUI/DEC-0.0/individual/Trait.h new file mode 100644 index 0000000..7ef4d0a --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/Trait.h @@ -0,0 +1,32 @@ +#pragma once + +#include + +class Trait { +public: + enum TraitType { Continious, Discrete }; + typedef unsigned int idType; + +protected: + TraitType traitType; // + idType ID; // + std::string name; // + float traitValueCont; // , + int traitValueDiscr; // , + +public: + Trait(){}; + Trait(idType _ID, std::string _name, float value); + Trait(idType _ID, std::string _name, int value); + + TraitType getTraitType() const { return traitType; } + idType getID() const { return ID; } + std::string getName() const { return name; } + float getTraitValueCont() const { return traitValueCont; } + int getTraitValueDiscr() const { return traitValueDiscr; } + + void setName(const std::string& _name) { name = _name; } + void setID(idType _ID) { ID = _ID; } + void setTraitValue(float _value); + void setTraitValue(int _value); +}; diff --git a/DEC_GUI/DEC-0.0/individual/genome/AbstractGenome.h b/DEC_GUI/DEC-0.0/individual/genome/AbstractGenome.h new file mode 100644 index 0000000..1a48504 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/AbstractGenome.h @@ -0,0 +1,56 @@ +#pragma once + +#include "Chromosome.h" +#include "strategies/ChromosomeRearrangementStrategy.h" +#include +#include +/* + +*/ +class ChromosomeRearrangementStrategy; // forward declaration +class Genotype; + +class HaploidGenotype { + friend class Genotype; + friend class ChromosomeRearrangementStrategy; + friend std::ostream& operator << (std::ostream& os, const Genotype& g); + friend class Processor; +protected: + std::vector chromosomes; + +public: + const Chromosome& getChromosome(unsigned int i) const { return this->chromosomes.at(i);} + +public: + HaploidGenotype(const std::vector& _chrom) : chromosomes(_chrom){}; + +}; + +class Genotype { + friend class ChromosomeRearrangementStrategy; + friend std::ostream& operator<< (std::ostream& os, const Genotype& g); + friend class Processor; +protected: + HaploidGenotype fatherGenome; + HaploidGenotype motherGenome; + +public: + Genotype(const std::vector& _fGenome, const std::vector& _mGenome) : fatherGenome(HaploidGenotype(_fGenome)), motherGenome(HaploidGenotype(_mGenome)) {}; + Genotype(const HaploidGenotype& _fGenome, const HaploidGenotype& _mGenome) : fatherGenome(_fGenome), motherGenome(_mGenome) {}; + Genotype(const Genotype& _fDiplGenome, const Genotype& _mDiplGenome); + HaploidGenotype recombinantHaploidGenotype(ChromosomeRearrangementStrategy*) const; + const HaploidGenotype& getFatherGenome() const { return this->fatherGenome;} + const HaploidGenotype& getMotherGenome() const { return this->motherGenome;} + std::string toSimpleString() const; + std::string toSimpleFasta(bool onlyMother = true) const; + std::string toMaxModuleAB() const; + + std::string getRawGene(unsigned int fatherMother, unsigned int chromoNum, unsigned int geneNum) const; + void doRawMutationSequence(unsigned int fatherMother, unsigned int chromoNum, unsigned int geneNum, std::string newSeq); +}; + + +//!!!!!!!!!! +class PolyploidGenotype { + +}; diff --git a/DEC_GUI/DEC-0.0/individual/genome/Chromosome.cpp b/DEC_GUI/DEC-0.0/individual/genome/Chromosome.cpp new file mode 100644 index 0000000..f6df1fe --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/Chromosome.cpp @@ -0,0 +1,11 @@ +#include "Chromosome.h" + +void Chromosome::insertGene(Gene gene, int pos){ + std::vector::iterator it = this->genes.begin(); + this->genes.insert(it+pos, gene); +} + +void Chromosome::insertGeneToEnd(Gene gene, int pos){ + std::vector::iterator it = this->genes.end(); + this->genes.insert(it-pos, gene); +} diff --git a/DEC_GUI/DEC-0.0/individual/genome/Chromosome.h b/DEC_GUI/DEC-0.0/individual/genome/Chromosome.h new file mode 100644 index 0000000..7bfaa32 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/Chromosome.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include +#include "Gene.h" +/* + +*/ + +class Chromosome { + friend class ChromosomeRearrangementStrategy; + friend class Genotype; +protected: + std::string name; + std::vector genes; + +public: + Chromosome(std::string _name) : name(_name) {}; + Chromosome(std::string _name, Gene gene) : name(_name), genes(1, gene) {}; + Chromosome(std::string _name, const std::vector& _genes) : name(_name), genes(_genes) {}; + + void insertGene(Gene gene, int pos = 0); + void insertGeneToEnd(Gene gene, int pos = 0); + std::string getName() const { return name;} + const std::vector& getGenesAsVector() const { return genes;} +}; diff --git a/DEC_GUI/DEC-0.0/individual/genome/Gene.cpp b/DEC_GUI/DEC-0.0/individual/genome/Gene.cpp new file mode 100644 index 0000000..8edce98 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/Gene.cpp @@ -0,0 +1,39 @@ +#include "Gene.h" +#include + +Gene::Gene(idType _ID, std::string _name, float value): +ID(_ID), name(_name), geneValueCont(value), geneType(Continious) +{} + +Gene::Gene(idType _ID, std::string _name, int value): +ID(_ID), name(_name), geneValueDiscr(value), geneType(Discrete) +{} + +Gene::Gene(idType _ID, std::string _name, std::string _seq): +ID(_ID), name(_name), sequence(_seq), geneType(Sequence) +{} + +void Gene::setGeneValue(float _value){ + if(this->geneType == Continious){ + this->geneValueCont = _value; + return; + } + /*throw*/std::cerr<<"Gene.cpp(17) Warning: can't assign float value to discrete Gene\n"; +} + +void Gene::setGeneValue(int _value){ + if(this->geneType == Discrete){ + this->geneValueDiscr = _value; + return; + } + /*throw*/std::cerr<<"Gene.cpp(25) Warning: can't assign int value to continious Gene\n"; +} + +void Gene::setGeneValue(std::string _seq){ + if(this->geneType == Sequence){ + this->sequence = _seq; + return; + } + /*throw*/std::cerr<<"Gene.cpp(37) Warning: can't assign numerical value to sequence Gene\n"; + +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/Gene.h b/DEC_GUI/DEC-0.0/individual/genome/Gene.h new file mode 100644 index 0000000..6fe7961 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/Gene.h @@ -0,0 +1,44 @@ +#pragma once +#include +/* + , + " " ( ), + +1) +2) / +3) / +4) ( .. ???) +5) , , .. +*/ + +class Gene { +public: + enum GeneType { Continious, Discrete, Sequence }; + typedef unsigned int idType; + +protected: + GeneType geneType; // + idType ID; // + std::string name; // + float geneValueCont;// , + int geneValueDiscr; // , + std::string sequence; + +public: + Gene(idType _ID, std::string _name, float value); + Gene(idType _ID, std::string _name, int value); + Gene(idType _ID, std::string _name, std::string seq); + + GeneType getGeneType() const { return geneType; } + idType getID() const { return ID; } + std::string getName() const { return name; } + float getGeneValueCont() const { return geneValueCont; } + int getGeneValueDiscr() const { return geneValueDiscr; } + std::string getSequence()const { return sequence; } + + void setName(const std::string& _name) { name = _name; } + void setID(idType _ID) { ID = _ID; } + void setGeneValue(float _value); + void setGeneValue(int _value); + void setGeneValue(std::string _seq); +}; diff --git a/DEC_GUI/DEC-0.0/individual/genome/Genotype.cpp b/DEC_GUI/DEC-0.0/individual/genome/Genotype.cpp new file mode 100644 index 0000000..752bf80 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/Genotype.cpp @@ -0,0 +1,119 @@ +#include "AbstractGenome.h" +#include +#include +#include +//Genotype::Genotype(const Genotype& _fDiplGenome, const Genotype& _mDiplGenome){ +//} + +HaploidGenotype Genotype::recombinantHaploidGenotype(ChromosomeRearrangementStrategy* strategy) const { + return strategy->buildRecombinantGenotype(this); +} + +std::ostream& operator<< (std::ostream& os, const Genotype& g){ + os<<"F"; + for(unsigned int i = 0; i < g.fatherGenome.chromosomes.size(); i++){ + os<<"ch"<<(i+1)<<":"; + const std::vector genesF = g.fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = g.motherGenome.chromosomes.at(i).getGenesAsVector(); + for(unsigned int j = 0; j < genesF.size(); j++){ + os<<"\t"; + os<fatherGenome.chromosomes.size(); i++){ + const std::vector genesF = this->fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = this->motherGenome.chromosomes.at(i).getGenesAsVector(); + for(unsigned int j = 0; j < genesF.size(); j++){ + if(genesF.at(j).getGeneType() == Gene::Continious){ + os<fatherGenome.chromosomes.size(); i++){ + const std::vector genesF = this->fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = this->motherGenome.chromosomes.at(i).getGenesAsVector(); + for(unsigned int j = 0; j < genesF.size(); j++){ + if(genesF.at(j).getGeneType() == Gene::Continious){ + if(fabs(genesF.at(j).getGeneValueCont()) > fabs(genesM.at(j).getGeneValueCont())){ + os<fatherGenome) : &(this->motherGenome); + return genome->getChromosome(chromoNum).getGenesAsVector().at(geneNum).getSequence(); +} + +void Genotype::doRawMutationSequence(unsigned int fatherMother, unsigned int chromoNum, unsigned int geneNum, std::string newSeq){ + if(fatherMother==2){ + this->fatherGenome.chromosomes.at(chromoNum).genes.at(geneNum).setGeneValue(newSeq); + this->motherGenome.chromosomes.at(chromoNum).genes.at(geneNum).setGeneValue(newSeq); + } +} + +std::string Genotype::toSimpleFasta(bool onlyMother) const { + std::stringstream os; + for(unsigned int i = 0; i < this->motherGenome.chromosomes.size(); i++){ + const std::vector genesF = this->fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = this->motherGenome.chromosomes.at(i).getGenesAsVector(); + os<<"> "<motherGenome.chromosomes.at(i).getName()<<"\n"; + for(unsigned int j = 0; j < genesM.size(); j++){ + if(genesM.at(i).getGeneType() == Gene::Sequence){ + os< +#include + +HaploidGenotype ChromosomeRearrangementStrategy::buildRecombinantGenotype(const Genotype* parentGenotype){ + std::vector chromosomes; + const std::vector* fGenome = &parentGenotype->fatherGenome.chromosomes; + const std::vector* mGenome = &parentGenotype->motherGenome.chromosomes; + + //srand((unsigned int)time(NULL)); + for (unsigned int i = 0; i < fGenome->size(); i++){ + int flag = rand() % 2; + const std::vector* first; + const std::vector* second; + if(flag == 0){ + first = &fGenome->at(i).genes; + second= &mGenome->at(i).genes; + } + else{ + first = &mGenome->at(i).genes; + second= &fGenome->at(i).genes; + } + Chromosome childChromosome(fGenome->at(i).name, *first); + // " " + int bound = rand() % first->size(); + for(unsigned int j = bound; j < first->size(); j++){ + childChromosome.genes.at(j) = second->at(j); + } + chromosomes.push_back(childChromosome); + + } + // , (. ), + // , + + return HaploidGenotype(chromosomes); +} + +HaploidGenotype ChromosomeRearrangementStrategy:: +buildRecombinantGenotype(const HaploidGenotype& fatherGenome, const HaploidGenotype& motherGenome){ + std::vector chromosomes; + const std::vector fGenome = fatherGenome.chromosomes; + const std::vector mGenome = motherGenome.chromosomes; + + //srand((unsigned int)time(NULL)); + for (unsigned int i = 0; i < fGenome.size(); i++){ + int flag = rand() % 2; + std::vector first; + std::vector second; + if(flag == 0){ + first = fGenome.at(i).genes; + second= mGenome.at(i).genes; + } + else{ + first = mGenome.at(i).genes; + second= fGenome.at(i).genes; + } + Chromosome childChromosome(fGenome.at(i).name, first); + // " " + int bound = rand() % first.size(); + for(unsigned int j = bound; j < first.size(); j++){ + childChromosome.genes.at(j) = second.at(j); + } + chromosomes.push_back(childChromosome); + + } + // , (. ), + // , + + return HaploidGenotype(chromosomes); +} + +ChromosomeRearrangementStrategy* RecombinationStrategies::getInstance(std::string _name){ + return new ChromosomeRearrangementStrategy(); +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/ChromosomeRearrangementStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/ChromosomeRearrangementStrategy.h new file mode 100644 index 0000000..39f3e42 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/ChromosomeRearrangementStrategy.h @@ -0,0 +1,17 @@ +#pragma once +#include "../AbstractGenome.h" + +class HaploidGenotype; +class Genotype; + +class ChromosomeRearrangementStrategy { +public: + virtual HaploidGenotype buildRecombinantGenotype(const Genotype*); + virtual HaploidGenotype buildRecombinantGenotype(const HaploidGenotype&, const HaploidGenotype&); +}; + +// +class RecombinationStrategies { +public: + static ChromosomeRearrangementStrategy* getInstance(std::string _name); +}; \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.cpp new file mode 100644 index 0000000..0181e27 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.cpp @@ -0,0 +1,35 @@ +#include "GenotypeToPhenotypeStrategy.h" +#include "KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h" +#include + +void GenotypeToPhenotypeStrategy::calculatePhenotype(Individual* individ){ + Genotype* genotype = individ->genotype; + Phenotype* phenotype = individ->phenotype; + InnerSubstratesPool* substrates = individ->substrateCache; + + // Chromosome 1 + Chromosome chr1F = individ->genotype->getFatherGenome().getChromosome(0); + Chromosome chr1M = individ->genotype->getMotherGenome().getChromosome(0); + + const std::vector& genesF = chr1F.getGenesAsVector(); + const std::vector& genesM = chr1M.getGenesAsVector(); + + for(unsigned int i = 0; i < genesF.size(); i++){ + float geneVal = std::min( + genesF.at(i).getGeneValueCont(), + genesM.at(i).getGeneValueCont()); + phenotype->traitsMap[genesF.at(i).getName()].setTraitValue(geneVal); + } +} + + +GenotypeToPhenotypeStrategy* GenotypeToPhenotypeStrategies::getInstance(std::string _name){ + if(_name.compare("inoutbreeding") == 0){ + return new InOutBreedingGenotypeToPhenotypeStrategy(); + } + if(_name.compare("kolchan_shindyal_gen_to_phen") == 0){ + return new KolchShindyalGenotypeToPhenotypeStrategy(); + } + // default + return new GenotypeToPhenotypeStrategy(); +} diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.h new file mode 100644 index 0000000..8f9f6e1 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.h @@ -0,0 +1,21 @@ +#pragma once +#include "../../AbstractIndividual.h" +#include "../AbstractGenome.h" +#include "../../Phenotype.h" +class GenotypeToPhenotypeStrategy { +public: + virtual void calculatePhenotype(Individual*); + //virtual void calculatePhenotype(const Genotype*, Phenotype*); + //Phenotype* calculatePhenotype(const Genotype*); +}; + +class InOutBreedingGenotypeToPhenotypeStrategy : public GenotypeToPhenotypeStrategy { +public: + virtual void calculatePhenotype(Individual*); +}; + +// +class GenotypeToPhenotypeStrategies { +public: + static GenotypeToPhenotypeStrategy* getInstance(std::string _name); +}; \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.cpp new file mode 100644 index 0000000..b694937 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.cpp @@ -0,0 +1,11 @@ +#include "InOutBreedingPhenToFitStrategy.h" +#include "../../../Phenotype.h" + +double InOutBreedingPhenToFitStrategy::calculateFitness(Phenotype *phen){ + double ans = 0.0; + + + ans = phen->getTraitByName("coadaptive").getTraitValueCont(); + //float coef = phen->getTraitByName("disease") + return ans; +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.h new file mode 100644 index 0000000..199324d --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.h @@ -0,0 +1,7 @@ +#pragma once + +#include "../PhenotypeToFitnessStrategy.h" + +class InOutBreedingPhenToFitStrategy : public PhenotypeToFitnessStrategy { + virtual double calculateFitness(Phenotype* phen); +}; diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.cpp new file mode 100644 index 0000000..39020ba --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.cpp @@ -0,0 +1,85 @@ +#include "InOutBreedingPopulationBreedingStrategy.h" +#include "../../../../processor/Settings.h" +#include "../../../Phenotype.h" +#include +#include +#include +#include + +void InOutBreedingPopulationBreedingStrategy::breed(Population *_pop){ + // N = const + + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + + srand((unsigned int)time(NULL)); + + int offsprings = Settings::OffspringsMean; + std::vector newIndivids; + + long int inds; + for(inds = pop->individs.size();inds >=2; inds -= 2){ + int motherIndex = rand()%inds; + int fatherIndex = rand()%inds; + if(fatherIndex == motherIndex){ + fatherIndex = (fatherIndex+1)%inds; + } + + + // + for(int i = 0; i < offsprings; i++){ + Individual* ind = new Individual(*(pop->individs.at(motherIndex)), *(pop->individs.at(fatherIndex))); + + // + ind->calculatePhenotype(); + Phenotype phen = ind->getPhenotype(); + float coadapt = phen.getTraitByName("coadaptive").getTraitValueCont(); + float disease = phen.getTraitByName("disease").getTraitValueCont(); + + if(disease > Settings::DiseaseThreshold){ // + float probSurvive = 1.f; + if(coadapt < Settings::CoadaptiveThreshold){ // TODO: + probSurvive = Settings::CoadaptiveMinimumP; + } + else{ + probSurvive = (1-Settings::CoadaptiveMinimumP)/(Settings::CoadaptiveMaximumTrait-Settings::CoadaptiveThreshold); + probSurvive *= coadapt - Settings::CoadaptiveMaximumTrait; + probSurvive += 1; + } + int order = 1000; + int prob = rand()%order; + if(prob < order*probSurvive){ + // .. + newIndivids.push_back(ind); + } + } + } // (END) for(int i = 0; i < offsprings; i++) + + // + delete pop->individs.at(motherIndex); + delete pop->individs.at(fatherIndex); + if(motherIndex > fatherIndex){ + pop->individs.erase(pop->individs.begin()+motherIndex); + pop->individs.erase(pop->individs.begin()+fatherIndex); + } + else{ + pop->individs.erase(pop->individs.begin()+fatherIndex); + pop->individs.erase(pop->individs.begin()+motherIndex); + } + + // + if(newIndivids.size() >= Settings::KMaxParameter){ + for(unsigned int i = 0; i < pop->individs.size(); i++){ + delete pop->individs.at(i); + } + pop->individs.clear(); + break; + } + } // (END) for(inds = pop->individs.size();inds >=2; inds -= 2) + + // + pop->individs.insert(pop->individs.begin(), newIndivids.begin(), newIndivids.end()); +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h new file mode 100644 index 0000000..481feef --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h @@ -0,0 +1,8 @@ +#pragma once + +#include "../../../../population/BreedingStrategies/PopulationBreedingStrategy.h" + +class InOutBreedingPopulationBreedingStrategy : public PopulationBreedingStrategy { +public: + virtual void breed(Population* pop); +}; \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreeginGenToPhenStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreeginGenToPhenStrategy.cpp new file mode 100644 index 0000000..f0c2e9e --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreeginGenToPhenStrategy.cpp @@ -0,0 +1,102 @@ +#include "../GenotypeToPhenotypeStrategy.h" +#include "../../../../processor/Settings.h" +#include +#include + +void InOutBreedingGenotypeToPhenotypeStrategy::calculatePhenotype(Individual* individ){ + Genotype* genotype = individ->genotype; + Phenotype* phenotype = individ->phenotype; + InnerSubstratesPool* substrates = individ->substrateCache; + + // Chromosome 1 + Chromosome chr1F = individ->genotype->getFatherGenome().getChromosome(0); + Chromosome chr1M = individ->genotype->getMotherGenome().getChromosome(0); + + const std::vector& genesF = chr1F.getGenesAsVector(); + const std::vector& genesM = chr1M.getGenesAsVector(); + + // + float a1 = genesF.at(0).getGeneValueCont(); + float a2 = genesM.at(0).getGeneValueCont(); + + float b1 = genesF.at(1).getGeneValueCont(); + float b2 = genesM.at(1).getGeneValueCont(); + // (END) + + // + std::vector diseaseAllelesF(4); + std::vector diseaseAllelesM(4); + + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + diseaseAllelesF.at(i) = genesF.at(i+2).getGeneValueCont(); + diseaseAllelesM.at(i) = genesM.at(i+2).getGeneValueCont(); + } + // (END) + + + // + float trait1 = 0, trait2 = 0; + float a, b; + + // 1) + + if(Settings::CoadaptiveGenesInteraction == "onechromosome"){ + // 1.1 + a = a1; + b = b1; + } + else if(Settings::CoadaptiveGenesInteraction == "mean"){ + // 1.2 + a = 0.5f*(a1+a2); + b = 0.5f*(b1+b2); + } + else{ // Settings::CoadaptiveGenesInteraction == "maxmodule" + // 1.3 + a = std::fabs(a1) >= std::fabs(a2) ? a1 : a2; + b = std::fabs(b1) >= std::fabs(b2) ? b1 : b2; + } + + // 1 + trait1 = std::max(a*b - (std::fabs(a*a*a) + std::fabs(b*b*b))/20, 0.0f); + //trait1 = std::max(a*b - (a*a*a*a + b*b*b*b)/250, 0.0f); + + // 2) + if(Settings::DiseaseGenesInteraction == "add1"){ + // 2.1 + float sum1 = 0.0f, sum2 = 0.0f; + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + sum1 += diseaseAllelesF.at(i); + sum2 += diseaseAllelesM.at(i); + } + trait2 = std::max(sum1,sum2); + } + else if(Settings::DiseaseGenesInteraction == "addmax"){ + // 2.1 () + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 += std::max(diseaseAllelesF.at(i), diseaseAllelesM.at(i)); + } + } + else if(Settings::DiseaseGenesInteraction == "mult"){ + // 2.2 + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 *= std::max(diseaseAllelesF.at(i), diseaseAllelesM.at(i)); + } + } + else if(Settings::DiseaseGenesInteraction == "meanadd"){ + // 2.3 () + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 += diseaseAllelesF.at(i) + diseaseAllelesM.at(i); + } + trait2 /= 2.0f; + } + else{// if(Settings::DiseaseGenesInteraction == "meanmult"){ + // 2.3 () + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 *= (diseaseAllelesF.at(i) + diseaseAllelesM.at(i))/2; + } + } + + // + phenotype->traitsMap["coadaptive"].setTraitValue(trait1); + phenotype->traitsMap["disease"].setTraitValue(trait2); +} diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.cpp new file mode 100644 index 0000000..c308add --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.cpp @@ -0,0 +1,54 @@ +#include "KolchShindyalBreedingStrategy.h" +#include "../../../../processor/Settings.h" +#include "../../../Phenotype.h" +#include +#include +#include +#include + +void KolchShindyalBreedingStrategy::breed(Population *_pop){ + // N = const + + srand((unsigned int)time(NULL)); + + // + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + std::sort(pop->individs.begin(), pop->individs.end(), compareOnFitness); + int inds = pop->individs.size(); + + // , SelectionAll + // - + // + float deathRate = 0.01f; //Settings::DeathRate + int toDie = int (inds * deathRate); + std::vector::iterator start = pop->individs.begin(); + std::vector::iterator end = pop->individs.begin()+toDie; + //advance(end,toDie); + for(std::vector::iterator it = start; it != end; it++){ + delete *it; + } + pop->individs.erase(start, end); + + std::cout<<"PopulationBreedingStrategy::breed: "<individs.size(); + srand((unsigned int)time(NULL)); + for(int i = 0; i < toBorn; i++) { + int male = rand() % inds; + int female = rand() % inds; + female = (female != male ? female : (female + 1) % inds); + + Individual* ind = new Individual(*(pop->individs.at(male)), *(pop->individs.at(female))); + // !!! + // .. + pop->individs.push_back(ind); + } + +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h new file mode 100644 index 0000000..fc5c4f3 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h @@ -0,0 +1,8 @@ +#pragma once + +#include "../../../../population/BreedingStrategies/PopulationBreedingStrategy.h" + +class KolchShindyalBreedingStrategy : public PopulationBreedingStrategy { +public: + virtual void breed(Population* pop); +}; \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.cpp new file mode 100644 index 0000000..1b0fdca --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.cpp @@ -0,0 +1,63 @@ +#include "KolchShindyalGenotypeToPhenotypeStrategy.h" +//#include "../GenotypeToPhenotypeStrategy.h" +#include "../../../../processor/Settings.h" +#include + +void KolchShindyalGenotypeToPhenotypeStrategy::calculatePhenotype(Individual* individ){ + Genotype* genotype = individ->genotype; + Phenotype* phenotype = individ->phenotype; + InnerSubstratesPool* substrates = individ->substrateCache; + + // Chromosome 1 + Chromosome chr1F = individ->genotype->getFatherGenome().getChromosome(0); + Chromosome chr1M = individ->genotype->getMotherGenome().getChromosome(0); + + const std::vector& genesF = chr1F.getGenesAsVector(); + const std::vector& genesM = chr1M.getGenesAsVector(); + + // - + float c1m = genesM.at(0).getGeneValueCont(); + float c2m = genesM.at(1).getGeneValueCont(); + float c3m = genesM.at(2).getGeneValueCont(); + float c4m = genesM.at(3).getGeneValueCont(); + float c5m = genesM.at(4).getGeneValueCont(); + float Em = genesM.at(5).getGeneValueCont(); + + float c1f = genesF.at(0).getGeneValueCont(); + float c2f = genesF.at(1).getGeneValueCont(); + float c3f = genesF.at(2).getGeneValueCont(); + float c4f = genesF.at(3).getGeneValueCont(); + float c5f = genesF.at(4).getGeneValueCont(); + float Ef = genesF.at(5).getGeneValueCont(); + + float X = 0; + // +/* + // 1) - + // ) - + int feedBackM = genesM.at(6).getGeneValueDiscr(); + int feedBackF = genesF.at(6).getGeneValueDiscr(); + if( (feedBackF+feedBackM) != 0) { + X = -c2/2 + sqrt( c2*c2/4 + c5*c2/c3*(E+c4)); + } + else{ + X = c1/c3*(E+c4); + } + + // ) - + int feedBackM = genesM.at(6).getGeneValueDiscr(); + int feedBackF = genesF.at(6).getGeneValueDiscr(); + if( (feedBackF+feedBackM) == 2) { + X = -c2/2 + sqrt( c2*c2/4 + c5*c2/c3*(E+c4)); + } + else{ + X = c1/c3*(E+c4); + } + + // 2) +*/ + + + // + phenotype->traitsMap["X"].setTraitValue(X); +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h new file mode 100644 index 0000000..45f9353 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h @@ -0,0 +1,6 @@ +#pragma once +#include "../GenotypeToPhenotypeStrategy.h" +class KolchShindyalGenotypeToPhenotypeStrategy: public GenotypeToPhenotypeStrategy { +public: + virtual void calculatePhenotype(Individual*); +}; \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.cpp new file mode 100644 index 0000000..4327ce6 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.cpp @@ -0,0 +1,14 @@ +#include "KolchShindyalPhenToFitnessStrategy.h" +#define _USE_MATH_DEFINES +#include + +double KolchShindyalPhenToFitnessStrategy::calculateFitness(Phenotype *phen){ + + double X = phen->getTraitByName("X").getTraitValueCont(); + double Xopt = phen->getTraitByName("Xopt").getTraitValueCont(); + double sigmaX = phen->getTraitByName("sigmaX").getTraitValueCont(); + + double ans = 1/(sqrt(2*M_PI)) * exp(-0.5*pow((X-Xopt)/sigmaX,2.)); + + return ans; +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.h new file mode 100644 index 0000000..7514ec9 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.h @@ -0,0 +1,7 @@ +#pragma once +#include "../PhenotypeToFitnessStrategy.h" +#include "../../../Phenotype.h" + +class KolchShindyalPhenToFitnessStrategy : public PhenotypeToFitnessStrategy { + virtual double calculateFitness(Phenotype* phen); +}; diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.cpp b/DEC_GUI/DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.cpp new file mode 100644 index 0000000..cbe2790 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.cpp @@ -0,0 +1,26 @@ +#include "PhenotypeToFitnessStrategy.h" +#include "../../Phenotype.h" +#include "InOutBreeding/InOutBreedingPhenToFitStrategy.h" +#include "KolchShindyal/KolchShindyalPhenToFitnessStrategy.h" +#include + +double PhenotypeToFitnessStrategy::calculateFitness(Phenotype *phen){ + double ans = 0.0; + // + std::map::iterator it; + for(it = phen->traitsMap.begin(); it != phen->traitsMap.end(); it++){ + float trait = it->second.getTraitValueCont(); + ans += trait*trait; + } + return std::pow(ans,0.5); +} + +PhenotypeToFitnessStrategy* PhenotypeToFitnessStrategy::getInstance(std::string name){ + if(name.compare("inoutbreeding") == 0){ + return new InOutBreedingPhenToFitStrategy(); + } + if(name.compare("kolch_shindyal_phen_to_fit") == 0){ + return new KolchShindyalPhenToFitnessStrategy(); + } + return new PhenotypeToFitnessStrategy(); +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.h b/DEC_GUI/DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.h new file mode 100644 index 0000000..ed33910 --- /dev/null +++ b/DEC_GUI/DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.h @@ -0,0 +1,10 @@ +#pragma once +#include + +class Phenotype; + +class PhenotypeToFitnessStrategy { +public: + static PhenotypeToFitnessStrategy* getInstance(std::string); + virtual double calculateFitness(Phenotype* phen); +}; diff --git a/DEC_GUI/DEC-0.0/population/BisexualPopulation.cpp b/DEC_GUI/DEC-0.0/population/BisexualPopulation.cpp new file mode 100644 index 0000000..f0fa27b --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/BisexualPopulation.cpp @@ -0,0 +1,189 @@ +#include "Population.h" +#include +#include +#include +#include +#include + +BisexualPopulation::~BisexualPopulation(){ + // +} +void BisexualPopulation::calculateFitnessAll(){ + // +} + +void BisexualPopulation::breedAll(){ + this->breedingStrategy->breed(this); +} + +void BisexualPopulation::selectionAll(){ + +} + +void BisexualPopulation::mutationAll(){ + // !!! + srand((unsigned int)time(NULL)); + + float mutProb = 1 / 1e+6f; // - + + // + std::list::iterator it; + for(it = this->females.begin(); it != this->females.end(); it++){ + // 2014 + Chromosome chrom = (*it)->genotype->getMotherGenome().getChromosome(0); + std::vector genes = chrom.getGenesAsVector(); + int wholeSeqLength = 0; + for(unsigned int i = 0; i < genes.size(); i++){ + wholeSeqLength += genes.at(i).getSequence().size(); + } + + //std::string seq = (*it)->genotype->getRawGene(0,0,0); // 2013 + int positionToMutate = rand() % (int)(1/mutProb); + if(positionToMutate < wholeSeqLength){ + std::string seq = genes.at(0).getSequence(); + int geneNum = positionToMutate / seq.size(); // 2014 + positionToMutate = positionToMutate % seq.size(); // 2014 + //Gene geneToMutate = genes.at(geneNum); + int nucl = rand() % 3; + switch(seq.c_str()[positionToMutate]){ + case 'A': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'C': + if(nucl == 0) seq.replace(positionToMutate,1,"A"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'G': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"A"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'T': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"A"); + break; + } // (END) switch(...) + (*it)->genotype->doRawMutationSequence(2, 0, geneNum, seq); + } // (END) if (mutate) + } // (END) for + + // !!! -------------------------------- +} + +std::string BisexualPopulation::getSatistics(){ + std::string ans; + return ans; +} + +void BisexualPopulation::putGeneticStatisticsToStream(std::ostream& out){ + out<<"Females\n=======\n"; + int i = 1; + for(std::list::iterator it = females.begin(); it != females.end(); it++){ + + //out<<"> Female seq mitochondrial"<<(i++)<<"\n"; + out<<(*it)->getGenotype().toSimpleFasta()<::iterator it = males.begin(); it != males.end(); it++){ + out<<"> Male seq "<<(i++)<<"\n"; + out<<(*it)->getGenotype().toSimpleFasta()<males.size() + p1->females.size(); + int sizeP2 = p2->males.size() + p2->females.size(); + + int indsP1toP2 = (int) (frac1*sizeP1)/2; + int indsP2toP1 = (int) (frac2*sizeP2)/2; + + // , + std::list malesTemp; + std::list femalesTemp; + + // P1 -> temp + // males + std::list::iterator it1 = p1->males.begin(); + std::list::iterator it2 = it1; + std::advance(it2, indsP1toP2); + malesTemp.splice(malesTemp.begin(), p1->males, it1, it2); + + // females + it1 = p1->females.begin(); + it2 = it1; + std::advance(it2, indsP1toP2); + femalesTemp.splice(femalesTemp.begin(), p1->females, it1, it2); + ///////////////////////////////////////////////////////////// + + // P2 -> P1 + // males + it1 = p2->males.begin(); + it2 = it1; + std::advance(it2, indsP2toP1); + p1->males.splice(p1->males.end(), p2->males, it1, it2); + + // females + it1 = p2->females.begin(); + it2 = it1; + std::advance(it2, indsP2toP1); + p1->females.splice(p1->females.end(), p2->females, it1, it2); + ///////////////////////////////////////////////////////////// + + // temp -> P2 + // males + p2->males.splice(p2->males.end(), malesTemp); + + // females + p2->females.splice(p2->females.end(), femalesTemp); + + ss<<"Migration:\tP1->P2\t"<P1\t"<males.size()); + int femalesFounders = (int) (frac*this->females.size()); + + // , + std::list malesTemp; + std::list femalesTemp; + + // P1 -> temp + // males + std::list::iterator it1 = this->males.begin(); + std::list::iterator it2 = it1; + std::advance(it2, malesFounders); + malesTemp.splice(malesTemp.begin(), this->males, it1, it2); + + // females + it1 = this->females.begin(); + it2 = it1; + std::advance(it2, femalesFounders); + femalesTemp.splice(femalesTemp.begin(), this->females, it1, it2); + ///////////////////////////////////////////////////////////// + + return new BisexualPopulation(malesTemp,femalesTemp, this->breedingStrategy); +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.cpp b/DEC_GUI/DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.cpp new file mode 100644 index 0000000..508697f --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.cpp @@ -0,0 +1,99 @@ +#include "NeutralEvolutionBreedStrat.h" +#include "../../individual/Phenotype.h" +#include "../../processor/Settings.h" +#include +#include +#include +#include + +void NeutralEvolutionBreedingStrategy::breed(Population* _pop){ + + BisexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to BisexualPopulation\n"; + return; + } + + int numMales = pop->males.size(); + int numFemales = pop->females.size(); + int inds = numMales + numFemales; + + srand((unsigned int)time(NULL)); + //srand(0); + // + int toDie = int (inds * deathRate); + for(int i = 0; i < toDie; i++){ + int indToDie = rand() % (inds-i); + if(indToDie < numMales){ + std::list::iterator it = pop->males.begin(); + std::advance(it,indToDie); // it += indToDie; + delete *it; + pop->males.erase(it); + numMales--; + } + else{ + std::list::iterator it = pop->females.begin(); + std::advance(it,indToDie-numMales); // it += indToDie; + delete *it; + pop->females.erase(it); + numFemales--; + } + } + + + //std::cout<<"PopulationBreedingStrategy::breed: "<males.size(); + numFemales = pop->females.size(); + inds = numMales + numFemales; + + for(int i = 0; i < toBorn; i++) { + int fatherNum = rand() % numMales; + int motherNum = rand() % numFemales; + int gender = rand() % 2; + + std::list::iterator itFather = pop->males.begin(); + std::advance(itFather, fatherNum); + std::list::iterator itMother = pop->females.begin(); + std::advance(itMother, motherNum); + + Genotype* genotype; + + double prob = Settings::ProbMtDNARecomb; + if(prob > 0.0){ + int invProb = (int)(1/prob); + int recombine = rand() % invProb; + if(recombine == 0){ + // + //std::cerr<<"Recomb\n"; + ChromosomeRearrangementStrategy* recombinator = RecombinationStrategies::getInstance("dummy"); + HaploidGenotype recombGenotype = recombinator->buildRecombinantGenotype( + (*itFather)->getGenotype().getMotherGenome(), (*itMother)->getGenotype().getMotherGenome()); + genotype = new Genotype(recombGenotype, recombGenotype); + } + else{ + genotype = new Genotype( + (*itMother)->getGenotype().getMotherGenome(), (*itMother)->getGenotype().getMotherGenome()); + } + } + else{ + genotype = new Genotype( + (*itMother)->getGenotype().getMotherGenome(), (*itMother)->getGenotype().getMotherGenome()); + // + } + + + Phenotype* phenotype= new Phenotype((*itFather)->getPhenotype()); + + Individual* ind = new Individual(genotype, phenotype, 0, Individual::Gender(gender)); + // .. + if(gender == 0){ + pop->males.push_back(ind); + } + else{ + pop->females.push_back(ind); + } + } + +} \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.h b/DEC_GUI/DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.h new file mode 100644 index 0000000..184ba9b --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.h @@ -0,0 +1,12 @@ +#pragma once +#include "PopulationBreedingStrategy.h" + +class NeutralEvolutionBreedingStrategy : public PopulationBreedingStrategy { + float birthRate; + float deathRate; +public: + void setBirthRate(float b) {birthRate = b;} + void setDeathRate(float d) {deathRate = d;} + + virtual void breed(Population* pop); +}; diff --git a/DEC_GUI/DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.cpp b/DEC_GUI/DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.cpp new file mode 100644 index 0000000..b94c48e --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.cpp @@ -0,0 +1,71 @@ +#include "PopulationBreedingStrategy.h" +#include "VerhulstBreedingStrategy.h" +#include "NeutralEvolutionBreedStrat.h" +#include "../../individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h" +#include "../../individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h" + +#include "../../processor/Settings.h" +//#include +#include +#include +#include +#include + +void PopulationBreedingStrategy::breed(Population* _pop){ + float deathRate = Settings::NaturalDeathRate;//0.01f; // + + // + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + std::sort(pop->individs.begin(), pop->individs.end(), compareOnFitness); + int inds = pop->individs.size(); + + // , SelectionAll + // - + // + int toDie = int (inds * deathRate); + std::vector::iterator start = pop->individs.begin(); + std::vector::iterator end = pop->individs.begin()+toDie; + //advance(end,toDie); + for(std::vector::iterator it = start; it != end; it++){ + delete *it; + } + pop->individs.erase(start, end); + + std::cout<<"PopulationBreedingStrategy::breed: "<individs.size(); + srand((unsigned int)time(NULL)); + for(int i = 0; i < toBorn; i++) { + int male = rand() % inds; + int female = rand() % inds; + female = (female != male ? female : (female + 1) % inds); + + Individual* ind = new Individual(*(pop->individs.at(male)), *(pop->individs.at(female))); + // .. + pop->individs.push_back(ind); + } + +} + +PopulationBreedingStrategy* PopulationBreedingStrategy::getInstance(std::string name){ + if(name.compare("Verhulst") == 0){ + return new VerhulstBreedingStrategy(); + } + if(name.compare("inoutbreeding") == 0){ + return new InOutBreedingPopulationBreedingStrategy(); + } + if(name.compare("kolchan_shindyal_breeding") == 0){ + return new KolchShindyalBreedingStrategy(); + } + if(name.compare("neutral") == 0){ + return new NeutralEvolutionBreedingStrategy(); + } + return new PopulationBreedingStrategy(); +} diff --git a/DEC_GUI/DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.h b/DEC_GUI/DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.h new file mode 100644 index 0000000..de7e1af --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.h @@ -0,0 +1,10 @@ +#pragma once +#include "../Population.h" + +class Population; + +class PopulationBreedingStrategy { +public: + virtual void breed(Population* pop); + static PopulationBreedingStrategy* getInstance(std::string name); +}; diff --git a/DEC_GUI/DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.cpp b/DEC_GUI/DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.cpp new file mode 100644 index 0000000..657a956 --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.cpp @@ -0,0 +1,52 @@ +#include "VerhulstBreedingStrategy.h" +#include "../../processor/Settings.h" +#include +#include +#include +#include + +void VerhulstBreedingStrategy::breed(Population *_pop) { + // + // rX * (1 - X/K) = rX - (r/K)X^2 + + double birthRate = Settings::BirthRate;// 0.03; + double r = 1 + birthRate; + double K = _pop->region->getCapacity(); + + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + + long int inds = pop->individs.size(); + long int toDie = (long int) inds*inds * r/K + 0.5; // 0.5 - - + long int toBorn = (long int) inds*birthRate + 0.5; // + + // , + // - , + + // + std::sort(pop->individs.begin(), pop->individs.end(), compareOnFitness); + std::vector::iterator start = pop->individs.begin(); + std::vector::iterator end = pop->individs.begin()+toDie; + for(std::vector::iterator it = start; it != end; it++){ + delete *it; + } + pop->individs.erase(start, end); + std::cout<<"VerhulstBreedingStrategy::breed: "<individs.size(); + srand((unsigned int)time(NULL)); + for(long int i = 0; i < toBorn; i++) { + int male = rand() % inds; + int female = rand() % inds; + female = (female != male ? female : (female + 1) % inds); + + Individual* ind = new Individual(*(pop->individs.at(male)), *(pop->individs.at(female))); + // .. + pop->individs.push_back(ind); + } + +} diff --git a/DEC_GUI/DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.h b/DEC_GUI/DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.h new file mode 100644 index 0000000..40c70d0 --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.h @@ -0,0 +1,7 @@ +#pragma once +#include "PopulationBreedingStrategy.h" + +class VerhulstBreedingStrategy : public PopulationBreedingStrategy { +public: + virtual void breed(Population* pop); +}; \ No newline at end of file diff --git a/DEC_GUI/DEC-0.0/population/Population.cpp b/DEC_GUI/DEC-0.0/population/Population.cpp new file mode 100644 index 0000000..3c29533 --- /dev/null +++ b/DEC_GUI/DEC-0.0/population/Population.cpp @@ -0,0 +1,162 @@ +#include "Population.h" +#include "../individual/Phenotype.h" +#include "DEC-0.0/processor/Processor.h" +#include +#include +#include + +AsexualPopulation::~AsexualPopulation(){ + // TODO : +} +AsexualPopulation::AsexualPopulation(int size, PopulationBreedingStrategy* _strategy) : + Population(_strategy), individs(size/*, 0*/) +{ + + srand(0); + int RANGE = 1000; + float gValue; + + // + for(int i = 0; i < size; i++){ + // + std::vector fGenome; + std::vector mGenome; + + // + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneF1(Gene::Continious, "X", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneF2(Gene::Continious, "Y", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneF3(Gene::Continious, "Z", gValue); + + Chromosome chromF("Chrom 1"); // + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + + + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneM1(Gene::Continious, "X", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneM2(Gene::Continious, "Y", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneM3(Gene::Continious, "Z", gValue); + + Chromosome chromM("Chrom 1"); // + chromM.insertGeneToEnd(geneM1); + chromM.insertGeneToEnd(geneM2); + chromM.insertGeneToEnd(geneM3); + + fGenome.push_back(chromF); + mGenome.push_back(chromM); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "X", 0.0f); + Trait trait2(Trait::Continious, "Y", 0.0f); + Trait trait3(Trait::Continious, "Z", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + phenotype->addTrait(trait3); + // (END) + + // + InnerSubstratesPool* subPool = 0; + // (END) + + this->individs.at(i) = new Individual(genotype, phenotype, subPool, Individual::hermaphrodite, 0); + } // (END) for(int i = 0; i < size; i++) +} + +void AsexualPopulation::calculateFitnessAll(){ + for(unsigned int i = 0; i < this->individs.size(); i++){ + this->individs.at(i)->calculateFitness(); + } +} + + + +void AsexualPopulation::breedAll(){ + this->breedingStrategy->breed(this); +} + +void AsexualPopulation::selectionAll(){ + // + // breedAll +} + +void AsexualPopulation::mutationAll(){ + +} + +void AsexualPopulation::setRegion(Region *_region){ + this->region = _region; + for(unsigned int i = 0; i < this->individs.size(); i++){ + this->individs.at(i)->setRegion(_region); + } +} + +std::string AsexualPopulation::getSatistics(){ + std::stringstream ans; + long int pSize = this->individs.size(); + ans<<"Population size\t"<individs.at(i)->getFitness(); + best = fitness > best ? fitness : best; + worst= fitness < worst? fitness : worst; + totalFitness += fitness; + } + ans<<"Average fitness\t"<<(totalFitness/pSize); + ans<<"\tBest\t"<<(best); + ans<<"\tWorst\t"<<(worst); + return ans.str(); +} + +void AsexualPopulation::putGeneticStatisticsToStream(std::ostream &out){ + + out<<"Population size:\t"<individs.size()<individs.begin(),this->individs.end()); + //std::cout << "lol" << std::endl; + for(unsigned int i = 0; i < this->individs.size(); i++){ +// out<<(i+1)<<"\t"; +// out<<"Fitness:\t"<<(this->individs.at(i)->getFitness()); +// out<<"\t"; +// out<<"Genotype:\t"<<(this->individs.at(i)->getGenotype()); +// out<<"\t"; +// out<<"Phenotype:\t"<<(this->individs.at(i)->getPhenotype()); +// out<individs.at(i)->getGenotype()); + } +} + +void AsexualPopulation::putGeneticSimpleStatisticsToStream(std::ostream &out){ + for(unsigned int i = 0; i < this->individs.size(); i++){ + out<<(i+1)<<"\t"<<(this->individs.at(i)->getFitness()); + out<<"\t"<<(this->individs.at(i)->getGenotype().toSimpleString()); + //out<<"\t"; + out<<(this->individs.at(i)->getPhenotype().toSimpleString()); + out<individs.size(); i++){ + out<<(i+1)<<"\t"<<(this->individs.at(i)->getFitness()); + out<<"\t"<<(this->individs.at(i)->getGenotype().toMaxModuleAB()); + //out<<"\t"; + //out<<(this->individs.at(i)->getPhenotype().toSimpleString()); + out< +#include +#include "../individual/AbstractIndividual.h" +#include "BreedingStrategies/PopulationBreedingStrategy.h" +#include "../environment/AbstractEnvironment.h" + + +class PopulationBreedingStrategy; + +class Population { + friend class PopulationBreedingStrategy; + friend class VerhulstBreedingStrategy; +protected: + PopulationBreedingStrategy* breedingStrategy; + Region* region; +public: + Population(PopulationBreedingStrategy* _strategy) : breedingStrategy(_strategy){} + virtual ~Population() {}; + virtual void setBreedingStrategy(PopulationBreedingStrategy* _strategy) { breedingStrategy = _strategy;} + virtual void setRegion(Region* _region) { region = _region;} + virtual void calculateFitnessAll() = 0; + virtual void breedAll() = 0; + virtual void selectionAll() = 0; + virtual void mutationAll() = 0; + virtual std::string getSatistics() = 0; + virtual void putGeneticStatisticsToStream(std::ostream& out) = 0; + virtual void putGeneticSimpleStatisticsToStream(std::ostream& out) = 0; + virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out) = 0; +}; + +class AsexualPopulation : public Population { + friend class PopulationBreedingStrategy; + friend class VerhulstBreedingStrategy; + friend class InOutBreedingPopulationBreedingStrategy; + friend class KolchShindyalBreedingStrategy; + friend class Processor; +protected: + std::vector individs; + +public: + AsexualPopulation(const std::vector& _inds, PopulationBreedingStrategy* _strategy = 0) : Population(_strategy), individs(_inds) {}; + AsexualPopulation(int size, PopulationBreedingStrategy* _strategy = 0); + virtual ~AsexualPopulation(); + + virtual void setRegion(Region* _region); + virtual void calculateFitnessAll(); + virtual void breedAll(); + virtual void selectionAll(); + virtual void mutationAll(); + virtual std::string getSatistics(); + virtual void putGeneticStatisticsToStream(std::ostream& out); + virtual void putGeneticSimpleStatisticsToStream(std::ostream& out); + virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out); +}; + +////////////////////////////////////////////// +////////////////////////////////////////////// +////////////////////////////////////////////// +class BisexualPopulation : public Population { + friend class NeutralEvolutionBreedingStrategy; + friend class DerevyankoReport2014; + friend class DerevyankoReport; + friend class Settings; + friend class DerRep2014Window; + friend class DerRepRFBR2013window; +protected: + std::list males; + std::list females; +public: + BisexualPopulation(const std::list& _males, + const std::list& _females, PopulationBreedingStrategy* _strategy = 0) : + Population(_strategy), males(_males), females(_females) {} + + virtual ~BisexualPopulation(); + + //virtual void setRegion(Region* _region); + virtual void calculateFitnessAll(); + virtual void breedAll(); + virtual void selectionAll(); + virtual void mutationAll(); + virtual std::string getSatistics(); + virtual void putGeneticStatisticsToStream(std::ostream& out); + virtual void putGeneticSimpleStatisticsToStream(std::ostream& out); + virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out); + + // - + static std::string mutualMigration(BisexualPopulation* p1, BisexualPopulation* p2, float frac1, float frac2 = -1.f); + BisexualPopulation* createSubpopulation(float frac); +}; diff --git a/DEC_GUI/DEC-0.0/processor/KolchShindyalov.cpp b/DEC_GUI/DEC-0.0/processor/KolchShindyalov.cpp new file mode 100644 index 0000000..1942b93 --- /dev/null +++ b/DEC_GUI/DEC-0.0/processor/KolchShindyalov.cpp @@ -0,0 +1,127 @@ +#include "Settings.h" +#include "../population/Population.h" +#include "../individual/Phenotype.h" +#include "../individual/genome/strategies/GenotypeToPhenotypeStrategy.h" +#include +#include +#include +#include +#include +#include "KolchShindyalov.h" + +void KolchShindyalov::test01(){ + std::ofstream statFile("statFile.txt"); + std::string stat; + std::cout << "Kolch" << std::endl; + // + int maxGenerations = Settings::Iterations; + long initPopSize = Settings::InitPopSize; + float ratioBetweenPops = Settings::InitRatioBetweenPops; + long int maxIndivids = Settings::KMaxParameter; + + Position3D position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + qsrand(0); + int RANGE = 1000; + int PRECISION = 10; + float gValue; + + std::vector individs; + + // + for(int i = 0; i < initPopSize; i++){ + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + //float gValue + // + RANGE = 10; + gValue = -(float)(qrand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "C1", gValue); + gValue = -(float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "C2", gValue); + + PRECISION=1; + RANGE = 2; + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF3(Gene::Continious, "C3", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF4(Gene::Continious, "C4", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF5(Gene::Continious, "C5", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF6(Gene::Continious, "E", gValue); + gValue = rand()%2; + Gene geneF7(Gene::Discrete,"Feedback", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + chromF.insertGeneToEnd(geneF7); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "X", 10.0f); + Trait trait2(Trait::Continious, "Xopt", 10.0f); + Trait trait3(Trait::Continious, "sigmaX", 3.0f); + + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + phenotype->addTrait(trait3); + // (END) + + Individual* newInd = new Individual(genotype, phenotype, 0, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("kolchan_shindyal_gen_to_phen")); + newInd->setPhenToFitnessStrategy(PhenotypeToFitnessStrategy::getInstance("kolch_shindyal_phen_to_fit")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + AsexualPopulation population(individs); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance("kolchan_shindyal_breeding")); + population.setRegion(®ion); + // (END) + + // + for(int i = 0; i < maxGenerations; i++){ + // + population.breedAll(); + //--- --- + stat = population.getSatistics(); + statFile< +#include +#include +#include +#include +#include +#include + +AsexualPopulation* Processor::popul; +//std::vector Processor::individs; + +void Processor::test(/*int initPSize, int steps*/){ + std::ofstream statFile("statFile.txt"); + std::string stat; + + // + int maxGenerations = Settings::Iterations; + int initPopSize = Settings::InitPopSize; + + AsexualPopulation population(initPopSize); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance(Settings::BreedingStrategy)); + + // + for(int i = 0; i < maxGenerations; i++){ + // ( ) + + // + population.calculateFitnessAll(); + + // + population.breedAll(); + + // + population.mutationAll(); + + // ( ) + + // ( ..) + population.selectionAll(); + + //--- --- + stat = population.getSatistics(); + statFile< position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + AsexualPopulation population(initPopSize); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance(Settings::BreedingStrategy)); + population.setRegion(®ion); + + // + for(int i = 0; i < maxGenerations; i++){ + // ( ) + + // + population.calculateFitnessAll(); + + // + population.breedAll(); + + // + population.mutationAll(); + + // ( ) + + // ( ..) + population.selectionAll(); + + //--- --- + stat = population.getSatistics(); + statFile< position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + + qsrand(0); + int RANGE = 1000; + int PRECISION = 10; + float gValue; + + std::vector individs; + // + for(int i = 0; i < maxIndivids/2; i++){ + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + // + RANGE = 10; + gValue = (float)(qrand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "A coadaptive", gValue); + gValue = (float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "B coadaptive", gValue); + + RANGE = 2; + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF3(Gene::Continious, "C disease", gValue); + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF4(Gene::Continious, "D disease", gValue); + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF5(Gene::Continious, "E disease", gValue); + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF6(Gene::Continious, "F disease", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "coadaptive", 0.0f); + Trait trait2(Trait::Continious, "disease", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + // (END) + + // + InnerSubstratesPool* subPool = 0; + // (END) + + Individual* newInd = new Individual(genotype, phenotype, subPool, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("inoutbreeding")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + AsexualPopulation population(individs); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance("inoutbreeding")); + population.setRegion(®ion); + // (END) + + // + for(int i = 0; i < maxGenerations; i++){ + // + population.breedAll(); + //--- --- + stat = population.getSatistics(); + statFile< mGenes; + QVector fGenes; + std::cout << "in fill" << std::endl; + for(unsigned int i = 0; i < g.fatherGenome.chromosomes.size(); i++) + { + + std::cout <<"ch"<<(i+1)<<":"; + const std::vector genesF = g.fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = g.motherGenome.chromosomes.at(i).getGenesAsVector(); + std::cout << "i11111" << std::endl; + Settings::geneName.clear(); + for(unsigned int j = 0; j < genesF.size(); j++){ + //std::cout<<"\t"; + std::cout< mGenes; + QVector fGenes; + for(unsigned int i = 0; i < g->fatherGenome.chromosomes.size(); i++) + { + + //std::cout <<"ch"<<(i+1)<<":"; + const std::vector genesF = g->fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = g->motherGenome.chromosomes.at(i).getGenesAsVector(); + Settings::geneName.clear(); + for(unsigned int j = 0; j < genesF.size(); j++){ + //std::cout<<"\t"; + //std::cout<breedAll(); + } + //Settings::malesGene.clear(); + //Settings::femalesGene.clear(); + + std::stringstream ss; + + //ss<<"generation."<<(i)<<".xls"; + + std::ofstream genFile(ss.str().c_str()); + + popul->putGeneticStatisticsToStream(genFile); +// for(int i = 0; i < 10; i++) +// { + +// std::cout << Processor::individs.at(i)->getGenotype() << std::endl; +// fillVectors(individs.at(i)->getGenotype()); +// } +} + +///////////////////////////////////////////////////// +void Processor::testInOutBreeding02(){ + std::ofstream statFile("statFile.txt"); + std::string stat; + + // + int maxGenerations = Settings::Iterations; + long initPopSize = Settings::InitPopSize; + float ratioBetweenPops = Settings::InitRatioBetweenPops; + long int maxIndivids = Settings::KMaxParameter; + + Position3D position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + qsrand(0); + int RANGE = 1000; + int PRECISION = 10; + float gValue; + + std::vector individs; + // - 1 + for(int i = 0; i < initPopSize*ratioBetweenPops; i++){ + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + // + RANGE = 10; + gValue = (float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "A coadaptive", gValue); + gValue = (float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "B coadaptive", gValue); + + RANGE = 2; + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF3(Gene::Continious, "C disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF4(Gene::Continious, "D disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF5(Gene::Continious, "E disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF6(Gene::Continious, "F disease", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "coadaptive", 0.0f); + Trait trait2(Trait::Continious, "disease", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + // (END) + + Individual* newInd = new Individual(genotype, phenotype, 0, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("inoutbreeding")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + // - 2 + for(int i = 0; i < initPopSize; i++){ + //std::cout << i << std::endl; + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + // + RANGE = 10; + gValue = -(float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "A coadaptive", gValue); + gValue = -(float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "B coadaptive", gValue); + + PRECISION=1; + RANGE = 2; + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF3(Gene::Continious, "C disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF4(Gene::Continious, "D disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF5(Gene::Continious, "E disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF6(Gene::Continious, "F disease", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + fillVectors(genotype); + // + Trait trait1(Trait::Continious, "coadaptive", 0.0f); + Trait trait2(Trait::Continious, "disease", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + // (END) + + Individual* newInd = new Individual(genotype, phenotype, 0, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("inoutbreeding")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + //popul = new AsexualPopulation(Processor::individs); + AsexualPopulation population(individs); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance("inoutbreeding")); + population.setRegion(®ion); + // (END) + + // + for(int i = 0; i < maxGenerations; i++){ + // + population.breedAll(); +// std::stringstream ss; +// std::ofstream genFile(ss.str().c_str()); +// population.putGeneticStatisticsToStream(genFile); + //--- --- + stat = population.getSatistics(); + statFile<getGenotype()); +// std::cout <<"iterate after " << i << std::endl; +// } + +} diff --git a/DEC_GUI/DEC-0.0/processor/Processor.h b/DEC_GUI/DEC-0.0/processor/Processor.h new file mode 100644 index 0000000..28b5505 --- /dev/null +++ b/DEC_GUI/DEC-0.0/processor/Processor.h @@ -0,0 +1,19 @@ +#pragma once +#include "DEC-0.0/individual/genome/AbstractGenome.h" +#include "../population/Population.h" + +class Processor{ + +public: + static void test(/*int, int*/); + static void test01(/*int, int*/); + + static void testInOutBreeding01(); + static void testInOutBreeding02(); + static void fillVectors(Genotype *g); + static void fillVectors(const Genotype& g); + static void evolution(int generations); + + static AsexualPopulation* popul; + static std::vector individs; +}; diff --git a/DEC_GUI/DEC-0.0/processor/Settings.cpp b/DEC_GUI/DEC-0.0/processor/Settings.cpp new file mode 100644 index 0000000..c83b750 --- /dev/null +++ b/DEC_GUI/DEC-0.0/processor/Settings.cpp @@ -0,0 +1,228 @@ +#include "Settings.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef LINUX +#define sscanf_s sscanf +#endif + +#define sscanf_s sscanf + +// Default parameters +bool Settings::WRITE_FULL_STATISTICS_TO_FILE = false; + +int Settings::Iterations = 10; +long int Settings::InitPopSize = 10; +float Settings::InitRatioBetweenPops = 1.f; + + +double Settings::BirthRate = 0.01; +double Settings::NaturalDeathRate = 0.01; + +long int Settings::KMaxParameter = 10000; + +int Settings::OffspringsMean = 3; +float Settings::CoadaptiveThreshold = 0; +float Settings::CoadaptiveMinimumP = 0.2f; +float Settings::CoadaptiveMaximumTrait = 15.f; + +float Settings::DiseaseThreshold = 1; +std::string Settings::CoadaptiveGenesInteraction = "onechromosome"; +std::string Settings::DiseaseGenesInteraction = "add"; + + +std::string Settings::BreedingStrategy = "default"; +std::string Settings::GenToPhenStrategy = "default"; +std::string Settings::PhenToFitStrategy = "default"; +std::string Settings::RecombinationStrategy = "default"; + +double Settings::ProbMtDNARecomb = 0.0; +int Settings::PopulationHomoInitSize = 1000; +int Settings::PopulationAncientInitSize = 1000; +double Settings::migrationPartHomoToAncient = 0.1; +double Settings::migrationPartAncientToHomo = 0.1; +int Settings::generationsPerMigration = 100; +int Settings::locusLength = 60; +double Settings::percentDiffLoci = 0.1; +int Settings::numLoci = 50; +// (END) Default parameters +int Settings::globalGenerations; +int Settings::maxYval; +int Settings::minYval; +QVector Settings::homoCommonSize; +QVector Settings::homoFemaleSize; +QVector Settings::homoMaleSize; +QVector Settings::ancientCommonSize; +QVector Settings::ancientFemaleSize; +QVector Settings::ancientMaleSize; +QVector Settings::generations; + +std::vector Settings::initMtDNA; +std::vector Settings::initMtDNA_ancient; +std::vector Settings::calcScript; + +QVector > Settings::malesGene; +QVector > Settings::femalesGene; +QVector Settings::geneName; + + +void Settings::initGUIvect() +{ +// Settings::globalGenerations = 1; +// Settings::maxYval = 0; +// Settings::minYval = 0; +// Settings::homoCommonSize.clear(); +// Settings::homoFemaleSize.clear(); +// Settings::homoMaleSize.clear(); +// Settings::ancientCommonSize.clear(); +// Settings::ancientFemaleSize.clear(); +// Settings::ancientMaleSize.clear(); +// Settings::generations.clear(); + +// Settings::initMtDNA.clear(); +// Settings::initMtDNA_ancient.clear(); +// Settings::calcScript.clear(); + + Settings::generations.push_back(0); + + Settings::homoCommonSize.push_back(Settings::PopulationHomoInitSize); + Settings::homoFemaleSize.push_back(Settings::PopulationHomoInitSize / 2); + Settings::homoMaleSize.push_back(Settings::PopulationHomoInitSize / 2); + Settings::ancientCommonSize.push_back(Settings::PopulationAncientInitSize); + Settings::ancientFemaleSize.push_back(Settings::PopulationAncientInitSize / 2); + Settings::ancientMaleSize.push_back(Settings::PopulationAncientInitSize / 2); +} + +void Settings::fillVectors(BisexualPopulation* pop_Sapiens, BisexualPopulation* pop_Ancient) +{ + Settings::globalGenerations++; + Settings::generations.push_back(Settings::globalGenerations); + Settings::ancientCommonSize.push_back(pop_Ancient->females.size() + pop_Ancient->males.size()); + Settings::homoCommonSize.push_back(pop_Sapiens->females.size() + pop_Sapiens->males.size()); + Settings::ancientMaleSize.push_back(pop_Ancient->males.size()); + Settings::ancientFemaleSize.push_back(pop_Ancient->females.size()); + Settings::homoMaleSize.push_back(pop_Sapiens->males.size()); + Settings::homoFemaleSize.push_back(pop_Sapiens->females.size()); + Settings::maxYval = qMax(pop_Ancient->females.size() + pop_Ancient->males.size(), pop_Sapiens->females.size() + pop_Sapiens->males.size()); + Settings::minYval = qMin(pop_Ancient->females.size() + pop_Ancient->males.size(), pop_Sapiens->females.size() + pop_Sapiens->males.size()); +} + +void Settings::initScript(std::string fileName){ + std::vector script; + std::ifstream file(fileName.c_str()); + std::string str; + + while(getline(file,str)){ + if(str.length() > 2) + script.push_back(str); + } + file.close(); + + // process Script + unsigned int curLine; + for(curLine = 0; curLine < script.size(); curLine++){ + if(script.at(curLine).at(0) == '/' || script.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, script.at(curLine), boost::is_any_of("=") ); + + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + if(instr == "fullstat"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::WRITE_FULL_STATISTICS_TO_FILE = true; + } + else if(instr == "generations" || instr == "iterations" ){ + int iter = Settings::Iterations; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + Settings::Iterations = iter; + } + else if(instr == "initpopsize" || instr == "init_pop_size" || instr == "popsize" ){ + long int size = Settings::InitPopSize; + sscanf_s(tokensVector.at(1).c_str(),"%ld", &size); + Settings::InitPopSize = size; + } + else if(instr == "initratio" || instr == "init_ratio" || instr == "init_ratio_between_pop_size" ){ + float size = Settings::InitRatioBetweenPops; + sscanf_s(tokensVector.at(1).c_str(),"%f", &size); + Settings::InitRatioBetweenPops = size; + } + else if(instr == "birth" || instr == "birthrate" || instr == "birth_rate" ){ + double rate = Settings::BirthRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::BirthRate = rate; + } + else if(instr == "death" || instr == "deathrate" || instr == "death_rate" ){ + double rate = Settings::NaturalDeathRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::NaturalDeathRate = rate; + } + else if(instr == "kmax"){ + long int kMax = Settings::KMaxParameter; + sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + Settings::KMaxParameter = kMax; + } + else if(instr == "offsprings" || instr == "offsprings_mean" ){ + int offsprings = Settings::OffspringsMean; + sscanf_s(tokensVector.at(1).c_str(),"%d", &offsprings); + Settings::OffspringsMean = offsprings; + } + else if(instr == "coadaptivet" || instr == "coadaptive_threshold" ){ + float coadaptive = Settings::CoadaptiveThreshold; + sscanf_s(tokensVector.at(1).c_str(),"%f", &coadaptive); + Settings::CoadaptiveThreshold = coadaptive; + } + else if(instr == "coadaptivemax" || instr == "coadaptive_maximum_trait" ){ + float coadaptive = Settings::CoadaptiveMaximumTrait; + sscanf_s(tokensVector.at(1).c_str(),"%f", &coadaptive); + Settings::CoadaptiveMaximumTrait = coadaptive; + } + else if(instr == "coadaptivemin" || instr == "coadaptive_minimum_p" ){ + float coadaptive = Settings::CoadaptiveMinimumP; + sscanf_s(tokensVector.at(1).c_str(),"%f", &coadaptive); + Settings::CoadaptiveMinimumP = coadaptive; + } + else if(instr == "diseaset" || instr == "disease_threshold" ){ + float disease = Settings::DiseaseThreshold; + sscanf_s(tokensVector.at(1).c_str(),"%f", &disease); + Settings::DiseaseThreshold = disease; + } + else if(instr == "coadaptivegenesinteract" || instr == "cgi"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string cgi = tokensVector.at(1); + boost::to_lower(cgi); + boost::trim(cgi); + Settings::CoadaptiveGenesInteraction = cgi; + } + else if(instr == "diseasegenesinteract" || instr == "dgi"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string dgi = tokensVector.at(1); + boost::to_lower(dgi); + boost::trim(dgi); + Settings::DiseaseGenesInteraction = dgi; + } + //***************************** + else if(instr == "breedings"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string strategy = tokensVector.at(1); + boost::to_lower(strategy); + boost::trim(strategy); + Settings::BreedingStrategy = strategy; + } + } // (END) for(curLine = 0; curLine < script.size(); curLine++) +} diff --git a/DEC_GUI/DEC-0.0/processor/Settings.h b/DEC_GUI/DEC-0.0/processor/Settings.h new file mode 100644 index 0000000..b9e7793 --- /dev/null +++ b/DEC_GUI/DEC-0.0/processor/Settings.h @@ -0,0 +1,69 @@ +#pragma once +#include +#include +#include "DEC-0.0/population/Population.h" + +class Settings { +public: + static bool WRITE_FULL_STATISTICS_TO_FILE; + + static int Iterations; + static long int InitPopSize; + static float InitRatioBetweenPops; + + // Common breeding strategies parameters + static double BirthRate; + static double NaturalDeathRate; + + // Verhulst breeding strategy default parameters + static long int KMaxParameter; // r*X*(1 - X/KMax) + + // Inbreeding/Outbreeding model parameters + static int OffspringsMean; + static float CoadaptiveThreshold; + static float CoadaptiveMinimumP; + static float CoadaptiveMaximumTrait; + static float DiseaseThreshold; + static std::string CoadaptiveGenesInteraction; + static std::string DiseaseGenesInteraction; + + static std::string BreedingStrategy; + static std::string GenToPhenStrategy; + static std::string PhenToFitStrategy; + static std::string RecombinationStrategy; + + static double ProbMtDNARecomb; + static int PopulationHomoInitSize; + static int PopulationAncientInitSize; + static double migrationPartHomoToAncient; + static double migrationPartAncientToHomo; + static int generationsPerMigration; + static int locusLength; + static double percentDiffLoci; + static int numLoci; + + static QVector generations; + static QVector ancientCommonSize; + static QVector homoCommonSize; + static QVector ancientMaleSize; + static QVector ancientFemaleSize; + static QVector homoMaleSize; + static QVector homoFemaleSize; + static int globalGenerations; + static int maxYval; + static int minYval; + + static std::vector initMtDNA; + static std::vector initMtDNA_ancient; + static std::vector calcScript; + + static QVector > malesGene; + static QVector > femalesGene; + static QVector geneName; + + +public: + static void initScript(std::string fileName); + static void initGUIvect(); + static void fillVectors(BisexualPopulation* pop_Sapiens, BisexualPopulation* pop_Ancient); +}; diff --git a/DEC_GUI/DEC-0.0/script.txt b/DEC_GUI/DEC-0.0/script.txt new file mode 100644 index 0000000..90d9a6f --- /dev/null +++ b/DEC_GUI/DEC-0.0/script.txt @@ -0,0 +1,44 @@ +## : ## : // + +## + +// +pop_homo_init = 5000 + +// / +pop_ancient_init = 5000 + +// +generations_per_migration = 100 + +// +migr_homo_ancient_ratio = 0.1 + +// +migr_ancient_homo_ratio = 0.1 + +// +// +birthrate = 0.1 +// +deathrate = 0.095 +// +num_loci = 50 +// +percent_diff_loci = 0.1 + +model_start +## +// , +evolution = 200 + +// , generations_per_migration +// +// migr_homo_ancient_ratio migr_ancient_homo_ratio ( ) +evolution_m = 1000 + +// 20% , 30% +migration = 0.2 0.3 + +evolution = 1000 +// \ No newline at end of file diff --git a/DEC_GUI/DEC_GUI.pro b/DEC_GUI/DEC_GUI.pro new file mode 100644 index 0000000..21d4109 --- /dev/null +++ b/DEC_GUI/DEC_GUI.pro @@ -0,0 +1,147 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2014-12-16T10:44:35 +# +#------------------------------------------------- + +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport + +TARGET = DEC_GUI +TEMPLATE = app +DEFINES -= UNICODE DEFINES += _MBCS DEFINES += BOOST_SYSTEM_USE_LIB DEFINES += BOOST_FILESYSTEM_USE_LIB + + +INCLUDEPATH += C:/Data/boost_1_55_0 +LIBPATH += C:/Data/boost_1_55_0/stage/lib + +LIBS += -lboost_filesystem-mgw48-mt-s-1_55 -lboost_system-mgw48-mt-s-1_55 + + +SOURCES += main.cpp\ + mainwindow.cpp \ + DEC-0.0/DerevyankoReport.cpp \ + DEC-0.0/DerevyankoReport2014.cpp \ + DEC-0.0/environment/Environment.cpp \ + DEC-0.0/environment/Region.cpp \ + DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.cpp \ + DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.cpp \ + DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreeginGenToPhenStrategy.cpp \ + DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.cpp \ + DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.cpp \ + DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.cpp \ + DEC-0.0/individual/genome/strategies/ChromosomeRearrangementStrategy.cpp \ + DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.cpp \ + DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.cpp \ + DEC-0.0/individual/genome/Chromosome.cpp \ + DEC-0.0/individual/genome/Gene.cpp \ + DEC-0.0/individual/genome/Genotype.cpp \ + DEC-0.0/individual/Individual.cpp \ + DEC-0.0/individual/InnerSubstratesPool.cpp \ + DEC-0.0/individual/Phenotype.cpp \ + DEC-0.0/individual/Trait.cpp \ + DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.cpp \ + DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.cpp \ + DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.cpp \ + DEC-0.0/population/BisexualPopulation.cpp \ + DEC-0.0/population/Population.cpp \ + DEC-0.0/processor/KolchShindyalov.cpp \ + DEC-0.0/processor/Processor.cpp \ + DEC-0.0/processor/Settings.cpp \ + createdialogs.cpp \ + Kolch_Shind/createrangedialog.cpp \ + Kolch_Shind/history.cpp \ + Kolch_Shind/Individ.cpp \ + Kolch_Shind/paintqwidget.cpp \ + Kolch_Shind/qcustomplot.cpp \ + Kolch_Shind/solver.cpp \ + kolchshindwindow.cpp \ + Agressor/agent.cpp \ + Agressor/agentitem.cpp \ + Agressor/aphistory.cpp \ + Agressor/manager.cpp \ + Agressor/manageritem.cpp \ + Agressor/model.cpp \ + derrep2014window.cpp \ + derrep2014qplot.cpp \ + derreprfbr2013window.cpp \ + breedingwindow.cpp \ + derrep2013qplot.cpp \ + breedqplot.cpp + + +HEADERS += mainwindow.h \ + DEC-0.0/DerevyankoReport.h \ + DEC-0.0/DerevyankoReport2014.h \ + DEC-0.0/environment/AbstractEnvironment.h \ + DEC-0.0/environment/AbstractRegion.h \ + DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.h \ + DEC-0.0/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h \ + DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h \ + DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h \ + DEC-0.0/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.h \ + DEC-0.0/individual/genome/strategies/ChromosomeRearrangementStrategy.h \ + DEC-0.0/individual/genome/strategies/GenotypeToPhenotypeStrategy.h \ + DEC-0.0/individual/genome/strategies/PhenotypeToFitnessStrategy.h \ + DEC-0.0/individual/genome/AbstractGenome.h \ + DEC-0.0/individual/genome/Chromosome.h \ + DEC-0.0/individual/genome/Gene.h \ + DEC-0.0/individual/AbstractIndividual.h \ + DEC-0.0/individual/InnerSubstratesPool.h \ + DEC-0.0/individual/Phenotype.h \ + DEC-0.0/individual/Trait.h \ + DEC-0.0/population/BreedingStrategies/NeutralEvolutionBreedStrat.h \ + DEC-0.0/population/BreedingStrategies/PopulationBreedingStrategy.h \ + DEC-0.0/population/BreedingStrategies/VerhulstBreedingStrategy.h \ + DEC-0.0/population/Population.h \ + DEC-0.0/processor/KolchShindyalov.h \ + DEC-0.0/processor/Processor.h \ + DEC-0.0/processor/Settings.h \ + createdialogs.h \ + Kolch_Shind/constants.h \ + Kolch_Shind/createrangedialog.h \ + Kolch_Shind/history.h \ + Kolch_Shind/Individ.h \ + Kolch_Shind/paintqwidget.h \ + Kolch_Shind/qcustomplot.h \ + Kolch_Shind/solver.h \ + kolchshindwindow.h \ + Agressor/agent.h \ + Agressor/agentitem.h \ + Agressor/aphistory.h \ + Agressor/manager.h \ + Agressor/manageritem.h \ + Agressor/model.h \ + derrep2014window.h \ + derrep2014qplot.h \ + derreprfbr2013window.h \ + breedingwindow.h \ + derrep2013qplot.h \ + breedqplot.h + + +FORMS += mainwindow.ui \ + kolchshindwindow.ui \ + derrep2014window.ui \ + derreprfbr2013window.ui \ + breedingwindow.ui + +OTHER_FILES += \ + DEC-0.0/1.xls \ + DEC-0.0/DEC-0.0.vcproj \ + DEC-0.0/DEC-0.0.vcproj.NEPTUNE.lashin.user \ + DEC-0.0/DEC-0.0.vcproj.neptune2010.lashin.user \ + DEC-0.0/DEC-0.0.vcproj.ROCKWOOD.Family.user \ + DEC-0.0/DEC-0.0.vcproj.Rockwood.rock.user \ + DEC-0.0/DEC-0.0.vcproj.rockwood.Sergey.user \ + DEC-0.0/DEC-0.0.vcxproj \ + DEC-0.0/DEC-0.0.vcxproj.filters \ + DEC-0.0/DecScript.txt \ + DEC-0.0/generation.0.xls \ + DEC-0.0/generation.1.xls \ + DEC-0.0/generation.2.xls \ + DEC-0.0/generation.3.xls \ + DEC-0.0/generation.4.xls \ + DEC-0.0/script.txt \ + DEC-0.0/ToDoList.txt diff --git a/DEC_GUI/DEC_GUI.pro.user b/DEC_GUI/DEC_GUI.pro.user new file mode 100644 index 0000000..6718062 --- /dev/null +++ b/DEC_GUI/DEC_GUI.pro.user @@ -0,0 +1,259 @@ + + + + + + EnvironmentId + {d44007c9-c0eb-44ed-9384-5031df6de3df} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop Qt 5.3 MinGW 32bit + Desktop Qt 5.3 MinGW 32bit + qt.53.win32_mingw482_kit + 0 + 0 + 0 + + H:/YaDisk/Src/DEC_GUI/build-DEC_GUI-Desktop_Qt_5_3_MinGW_32bit-Debug + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + false + false + + + true + Сборка + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Сборка + + ProjectExplorer.BuildSteps.Build + + + + true + Сборка + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Очистка + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Отладка + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + H:/YaDisk/Src/DEC_GUI/build-DEC_GUI-Desktop_Qt_5_3_MinGW_32bit-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + false + false + + + true + Сборка + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Сборка + + ProjectExplorer.BuildSteps.Build + + + + true + Сборка + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Очистка + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Выпуск + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 2 + + + 0 + Установка + + ProjectExplorer.BuildSteps.Deploy + + 1 + Локальная установка + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 2 + + DEC_GUI + + Qt4ProjectManager.Qt4RunConfiguration:H:/YaDisk/Src/DEC_GUI/DEC_GUI/DEC_GUI.pro + + DEC_GUI.pro + false + false + + 3768 + false + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 18 + + + Version + 18 + + diff --git a/DEC_GUI/DEC_GUI.pro.user.3d340fe.3.3-pre1 b/DEC_GUI/DEC_GUI.pro.user.3d340fe.3.3-pre1 new file mode 100644 index 0000000..f92e326 --- /dev/null +++ b/DEC_GUI/DEC_GUI.pro.user.3d340fe.3.3-pre1 @@ -0,0 +1,440 @@ + + + + + + EnvironmentId + {3d340fed-eb20-4be3-a608-75ed758b9040} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + windows-1251 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop Qt 5.3 MinGW 32bit + Desktop Qt 5.3 MinGW 32bit + qt.53.win32_mingw482_kit + 0 + 0 + 0 + + C:/DEC_GUI/build-DEC_GUI-Desktop_Qt_5_3_MinGW_32bit-Debug + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + C:/Data/build-DEC_GUI-Desktop_Qt_5_3_MinGW_32bit-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 2 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 2 + + DEC_GUI + + Qt4ProjectManager.Qt4RunConfiguration:C:/DEC_GUI/DEC_GUI/DEC_GUI.pro + + DEC_GUI.pro + false + false + + 3768 + false + true + false + false + true + + 1 + + + + ProjectExplorer.Project.Target.1 + + Static MinGW48 + Static MinGW48 + {f493523b-7d44-46aa-8881-694dd976dae1} + 1 + 0 + 0 + + C:/DEC_GUI/Static_build + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + C:/Data/build-DEC_GUI-Static_MinGW48-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Build + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 2 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 2 + + DEC_GUI + + Qt4ProjectManager.Qt4RunConfiguration:C:/DEC_GUI/DEC_GUI/DEC_GUI.pro + + DEC_GUI.pro + false + false + + 3768 + false + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 2 + + + ProjectExplorer.Project.Updater.FileVersion + 16 + + + Version + 16 + + diff --git a/DEC_GUI/DEC_GUI.pro.user.cee8215 b/DEC_GUI/DEC_GUI.pro.user.cee8215 new file mode 100644 index 0000000..528c2eb --- /dev/null +++ b/DEC_GUI/DEC_GUI.pro.user.cee8215 @@ -0,0 +1,257 @@ + + + + + + EnvironmentId + {cee82155-51cf-4832-9c30-8f50f9bc43af} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop Qt 5.4.0 MinGW 32bit + Desktop Qt 5.4.0 MinGW 32bit + qt.54.win32_mingw491_kit + 0 + 0 + 0 + + F:/YaDisk/Src/DEC_GUI/build-DEC_GUI-Desktop_Qt_5_4_0_MinGW_32bit-Debug + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + false + + + true + Сборка + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Сборка + + ProjectExplorer.BuildSteps.Build + + + + true + Сборка + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Очистка + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Отладка + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + F:/YaDisk/Src/DEC_GUI/build-DEC_GUI-Desktop_Qt_5_4_0_MinGW_32bit-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + false + + + true + Сборка + + Qt4ProjectManager.MakeStep + + false + + + + 2 + Сборка + + ProjectExplorer.BuildSteps.Build + + + + true + Сборка + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + Очистка + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Выпуск + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 2 + + + 0 + Установка + + ProjectExplorer.BuildSteps.Deploy + + 1 + Локальная установка + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + 2 + + DEC_GUI + + Qt4ProjectManager.Qt4RunConfiguration:F:/YaDisk/Src/DEC_GUI/DEC_GUI/DEC_GUI.pro + + DEC_GUI.pro + false + false + + 3768 + false + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 18 + + + Version + 18 + + diff --git a/DEC_GUI/Kolch_Shind/Individ.cpp b/DEC_GUI/Kolch_Shind/Individ.cpp new file mode 100644 index 0000000..0207696 --- /dev/null +++ b/DEC_GUI/Kolch_Shind/Individ.cpp @@ -0,0 +1,71 @@ +#include "Individ.h" +#define _USE_MATH_DEFINES +#include + +float Individ::sigmaX = 1.f; +float Individ::sigmaE = 0.1f; +float Individ::sigmaC1 = 1.f; +float Individ::sigmaC2 = 1.f; +float Individ::sigmaC3= 1.f; +float Individ::sigmaC4= 1.f; +float Individ::sigmaC5= 1.f; +float Individ::Xopt = 110.f; +std::vector Individ::c(5); + +Individ::Individ(float _E) : E(_E) {}; +IndividFeedBack::IndividFeedBack(float _E) : Individ(_E), C2(Individ::c[1]) {} +//IndividFeedBack(const IndividFeedBack& parent) : Individ(parent.E), C2(parent.C2) {} + +float Individ::getFitness() const { + float X = c[0]/c[2] * (E+c[3]); + float fitness = 1/(sqrt(2*M_PI)) * exp(-0.5*pow((X-Xopt)/sigmaX,2.f)); + return fitness; +} + +float IndividFeedBack::getFitness() const { + //float X = -c[1]/2 + sqrt( c[1]*c[1]/4 + c[4]*c[1]/c[2]*(E+c[3])); + float X = -C2/2 + sqrt( C2*C2/4 + c[4]*C2/c[2]*(E+c[3])); + float fitness = 1/(sqrt(2*M_PI)) * exp(-0.5*pow((X-Xopt)/sigmaX,2.f)); + return fitness; +} + +void Individ::initConstants(){ + c[0] = 10.f; + c[1] = 100.f; + c[2] = 1.f; + c[3] = 1.f; + c[4] = 21.f; + Xopt = 110.f; + sigmaX = 1.f; + sigmaE = 0.1f; +} + +void Individ::initConstantsFromGUI(float c1, float c2, float c3, float c4, float c5, float Xoptim, float sigX, float sigE, float sigC1, float sigC2, + float sigC3, float sigC4, float sigC5) +{ + c[0] = c1; + c[1] = c2; + c[2] = c3; + c[3] = c4; + c[4] = c5; + Xopt = Xoptim; + sigmaX = sigX; + sigmaE = sigE; + sigmaC1 = sigC1; + sigmaC2 = sigC2; + sigmaC3 = sigC3; + sigmaC4 = sigC4; + sigmaC5 = sigC5; +} + +float IndividFeedBack::getOptimalE(){ + float a = (Xopt + c[1]/2)*(Xopt + c[1]/2); + float b = c[1]*c[1]/4; + + float ans = (a-b)*c[2]/(c[4]*c[1]) - c[3]; + return ans; +} + +bool compareOnFitness(const Individ* a, const Individ* b){ + return a->getFitness() < b->getFitness(); +} diff --git a/DEC_GUI/Kolch_Shind/Individ.h b/DEC_GUI/Kolch_Shind/Individ.h new file mode 100644 index 0000000..fe2a5ae --- /dev/null +++ b/DEC_GUI/Kolch_Shind/Individ.h @@ -0,0 +1,39 @@ +#pragma once +#include + +class Individ { +protected: + float E; +public: + static std::vector c; + static float Xopt, sigmaX, sigmaE, sigmaC1, sigmaC2, sigmaC3, sigmaC4, sigmaC5; + static void initConstants(); + static void initConstantsFromGUI(float c1, float c2, float c3, float c4, float c5, float Xoptim, float sigX, float sigE, float sigC1, float sigC2, + float sigC3, float sigC4, float sigC5); + + Individ(float _E); + //virtual Individ~(); + float getE() const { return E;} + virtual float getFitness() const; + virtual bool hasFeedBack() const {return false;} + virtual void mutate (float deltaE) { E += deltaE;} + virtual void mutateC2(float deltaC2) {} + virtual void setC2(float v){} + virtual float getC2() const { return c[1];} + static float getOptimalE() { return Xopt*c[2]/c[0] - c[3];} +}; + +class IndividFeedBack : public Individ { + float C2; +public: + IndividFeedBack(float _E); + IndividFeedBack(const IndividFeedBack& parent); + virtual float getFitness() const; + virtual bool hasFeedBack() const {return true;} + virtual void mutateC2(float deltaC2) { this->C2 += deltaC2;} + static float getOptimalE(); + virtual void setC2(float v){ this->C2 = v;} + virtual float getC2() const { return this->C2;} +}; + +bool compareOnFitness(const Individ* a, const Individ* b); diff --git a/DEC_GUI/Kolch_Shind/constants.h b/DEC_GUI/Kolch_Shind/constants.h new file mode 100644 index 0000000..c64d4ff --- /dev/null +++ b/DEC_GUI/Kolch_Shind/constants.h @@ -0,0 +1,10 @@ +#ifndef CONSTANTS_H +#define CONSTANTS_H + +namespace +{ + static const int WIDGET_XT = 1; + static const int WIDGET_XY = 2; +} + +#endif // CONSTANTS_H diff --git a/DEC_GUI/Kolch_Shind/createrangedialog.cpp b/DEC_GUI/Kolch_Shind/createrangedialog.cpp new file mode 100644 index 0000000..cc64bbd --- /dev/null +++ b/DEC_GUI/Kolch_Shind/createrangedialog.cpp @@ -0,0 +1,44 @@ +#include "createrangedialog.h" +#include "limits.h" +#include +#include +#include +#include + +CreateRangeDialog::CreateRangeDialog(QWidget *parent, int flag) + : QDialog(parent) +{ + + if (flag == 1) //iterate window + { + QGridLayout *layout = new QGridLayout(this); + + layout->addWidget(new QLabel(tr("Add new iterations:")), 0, 0); + iterations = new QLineEdit; + layout->addWidget(iterations, 0, 1); + + QHBoxLayout *buttonLayout = new QHBoxLayout; + layout->addLayout(buttonLayout, 1, 0, 1, 0); + buttonLayout->addStretch(); + + QPushButton *cancelButton = new QPushButton(tr("Cancel")); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->addWidget(cancelButton); + QPushButton *okButton = new QPushButton(tr("OK")); + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addWidget(okButton); + + okButton->setDefault(true); + } + +} + + + + +QString CreateRangeDialog::iterField() +{ + return iterations->text(); +} + + diff --git a/DEC_GUI/Kolch_Shind/createrangedialog.h b/DEC_GUI/Kolch_Shind/createrangedialog.h new file mode 100644 index 0000000..9e4dc87 --- /dev/null +++ b/DEC_GUI/Kolch_Shind/createrangedialog.h @@ -0,0 +1,33 @@ +#ifndef CREATERANGEDIALOG_H +#define CREATERANGEDIALOG_H + + +#include +#include +#include +#include +#include +#include +#include "constants.h" + + + + + +class CreateRangeDialog : public QDialog +{ + Q_OBJECT + +public: + CreateRangeDialog(QWidget *parent, int flag); + QString iterField(); + + +private slots: + +private: + QLineEdit *iterations; + +}; + +#endif // CREATERANGEDIALOG_H diff --git a/DEC_GUI/Kolch_Shind/history.cpp b/DEC_GUI/Kolch_Shind/history.cpp new file mode 100644 index 0000000..aebd71e --- /dev/null +++ b/DEC_GUI/Kolch_Shind/history.cpp @@ -0,0 +1,16 @@ +#include "history.h" + +History::History() +{ +} + +QVector History::getAllHistory() +{ + return singleModelHistory; +} + +data History::getSingleModelHistory(int i) +{ + return singleModelHistory[i]; +} + diff --git a/DEC_GUI/Kolch_Shind/history.h b/DEC_GUI/Kolch_Shind/history.h new file mode 100644 index 0000000..27f2123 --- /dev/null +++ b/DEC_GUI/Kolch_Shind/history.h @@ -0,0 +1,33 @@ +#ifndef HISTORY_H +#define HISTORY_H + +#include + +struct data{ + + QVector withFeedbackVect; + QVector withoutFeedbackVect; + QVector firstXVect; + + QVector meanE; + QVector meanF; + QVector meanC2; + QVector individ; + QVector individFeedback; +}; + +class History +{ +public: + History(); + QVector getAllHistory(); + data getSingleModelHistory(int i); + + data vectors; + QVector singleModelHistory; +private: + + +}; + +#endif // HISTORY_H diff --git a/DEC_GUI/Kolch_Shind/paintqwidget.cpp b/DEC_GUI/Kolch_Shind/paintqwidget.cpp new file mode 100644 index 0000000..89225ea --- /dev/null +++ b/DEC_GUI/Kolch_Shind/paintqwidget.cpp @@ -0,0 +1,119 @@ +#include "paintqwidget.h" +#include "constants.h" + +static const int DEFAULT_IMAGE_HEIGHT = 550; +static const int DEFAULT_IMAGE_WIDTH = 800; +static const int AXIS_DASH_STEP = 50; +static const int INDENT_STEP = 50; +static const int TOP_OFFSET = 100; + +PaintQWidget::PaintQWidget(QWidget *parent) : + QWidget(parent), image(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT, QImage::Format_RGB888) +{ + + connect(&solver, SIGNAL(sendHistory(QVector, int)), SLOT(setHistory(QVector, int))); + connect(&solver, SIGNAL(sendItersForProgressBar(int)), SLOT(setItersForProgressBar(int))); + image.fill(QColor(Qt::white).rgb()); + +} + +void PaintQWidget::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + painter.drawImage(0, 0, image); +} + + +void PaintQWidget::setHistory(QVector history, int iters) +{ + hist = history; + maxIters = iters; +} + +void PaintQWidget::setItersForProgressBar(int iters) +{ + resentItersToProgressBar(iters); //cause I can't send it direct from the solver =( + //std::cout << iters << std::endl; +} + +void PaintQWidget::drawSelectedModel(int wgt_type, QCustomPlot *pPlot, int model_num) +{ + //std::cout << model_num << std::endl; + if (model_num != -1) + { + draw(pPlot, wgt_type, model_num); + } + +} + +//draw graphics +void PaintQWidget::draw(QCustomPlot *customPlot, int wgt_type, int model_num) +{ + //std::cout << model_num << std::endl; + if (wgt_type == WIDGET_XT) + { + customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); + customPlot->graph(0)->setData(hist[model_num].xRange, hist[model_num].withFeedbackVect); + customPlot->graph(0)->setPen(QPen(Qt::blue)); + customPlot->graph(0)->setName("withFeedback"); + customPlot->graph(1)->setData(hist[model_num].xRange, hist[model_num].withoutFeedbackVect); + customPlot->graph(1)->setPen(QPen(Qt::red)); + customPlot->graph(1)->setName("withoutFeedback"); + customPlot->xAxis->setRange(0, maxIters); + //std::cout << maxIters << std::endl; + customPlot->xAxis->setLabel("Iterations"); + customPlot->yAxis->setLabel("Feedbacks"); + customPlot->yAxis->setRange(0, qMax(hist[model_num].maxWithFeedVal, hist[model_num].maxWithoutFeedVal) + TOP_OFFSET); + } + else if (wgt_type == WIDGET_XY) + { + customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); + customPlot->graph(0)->setName("eMeans"); + customPlot->graph(0)->setData(hist[model_num].xRange, hist[model_num].meanE); + customPlot->graph(0)->setPen(QPen(Qt::red)); + + customPlot->graph(1)->setName("fMeans"); + customPlot->graph(1)->setData(hist[model_num].xRange, hist[model_num].meanF); + customPlot->graph(1)->setPen(QPen(Qt::blue)); + + customPlot->graph(2)->setName("c2Means"); + customPlot->graph(2)->setData(hist[model_num].xRange, hist[model_num].meanC2); + customPlot->graph(2)->setPen(QPen(Qt::green)); + + customPlot->graph(3)->setName("individ"); + customPlot->graph(3)->setData(hist[model_num].xRange, hist[model_num].individ); + customPlot->graph(3)->setPen(QPen(Qt::magenta)); + + customPlot->graph(4)->setName("individFeedback"); + customPlot->graph(4)->setData(hist[model_num].xRange, hist[model_num].individFeedback); + customPlot->graph(4)->setPen(QPen(Qt::black)); + + customPlot->xAxis->setRange(0, maxIters); + //std::cout << maxIters << std::endl; + customPlot->xAxis->setLabel("Iterations"); + customPlot->yAxis->setLabel("Means"); + customPlot->yAxis->setRange(0, 300); + } + customPlot->replot(); +} + +void PaintQWidget::setIters(int flag, int iter) +{ + itersFlag = flag; + newIters = iter; +} + +void PaintQWidget::drawAll(float c1, float c2, float c3, float c4, float c5, float sigC1, float sigC2, float sigC3, float sigC4, float sigC5, + float e, float sigE, float sigX0, float delX0, float sigX, float Xopt, int popSize, int maxSteps, int N, + int wgt_type, QCustomPlot* pPlot, int count, int modelCount, int model_num) +{ + + if (count == 0) // cause solveModel launch two times other way + { + solver.solveModel(c1, c2, c3, c4, c5, sigC1, sigC2, sigC3, sigC4, sigC5, e, sigE, sigX0, delX0, sigX, Xopt, popSize, maxSteps, N, itersFlag, newIters, modelCount); + } + + draw(pPlot, wgt_type, model_num); +} + + diff --git a/DEC_GUI/Kolch_Shind/paintqwidget.h b/DEC_GUI/Kolch_Shind/paintqwidget.h new file mode 100644 index 0000000..4b9c99a --- /dev/null +++ b/DEC_GUI/Kolch_Shind/paintqwidget.h @@ -0,0 +1,67 @@ +#ifndef PAINTQWIDGET_H +#define PAINTQWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include "solver.h" +#include "qcustomplot.h" + +class PaintQWidget : public QWidget +{ + Q_OBJECT + + public: + explicit PaintQWidget(QWidget *parent = 0); + QVector hist; + + + private slots: + + void drawAll(float c1, float c2, float c3, float c4, float c5, float sigC1, float sigC2, float sigC3, float sigC4, float sigC5, + float e, float sigE, float sigX0, float delX0, float sigX, float Xopt, int popSize, int maxSteps, int N, + int wgt_type, QCustomPlot* pPlot, int count, int modelCount, int model_num); + void setIters(int flag, int iter); + void setHistory(QVector history, int iters); + void drawSelectedModel(int wgt_type, QCustomPlot* pPlot, int model_num); + void setItersForProgressBar(int iters); + + signals: + void sendHistoryToPrint(QVector history); + void resentItersToProgressBar(int iters); + + private: + void paintEvent(QPaintEvent *); + + void solveModel(int x0, int y0, double a, double b, double c, double d, double h, int t); + void draw(QCustomPlot *customPlot, int wgt_type, int model_num); + + QVector withFeed; + QVector withoutFeed; + + QVector eMeans; + QVector fMeans; + QVector c2Means; + QVector individ; + QVector individFeed; + + + int newIters; + int itersFlag; + + double maxWith; + double maxWithout; + QVector xVals; + QImage image; + + int maxIters; + int iters; + Solver solver; + int runCount; +}; + +#endif // PAINTQWIDGET_H diff --git a/DEC_GUI/Kolch_Shind/qcustomplot.cpp b/DEC_GUI/Kolch_Shind/qcustomplot.cpp new file mode 100644 index 0000000..66bc19c --- /dev/null +++ b/DEC_GUI/Kolch_Shind/qcustomplot.cpp @@ -0,0 +1,18671 @@ +/*************************************************************************** +** ** +** QCustomPlot, an easy to use, modern plotting widget for Qt ** +** Copyright (C) 2011, 2012, 2013 Emanuel Eichhammer ** +** ** +** This program is free software: you can redistribute it and/or modify ** +** it under the terms of the GNU General Public License as published by ** +** the Free Software Foundation, either version 3 of the License, or ** +** (at your option) any later version. ** +** ** +** This program is distributed in the hope that it will be useful, ** +** but WITHOUT ANY WARRANTY; without even the implied warranty of ** +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** +** GNU General Public License for more details. ** +** ** +** You should have received a copy of the GNU General Public License ** +** along with this program. If not, see http://www.gnu.org/licenses/. ** +** ** +**************************************************************************** +** Author: Emanuel Eichhammer ** +** Website/Contact: http://www.qcustomplot.com/ ** +** Date: 05.09.13 ** +** Version: 1.0.1 ** +****************************************************************************/ + +#include "qcustomplot.h" + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPPainter +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPPainter + \brief QPainter subclass used internally + + This internal class is used to provide some extended functionality e.g. for tweaking position + consistency between antialiased and non-antialiased painting. Further it provides workarounds + for QPainter quirks. + + \warning This class intentionally hides non-virtual functions of QPainter, e.g. setPen, save and + restore. So while it is possible to pass a QCPPainter instance to a function that expects a + QPainter pointer, some of the workarounds and tweaks will be unavailable to the function (because + it will call the base class implementations of the functions actually hidden by QCPPainter). +*/ + +/*! + Creates a new QCPPainter instance and sets default values +*/ +QCPPainter::QCPPainter() : + QPainter(), + mModes(pmDefault), + mIsAntialiasing(false) +{ + // don't setRenderHint(QPainter::NonCosmeticDefautPen) here, because painter isn't active yet and + // a call to begin() will follow +} + +/*! + Creates a new QCPPainter instance on the specified paint \a device and sets default values. Just + like the analogous QPainter constructor, begins painting on \a device immediately. + + Like \ref begin, this method sets QPainter::NonCosmeticDefaultPen in Qt versions before Qt5. +*/ +QCPPainter::QCPPainter(QPaintDevice *device) : + QPainter(device), + mModes(pmDefault), + mIsAntialiasing(false) +{ +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) // before Qt5, default pens used to be cosmetic if NonCosmeticDefaultPen flag isn't set. So we set it to get consistency across Qt versions. + if (isActive()) + setRenderHint(QPainter::NonCosmeticDefaultPen); +#endif +} + +QCPPainter::~QCPPainter() +{ +} + +/*! + Sets the pen of the painter and applies certain fixes to it, depending on the mode of this + QCPPainter. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::setPen(const QPen &pen) +{ + QPainter::setPen(pen); + if (mModes.testFlag(pmNonCosmetic)) + makeNonCosmetic(); +} + +/*! \overload + + Sets the pen (by color) of the painter and applies certain fixes to it, depending on the mode of + this QCPPainter. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::setPen(const QColor &color) +{ + QPainter::setPen(color); + if (mModes.testFlag(pmNonCosmetic)) + makeNonCosmetic(); +} + +/*! \overload + + Sets the pen (by style) of the painter and applies certain fixes to it, depending on the mode of + this QCPPainter. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::setPen(Qt::PenStyle penStyle) +{ + QPainter::setPen(penStyle); + if (mModes.testFlag(pmNonCosmetic)) + makeNonCosmetic(); +} + +/*! \overload + + Works around a Qt bug introduced with Qt 4.8 which makes drawing QLineF unpredictable when + antialiasing is disabled. Thus when antialiasing is disabled, it rounds the \a line to + integer coordinates and then passes it to the original drawLine. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::drawLine(const QLineF &line) +{ + if (mIsAntialiasing || mModes.testFlag(pmVectorized)) + QPainter::drawLine(line); + else + QPainter::drawLine(line.toLine()); +} + +/*! + Sets whether painting uses antialiasing or not. Use this method instead of using setRenderHint + with QPainter::Antialiasing directly, as it allows QCPPainter to regain pixel exactness between + antialiased and non-antialiased painting (Since Qt < 5.0 uses slightly different coordinate systems for + AA/Non-AA painting). +*/ +void QCPPainter::setAntialiasing(bool enabled) +{ + setRenderHint(QPainter::Antialiasing, enabled); + if (mIsAntialiasing != enabled) + { + mIsAntialiasing = enabled; + if (!mModes.testFlag(pmVectorized)) // antialiasing half-pixel shift only needed for rasterized outputs + { + if (mIsAntialiasing) + translate(0.5, 0.5); + else + translate(-0.5, -0.5); + } + } +} + +/*! + Sets the mode of the painter. This controls whether the painter shall adjust its + fixes/workarounds optimized for certain output devices. +*/ +void QCPPainter::setModes(QCPPainter::PainterModes modes) +{ + mModes = modes; +} + +/*! + Sets the QPainter::NonCosmeticDefaultPen in Qt versions before Qt5 after beginning painting on \a + device. This is necessary to get cosmetic pen consistency across Qt versions, because since Qt5, + all pens are non-cosmetic by default, and in Qt4 this render hint must be set to get that + behaviour. + + The Constructor \ref QCPPainter(QPaintDevice *device) which directly starts painting also sets + the render hint as appropriate. + + \note this function hides the non-virtual base class implementation. +*/ +bool QCPPainter::begin(QPaintDevice *device) +{ + bool result = QPainter::begin(device); +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) // before Qt5, default pens used to be cosmetic if NonCosmeticDefaultPen flag isn't set. So we set it to get consistency across Qt versions. + if (result) + setRenderHint(QPainter::NonCosmeticDefaultPen); +#endif + return result; +} + +/*! \overload + + Sets the mode of the painter. This controls whether the painter shall adjust its + fixes/workarounds optimized for certain output devices. +*/ +void QCPPainter::setMode(QCPPainter::PainterMode mode, bool enabled) +{ + if (!enabled && mModes.testFlag(mode)) + mModes &= ~mode; + else if (enabled && !mModes.testFlag(mode)) + mModes |= mode; +} + +/*! + Saves the painter (see QPainter::save). Since QCPPainter adds some new internal state to + QPainter, the save/restore functions are reimplemented to also save/restore those members. + + \note this function hides the non-virtual base class implementation. + + \see restore +*/ +void QCPPainter::save() +{ + mAntialiasingStack.push(mIsAntialiasing); + QPainter::save(); +} + +/*! + Restores the painter (see QPainter::restore). Since QCPPainter adds some new internal state to + QPainter, the save/restore functions are reimplemented to also save/restore those members. + + \note this function hides the non-virtual base class implementation. + + \see save +*/ +void QCPPainter::restore() +{ + if (!mAntialiasingStack.isEmpty()) + mIsAntialiasing = mAntialiasingStack.pop(); + else + qDebug() << Q_FUNC_INFO << "Unbalanced save/restore"; + QPainter::restore(); +} + +/*! + Changes the pen width to 1 if it currently is 0. This function is called in the \ref setPen + overrides when the \ref pmNonCosmetic mode is set. +*/ +void QCPPainter::makeNonCosmetic() +{ + if (qFuzzyIsNull(pen().widthF())) + { + QPen p = pen(); + p.setWidth(1); + QPainter::setPen(p); + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPScatterStyle +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPScatterStyle + \brief Represents the visual appearance of scatter points + + This class holds information about shape, color and size of scatter points. In plottables like + QCPGraph it is used to store how scatter points shall be drawn. For example, \ref + QCPGraph::setScatterStyle takes a QCPScatterStyle instance. + + A scatter style consists of a shape (\ref setShape), a line color (\ref setPen) and possibly a + fill (\ref setBrush), if the shape provides a fillable area. Further, the size of the shape can + be controlled with \ref setSize. + + \section QCPScatterStyle-defining Specifying a scatter style + + You can set all these configurations either by calling the respective functions on an instance: + \code + QCPScatterStyle myScatter; + myScatter.setShape(QCPScatterStyle::ssCircle); + myScatter.setPen(Qt::blue); + myScatter.setBrush(Qt::white); + myScatter.setSize(5); + customPlot->graph(0)->setScatterStyle(myScatter); + \endcode + + Or you can use one of the various constructors that take different parameter combinations, making + it easy to specify a scatter style in a single call, like so: + \code + customPlot->graph(0)->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, Qt::white, 5)); + \endcode + + \section QCPScatterStyle-undefinedpen Leaving the color/pen up to the plottable + + There are two constructors which leave the pen undefined: \ref QCPScatterStyle() and \ref + QCPScatterStyle(ScatterShape shape, double size). If those constructors are used, a call to \ref + isPenDefined will return false. It leads to scatter points that inherit the pen from the + plottable that uses the scatter style. Thus, if such a scatter style is passed to QCPGraph, the line + color of the graph (\ref QCPGraph::setPen) will be used by the scatter points. This makes + it very convenient to set up typical scatter settings: + + \code + customPlot->graph(0)->setScatterStyle(QCPScatterStyle::ssPlus); + \endcode + + Notice that it wasn't even necessary to explicitly call a QCPScatterStyle constructor. This works + because QCPScatterStyle provides a constructor that can transform a \ref ScatterShape directly + into a QCPScatterStyle instance (that's the \ref QCPScatterStyle(ScatterShape shape, double size) + constructor with a default for \a size). In those cases, C++ allows directly supplying a \ref + ScatterShape, where actually a QCPScatterStyle is expected. + + \section QCPScatterStyle-custompath-and-pixmap Custom shapes and pixmaps + + QCPScatterStyle supports drawing custom shapes and arbitrary pixmaps as scatter points. + + For custom shapes, you can provide a QPainterPath with the desired shape to the \ref + setCustomPath function or call the constructor that takes a painter path. The scatter shape will + automatically be set to \ref ssCustom. + + For pixmaps, you call \ref setPixmap with the desired QPixmap. Alternatively you can use the + constructor that takes a QPixmap. The scatter shape will automatically be set to \ref ssPixmap. + Note that \ref setSize does not influence the appearance of the pixmap. +*/ + +/* start documentation of inline functions */ + +/*! \fn bool QCPScatterStyle::isNone() const + + Returns whether the scatter shape is \ref ssNone. + + \see setShape +*/ + +/*! \fn bool QCPScatterStyle::isPenDefined() const + + Returns whether a pen has been defined for this scatter style. + + The pen is undefined if a constructor is called that does not carry \a pen as parameter. Those are + \ref QCPScatterStyle() and \ref QCPScatterStyle(ScatterShape shape, double size). If the pen is + left undefined, the scatter color will be inherited from the plottable that uses this scatter + style. + + \see setPen +*/ + +/* end documentation of inline functions */ + +/*! + Creates a new QCPScatterStyle instance with size set to 6. No shape, pen or brush is defined. + + Since the pen is undefined (\ref isPenDefined returns false), the scatter color will be inherited + from the plottable that uses this scatter style. +*/ +QCPScatterStyle::QCPScatterStyle() : + mSize(6), + mShape(ssNone), + mPen(Qt::NoPen), + mBrush(Qt::NoBrush), + mPenDefined(false) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape and size to \a size. No pen or + brush is defined. + + Since the pen is undefined (\ref isPenDefined returns false), the scatter color will be inherited + from the plottable that uses this scatter style. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, double size) : + mSize(size), + mShape(shape), + mPen(Qt::NoPen), + mBrush(Qt::NoBrush), + mPenDefined(false) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape, the pen color set to \a color, + and size to \a size. No brush is defined, i.e. the scatter point will not be filled. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, const QColor &color, double size) : + mSize(size), + mShape(shape), + mPen(QPen(color)), + mBrush(Qt::NoBrush), + mPenDefined(true) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape, the pen color set to \a color, + the brush color to \a fill (with a solid pattern), and size to \a size. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill, double size) : + mSize(size), + mShape(shape), + mPen(QPen(color)), + mBrush(QBrush(fill)), + mPenDefined(true) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape, the pen set to \a pen, the + brush to \a brush, and size to \a size. + + \warning In some cases it might be tempting to directly use a pen style like Qt::NoPen as \a pen + and a color like Qt::blue as \a brush. Notice however, that the corresponding call\n + QCPScatterStyle(QCPScatterShape::ssCircle, Qt::NoPen, Qt::blue, 5)\n + doesn't necessarily lead C++ to use this constructor in some cases, but might mistake + Qt::NoPen for a QColor and use the + \ref QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill, double size) + constructor instead (which will lead to an unexpected look of the scatter points). To prevent + this, be more explicit with the parameter types. For example, use QBrush(Qt::blue) + instead of just Qt::blue, to clearly point out to the compiler that this constructor is + wanted. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, const QPen &pen, const QBrush &brush, double size) : + mSize(size), + mShape(shape), + mPen(pen), + mBrush(brush), + mPenDefined(pen.style() != Qt::NoPen) +{ +} + +/*! + Creates a new QCPScatterStyle instance which will show the specified \a pixmap. The scatter shape + is set to \ref ssPixmap. +*/ +QCPScatterStyle::QCPScatterStyle(const QPixmap &pixmap) : + mSize(5), + mShape(ssPixmap), + mPen(Qt::NoPen), + mBrush(Qt::NoBrush), + mPixmap(pixmap), + mPenDefined(false) +{ +} + +/*! + Creates a new QCPScatterStyle instance with a custom shape that is defined via \a customPath. The + scatter shape is set to \ref ssCustom. + + The custom shape line will be drawn with \a pen and filled with \a brush. The size has a slightly + different meaning than for built-in scatter points: The custom path will be drawn scaled by a + factor of \a size/6.0. Since the default \a size is 6, the custom path will appear at a its + natural size by default. To double the size of the path for example, set \a size to 12. +*/ +QCPScatterStyle::QCPScatterStyle(const QPainterPath &customPath, const QPen &pen, const QBrush &brush, double size) : + mSize(size), + mShape(ssCustom), + mPen(pen), + mBrush(brush), + mCustomPath(customPath), + mPenDefined(false) +{ +} + +/*! + Sets the size (pixel diameter) of the drawn scatter points to \a size. + + \see setShape +*/ +void QCPScatterStyle::setSize(double size) +{ + mSize = size; +} + +/*! + Sets the shape to \a shape. + + Note that the calls \ref setPixmap and \ref setCustomPath automatically set the shape to \ref + ssPixmap and \ref ssCustom, respectively. + + \see setSize +*/ +void QCPScatterStyle::setShape(QCPScatterStyle::ScatterShape shape) +{ + mShape = shape; +} + +/*! + Sets the pen that will be used to draw scatter points to \a pen. + + If the pen was previously undefined (see \ref isPenDefined), the pen is considered defined after + a call to this function, even if \a pen is Qt::NoPen. + + \see setBrush +*/ +void QCPScatterStyle::setPen(const QPen &pen) +{ + mPenDefined = true; + mPen = pen; +} + +/*! + Sets the brush that will be used to fill scatter points to \a brush. Note that not all scatter + shapes have fillable areas. For example, \ref ssPlus does not while \ref ssCircle does. + + \see setPen +*/ +void QCPScatterStyle::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the pixmap that will be drawn as scatter point to \a pixmap. + + Note that \ref setSize does not influence the appearance of the pixmap. + + The scatter shape is automatically set to \ref ssPixmap. +*/ +void QCPScatterStyle::setPixmap(const QPixmap &pixmap) +{ + setShape(ssPixmap); + mPixmap = pixmap; +} + +/*! + Sets the custom shape that will be drawn as scatter point to \a customPath. + + The scatter shape is automatically set to \ref ssCustom. +*/ +void QCPScatterStyle::setCustomPath(const QPainterPath &customPath) +{ + setShape(ssCustom); + mCustomPath = customPath; +} + +/*! + Applies the pen and the brush of this scatter style to \a painter. If this scatter style has an + undefined pen (\ref isPenDefined), sets the pen of \a painter to \a defaultPen instead. + + This function is used by plottables (or any class that wants to draw scatters) just before a + number of scatters with this style shall be drawn with the \a painter. + + \see drawShape +*/ +void QCPScatterStyle::applyTo(QCPPainter *painter, const QPen &defaultPen) const +{ + painter->setPen(mPenDefined ? mPen : defaultPen); + painter->setBrush(mBrush); +} + +/*! + Draws the scatter shape with \a painter at position \a pos. + + This function does not modify the pen or the brush on the painter, as \ref applyTo is meant to be + called before scatter points are drawn with \ref drawShape. + + \see applyTo +*/ +void QCPScatterStyle::drawShape(QCPPainter *painter, QPointF pos) const +{ + drawShape(painter, pos.x(), pos.y()); +} + +/*! \overload + Draws the scatter shape with \a painter at position \a x and \a y. +*/ +void QCPScatterStyle::drawShape(QCPPainter *painter, double x, double y) const +{ + double w = mSize/2.0; + switch (mShape) + { + case ssNone: break; + case ssDot: + { + painter->drawLine(QPointF(x, y), QPointF(x+0.0001, y)); + break; + } + case ssCross: + { + painter->drawLine(QLineF(x-w, y-w, x+w, y+w)); + painter->drawLine(QLineF(x-w, y+w, x+w, y-w)); + break; + } + case ssPlus: + { + painter->drawLine(QLineF(x-w, y, x+w, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + break; + } + case ssCircle: + { + painter->drawEllipse(QPointF(x , y), w, w); + break; + } + case ssDisc: + { + QBrush b = painter->brush(); + painter->setBrush(painter->pen().color()); + painter->drawEllipse(QPointF(x , y), w, w); + painter->setBrush(b); + break; + } + case ssSquare: + { + painter->drawRect(QRectF(x-w, y-w, mSize, mSize)); + break; + } + case ssDiamond: + { + painter->drawLine(QLineF(x-w, y, x, y-w)); + painter->drawLine(QLineF( x, y-w, x+w, y)); + painter->drawLine(QLineF(x+w, y, x, y+w)); + painter->drawLine(QLineF( x, y+w, x-w, y)); + break; + } + case ssStar: + { + painter->drawLine(QLineF(x-w, y, x+w, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + painter->drawLine(QLineF(x-w*0.707, y-w*0.707, x+w*0.707, y+w*0.707)); + painter->drawLine(QLineF(x-w*0.707, y+w*0.707, x+w*0.707, y-w*0.707)); + break; + } + case ssTriangle: + { + painter->drawLine(QLineF(x-w, y+0.755*w, x+w, y+0.755*w)); + painter->drawLine(QLineF(x+w, y+0.755*w, x, y-0.977*w)); + painter->drawLine(QLineF( x, y-0.977*w, x-w, y+0.755*w)); + break; + } + case ssTriangleInverted: + { + painter->drawLine(QLineF(x-w, y-0.755*w, x+w, y-0.755*w)); + painter->drawLine(QLineF(x+w, y-0.755*w, x, y+0.977*w)); + painter->drawLine(QLineF( x, y+0.977*w, x-w, y-0.755*w)); + break; + } + case ssCrossSquare: + { + painter->drawLine(QLineF(x-w, y-w, x+w*0.95, y+w*0.95)); + painter->drawLine(QLineF(x-w, y+w*0.95, x+w*0.95, y-w)); + painter->drawRect(QRectF(x-w, y-w, mSize, mSize)); + break; + } + case ssPlusSquare: + { + painter->drawLine(QLineF(x-w, y, x+w*0.95, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + painter->drawRect(QRectF(x-w, y-w, mSize, mSize)); + break; + } + case ssCrossCircle: + { + painter->drawLine(QLineF(x-w*0.707, y-w*0.707, x+w*0.670, y+w*0.670)); + painter->drawLine(QLineF(x-w*0.707, y+w*0.670, x+w*0.670, y-w*0.707)); + painter->drawEllipse(QPointF(x, y), w, w); + break; + } + case ssPlusCircle: + { + painter->drawLine(QLineF(x-w, y, x+w, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + painter->drawEllipse(QPointF(x, y), w, w); + break; + } + case ssPeace: + { + painter->drawLine(QLineF(x, y-w, x, y+w)); + painter->drawLine(QLineF(x, y, x-w*0.707, y+w*0.707)); + painter->drawLine(QLineF(x, y, x+w*0.707, y+w*0.707)); + painter->drawEllipse(QPointF(x, y), w, w); + break; + } + case ssPixmap: + { + painter->drawPixmap(x-mPixmap.width()*0.5, y-mPixmap.height()*0.5, mPixmap); + break; + } + case ssCustom: + { + QTransform oldTransform = painter->transform(); + painter->translate(x, y); + painter->scale(mSize/6.0, mSize/6.0); + painter->drawPath(mCustomPath); + painter->setTransform(oldTransform); + break; + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayer +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayer + \brief A layer that may contain objects, to control the rendering order + + The Layering system of QCustomPlot is the mechanism to control the rendering order of the + elements inside the plot. + + It is based on the two classes QCPLayer and QCPLayerable. QCustomPlot holds an ordered list of + one or more instances of QCPLayer (see QCustomPlot::addLayer, QCustomPlot::layer, + QCustomPlot::moveLayer, etc.). When replotting, QCustomPlot goes through the list of layers + bottom to top and successively draws the layerables of the layers. + + A QCPLayer contains an ordered list of QCPLayerable instances. QCPLayerable is an abstract base + class from which almost all visible objects derive, like axes, grids, graphs, items, etc. + + Initially, QCustomPlot has five layers: "background", "grid", "main", "axes" and "legend" (in + that order). The top two layers "axes" and "legend" contain the default axes and legend, so they + will be drawn on top. In the middle, there is the "main" layer. It is initially empty and set as + the current layer (see QCustomPlot::setCurrentLayer). This means, all new plottables, items etc. + are created on this layer by default. Then comes the "grid" layer which contains the QCPGrid + instances (which belong tightly to QCPAxis, see \ref QCPAxis::grid). The Axis rect background + shall be drawn behind everything else, thus the default QCPAxisRect instance is placed on the + "background" layer. Of course, the layer affiliation of the individual objects can be changed as + required (\ref QCPLayerable::setLayer). + + Controlling the ordering of objects is easy: Create a new layer in the position you want it to + be, e.g. above "main", with QCustomPlot::addLayer. Then set the current layer with + QCustomPlot::setCurrentLayer to that new layer and finally create the objects normally. They will + be placed on the new layer automatically, due to the current layer setting. Alternatively you + could have also ignored the current layer setting and just moved the objects with + QCPLayerable::setLayer to the desired layer after creating them. + + It is also possible to move whole layers. For example, If you want the grid to be shown in front + of all plottables/items on the "main" layer, just move it above "main" with + QCustomPlot::moveLayer. + + The rendering order within one layer is simply by order of creation or insertion. The item + created last (or added last to the layer), is drawn on top of all other objects on that layer. + + When a layer is deleted, the objects on it are not deleted with it, but fall on the layer below + the deleted layer, see QCustomPlot::removeLayer. +*/ + +/* start documentation of inline functions */ + +/*! \fn QList QCPLayer::children() const + + Returns a list of all layerables on this layer. The order corresponds to the rendering order: + layerables with higher indices are drawn above layerables with lower indices. +*/ + +/*! \fn int QCPLayer::index() const + + Returns the index this layer has in the QCustomPlot. The index is the integer number by which this layer can be + accessed via \ref QCustomPlot::layer. + + Layers with higher indices will be drawn above layers with lower indices. +*/ + +/* end documentation of inline functions */ + +/*! + Creates a new QCPLayer instance. + + Normally you shouldn't directly instantiate layers, use \ref QCustomPlot::addLayer instead. + + \warning It is not checked that \a layerName is actually a unique layer name in \a parentPlot. + This check is only performed by \ref QCustomPlot::addLayer. +*/ +QCPLayer::QCPLayer(QCustomPlot *parentPlot, const QString &layerName) : + QObject(parentPlot), + mParentPlot(parentPlot), + mName(layerName), + mIndex(-1) // will be set to a proper value by the QCustomPlot layer creation function +{ + // Note: no need to make sure layerName is unique, because layer + // management is done with QCustomPlot functions. +} + +QCPLayer::~QCPLayer() +{ + // If child layerables are still on this layer, detach them, so they don't try to reach back to this + // then invalid layer once they get deleted/moved themselves. This only happens when layers are deleted + // directly, like in the QCustomPlot destructor. (The regular layer removal procedure for the user is to + // call QCustomPlot::removeLayer, which moves all layerables off this layer before deleting it.) + + while (!mChildren.isEmpty()) + mChildren.last()->setLayer(0); // removes itself from mChildren via removeChild() + + if (mParentPlot->currentLayer() == this) + qDebug() << Q_FUNC_INFO << "The parent plot's mCurrentLayer will be a dangling pointer. Should have been set to a valid layer or 0 beforehand."; +} + +/*! \internal + + Adds the \a layerable to the list of this layer. If \a prepend is set to true, the layerable will + be prepended to the list, i.e. be drawn beneath the other layerables already in the list. + + This function does not change the \a mLayer member of \a layerable to this layer. (Use + QCPLayerable::setLayer to change the layer of an object, not this function.) + + \see removeChild +*/ +void QCPLayer::addChild(QCPLayerable *layerable, bool prepend) +{ + if (!mChildren.contains(layerable)) + { + if (prepend) + mChildren.prepend(layerable); + else + mChildren.append(layerable); + } else + qDebug() << Q_FUNC_INFO << "layerable is already child of this layer" << reinterpret_cast(layerable); +} + +/*! \internal + + Removes the \a layerable from the list of this layer. + + This function does not change the \a mLayer member of \a layerable. (Use QCPLayerable::setLayer + to change the layer of an object, not this function.) + + \see addChild +*/ +void QCPLayer::removeChild(QCPLayerable *layerable) +{ + if (!mChildren.removeOne(layerable)) + qDebug() << Q_FUNC_INFO << "layerable is not child of this layer" << reinterpret_cast(layerable); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayerable +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayerable + \brief Base class for all drawable objects + + This is the abstract base class most visible objects derive from, e.g. plottables, axes, grid + etc. + + Every layerable is on a layer (QCPLayer) which allows controlling the rendering order by stacking + the layers accordingly. + + For details about the layering mechanism, see the QCPLayer documentation. +*/ + +/* start documentation of inline functions */ + +/*! \fn QCPLayerable *QCPLayerable::parentLayerable() const + + Returns the parent layerable of this layerable. The parent layerable is used to provide + visibility hierarchies in conjunction with the method \ref realVisibility. This way, layerables + only get drawn if their parent layerables are visible, too. + + Note that a parent layerable is not necessarily also the QObject parent for memory management. + Further, a layerable doesn't always have a parent layerable, so this function may return 0. + + A parent layerable is set implicitly with when placed inside layout elements and doesn't need to be + set manually by the user. +*/ + +/* end documentation of inline functions */ +/* start documentation of pure virtual functions */ + +/*! \fn virtual void QCPLayerable::applyDefaultAntialiasingHint(QCPPainter *painter) const = 0 + \internal + + This function applies the default antialiasing setting to the specified \a painter, using the + function \ref applyAntialiasingHint. It is the antialiasing state the painter is put in, when + \ref draw is called on the layerable. If the layerable has multiple entities whose antialiasing + setting may be specified individually, this function should set the antialiasing state of the + most prominent entity. In this case however, the \ref draw function usually calls the specialized + versions of this function before drawing each entity, effectively overriding the setting of the + default antialiasing hint. + + First example: QCPGraph has multiple entities that have an antialiasing setting: The graph + line, fills, scatters and error bars. Those can be configured via QCPGraph::setAntialiased, + QCPGraph::setAntialiasedFill, QCPGraph::setAntialiasedScatters etc. Consequently, there isn't + only the QCPGraph::applyDefaultAntialiasingHint function (which corresponds to the graph line's + antialiasing), but specialized ones like QCPGraph::applyFillAntialiasingHint and + QCPGraph::applyScattersAntialiasingHint. So before drawing one of those entities, QCPGraph::draw + calls the respective specialized applyAntialiasingHint function. + + Second example: QCPItemLine consists only of a line so there is only one antialiasing + setting which can be controlled with QCPItemLine::setAntialiased. (This function is inherited by + all layerables. The specialized functions, as seen on QCPGraph, must be added explicitly to the + respective layerable subclass.) Consequently it only has the normal + QCPItemLine::applyDefaultAntialiasingHint. The \ref QCPItemLine::draw function doesn't need to + care about setting any antialiasing states, because the default antialiasing hint is already set + on the painter when the \ref draw function is called, and that's the state it wants to draw the + line with. +*/ + +/*! \fn virtual void QCPLayerable::draw(QCPPainter *painter) const = 0 + \internal + + This function draws the layerable with the specified \a painter. It is only called by + QCustomPlot, if the layerable is visible (\ref setVisible). + + Before this function is called, the painter's antialiasing state is set via \ref + applyDefaultAntialiasingHint, see the documentation there. Further, the clipping rectangle was + set to \ref clipRect. +*/ + +/* end documentation of pure virtual functions */ + +/*! + Creates a new QCPLayerable instance. + + Since QCPLayerable is an abstract base class, it can't be instantiated directly. Use one of the + derived classes. + + If \a plot is provided, it automatically places itself on the layer named \a targetLayer. If \a + targetLayer is an empty string, it places itself on the current layer of the plot (see \ref + QCustomPlot::setCurrentLayer). + + It is possible to provide 0 as \a plot. In that case, you should assign a parent plot at a later + time with \ref initializeParentPlot. + + The layerable's parent layerable is set to \a parentLayerable, if provided. Direct layerable parents + are mainly used to control visibility in a hierarchy of layerables. This means a layerable is + only drawn, if all its ancestor layerables are also visible. Note that \a parentLayerable does + not become the QObject-parent (for memory management) of this layerable, \a plot does. +*/ +QCPLayerable::QCPLayerable(QCustomPlot *plot, QString targetLayer, QCPLayerable *parentLayerable) : + QObject(plot), + mVisible(true), + mParentPlot(plot), + mParentLayerable(parentLayerable), + mLayer(0), + mAntialiased(true) +{ + if (mParentPlot) + { + if (targetLayer.isEmpty()) + setLayer(mParentPlot->currentLayer()); + else if (!setLayer(targetLayer)) + qDebug() << Q_FUNC_INFO << "setting QCPlayerable initial layer to" << targetLayer << "failed."; + } +} + +QCPLayerable::~QCPLayerable() +{ + if (mLayer) + { + mLayer->removeChild(this); + mLayer = 0; + } +} + +/*! + Sets the visibility of this layerable object. If an object is not visible, it will not be drawn + on the QCustomPlot surface, and user interaction with it (e.g. click and selection) is not + possible. +*/ +void QCPLayerable::setVisible(bool on) +{ + mVisible = on; +} + +/*! + Sets the \a layer of this layerable object. The object will be placed on top of the other objects + already on \a layer. + + Returns true on success, i.e. if \a layer is a valid layer. +*/ +bool QCPLayerable::setLayer(QCPLayer *layer) +{ + return moveToLayer(layer, false); +} + +/*! \overload + Sets the layer of this layerable object by name + + Returns true on success, i.e. if \a layerName is a valid layer name. +*/ +bool QCPLayerable::setLayer(const QString &layerName) +{ + if (!mParentPlot) + { + qDebug() << Q_FUNC_INFO << "no parent QCustomPlot set"; + return false; + } + if (QCPLayer *layer = mParentPlot->layer(layerName)) + { + return setLayer(layer); + } else + { + qDebug() << Q_FUNC_INFO << "there is no layer with name" << layerName; + return false; + } +} + +/*! + Sets whether this object will be drawn antialiased or not. + + Note that antialiasing settings may be overridden by QCustomPlot::setAntialiasedElements and + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPLayerable::setAntialiased(bool enabled) +{ + mAntialiased = enabled; +} + +/*! + Returns whether this layerable is visible, taking possible direct layerable parent visibility + into account. This is the method that is consulted to decide whether a layerable shall be drawn + or not. + + If this layerable has a direct layerable parent (usually set via hierarchies implemented in + subclasses, like in the case of QCPLayoutElement), this function returns true only if this + layerable has its visibility set to true and the parent layerable's \ref realVisibility returns + true. + + If this layerable doesn't have a direct layerable parent, returns the state of this layerable's + visibility. +*/ +bool QCPLayerable::realVisibility() const +{ + return mVisible && (!mParentLayerable || mParentLayerable.data()->realVisibility()); +} + +/*! + This function is used to decide whether a click hits a layerable object or not. + + \a pos is a point in pixel coordinates on the QCustomPlot surface. This function returns the + shortest pixel distance of this point to the object. If the object is either invisible or the + distance couldn't be determined, -1.0 is returned. Further, if \a onlySelectable is true and the + object is not selectable, -1.0 is returned, too. + + If the item is represented not by single lines but by an area like QCPItemRect or QCPItemText, a + click inside the area returns a constant value greater zero (typically the selectionTolerance of + the parent QCustomPlot multiplied by 0.99). If the click lies outside the area, this function + returns -1.0. + + Providing a constant value for area objects allows selecting line objects even when they are + obscured by such area objects, by clicking close to the lines (i.e. closer than + 0.99*selectionTolerance). + + The actual setting of the selection state is not done by this function. This is handled by the + parent QCustomPlot when the mouseReleaseEvent occurs, and the finally selected object is notified + via the selectEvent/deselectEvent methods. + + \a details is an optional output parameter. Every layerable subclass may place any information + in \a details. This information will be passed to \ref selectEvent when the parent QCustomPlot + decides on the basis of this selectTest call, that the object was successfully selected. The + subsequent call to \ref selectEvent will carry the \a details. This is useful for multi-part + objects (like QCPAxis). This way, a possibly complex calculation to decide which part was clicked + is only done once in \ref selectTest. The result (i.e. the actually clicked part) can then be + placed in \a details. So in the subsequent \ref selectEvent, the decision which part was + selected doesn't have to be done a second time for a single selection operation. + + You may pass 0 as \a details to indicate that you are not interested in those selection details. + + \see selectEvent, deselectEvent, QCustomPlot::setInteractions +*/ +double QCPLayerable::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(pos) + Q_UNUSED(onlySelectable) + Q_UNUSED(details) + return -1.0; +} + +/*! \internal + + Sets the parent plot of this layerable. Use this function once to set the parent plot if you have + passed 0 in the constructor. It can not be used to move a layerable from one QCustomPlot to + another one. + + Note that, unlike when passing a non-null parent plot in the constructor, this function does not + make \a parentPlot the QObject-parent of this layerable. If you want this, call + QObject::setParent(\a parentPlot) in addition to this function. + + Further, you will probably want to set a layer (\ref setLayer) after calling this function, to + make the layerable appear on the QCustomPlot. + + The parent plot change will be propagated to subclasses via a call to \ref parentPlotInitialized + so they can react accordingly (e.g. also initialize the parent plot of child layerables, like + QCPLayout does). +*/ +void QCPLayerable::initializeParentPlot(QCustomPlot *parentPlot) +{ + if (mParentPlot) + { + qDebug() << Q_FUNC_INFO << "called with mParentPlot already initialized"; + return; + } + + if (!parentPlot) + qDebug() << Q_FUNC_INFO << "called with parentPlot zero"; + + mParentPlot = parentPlot; + parentPlotInitialized(mParentPlot); +} + +/*! \internal + + Sets the parent layerable of this layerable to \a parentLayerable. Note that \a parentLayerable does not + become the QObject-parent (for memory management) of this layerable. + + The parent layerable has influence on the return value of the \ref realVisibility method. Only + layerables with a fully visible parent tree will return true for \ref realVisibility, and thus be + drawn. + + \see realVisibility +*/ +void QCPLayerable::setParentLayerable(QCPLayerable *parentLayerable) +{ + mParentLayerable = parentLayerable; +} + +/*! \internal + + Moves this layerable object to \a layer. If \a prepend is true, this object will be prepended to + the new layer's list, i.e. it will be drawn below the objects already on the layer. If it is + false, the object will be appended. + + Returns true on success, i.e. if \a layer is a valid layer. +*/ +bool QCPLayerable::moveToLayer(QCPLayer *layer, bool prepend) +{ + if (layer && !mParentPlot) + { + qDebug() << Q_FUNC_INFO << "no parent QCustomPlot set"; + return false; + } + if (layer && layer->parentPlot() != mParentPlot) + { + qDebug() << Q_FUNC_INFO << "layer" << layer->name() << "is not in same QCustomPlot as this layerable"; + return false; + } + + if (mLayer) + mLayer->removeChild(this); + mLayer = layer; + if (mLayer) + mLayer->addChild(this, prepend); + return true; +} + +/*! \internal + + Sets the QCPainter::setAntialiasing state on the provided \a painter, depending on the \a + localAntialiased value as well as the overrides \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. Which override enum this function takes into account is + controlled via \a overrideElement. +*/ +void QCPLayerable::applyAntialiasingHint(QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const +{ + if (mParentPlot && mParentPlot->notAntialiasedElements().testFlag(overrideElement)) + painter->setAntialiasing(false); + else if (mParentPlot && mParentPlot->antialiasedElements().testFlag(overrideElement)) + painter->setAntialiasing(true); + else + painter->setAntialiasing(localAntialiased); +} + +/*! \internal + + This function is called by \ref initializeParentPlot, to allow subclasses to react on the setting + of a parent plot. This is the case when 0 was passed as parent plot in the constructor, and the + parent plot is set at a later time. + + For example, QCPLayoutElement/QCPLayout hierarchies may be created independently of any + QCustomPlot at first. When they are then added to a layout inside the QCustomPlot, the top level + element of the hierarchy gets its parent plot initialized with \ref initializeParentPlot. To + propagate the parent plot to all the children of the hierarchy, the top level element then uses + this function to pass the parent plot on to its child elements. + + The default implementation does nothing. + + \see initializeParentPlot +*/ +void QCPLayerable::parentPlotInitialized(QCustomPlot *parentPlot) +{ + Q_UNUSED(parentPlot) +} + +/*! \internal + + Returns the selection category this layerable shall belong to. The selection category is used in + conjunction with \ref QCustomPlot::setInteractions to control which objects are selectable and + which aren't. + + Subclasses that don't fit any of the normal \ref QCP::Interaction values can use \ref + QCP::iSelectOther. This is what the default implementation returns. + + \see QCustomPlot::setInteractions +*/ +QCP::Interaction QCPLayerable::selectionCategory() const +{ + return QCP::iSelectOther; +} + +/*! \internal + + Returns the clipping rectangle of this layerable object. By default, this is the viewport of the + parent QCustomPlot. Specific subclasses may reimplement this function to provide different + clipping rects. + + The returned clipping rect is set on the painter before the draw function of the respective + object is called. +*/ +QRect QCPLayerable::clipRect() const +{ + if (mParentPlot) + return mParentPlot->viewport(); + else + return QRect(); +} + +/*! \internal + + This event is called when the layerable shall be selected, as a consequence of a click by the + user. Subclasses should react to it by setting their selection state appropriately. The default + implementation does nothing. + + \a event is the mouse event that caused the selection. \a additive indicates, whether the user + was holding the multi-select-modifier while performing the selection (see \ref + QCustomPlot::setMultiSelectModifier). if \a additive is true, the selection state must be toggled + (i.e. become selected when unselected and unselected when selected). + + Every selectEvent is preceded by a call to \ref selectTest, which has returned positively (i.e. + returned a value greater than 0 and less than the selection tolerance of the parent QCustomPlot). + The \a details data you output from \ref selectTest is feeded back via \a details here. You may + use it to transport any kind of information from the selectTest to the possibly subsequent + selectEvent. Usually \a details is used to transfer which part was clicked, if it is a layerable + that has multiple individually selectable parts (like QCPAxis). This way selectEvent doesn't need + to do the calculation again to find out which part was actually clicked. + + \a selectionStateChanged is an output parameter. If the pointer is non-null, this function must + set the value either to true or false, depending on whether the selection state of this layerable + was actually changed. For layerables that only are selectable as a whole and not in parts, this + is simple: if \a additive is true, \a selectionStateChanged must also be set to true, because the + selection toggles. If \a additive is false, \a selectionStateChanged is only set to true, if the + layerable was previously unselected and now is switched to the selected state. + + \see selectTest, deselectEvent +*/ +void QCPLayerable::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(additive) + Q_UNUSED(details) + Q_UNUSED(selectionStateChanged) +} + +/*! \internal + + This event is called when the layerable shall be deselected, either as consequence of a user + interaction or a call to \ref QCustomPlot::deselectAll. Subclasses should react to it by + unsetting their selection appropriately. + + just as in \ref selectEvent, the output parameter \a selectionStateChanged (if non-null), must + return true or false when the selection state of this layerable has changed or not changed, + respectively. + + \see selectTest, selectEvent +*/ +void QCPLayerable::deselectEvent(bool *selectionStateChanged) +{ + Q_UNUSED(selectionStateChanged) +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPRange +//////////////////////////////////////////////////////////////////////////////////////////////////// +/*! \class QCPRange + \brief Represents the range an axis is encompassing. + + contains a \a lower and \a upper double value and provides convenience input, output and + modification functions. + + \see QCPAxis::setRange +*/ + +/*! + Minimum range size (\a upper - \a lower) the range changing functions will accept. Smaller + intervals would cause errors due to the 11-bit exponent of double precision numbers, + corresponding to a minimum magnitude of roughly 1e-308. + \see validRange, maxRange +*/ +const double QCPRange::minRange = 1e-280; + +/*! + Maximum values (negative and positive) the range will accept in range-changing functions. + Larger absolute values would cause errors due to the 11-bit exponent of double precision numbers, + corresponding to a maximum magnitude of roughly 1e308. + Since the number of planck-volumes in the entire visible universe is only ~1e183, this should + be enough. + \see validRange, minRange +*/ +const double QCPRange::maxRange = 1e250; + +/*! + Constructs a range with \a lower and \a upper set to zero. +*/ +QCPRange::QCPRange() : + lower(0), + upper(0) +{ +} + +/*! \overload + Constructs a range with the specified \a lower and \a upper values. +*/ +QCPRange::QCPRange(double lower, double upper) : + lower(lower), + upper(upper) +{ + normalize(); +} + +/*! + Returns the size of the range, i.e. \a upper-\a lower +*/ +double QCPRange::size() const +{ + return upper-lower; +} + +/*! + Returns the center of the range, i.e. (\a upper+\a lower)*0.5 +*/ +double QCPRange::center() const +{ + return (upper+lower)*0.5; +} + +/*! + Makes sure \a lower is numerically smaller than \a upper. If this is not the case, the values + are swapped. +*/ +void QCPRange::normalize() +{ + if (lower > upper) + qSwap(lower, upper); +} + +/*! + Returns a sanitized version of the range. Sanitized means for logarithmic scales, that + the range won't span the positive and negative sign domain, i.e. contain zero. Further + \a lower will always be numerically smaller (or equal) to \a upper. + + If the original range does span positive and negative sign domains or contains zero, + the returned range will try to approximate the original range as good as possible. + If the positive interval of the original range is wider than the negative interval, the + returned range will only contain the positive interval, with lower bound set to \a rangeFac or + \a rangeFac *\a upper, whichever is closer to zero. Same procedure is used if the negative interval + is wider than the positive interval, this time by changing the \a upper bound. +*/ +QCPRange QCPRange::sanitizedForLogScale() const +{ + double rangeFac = 1e-3; + QCPRange sanitizedRange(lower, upper); + sanitizedRange.normalize(); + // can't have range spanning negative and positive values in log plot, so change range to fix it + //if (qFuzzyCompare(sanitizedRange.lower+1, 1) && !qFuzzyCompare(sanitizedRange.upper+1, 1)) + if (sanitizedRange.lower == 0.0 && sanitizedRange.upper != 0.0) + { + // case lower is 0 + if (rangeFac < sanitizedRange.upper*rangeFac) + sanitizedRange.lower = rangeFac; + else + sanitizedRange.lower = sanitizedRange.upper*rangeFac; + } //else if (!qFuzzyCompare(lower+1, 1) && qFuzzyCompare(upper+1, 1)) + else if (sanitizedRange.lower != 0.0 && sanitizedRange.upper == 0.0) + { + // case upper is 0 + if (-rangeFac > sanitizedRange.lower*rangeFac) + sanitizedRange.upper = -rangeFac; + else + sanitizedRange.upper = sanitizedRange.lower*rangeFac; + } else if (sanitizedRange.lower < 0 && sanitizedRange.upper > 0) + { + // find out whether negative or positive interval is wider to decide which sign domain will be chosen + if (-sanitizedRange.lower > sanitizedRange.upper) + { + // negative is wider, do same as in case upper is 0 + if (-rangeFac > sanitizedRange.lower*rangeFac) + sanitizedRange.upper = -rangeFac; + else + sanitizedRange.upper = sanitizedRange.lower*rangeFac; + } else + { + // positive is wider, do same as in case lower is 0 + if (rangeFac < sanitizedRange.upper*rangeFac) + sanitizedRange.lower = rangeFac; + else + sanitizedRange.lower = sanitizedRange.upper*rangeFac; + } + } + // due to normalization, case lower>0 && upper<0 should never occur, because that implies upper= lower && value <= upper; +} + +/*! + Checks, whether the specified range is within valid bounds, which are defined + as QCPRange::maxRange and QCPRange::minRange. + A valid range means: + \li range bounds within -maxRange and maxRange + \li range size above minRange + \li range size below maxRange +*/ +bool QCPRange::validRange(double lower, double upper) +{ + /* + return (lower > -maxRange && + upper < maxRange && + qAbs(lower-upper) > minRange && + (lower < -minRange || lower > minRange) && + (upper < -minRange || upper > minRange)); + */ + return (lower > -maxRange && + upper < maxRange && + qAbs(lower-upper) > minRange && + qAbs(lower-upper) < maxRange); +} + +/*! + \overload + Checks, whether the specified range is within valid bounds, which are defined + as QCPRange::maxRange and QCPRange::minRange. + A valid range means: + \li range bounds within -maxRange and maxRange + \li range size above minRange + \li range size below maxRange +*/ +bool QCPRange::validRange(const QCPRange &range) +{ + /* + return (range.lower > -maxRange && + range.upper < maxRange && + qAbs(range.lower-range.upper) > minRange && + qAbs(range.lower-range.upper) < maxRange && + (range.lower < -minRange || range.lower > minRange) && + (range.upper < -minRange || range.upper > minRange)); + */ + return (range.lower > -maxRange && + range.upper < maxRange && + qAbs(range.lower-range.upper) > minRange && + qAbs(range.lower-range.upper) < maxRange); +} + + +/*! \page thelayoutsystem The Layout System + + The layout system is responsible for positioning and scaling layout elements such as axis rects, + legends and plot titles in a QCustomPlot. + + \section layoutsystem-classesandmechanisms Classes and mechanisms + + The layout system is based on the abstract base class \ref QCPLayoutElement. All objects that + take part in the layout system derive from this class, either directly or indirectly. + + Since QCPLayoutElement itself derives from \ref QCPLayerable, a layout element may draw its own + content. However, it is perfectly possible for a layout element to only serve as a structuring + and/or positioning element, not drawing anything on its own. + + \subsection layoutsystem-rects Rects of a layout element + + A layout element is a rectangular object described by two rects: the inner rect (\ref + QCPLayoutElement::rect) and the outer rect (\ref QCPLayoutElement::setOuterRect). The inner rect + is calculated automatically by applying the margin (\ref QCPLayoutElement::setMargins) inward + from the outer rect. The inner rect is meant for main content while the margin area may either be + left blank or serve for displaying peripheral graphics. For example, \ref QCPAxisRect positions + the four main axes at the sides of the inner rect, so graphs end up inside it and the axis labels + and tick labels are in the margin area. + + \subsection layoutsystem-margins Margins + + Each layout element may provide a mechanism to automatically determine its margins. Internally, + this is realized with the \ref QCPLayoutElement::calculateAutoMargin function which takes a \ref + QCP::MarginSide and returns an integer value which represents the ideal margin for the specified + side. The automatic margin will be used on the sides specified in \ref + QCPLayoutElement::setAutoMargins. By default, it is set to \ref QCP::msAll meaning automatic + margin calculation is enabled for all four sides. In this case, a minimum margin may be set with + \ref QCPLayoutElement::setMinimumMargins, to prevent the automatic margin mechanism from setting + margins smaller than desired for a specific situation. If automatic margin calculation is unset + for a specific side, the margin of that side can be controlled directy via \ref + QCPLayoutElement::setMargins. + + If multiple layout ements are arranged next to or beneath each other, it may be desirable to + align their inner rects on certain sides. Since they all might have different automatic margins, + this usually isn't the case. The class \ref QCPMarginGroup and \ref + QCPLayoutElement::setMarginGroup fix this by allowing to synchronize multiple margins. See the + documentation there for details. + + \subsection layoutsystem-layout Layouts + + As mentioned, a QCPLayoutElement may have an arbitrary number of child layout elements and in + princple can have the only purpose to manage/arrange those child elements. This is what the + subclass \ref QCPLayout specializes on. It is a QCPLayoutElement itself but has no visual + representation. It defines an interface to add, remove and manage child layout elements. + QCPLayout isn't a usable layout though, it's an abstract base class that concrete layouts derive + from, like \ref QCPLayoutGrid which arranges its child elements in a grid and \ref QCPLayoutInset + which allows placing child elements freely inside its rect. + + Since a QCPLayout is a layout element itself, it may be placed inside other layouts. This way, + complex hierarchies may be created, offering very flexible arrangements. + +
+
\image html LayoutsystemSketch0.png ""
+
\image html LayoutsystemSketch1.png ""
+
+
+ Sketch of the default QCPLayoutGrid accessible via \ref QCustomPlot::plotLayout. The left image + shows the outer and inner rect of the grid layout itself while the right image shows how two + child layout elements are placed inside the grid layout next to each other in cells (0, 0) and + (0, 1). +
+
+ + \subsection layoutsystem-plotlayout The top level plot layout + + Every QCustomPlot has one top level layout of type \ref QCPLayoutGrid. It is accessible via \ref + QCustomPlot::plotLayout and contains (directly or indirectly via other sub-layouts) all layout + elements in the QCustomPlot. By default, this top level grid layout contains a single cell which + holds the main axis rect. + + \subsection layoutsystem-examples Examples + + Adding a plot title is a typical and simple case to demonstrate basic workings of the layout system. + \code + // first we create and prepare a plot title layout element: + QCPPlotTitle *title = new QCPPlotTitle(customPlot); + title->setText("Plot Title Example"); + title->setFont(QFont("sans", 12, QFont::Bold)); + // then we add it to the main plot layout: + customPlot->plotLayout()->insertRow(0); // insert an empty row above the axis rect + customPlot->plotLayout()->addElement(0, 0, title); // insert the title in the empty cell we just created + \endcode + \image html layoutsystem-addingplottitle.png + + Arranging multiple axis rects actually is the central purpose of the layout system. + \code + customPlot->plotLayout()->clear(); // let's start from scratch and remove the default axis rect + // add the first axis rect in second row (row index 1): + customPlot->plotLayout()->addElement(1, 0, new QCPAxisRect(customPlot)); + // create a sub layout that we'll place in first row: + QCPLayoutGrid *subLayout = new QCPLayoutGrid; + customPlot->plotLayout()->addElement(0, 0, subLayout); + // add two axis rects in the sub layout next to eachother: + subLayout->addElement(0, 0, new QCPAxisRect(customPlot)); + subLayout->addElement(0, 1, new QCPAxisRect(customPlot)); + subLayout->setColumnStretchFactor(0, 3); // left axis rect shall have 60% of width + subLayout->setColumnStretchFactor(1, 2); // right one only 40% (3:2 = 60:40) + \endcode + \image html layoutsystem-multipleaxisrects.png + +*/ + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPMarginGroup +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPMarginGroup + \brief A margin group allows synchronization of margin sides if working with multiple layout elements. + + QCPMarginGroup allows you to tie a margin side of two or more layout elements together, such that + they will all have the same size, based on the largest required margin in the group. + + \n + \image html QCPMarginGroup.png "Demonstration of QCPMarginGroup" + \n + + In certain situations it is desirable that margins at specific sides are synchronized across + layout elements. For example, if one QCPAxisRect is below another one in a grid layout, it will + provide a cleaner look to the user if the left and right margins of the two axis rects are of the + same size. The left axis of the top axis rect will then be at the same horizontal position as the + left axis of the lower axis rect, making them appear aligned. The same applies for the right + axes. This is what QCPMarginGroup makes possible. + + To add/remove a specific side of a layout element to/from a margin group, use the \ref + QCPLayoutElement::setMarginGroup method. To completely break apart the margin group, either call + \ref clear, or just delete the margin group. + + \section QCPMarginGroup-example Example + + First create a margin group: + \code + QCPMarginGroup *group = new QCPMarginGroup(customPlot); + \endcode + Then set this group on the layout element sides: + \code + customPlot->axisRect(0)->setMarginGroup(QCP::msLeft|QCP::msRight, group); + customPlot->axisRect(1)->setMarginGroup(QCP::msLeft|QCP::msRight, group); + \endcode + Here, we've used the first two axis rects of the plot and synchronized their left margins with + each other and their right margins with each other. +*/ + +/* start documentation of inline functions */ + +/*! \fn QList QCPMarginGroup::elements(QCP::MarginSide side) const + + Returns a list of all layout elements that have their margin \a side associated with this margin + group. +*/ + +/* end documentation of inline functions */ + +/*! + Creates a new QCPMarginGroup instance in \a parentPlot. +*/ +QCPMarginGroup::QCPMarginGroup(QCustomPlot *parentPlot) : + QObject(parentPlot), + mParentPlot(parentPlot) +{ + mChildren.insert(QCP::msLeft, QList()); + mChildren.insert(QCP::msRight, QList()); + mChildren.insert(QCP::msTop, QList()); + mChildren.insert(QCP::msBottom, QList()); +} + +QCPMarginGroup::~QCPMarginGroup() +{ + clear(); +} + +/*! + Returns whether this margin group is empty. If this function returns true, no layout elements use + this margin group to synchronize margin sides. +*/ +bool QCPMarginGroup::isEmpty() const +{ + QHashIterator > it(mChildren); + while (it.hasNext()) + { + it.next(); + if (!it.value().isEmpty()) + return false; + } + return true; +} + +/*! + Clears this margin group. The synchronization of the margin sides that use this margin group is + lifted and they will use their individual margin sizes again. +*/ +void QCPMarginGroup::clear() +{ + // make all children remove themselves from this margin group: + QHashIterator > it(mChildren); + while (it.hasNext()) + { + it.next(); + const QList elements = it.value(); + for (int i=elements.size()-1; i>=0; --i) + elements.at(i)->setMarginGroup(it.key(), 0); // removes itself from mChildren via removeChild + } +} + +/*! \internal + + Returns the synchronized common margin for \a side. This is the margin value that will be used by + the layout element on the respective side, if it is part of this margin group. + + The common margin is calculated by requesting the automatic margin (\ref + QCPLayoutElement::calculateAutoMargin) of each element associated with \a side in this margin + group, and choosing the largest returned value. (QCPLayoutElement::minimumMargins is taken into + account, too.) +*/ +int QCPMarginGroup::commonMargin(QCP::MarginSide side) const +{ + // query all automatic margins of the layout elements in this margin group side and find maximum: + int result = 0; + const QList elements = mChildren.value(side); + for (int i=0; iautoMargins().testFlag(side)) + continue; + int m = qMax(elements.at(i)->calculateAutoMargin(side), QCP::getMarginValue(elements.at(i)->minimumMargins(), side)); + if (m > result) + result = m; + } + return result; +} + +/*! \internal + + Adds \a element to the internal list of child elements, for the margin \a side. + + This function does not modify the margin group property of \a element. +*/ +void QCPMarginGroup::addChild(QCP::MarginSide side, QCPLayoutElement *element) +{ + if (!mChildren[side].contains(element)) + mChildren[side].append(element); + else + qDebug() << Q_FUNC_INFO << "element is already child of this margin group side" << reinterpret_cast(element); +} + +/*! \internal + + Removes \a element from the internal list of child elements, for the margin \a side. + + This function does not modify the margin group property of \a element. +*/ +void QCPMarginGroup::removeChild(QCP::MarginSide side, QCPLayoutElement *element) +{ + if (!mChildren[side].removeOne(element)) + qDebug() << Q_FUNC_INFO << "element is not child of this margin group side" << reinterpret_cast(element); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayoutElement +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayoutElement + \brief The abstract base class for all objects that form \ref thelayoutsystem "the layout system". + + This is an abstract base class. As such, it can't be instantiated directly, rather use one of its subclasses. + + A Layout element is a rectangular object which can be placed in layouts. It has an outer rect + (QCPLayoutElement::outerRect) and an inner rect (\ref QCPLayoutElement::rect). The difference + between outer and inner rect is called its margin. The margin can either be set to automatic or + manual (\ref setAutoMargins) on a per-side basis. If a side is set to manual, that margin can be + set explicitly with \ref setMargins and will stay fixed at that value. If it's set to automatic, + the layout element subclass will control the value itself (via \ref calculateAutoMargin). + + Layout elements can be placed in layouts (base class QCPLayout) like QCPLayoutGrid. The top level + layout is reachable via \ref QCustomPlot::plotLayout, and is a \ref QCPLayoutGrid. Since \ref + QCPLayout itself derives from \ref QCPLayoutElement, layouts can be nested. + + Thus in QCustomPlot one can divide layout elements into two categories: The ones that are + invisible by themselves, because they don't draw anything. Their only purpose is to manage the + position and size of other layout elements. This category of layout elements usually use + QCPLayout as base class. Then there is the category of layout elements which actually draw + something. For example, QCPAxisRect, QCPLegend and QCPPlotTitle are of this category. This does + not necessarily mean that the latter category can't have child layout elements. QCPLegend for + instance, actually derives from QCPLayoutGrid and the individual legend items are child layout + elements in the grid layout. +*/ + +/* start documentation of inline functions */ + +/*! \fn QCPLayout *QCPLayoutElement::layout() const + + Returns the parent layout of this layout element. +*/ + +/*! \fn QRect QCPLayoutElement::rect() const + + Returns the inner rect of this layout element. The inner rect is the outer rect (\ref + setOuterRect) shrinked by the margins (\ref setMargins, \ref setAutoMargins). + + In some cases, the area between outer and inner rect is left blank. In other cases the margin + area is used to display peripheral graphics while the main content is in the inner rect. This is + where automatic margin calculation becomes interesting because it allows the layout element to + adapt the margins to the peripheral graphics it wants to draw. For example, \ref QCPAxisRect + draws the axis labels and tick labels in the margin area, thus needs to adjust the margins (if + \ref setAutoMargins is enabled) according to the space required by the labels of the axes. +*/ + +/*! \fn virtual void QCPLayoutElement::mousePressEvent(QMouseEvent *event) + + This event is called, if the mouse was pressed while being inside the outer rect of this layout + element. +*/ + +/*! \fn virtual void QCPLayoutElement::mouseMoveEvent(QMouseEvent *event) + + This event is called, if the mouse is moved inside the outer rect of this layout element. +*/ + +/*! \fn virtual void QCPLayoutElement::mouseReleaseEvent(QMouseEvent *event) + + This event is called, if the mouse was previously pressed inside the outer rect of this layout + element and is now released. +*/ + +/*! \fn virtual void QCPLayoutElement::mouseDoubleClickEvent(QMouseEvent *event) + + This event is called, if the mouse is double-clicked inside the outer rect of this layout + element. +*/ + +/*! \fn virtual void QCPLayoutElement::wheelEvent(QWheelEvent *event) + + This event is called, if the mouse wheel is scrolled while the cursor is inside the rect of this + layout element. +*/ + +/* end documentation of inline functions */ + +/*! + Creates an instance of QCPLayoutElement and sets default values. +*/ +QCPLayoutElement::QCPLayoutElement(QCustomPlot *parentPlot) : + QCPLayerable(parentPlot), // parenthood is changed as soon as layout element gets inserted into a layout (except for top level layout) + mParentLayout(0), + mMinimumSize(), + mMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX), + mRect(0, 0, 0, 0), + mOuterRect(0, 0, 0, 0), + mMargins(0, 0, 0, 0), + mMinimumMargins(0, 0, 0, 0), + mAutoMargins(QCP::msAll) +{ +} + +QCPLayoutElement::~QCPLayoutElement() +{ + setMarginGroup(QCP::msAll, 0); // unregister at margin groups, if there are any + // unregister at layout: + if (qobject_cast(mParentLayout)) // the qobject_cast is just a safeguard in case the layout forgets to call clear() in its dtor and this dtor is called by QObject dtor + mParentLayout->take(this); +} + +/*! + Sets the outer rect of this layout element. If the layout element is inside a layout, the layout + sets the position and size of this layout element using this function. + + Calling this function externally has no effect, since the layout will overwrite any changes to + the outer rect upon the next replot. + + The layout element will adapt its inner \ref rect by applying the margins inward to the outer rect. + + \see rect +*/ +void QCPLayoutElement::setOuterRect(const QRect &rect) +{ + if (mOuterRect != rect) + { + mOuterRect = rect; + mRect = mOuterRect.adjusted(mMargins.left(), mMargins.top(), -mMargins.right(), -mMargins.bottom()); + } +} + +/*! + Sets the margins of this layout element. If \ref setAutoMargins is disabled for some or all + sides, this function is used to manually set the margin on those sides. Sides that are still set + to be handled automatically are ignored and may have any value in \a margins. + + The margin is the distance between the outer rect (controlled by the parent layout via \ref + setOuterRect) and the inner \ref rect (which usually contains the main content of this layout + element). + + \see setAutoMargins +*/ +void QCPLayoutElement::setMargins(const QMargins &margins) +{ + if (mMargins != margins) + { + mMargins = margins; + mRect = mOuterRect.adjusted(mMargins.left(), mMargins.top(), -mMargins.right(), -mMargins.bottom()); + } +} + +/*! + If \ref setAutoMargins is enabled on some or all margins, this function is used to provide + minimum values for those margins. + + The minimum values are not enforced on margin sides that were set to be under manual control via + \ref setAutoMargins. + + \see setAutoMargins +*/ +void QCPLayoutElement::setMinimumMargins(const QMargins &margins) +{ + if (mMinimumMargins != margins) + { + mMinimumMargins = margins; + } +} + +/*! + Sets on which sides the margin shall be calculated automatically. If a side is calculated + automatically, a minimum margin value may be provided with \ref setMinimumMargins. If a side is + set to be controlled manually, the value may be specified with \ref setMargins. + + Margin sides that are under automatic control may participate in a \ref QCPMarginGroup (see \ref + setMarginGroup), to synchronize (align) it with other layout elements in the plot. + + \see setMinimumMargins, setMargins +*/ +void QCPLayoutElement::setAutoMargins(QCP::MarginSides sides) +{ + mAutoMargins = sides; +} + +/*! + Sets the minimum size for the inner \ref rect of this layout element. A parent layout tries to + respect the \a size here by changing row/column sizes in the layout accordingly. + + If the parent layout size is not sufficient to satisfy all minimum size constraints of its child + layout elements, the layout may set a size that is actually smaller than \a size. QCustomPlot + propagates the layout's size constraints to the outside by setting its own minimum QWidget size + accordingly, so violations of \a size should be exceptions. +*/ +void QCPLayoutElement::setMinimumSize(const QSize &size) +{ + if (mMinimumSize != size) + { + mMinimumSize = size; + if (mParentLayout) + mParentLayout->sizeConstraintsChanged(); + } +} + +/*! \overload + + Sets the minimum size for the inner \ref rect of this layout element. +*/ +void QCPLayoutElement::setMinimumSize(int width, int height) +{ + setMinimumSize(QSize(width, height)); +} + +/*! + Sets the maximum size for the inner \ref rect of this layout element. A parent layout tries to + respect the \a size here by changing row/column sizes in the layout accordingly. +*/ +void QCPLayoutElement::setMaximumSize(const QSize &size) +{ + if (mMaximumSize != size) + { + mMaximumSize = size; + if (mParentLayout) + mParentLayout->sizeConstraintsChanged(); + } +} + +/*! \overload + + Sets the maximum size for the inner \ref rect of this layout element. +*/ +void QCPLayoutElement::setMaximumSize(int width, int height) +{ + setMaximumSize(QSize(width, height)); +} + +/*! + Sets the margin \a group of the specified margin \a sides. + + Margin groups allow synchronizing specified margins across layout elements, see the documentation + of \ref QCPMarginGroup. + + To unset the margin group of \a sides, set \a group to 0. + + Note that margin groups only work for margin sides that are set to automatic (\ref + setAutoMargins). +*/ +void QCPLayoutElement::setMarginGroup(QCP::MarginSides sides, QCPMarginGroup *group) +{ + QVector sideVector; + if (sides.testFlag(QCP::msLeft)) sideVector.append(QCP::msLeft); + if (sides.testFlag(QCP::msRight)) sideVector.append(QCP::msRight); + if (sides.testFlag(QCP::msTop)) sideVector.append(QCP::msTop); + if (sides.testFlag(QCP::msBottom)) sideVector.append(QCP::msBottom); + + for (int i=0; iremoveChild(side, this); + + if (!group) // if setting to 0, remove hash entry. Else set hash entry to new group and register there + { + mMarginGroups.remove(side); + } else // setting to a new group + { + mMarginGroups[side] = group; + group->addChild(side, this); + } + } + } +} + +/*! + Updates the layout element and sub-elements. This function is automatically called upon replot by + the parent layout element. + + Layout elements that have child elements should call the \ref update method of their child + elements. + + The default implementation executes the automatic margin mechanism, so subclasses should make + sure to call the base class implementation. +*/ +void QCPLayoutElement::update() +{ + if (mAutoMargins != QCP::msNone) + { + // set the margins of this layout element according to automatic margin calculation, either directly or via a margin group: + QMargins newMargins = mMargins; + QVector marginSides = QVector() << QCP::msLeft << QCP::msRight << QCP::msTop << QCP::msBottom; + for (int i=0; icommonMargin(side)); // this side is part of a margin group, so get the margin value from that group + else + QCP::setMarginValue(newMargins, side, calculateAutoMargin(side)); // this side is not part of a group, so calculate the value directly + // apply minimum margin restrictions: + if (QCP::getMarginValue(newMargins, side) < QCP::getMarginValue(mMinimumMargins, side)) + QCP::setMarginValue(newMargins, side, QCP::getMarginValue(mMinimumMargins, side)); + } + } + setMargins(newMargins); + } +} + +/*! + Returns the minimum size this layout element (the inner \ref rect) may be compressed to. + + if a minimum size (\ref setMinimumSize) was not set manually, parent layouts consult this + function to determine the minimum allowed size of this layout element. (A manual minimum size is + considered set if it is non-zero.) +*/ +QSize QCPLayoutElement::minimumSizeHint() const +{ + return mMinimumSize; +} + +/*! + Returns the maximum size this layout element (the inner \ref rect) may be expanded to. + + if a maximum size (\ref setMaximumSize) was not set manually, parent layouts consult this + function to determine the maximum allowed size of this layout element. (A manual maximum size is + considered set if it is smaller than Qt's QWIDGETSIZE_MAX.) +*/ +QSize QCPLayoutElement::maximumSizeHint() const +{ + return mMaximumSize; +} + +/*! + Returns a list of all child elements in this layout element. If \a recursive is true, all + sub-child elements are included in the list, too. + + Note that there may be entries with value 0 in the returned list. (For example, QCPLayoutGrid may have + empty cells which yield 0 at the respective index.) +*/ +QList QCPLayoutElement::elements(bool recursive) const +{ + Q_UNUSED(recursive) + return QList(); +} + +/*! + Layout elements are sensitive to events inside their outer rect. If \a pos is within the outer + rect, this method returns a value corresponding to 0.99 times the parent plot's selection + tolerance. However, layout elements are not selectable by default. So if \a onlySelectable is + true, -1.0 is returned. + + See \ref QCPLayerable::selectTest for a general explanation of this virtual method. + + QCPLayoutElement subclasses may reimplement this method to provide more specific selection test + behaviour. +*/ +double QCPLayoutElement::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + + if (onlySelectable) + return -1; + + if (QRectF(mOuterRect).contains(pos)) + { + if (mParentPlot) + return mParentPlot->selectionTolerance()*0.99; + else + { + qDebug() << Q_FUNC_INFO << "parent plot not defined"; + return -1; + } + } else + return -1; +} + +/*! \internal + + propagates the parent plot initialization to all child elements, by calling \ref + QCPLayerable::initializeParentPlot on them. +*/ +void QCPLayoutElement::parentPlotInitialized(QCustomPlot *parentPlot) +{ + QList els = elements(false); + for (int i=0; iparentPlot()) + els.at(i)->initializeParentPlot(parentPlot); + } +} + +/*! \internal + + Returns the margin size for this \a side. It is used if automatic margins is enabled for this \a + side (see \ref setAutoMargins). If a minimum margin was set with \ref setMinimumMargins, the + returned value will not be smaller than the specified minimum margin. + + The default implementation just returns the respective manual margin (\ref setMargins) or the + minimum margin, whichever is larger. +*/ +int QCPLayoutElement::calculateAutoMargin(QCP::MarginSide side) +{ + return qMax(QCP::getMarginValue(mMargins, side), QCP::getMarginValue(mMinimumMargins, side)); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayout +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayout + \brief The abstract base class for layouts + + This is an abstract base class for layout elements whose main purpose is to define the position + and size of other child layout elements. In most cases, layouts don't draw anything themselves + (but there are exceptions to this, e.g. QCPLegend). + + QCPLayout derives from QCPLayoutElement, and thus can itself be nested in other layouts. + + QCPLayout introduces a common interface for accessing and manipulating the child elements. Those + functions are most notably \ref elementCount, \ref elementAt, \ref takeAt, \ref take, \ref + simplify, \ref removeAt, \ref remove and \ref clear. Individual subclasses may add more functions + to this interface which are more specialized to the form of the layout. For example, \ref + QCPLayoutGrid adds functions that take row and column indices to access cells of the layout grid + more conveniently. + + Since this is an abstract base class, you can't instantiate it directly. Rather use one of its + subclasses like QCPLayoutGrid or QCPLayoutInset. + + For a general introduction to the layout system, see the dedicated documentation page \ref + thelayoutsystem "The Layout System". +*/ + +/* start documentation of pure virtual functions */ + +/*! \fn virtual int QCPLayout::elementCount() const = 0 + + Returns the number of elements/cells in the layout. + + \see elements, elementAt +*/ + +/*! \fn virtual QCPLayoutElement* QCPLayout::elementAt(int index) const = 0 + + Returns the element in the cell with the given \a index. If \a index is invalid, returns 0. + + Note that even if \a index is valid, the respective cell may be empty in some layouts (e.g. + QCPLayoutGrid), so this function may return 0 in those cases. You may use this function to check + whether a cell is empty or not. + + \see elements, elementCount, takeAt +*/ + +/*! \fn virtual QCPLayoutElement* QCPLayout::takeAt(int index) = 0 + + Removes the element with the given \a index from the layout and returns it. + + If the \a index is invalid or the cell with that index is empty, returns 0. + + Note that some layouts don't remove the respective cell right away but leave an empty cell after + successful removal of the layout element. To collapse empty cells, use \ref simplify. + + \see elementAt, take +*/ + +/*! \fn virtual bool QCPLayout::take(QCPLayoutElement* element) = 0 + + Removes the specified \a element from the layout and returns true on success. + + If the \a element isn't in this layout, returns false. + + Note that some layouts don't remove the respective cell right away but leave an empty cell after + successful removal of the layout element. To collapse empty cells, use \ref simplify. + + \see takeAt +*/ + +/* end documentation of pure virtual functions */ + +/*! + Creates an instance of QCPLayoutElement and sets default values. Note that since QCPLayoutElement + is an abstract base class, it can't be instantiated directly. +*/ +QCPLayout::QCPLayout() +{ +} + +/*! + First calls the QCPLayoutElement::update base class implementation to update the margins on this + layout. + + Then calls \ref updateLayout which subclasses reimplement to reposition and resize their cells. + + Finally, \ref update is called on all child elements. +*/ +void QCPLayout::update() +{ + QCPLayoutElement::update(); // recalculates (auto-)margins + + // set child element rects according to layout: + updateLayout(); + + // propagate update call to child elements: + for (int i=0; iupdate(); + } +} + +/* inherits documentation from base class */ +QList QCPLayout::elements(bool recursive) const +{ + int c = elementCount(); + QList result; +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + result.reserve(c); +#endif + for (int i=0; ielements(recursive); + } + } + return result; +} + +/*! + Simplifies the layout by collapsing empty cells. The exact behavior depends on subclasses, the + default implementation does nothing. + + Not all layouts need simplification. For example, QCPLayoutInset doesn't use explicit + simplification while QCPLayoutGrid does. +*/ +void QCPLayout::simplify() +{ +} + +/*! + Removes and deletes the element at the provided \a index. Returns true on success. If \a index is + invalid or points to an empty cell, returns false. + + This function internally uses \ref takeAt to remove the element from the layout and then deletes + the returned element. + + \see remove, takeAt +*/ +bool QCPLayout::removeAt(int index) +{ + if (QCPLayoutElement *el = takeAt(index)) + { + delete el; + return true; + } else + return false; +} + +/*! + Removes and deletes the provided \a element. Returns true on success. If \a element is not in the + layout, returns false. + + This function internally uses \ref takeAt to remove the element from the layout and then deletes + the element. + + \see removeAt, take +*/ +bool QCPLayout::remove(QCPLayoutElement *element) +{ + if (take(element)) + { + delete element; + return true; + } else + return false; +} + +/*! + Removes and deletes all layout elements in this layout. + + \see remove, removeAt +*/ +void QCPLayout::clear() +{ + for (int i=elementCount()-1; i>=0; --i) + { + if (elementAt(i)) + removeAt(i); + } + simplify(); +} + +/*! + Subclasses call this method to report changed (minimum/maximum) size constraints. + + If the parent of this layout is again a QCPLayout, forwards the call to the parent's \ref + sizeConstraintsChanged. If the parent is a QWidget (i.e. is the \ref QCustomPlot::plotLayout of + QCustomPlot), calls QWidget::updateGeometry, so if the QCustomPlot widget is inside a Qt QLayout, + it may update itself and resize cells accordingly. +*/ +void QCPLayout::sizeConstraintsChanged() const +{ + if (QWidget *w = qobject_cast(parent())) + w->updateGeometry(); + else if (QCPLayout *l = qobject_cast(parent())) + l->sizeConstraintsChanged(); +} + +/*! \internal + + Subclasses reimplement this method to update the position and sizes of the child elements/cells + via calling their \ref QCPLayoutElement::setOuterRect. The default implementation does nothing. + + The geometry used as a reference is the inner \ref rect of this layout. Child elements should stay + within that rect. + + \ref getSectionSizes may help with the reimplementation of this function. + + \see update +*/ +void QCPLayout::updateLayout() +{ +} + + +/*! \internal + + Associates \a el with this layout. This is done by setting the \ref QCPLayoutElement::layout, the + \ref QCPLayerable::parentLayerable and the QObject parent to this layout. + + Further, if \a el didn't previously have a parent plot, calls \ref + QCPLayerable::initializeParentPlot on \a el to set the paret plot. + + This method is used by subclass specific methods that add elements to the layout. Note that this + method only changes properties in \a el. The removal from the old layout and the insertion into + the new layout must be done additionally. +*/ +void QCPLayout::adoptElement(QCPLayoutElement *el) +{ + if (el) + { + el->mParentLayout = this; + el->setParentLayerable(this); + el->setParent(this); + if (!el->parentPlot()) + el->initializeParentPlot(mParentPlot); + } else + qDebug() << Q_FUNC_INFO << "Null element passed"; +} + +/*! \internal + + Disassociates \a el from this layout. This is done by setting the \ref QCPLayoutElement::layout + and the \ref QCPLayerable::parentLayerable to zero. The QObject parent is set to the parent + QCustomPlot. + + This method is used by subclass specific methods that remove elements from the layout (e.g. \ref + take or \ref takeAt). Note that this method only changes properties in \a el. The removal from + the old layout must be done additionally. +*/ +void QCPLayout::releaseElement(QCPLayoutElement *el) +{ + if (el) + { + el->mParentLayout = 0; + el->setParentLayerable(0); + el->setParent(mParentPlot); + // Note: Don't initializeParentPlot(0) here, because layout element will stay in same parent plot + } else + qDebug() << Q_FUNC_INFO << "Null element passed"; +} + +/*! \internal + + This is a helper function for the implementation of \ref updateLayout in subclasses. + + It calculates the sizes of one-dimensional sections with provided constraints on maximum section + sizes, minimum section sizes, relative stretch factors and the final total size of all sections. + + The QVector entries refer to the sections. Thus all QVectors must have the same size. + + \a maxSizes gives the maximum allowed size of each section. If there shall be no maximum size + imposed, set all vector values to Qt's QWIDGETSIZE_MAX. + + \a minSizes gives the minimum allowed size of each section. If there shall be no minimum size + imposed, set all vector values to zero. If the \a minSizes entries add up to a value greater than + \a totalSize, sections will be scaled smaller than the proposed minimum sizes. (In other words, + not exceeding the allowed total size is taken to be more important than not going below minimum + section sizes.) + + \a stretchFactors give the relative proportions of the sections to each other. If all sections + shall be scaled equally, set all values equal. If the first section shall be double the size of + each individual other section, set the first number of \a stretchFactors to double the value of + the other individual values (e.g. {2, 1, 1, 1}). + + \a totalSize is the value that the final section sizes will add up to. Due to rounding, the + actual sum may differ slightly. If you want the section sizes to sum up to exactly that value, + you could distribute the remaining difference on the sections. + + The return value is a QVector containing the section sizes. +*/ +QVector QCPLayout::getSectionSizes(QVector maxSizes, QVector minSizes, QVector stretchFactors, int totalSize) const +{ + if (maxSizes.size() != minSizes.size() || minSizes.size() != stretchFactors.size()) + { + qDebug() << Q_FUNC_INFO << "Passed vector sizes aren't equal:" << maxSizes << minSizes << stretchFactors; + return QVector(); + } + if (stretchFactors.isEmpty()) + return QVector(); + int sectionCount = stretchFactors.size(); + QVector sectionSizes(sectionCount); + // if provided total size is forced smaller than total minimum size, ignore minimum sizes (squeeze sections): + int minSizeSum = 0; + for (int i=0; i minimumLockedSections; + QList unfinishedSections; + for (int i=0; i result(sectionCount); + for (int i=0; i= 0 && row < mElements.size()) + { + if (column >= 0 && column < mElements.first().size()) + { + if (QCPLayoutElement *result = mElements.at(row).at(column)) + return result; + else + qDebug() << Q_FUNC_INFO << "Requested cell is empty. Row:" << row << "Column:" << column; + } else + qDebug() << Q_FUNC_INFO << "Invalid column. Row:" << row << "Column:" << column; + } else + qDebug() << Q_FUNC_INFO << "Invalid row. Row:" << row << "Column:" << column; + return 0; +} + +/*! + Returns the number of rows in the layout. + + \see columnCount +*/ +int QCPLayoutGrid::rowCount() const +{ + return mElements.size(); +} + +/*! + Returns the number of columns in the layout. + + \see rowCount +*/ +int QCPLayoutGrid::columnCount() const +{ + if (mElements.size() > 0) + return mElements.first().size(); + else + return 0; +} + +/*! + Adds the \a element to cell with \a row and \a column. If \a element is already in a layout, it + is first removed from there. If \a row or \a column don't exist yet, the layout is expanded + accordingly. + + Returns true if the element was added successfully, i.e. if the cell at \a row and \a column + didn't already have an element. + + \see element, hasElement, take, remove +*/ +bool QCPLayoutGrid::addElement(int row, int column, QCPLayoutElement *element) +{ + if (element) + { + if (!hasElement(row, column)) + { + if (element->layout()) // remove from old layout first + element->layout()->take(element); + expandTo(row+1, column+1); + mElements[row][column] = element; + adoptElement(element); + return true; + } else + qDebug() << Q_FUNC_INFO << "There is already an element in the specified row/column:" << row << column; + } else + qDebug() << Q_FUNC_INFO << "Can't add null element to row/column:" << row << column; + return false; +} + +/*! + Returns whether the cell at \a row and \a column exists and contains a valid element, i.e. isn't + empty. + + \see element +*/ +bool QCPLayoutGrid::hasElement(int row, int column) +{ + if (row >= 0 && row < rowCount() && column >= 0 && column < columnCount()) + return mElements.at(row).at(column); + else + return false; +} + +/*! + Sets the stretch \a factor of \a column. + + Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond + their minimum and maximum widths/heights (\ref QCPLayoutElement::setMinimumSize, \ref + QCPLayoutElement::setMaximumSize), regardless of the stretch factor. + + The default stretch factor of newly created rows/columns is 1. + + \see setColumnStretchFactors, setRowStretchFactor +*/ +void QCPLayoutGrid::setColumnStretchFactor(int column, double factor) +{ + if (column >= 0 && column < columnCount()) + { + if (factor > 0) + mColumnStretchFactors[column] = factor; + else + qDebug() << Q_FUNC_INFO << "Invalid stretch factor, must be positive:" << factor; + } else + qDebug() << Q_FUNC_INFO << "Invalid column:" << column; +} + +/*! + Sets the stretch \a factors of all columns. \a factors must have the size \ref columnCount. + + Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond + their minimum and maximum widths/heights (\ref QCPLayoutElement::setMinimumSize, \ref + QCPLayoutElement::setMaximumSize), regardless of the stretch factor. + + The default stretch factor of newly created rows/columns is 1. + + \see setColumnStretchFactor, setRowStretchFactors +*/ +void QCPLayoutGrid::setColumnStretchFactors(const QList &factors) +{ + if (factors.size() == mColumnStretchFactors.size()) + { + mColumnStretchFactors = factors; + for (int i=0; i= 0 && row < rowCount()) + { + if (factor > 0) + mRowStretchFactors[row] = factor; + else + qDebug() << Q_FUNC_INFO << "Invalid stretch factor, must be positive:" << factor; + } else + qDebug() << Q_FUNC_INFO << "Invalid row:" << row; +} + +/*! + Sets the stretch \a factors of all rows. \a factors must have the size \ref rowCount. + + Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond + their minimum and maximum widths/heights (\ref QCPLayoutElement::setMinimumSize, \ref + QCPLayoutElement::setMaximumSize), regardless of the stretch factor. + + The default stretch factor of newly created rows/columns is 1. + + \see setRowStretchFactor, setColumnStretchFactors +*/ +void QCPLayoutGrid::setRowStretchFactors(const QList &factors) +{ + if (factors.size() == mRowStretchFactors.size()) + { + mRowStretchFactors = factors; + for (int i=0; i()); + mRowStretchFactors.append(1); + } + // go through rows and expand columns as necessary: + int newColCount = qMax(columnCount(), newColumnCount); + for (int i=0; i rowCount()) + newIndex = rowCount(); + + mRowStretchFactors.insert(newIndex, 1); + QList newRow; + for (int col=0; col columnCount()) + newIndex = columnCount(); + + mColumnStretchFactors.insert(newIndex, 1); + for (int row=0; row minColWidths, minRowHeights, maxColWidths, maxRowHeights; + getMinimumRowColSizes(&minColWidths, &minRowHeights); + getMaximumRowColSizes(&maxColWidths, &maxRowHeights); + + int totalRowSpacing = (rowCount()-1) * mRowSpacing; + int totalColSpacing = (columnCount()-1) * mColumnSpacing; + QVector colWidths = getSectionSizes(maxColWidths, minColWidths, mColumnStretchFactors.toVector(), mRect.width()-totalColSpacing); + QVector rowHeights = getSectionSizes(maxRowHeights, minRowHeights, mRowStretchFactors.toVector(), mRect.height()-totalRowSpacing); + + // go through cells and set rects accordingly: + int yOffset = mRect.top(); + for (int row=0; row 0) + yOffset += rowHeights.at(row-1)+mRowSpacing; + int xOffset = mRect.left(); + for (int col=0; col 0) + xOffset += colWidths.at(col-1)+mColumnSpacing; + if (mElements.at(row).at(col)) + mElements.at(row).at(col)->setOuterRect(QRect(xOffset, yOffset, colWidths.at(col), rowHeights.at(row))); + } + } +} + +/* inherits documentation from base class */ +int QCPLayoutGrid::elementCount() const +{ + return rowCount()*columnCount(); +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutGrid::elementAt(int index) const +{ + if (index >= 0 && index < elementCount()) + return mElements.at(index / columnCount()).at(index % columnCount()); + else + return 0; +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutGrid::takeAt(int index) +{ + if (QCPLayoutElement *el = elementAt(index)) + { + releaseElement(el); + mElements[index / columnCount()][index % columnCount()] = 0; + return el; + } else + { + qDebug() << Q_FUNC_INFO << "Attempt to take invalid index:" << index; + return 0; + } +} + +/* inherits documentation from base class */ +bool QCPLayoutGrid::take(QCPLayoutElement *element) +{ + if (element) + { + for (int i=0; i QCPLayoutGrid::elements(bool recursive) const +{ + QList result; + int colC = columnCount(); + int rowC = rowCount(); +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + result.reserve(colC*rowC); +#endif + for (int row=0; rowelements(recursive); + } + } + return result; +} + +/*! + Simplifies the layout by collapsing rows and columns which only contain empty cells. +*/ +void QCPLayoutGrid::simplify() +{ + // remove rows with only empty cells: + for (int row=rowCount()-1; row>=0; --row) + { + bool hasElements = false; + for (int col=0; col=0; --col) + { + bool hasElements = false; + for (int row=0; row minColWidths, minRowHeights; + getMinimumRowColSizes(&minColWidths, &minRowHeights); + QSize result(0, 0); + for (int i=0; i maxColWidths, maxRowHeights; + getMaximumRowColSizes(&maxColWidths, &maxRowHeights); + + QSize result(0, 0); + for (int i=0; i *minColWidths, QVector *minRowHeights) const +{ + *minColWidths = QVector(columnCount(), 0); + *minRowHeights = QVector(rowCount(), 0); + for (int row=0; rowminimumSizeHint(); + QSize min = mElements.at(row).at(col)->minimumSize(); + QSize final(min.width() > 0 ? min.width() : minHint.width(), min.height() > 0 ? min.height() : minHint.height()); + if (minColWidths->at(col) < final.width()) + (*minColWidths)[col] = final.width(); + if (minRowHeights->at(row) < final.height()) + (*minRowHeights)[row] = final.height(); + } + } + } +} + +/*! \internal + + Places the maximum column widths and row heights into \a maxColWidths and \a maxRowHeights + respectively. + + The maximum height of a row is the smallest maximum height of any element in that row. The + maximum width of a column is the smallest maximum width of any element in that column. + + This is a helper function for \ref updateLayout. + + \see getMinimumRowColSizes +*/ +void QCPLayoutGrid::getMaximumRowColSizes(QVector *maxColWidths, QVector *maxRowHeights) const +{ + *maxColWidths = QVector(columnCount(), QWIDGETSIZE_MAX); + *maxRowHeights = QVector(rowCount(), QWIDGETSIZE_MAX); + for (int row=0; rowmaximumSizeHint(); + QSize max = mElements.at(row).at(col)->maximumSize(); + QSize final(max.width() < QWIDGETSIZE_MAX ? max.width() : maxHint.width(), max.height() < QWIDGETSIZE_MAX ? max.height() : maxHint.height()); + if (maxColWidths->at(col) > final.width()) + (*maxColWidths)[col] = final.width(); + if (maxRowHeights->at(row) > final.height()) + (*maxRowHeights)[row] = final.height(); + } + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayoutInset +//////////////////////////////////////////////////////////////////////////////////////////////////// +/*! \class QCPLayoutInset + \brief A layout that places child elements aligned to the border or arbitrarily positioned + + Elements are placed either aligned to the border or at arbitrary position in the area of the + layout. Which placement applies is controlled with the \ref InsetPlacement (\ref + setInsetPlacement). + + Elements are added via \ref addElement(QCPLayoutElement *element, Qt::Alignment alignment) or + addElement(QCPLayoutElement *element, const QRectF &rect). If the first method is used, the inset + placement will default to \ref ipBorderAligned and the element will be aligned according to the + \a alignment parameter. The second method defaults to \ref ipFree and allows placing elements at + arbitrary position and size, defined by \a rect. + + The alignment or rect can be set via \ref setInsetAlignment or \ref setInsetRect, respectively. + + This is the layout that every QCPAxisRect has as \ref QCPAxisRect::insetLayout. +*/ + +/* start documentation of inline functions */ + +/*! \fn virtual void QCPLayoutInset::simplify() + + The QCPInsetLayout does not need simplification since it can never have empty cells due to its + linear index structure. This method does nothing. +*/ + +/* end documentation of inline functions */ + +/*! + Creates an instance of QCPLayoutInset and sets default values. +*/ +QCPLayoutInset::QCPLayoutInset() +{ +} + +QCPLayoutInset::~QCPLayoutInset() +{ + // clear all child layout elements. This is important because only the specific layouts know how + // to handle removing elements (clear calls virtual removeAt method to do that). + clear(); +} + +/*! + Returns the placement type of the element with the specified \a index. +*/ +QCPLayoutInset::InsetPlacement QCPLayoutInset::insetPlacement(int index) const +{ + if (elementAt(index)) + return mInsetPlacement.at(index); + else + { + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; + return ipFree; + } +} + +/*! + Returns the alignment of the element with the specified \a index. The alignment only has a + meaning, if the inset placement (\ref setInsetPlacement) is \ref ipBorderAligned. +*/ +Qt::Alignment QCPLayoutInset::insetAlignment(int index) const +{ + if (elementAt(index)) + return mInsetAlignment.at(index); + else + { + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; + return 0; + } +} + +/*! + Returns the rect of the element with the specified \a index. The rect only has a + meaning, if the inset placement (\ref setInsetPlacement) is \ref ipFree. +*/ +QRectF QCPLayoutInset::insetRect(int index) const +{ + if (elementAt(index)) + return mInsetRect.at(index); + else + { + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; + return QRectF(); + } +} + +/*! + Sets the inset placement type of the element with the specified \a index to \a placement. + + \see InsetPlacement +*/ +void QCPLayoutInset::setInsetPlacement(int index, QCPLayoutInset::InsetPlacement placement) +{ + if (elementAt(index)) + mInsetPlacement[index] = placement; + else + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; +} + +/*! + If the inset placement (\ref setInsetPlacement) is \ref ipBorderAligned, this function + is used to set the alignment of the element with the specified \a index to \a alignment. + + \a alignment is an or combination of the following alignment flags: Qt::AlignLeft, + Qt::AlignHCenter, Qt::AlighRight, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom. Any other + alignment flags will be ignored. +*/ +void QCPLayoutInset::setInsetAlignment(int index, Qt::Alignment alignment) +{ + if (elementAt(index)) + mInsetAlignment[index] = alignment; + else + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; +} + +/*! + If the inset placement (\ref setInsetPlacement) is \ref ipFree, this function is used to set the + position and size of the element with the specified \a index to \a rect. + + \a rect is given in fractions of the whole inset layout rect. So an inset with rect (0, 0, 1, 1) + will span the entire layout. An inset with rect (0.6, 0.1, 0.35, 0.35) will be in the top right + corner of the layout, with 35% width and height of the parent layout. + + Note that the minimum and maximum sizes of the embedded element (\ref + QCPLayoutElement::setMinimumSize, \ref QCPLayoutElement::setMaximumSize) are enforced. +*/ +void QCPLayoutInset::setInsetRect(int index, const QRectF &rect) +{ + if (elementAt(index)) + mInsetRect[index] = rect; + else + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; +} + +/* inherits documentation from base class */ +void QCPLayoutInset::updateLayout() +{ + for (int i=0; iminimumSizeHint(); + QSize maxSizeHint = mElements.at(i)->maximumSizeHint(); + finalMinSize.setWidth(mElements.at(i)->minimumSize().width() > 0 ? mElements.at(i)->minimumSize().width() : minSizeHint.width()); + finalMinSize.setHeight(mElements.at(i)->minimumSize().height() > 0 ? mElements.at(i)->minimumSize().height() : minSizeHint.height()); + finalMaxSize.setWidth(mElements.at(i)->maximumSize().width() < QWIDGETSIZE_MAX ? mElements.at(i)->maximumSize().width() : maxSizeHint.width()); + finalMaxSize.setHeight(mElements.at(i)->maximumSize().height() < QWIDGETSIZE_MAX ? mElements.at(i)->maximumSize().height() : maxSizeHint.height()); + if (mInsetPlacement.at(i) == ipFree) + { + insetRect = QRect(rect().x()+rect().width()*mInsetRect.at(i).x(), + rect().y()+rect().height()*mInsetRect.at(i).y(), + rect().width()*mInsetRect.at(i).width(), + rect().height()*mInsetRect.at(i).height()); + if (insetRect.size().width() < finalMinSize.width()) + insetRect.setWidth(finalMinSize.width()); + if (insetRect.size().height() < finalMinSize.height()) + insetRect.setHeight(finalMinSize.height()); + if (insetRect.size().width() > finalMaxSize.width()) + insetRect.setWidth(finalMaxSize.width()); + if (insetRect.size().height() > finalMaxSize.height()) + insetRect.setHeight(finalMaxSize.height()); + } else if (mInsetPlacement.at(i) == ipBorderAligned) + { + insetRect.setSize(finalMinSize); + Qt::Alignment al = mInsetAlignment.at(i); + if (al.testFlag(Qt::AlignLeft)) insetRect.moveLeft(rect().x()); + else if (al.testFlag(Qt::AlignRight)) insetRect.moveRight(rect().x()+rect().width()); + else insetRect.moveLeft(rect().x()+rect().width()*0.5-finalMinSize.width()*0.5); // default to Qt::AlignHCenter + if (al.testFlag(Qt::AlignTop)) insetRect.moveTop(rect().y()); + else if (al.testFlag(Qt::AlignBottom)) insetRect.moveBottom(rect().y()+rect().height()); + else insetRect.moveTop(rect().y()+rect().height()*0.5-finalMinSize.height()*0.5); // default to Qt::AlignVCenter + } + mElements.at(i)->setOuterRect(insetRect); + } +} + +/* inherits documentation from base class */ +int QCPLayoutInset::elementCount() const +{ + return mElements.size(); +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutInset::elementAt(int index) const +{ + if (index >= 0 && index < mElements.size()) + return mElements.at(index); + else + return 0; +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutInset::takeAt(int index) +{ + if (QCPLayoutElement *el = elementAt(index)) + { + releaseElement(el); + mElements.removeAt(index); + mInsetPlacement.removeAt(index); + mInsetAlignment.removeAt(index); + mInsetRect.removeAt(index); + return el; + } else + { + qDebug() << Q_FUNC_INFO << "Attempt to take invalid index:" << index; + return 0; + } +} + +/* inherits documentation from base class */ +bool QCPLayoutInset::take(QCPLayoutElement *element) +{ + if (element) + { + for (int i=0; iselectTest(pos, onlySelectable) >= 0) + return mParentPlot->selectionTolerance()*0.99; + } + return -1; +} + +/*! + Adds the specified \a element to the layout as an inset aligned at the border (\ref + setInsetAlignment is initialized with \ref ipBorderAligned). The alignment is set to \a + alignment. + + \a alignment is an or combination of the following alignment flags: Qt::AlignLeft, + Qt::AlignHCenter, Qt::AlighRight, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom. Any other + alignment flags will be ignored. + + \see addElement(QCPLayoutElement *element, const QRectF &rect) +*/ +void QCPLayoutInset::addElement(QCPLayoutElement *element, Qt::Alignment alignment) +{ + if (element) + { + if (element->layout()) // remove from old layout first + element->layout()->take(element); + mElements.append(element); + mInsetPlacement.append(ipBorderAligned); + mInsetAlignment.append(alignment); + mInsetRect.append(QRectF(0.6, 0.6, 0.4, 0.4)); + adoptElement(element); + } else + qDebug() << Q_FUNC_INFO << "Can't add null element"; +} + +/*! + Adds the specified \a element to the layout as an inset with free positioning/sizing (\ref + setInsetAlignment is initialized with \ref ipFree). The position and size is set to \a + rect. + + \a rect is given in fractions of the whole inset layout rect. So an inset with rect (0, 0, 1, 1) + will span the entire layout. An inset with rect (0.6, 0.1, 0.35, 0.35) will be in the top right + corner of the layout, with 35% width and height of the parent layout. + + \see addElement(QCPLayoutElement *element, Qt::Alignment alignment) +*/ +void QCPLayoutInset::addElement(QCPLayoutElement *element, const QRectF &rect) +{ + if (element) + { + if (element->layout()) // remove from old layout first + element->layout()->take(element); + mElements.append(element); + mInsetPlacement.append(ipFree); + mInsetAlignment.append(Qt::AlignRight|Qt::AlignTop); + mInsetRect.append(rect); + adoptElement(element); + } else + qDebug() << Q_FUNC_INFO << "Can't add null element"; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLineEnding +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLineEnding + \brief Handles the different ending decorations for line-like items + + \image html QCPLineEnding.png "The various ending styles currently supported" + + For every ending a line-like item has, an instance of this class exists. For example, QCPItemLine + has two endings which can be set with QCPItemLine::setHead and QCPItemLine::setTail. + + The styles themselves are defined via the enum QCPLineEnding::EndingStyle. Most decorations can + be modified regarding width and length, see \ref setWidth and \ref setLength. The direction of + the ending decoration (e.g. direction an arrow is pointing) is controlled by the line-like item. + For example, when both endings of a QCPItemLine are set to be arrows, they will point to opposite + directions, e.g. "outward". This can be changed by \ref setInverted, which would make the + respective arrow point inward. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify a + QCPLineEnding::EndingStyle where actually a QCPLineEnding is expected, e.g. \code + myItemLine->setHead(QCPLineEnding::esSpikeArrow) \endcode +*/ + +/*! + Creates a QCPLineEnding instance with default values (style \ref esNone). +*/ +QCPLineEnding::QCPLineEnding() : + mStyle(esNone), + mWidth(8), + mLength(10), + mInverted(false) +{ +} + +/*! + Creates a QCPLineEnding instance with the specified values. +*/ +QCPLineEnding::QCPLineEnding(QCPLineEnding::EndingStyle style, double width, double length, bool inverted) : + mStyle(style), + mWidth(width), + mLength(length), + mInverted(inverted) +{ +} + +/*! + Sets the style of the ending decoration. +*/ +void QCPLineEnding::setStyle(QCPLineEnding::EndingStyle style) +{ + mStyle = style; +} + +/*! + Sets the width of the ending decoration, if the style supports it. On arrows, for example, the + width defines the size perpendicular to the arrow's pointing direction. + + \see setLength +*/ +void QCPLineEnding::setWidth(double width) +{ + mWidth = width; +} + +/*! + Sets the length of the ending decoration, if the style supports it. On arrows, for example, the + length defines the size in pointing direction. + + \see setWidth +*/ +void QCPLineEnding::setLength(double length) +{ + mLength = length; +} + +/*! + Sets whether the ending decoration shall be inverted. For example, an arrow decoration will point + inward when \a inverted is set to true. + + Note that also the \a width direction is inverted. For symmetrical ending styles like arrows or + discs, this doesn't make a difference. However, asymmetric styles like \ref esHalfBar are + affected by it, which can be used to control to which side the half bar points to. +*/ +void QCPLineEnding::setInverted(bool inverted) +{ + mInverted = inverted; +} + +/*! \internal + + Returns the maximum pixel radius the ending decoration might cover, starting from the position + the decoration is drawn at (typically a line ending/\ref QCPItemPosition of an item). + + This is relevant for clipping. Only omit painting of the decoration when the position where the + decoration is supposed to be drawn is farther away from the clipping rect than the returned + distance. +*/ +double QCPLineEnding::boundingDistance() const +{ + switch (mStyle) + { + case esNone: + return 0; + + case esFlatArrow: + case esSpikeArrow: + case esLineArrow: + case esSkewedBar: + return qSqrt(mWidth*mWidth+mLength*mLength); // items that have width and length + + case esDisc: + case esSquare: + case esDiamond: + case esBar: + case esHalfBar: + return mWidth*1.42; // items that only have a width -> width*sqrt(2) + + } + return 0; +} + +/*! + Starting from the origin of this line ending (which is style specific), returns the length + covered by the line ending symbol, in backward direction. + + For example, the \ref esSpikeArrow has a shorter real length than a \ref esFlatArrow, even if + both have the same \ref setLength value, because the spike arrow has an inward curved back, which + reduces the length along its center axis (the drawing origin for arrows is at the tip). + + This function is used for precise, style specific placement of line endings, for example in + QCPAxes. +*/ +double QCPLineEnding::realLength() const +{ + switch (mStyle) + { + case esNone: + case esLineArrow: + case esSkewedBar: + case esBar: + case esHalfBar: + return 0; + + case esFlatArrow: + return mLength; + + case esDisc: + case esSquare: + case esDiamond: + return mWidth*0.5; + + case esSpikeArrow: + return mLength*0.8; + } + return 0; +} + +/*! \internal + + Draws the line ending with the specified \a painter at the position \a pos. The direction of the + line ending is controlled with \a dir. +*/ +void QCPLineEnding::draw(QCPPainter *painter, const QVector2D &pos, const QVector2D &dir) const +{ + if (mStyle == esNone) + return; + + QVector2D lengthVec(dir.normalized()); + if (lengthVec.isNull()) + lengthVec = QVector2D(1, 0); + QVector2D widthVec(-lengthVec.y(), lengthVec.x()); + lengthVec *= mLength*(mInverted ? -1 : 1); + widthVec *= mWidth*0.5*(mInverted ? -1 : 1); + + QPen penBackup = painter->pen(); + QBrush brushBackup = painter->brush(); + QPen miterPen = penBackup; + miterPen.setJoinStyle(Qt::MiterJoin); // to make arrow heads spikey + QBrush brush(painter->pen().color(), Qt::SolidPattern); + switch (mStyle) + { + case esNone: break; + case esFlatArrow: + { + QPointF points[3] = {pos.toPointF(), + (pos-lengthVec+widthVec).toPointF(), + (pos-lengthVec-widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 3); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esSpikeArrow: + { + QPointF points[4] = {pos.toPointF(), + (pos-lengthVec+widthVec).toPointF(), + (pos-lengthVec*0.8).toPointF(), + (pos-lengthVec-widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 4); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esLineArrow: + { + QPointF points[3] = {(pos-lengthVec+widthVec).toPointF(), + pos.toPointF(), + (pos-lengthVec-widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->drawPolyline(points, 3); + painter->setPen(penBackup); + break; + } + case esDisc: + { + painter->setBrush(brush); + painter->drawEllipse(pos.toPointF(), mWidth*0.5, mWidth*0.5); + painter->setBrush(brushBackup); + break; + } + case esSquare: + { + QVector2D widthVecPerp(-widthVec.y(), widthVec.x()); + QPointF points[4] = {(pos-widthVecPerp+widthVec).toPointF(), + (pos-widthVecPerp-widthVec).toPointF(), + (pos+widthVecPerp-widthVec).toPointF(), + (pos+widthVecPerp+widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 4); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esDiamond: + { + QVector2D widthVecPerp(-widthVec.y(), widthVec.x()); + QPointF points[4] = {(pos-widthVecPerp).toPointF(), + (pos-widthVec).toPointF(), + (pos+widthVecPerp).toPointF(), + (pos+widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 4); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esBar: + { + painter->drawLine((pos+widthVec).toPointF(), (pos-widthVec).toPointF()); + break; + } + case esHalfBar: + { + painter->drawLine((pos+widthVec).toPointF(), pos.toPointF()); + break; + } + case esSkewedBar: + { + if (qFuzzyIsNull(painter->pen().widthF()) && !painter->modes().testFlag(QCPPainter::pmNonCosmetic)) + { + // if drawing with cosmetic pen (perfectly thin stroke, happens only in vector exports), draw bar exactly on tip of line + painter->drawLine((pos+widthVec+lengthVec*0.2*(mInverted?-1:1)).toPointF(), + (pos-widthVec-lengthVec*0.2*(mInverted?-1:1)).toPointF()); + } else + { + // if drawing with thick (non-cosmetic) pen, shift bar a little in line direction to prevent line from sticking through bar slightly + painter->drawLine((pos+widthVec+lengthVec*0.2*(mInverted?-1:1)+dir.normalized()*qMax(1.0, (double)painter->pen().widthF())*0.5).toPointF(), + (pos-widthVec-lengthVec*0.2*(mInverted?-1:1)+dir.normalized()*qMax(1.0, (double)painter->pen().widthF())*0.5).toPointF()); + } + break; + } + } +} + +/*! \internal + \overload + + Draws the line ending. The direction is controlled with the \a angle parameter in radians. +*/ +void QCPLineEnding::draw(QCPPainter *painter, const QVector2D &pos, double angle) const +{ + draw(painter, pos, QVector2D(qCos(angle), qSin(angle))); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPGrid +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPGrid + \brief Responsible for drawing the grid of a QCPAxis. + + This class is tightly bound to QCPAxis. Every axis owns a grid instance and uses it to draw the + grid lines, sub grid lines and zero-line. You can interact with the grid of an axis via \ref + QCPAxis::grid. Normally, you don't need to create an instance of QCPGrid yourself. + + The axis and grid drawing was split into two classes to allow them to be placed on different + layers (both QCPAxis and QCPGrid inherit from QCPLayerable). Thus it is possible to have the grid + in the background and the axes in the foreground, and any plottables/items in between. This + described situation is the default setup, see the QCPLayer documentation. +*/ + +/*! + Creates a QCPGrid instance and sets default values. + + You shouldn't instantiate grids on their own, since every QCPAxis brings its own QCPGrid. +*/ +QCPGrid::QCPGrid(QCPAxis *parentAxis) : + QCPLayerable(parentAxis->parentPlot(), "", parentAxis), + mParentAxis(parentAxis) +{ + // warning: this is called in QCPAxis constructor, so parentAxis members should not be accessed/called + setParent(parentAxis); + setPen(QPen(QColor(200,200,200), 0, Qt::DotLine)); + setSubGridPen(QPen(QColor(220,220,220), 0, Qt::DotLine)); + setZeroLinePen(QPen(QColor(200,200,200), 0, Qt::SolidLine)); + setSubGridVisible(false); + setAntialiased(false); + setAntialiasedSubGrid(false); + setAntialiasedZeroLine(false); +} + +/*! + Sets whether grid lines at sub tick marks are drawn. + + \see setSubGridPen +*/ +void QCPGrid::setSubGridVisible(bool visible) +{ + mSubGridVisible = visible; +} + +/*! + Sets whether sub grid lines are drawn antialiased. +*/ +void QCPGrid::setAntialiasedSubGrid(bool enabled) +{ + mAntialiasedSubGrid = enabled; +} + +/*! + Sets whether zero lines are drawn antialiased. +*/ +void QCPGrid::setAntialiasedZeroLine(bool enabled) +{ + mAntialiasedZeroLine = enabled; +} + +/*! + Sets the pen with which (major) grid lines are drawn. +*/ +void QCPGrid::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen with which sub grid lines are drawn. +*/ +void QCPGrid::setSubGridPen(const QPen &pen) +{ + mSubGridPen = pen; +} + +/*! + Sets the pen with which zero lines are drawn. + + Zero lines are lines at value coordinate 0 which may be drawn with a different pen than other grid + lines. To disable zero lines and just draw normal grid lines at zero, set \a pen to Qt::NoPen. +*/ +void QCPGrid::setZeroLinePen(const QPen &pen) +{ + mZeroLinePen = pen; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing the major grid lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPGrid::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeGrid); +} + +/*! \internal + + Draws grid lines and sub grid lines at the positions of (sub) ticks of the parent axis, spanning + over the complete axis rect. Also draws the zero line, if appropriate (\ref setZeroLinePen). +*/ +void QCPGrid::draw(QCPPainter *painter) +{ + if (!mParentAxis) { qDebug() << Q_FUNC_INFO << "invalid parent axis"; return; } + + if (mSubGridVisible) + drawSubGridLines(painter); + drawGridLines(painter); +} + +/*! \internal + + Draws the main grid lines and possibly a zero line with the specified painter. + + This is a helper function called by \ref draw. +*/ +void QCPGrid::drawGridLines(QCPPainter *painter) const +{ + if (!mParentAxis) { qDebug() << Q_FUNC_INFO << "invalid parent axis"; return; } + + int lowTick = mParentAxis->mLowestVisibleTick; + int highTick = mParentAxis->mHighestVisibleTick; + double t; // helper variable, result of coordinate-to-pixel transforms + if (mParentAxis->orientation() == Qt::Horizontal) + { + // draw zeroline: + int zeroLineIndex = -1; + if (mZeroLinePen.style() != Qt::NoPen && mParentAxis->mRange.lower < 0 && mParentAxis->mRange.upper > 0) + { + applyAntialiasingHint(painter, mAntialiasedZeroLine, QCP::aeZeroLine); + painter->setPen(mZeroLinePen); + double epsilon = mParentAxis->range().size()*1E-6; // for comparing double to zero + for (int i=lowTick; i <= highTick; ++i) + { + if (qAbs(mParentAxis->mTickVector.at(i)) < epsilon) + { + zeroLineIndex = i; + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // x + painter->drawLine(QLineF(t, mParentAxis->mAxisRect->bottom(), t, mParentAxis->mAxisRect->top())); + break; + } + } + } + // draw grid lines: + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + for (int i=lowTick; i <= highTick; ++i) + { + if (i == zeroLineIndex) continue; // don't draw a gridline on top of the zeroline + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // x + painter->drawLine(QLineF(t, mParentAxis->mAxisRect->bottom(), t, mParentAxis->mAxisRect->top())); + } + } else + { + // draw zeroline: + int zeroLineIndex = -1; + if (mZeroLinePen.style() != Qt::NoPen && mParentAxis->mRange.lower < 0 && mParentAxis->mRange.upper > 0) + { + applyAntialiasingHint(painter, mAntialiasedZeroLine, QCP::aeZeroLine); + painter->setPen(mZeroLinePen); + double epsilon = mParentAxis->mRange.size()*1E-6; // for comparing double to zero + for (int i=lowTick; i <= highTick; ++i) + { + if (qAbs(mParentAxis->mTickVector.at(i)) < epsilon) + { + zeroLineIndex = i; + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // y + painter->drawLine(QLineF(mParentAxis->mAxisRect->left(), t, mParentAxis->mAxisRect->right(), t)); + break; + } + } + } + // draw grid lines: + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + for (int i=lowTick; i <= highTick; ++i) + { + if (i == zeroLineIndex) continue; // don't draw a gridline on top of the zeroline + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // y + painter->drawLine(QLineF(mParentAxis->mAxisRect->left(), t, mParentAxis->mAxisRect->right(), t)); + } + } +} + +/*! \internal + + Draws the sub grid lines with the specified painter. + + This is a helper function called by \ref draw. +*/ +void QCPGrid::drawSubGridLines(QCPPainter *painter) const +{ + if (!mParentAxis) { qDebug() << Q_FUNC_INFO << "invalid parent axis"; return; } + + applyAntialiasingHint(painter, mAntialiasedSubGrid, QCP::aeSubGrid); + double t; // helper variable, result of coordinate-to-pixel transforms + painter->setPen(mSubGridPen); + if (mParentAxis->orientation() == Qt::Horizontal) + { + for (int i=0; imSubTickVector.size(); ++i) + { + t = mParentAxis->coordToPixel(mParentAxis->mSubTickVector.at(i)); // x + painter->drawLine(QLineF(t, mParentAxis->mAxisRect->bottom(), t, mParentAxis->mAxisRect->top())); + } + } else + { + for (int i=0; imSubTickVector.size(); ++i) + { + t = mParentAxis->coordToPixel(mParentAxis->mSubTickVector.at(i)); // y + painter->drawLine(QLineF(mParentAxis->mAxisRect->left(), t, mParentAxis->mAxisRect->right(), t)); + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAxis +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAxis + \brief Manages a single axis inside a QCustomPlot. + + Usually doesn't need to be instantiated externally. Access %QCustomPlot's default four axes via + QCustomPlot::xAxis (bottom), QCustomPlot::yAxis (left), QCustomPlot::xAxis2 (top) and + QCustomPlot::yAxis2 (right). + + Axes are always part of an axis rect, see QCPAxisRect. + \image html AxisNamesOverview.png +
Naming convention of axis parts
+ \n + + \image html AxisRectSpacingOverview.png +
Overview of the spacings and paddings that define the geometry of an axis. The dashed gray line + on the left represents the QCustomPlot widget border.
+ +*/ + +/* start of documentation of inline functions */ + +/*! \fn Qt::Orientation QCPAxis::orientation() const + + Returns the orientation of the axis. The axis orientation (horizontal or vertical) is deduced + from the axis type (left, top, right or bottom). +*/ + +/*! \fn QCPGrid *QCPAxis::grid() const + + Returns the \ref QCPGrid instance belonging to this axis. Access it to set details about the way the + grid is displayed. +*/ + +/* end of documentation of inline functions */ +/* start of documentation of signals */ + +/*! \fn void QCPAxis::ticksRequest() + + This signal is emitted when \ref setAutoTicks is false and the axis is about to generate tick + labels for a replot. + + Modifying the tick positions can be done with \ref setTickVector. If you also want to control the + tick labels, set \ref setAutoTickLabels to false and also provide the labels with \ref + setTickVectorLabels. + + If you only want static ticks you probably don't need this signal, since you can just set the + tick vector (and possibly tick label vector) once. However, if you want to provide ticks (and + maybe labels) dynamically, e.g. depending on the current axis range, connect a slot to this + signal and set the vector/vectors there. +*/ + +/*! \fn void QCPAxis::rangeChanged(const QCPRange &newRange) + + This signal is emitted when the range of this axis has changed. You can connect it to the \ref + setRange slot of another axis to communicate the new range to the other axis, in order for it to + be synchronized. +*/ + +/*! \fn void QCPAxis::selectionChanged(QCPAxis::SelectableParts selection) + + This signal is emitted when the selection state of this axis has changed, either by user interaction + or by a direct call to \ref setSelectedParts. +*/ + +/* end of documentation of signals */ + +/*! + Constructs an Axis instance of Type \a type for the axis rect \a parent. + You shouldn't instantiate axes directly, rather use \ref QCPAxisRect::addAxis. +*/ +QCPAxis::QCPAxis(QCPAxisRect *parent, AxisType type) : + QCPLayerable(parent->parentPlot(), "", parent), + // axis base: + mAxisType(type), + mAxisRect(parent), + mOffset(0), + mPadding(5), + mOrientation((type == atBottom || type == atTop) ? Qt::Horizontal : Qt::Vertical), + mSelectableParts(spAxis | spTickLabels | spAxisLabel), + mSelectedParts(spNone), + mBasePen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)), + mSelectedBasePen(QPen(Qt::blue, 2)), + mLowerEnding(QCPLineEnding::esNone), + mUpperEnding(QCPLineEnding::esNone), + // axis label: + mLabelPadding(0), + mLabel(""), + mLabelFont(mParentPlot->font()), + mSelectedLabelFont(QFont(mLabelFont.family(), mLabelFont.pointSize(), QFont::Bold)), + mLabelColor(Qt::black), + mSelectedLabelColor(Qt::blue), + // tick labels: + mTickLabelPadding(0), + mTickLabels(true), + mAutoTickLabels(true), + mTickLabelRotation(0), + mTickLabelType(ltNumber), + mTickLabelFont(mParentPlot->font()), + mSelectedTickLabelFont(QFont(mTickLabelFont.family(), mTickLabelFont.pointSize(), QFont::Bold)), + mTickLabelColor(Qt::black), + mSelectedTickLabelColor(Qt::blue), + mDateTimeFormat("hh:mm:ss\ndd.MM.yy"), + mNumberPrecision(6), + mNumberFormatChar('g'), + mNumberBeautifulPowers(true), + mNumberMultiplyCross(false), + // ticks and subticks: + mTicks(true), + mTickStep(1), + mSubTickCount(4), + mAutoTickCount(6), + mAutoTicks(true), + mAutoTickStep(true), + mAutoSubTicks(true), + mTickLengthIn(5), + mTickLengthOut(0), + mSubTickLengthIn(2), + mSubTickLengthOut(0), + mTickPen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)), + mSelectedTickPen(QPen(Qt::blue, 2)), + mSubTickPen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)), + mSelectedSubTickPen(QPen(Qt::blue, 2)), + // scale and range: + mRange(0, 5), + mRangeReversed(false), + mScaleType(stLinear), + mScaleLogBase(10), + mScaleLogBaseLogInv(1.0/qLn(mScaleLogBase)), + // internal members: + mGrid(new QCPGrid(this)), + mLabelCache(16), // cache at most 16 (tick) labels + mLowestVisibleTick(0), + mHighestVisibleTick(-1), + mExponentialChar('e'), // will be updated with locale sensitive values in setupTickVector + mPositiveSignChar('+'), // will be updated with locale sensitive values in setupTickVector + mCachedMarginValid(false), + mCachedMargin(0) +{ + mGrid->setVisible(false); + setAntialiased(false); + setLayer(mParentPlot->currentLayer()); // it's actually on that layer already, but we want it in front of the grid, so we place it on there again + + if (type == atTop) + { + setTickLabelPadding(3); + setLabelPadding(6); + } else if (type == atRight) + { + setTickLabelPadding(7); + setLabelPadding(12); + } else if (type == atBottom) + { + setTickLabelPadding(3); + setLabelPadding(3); + } else if (type == atLeft) + { + setTickLabelPadding(5); + setLabelPadding(10); + } +} + +/* No documentation as it is a property getter */ +QString QCPAxis::numberFormat() const +{ + QString result; + result.append(mNumberFormatChar); + if (mNumberBeautifulPowers) + { + result.append("b"); + if (mNumberMultiplyCross) + result.append("c"); + } + return result; +} + +/*! + Sets whether the axis uses a linear scale or a logarithmic scale. If \a type is set to \ref + stLogarithmic, the logarithm base can be set with \ref setScaleLogBase. In logarithmic axis + scaling, major tick marks appear at all powers of the logarithm base. Properties like tick step + (\ref setTickStep) don't apply in logarithmic scaling. If you wish a decimal base but less major + ticks, consider choosing a logarithm base of 100, 1000 or even higher. + + If \a type is \ref stLogarithmic and the number format (\ref setNumberFormat) uses the 'b' option + (beautifully typeset decimal powers), the display usually is "1 [multiplication sign] 10 + [superscript] n", which looks unnatural for logarithmic scaling (the "1 [multiplication sign]" + part). To only display the decimal power, set the number precision to zero with + \ref setNumberPrecision. +*/ +void QCPAxis::setScaleType(ScaleType type) +{ + if (mScaleType != type) + { + mScaleType = type; + if (mScaleType == stLogarithmic) + mRange = mRange.sanitizedForLogScale(); + mCachedMarginValid = false; + } +} + +/*! + If \ref setScaleType is set to \ref stLogarithmic, \a base will be the logarithm base of the + scaling. In logarithmic axis scaling, major tick marks appear at all powers of \a base. + + Properties like tick step (\ref setTickStep) don't apply in logarithmic scaling. If you wish a decimal base but + less major ticks, consider choosing \a base 100, 1000 or even higher. +*/ +void QCPAxis::setScaleLogBase(double base) +{ + if (base > 1) + { + mScaleLogBase = base; + mScaleLogBaseLogInv = 1.0/qLn(mScaleLogBase); // buffer for faster baseLog() calculation + mCachedMarginValid = false; + } else + qDebug() << Q_FUNC_INFO << "Invalid logarithmic scale base (must be greater 1):" << base; +} + +/*! + Sets the range of the axis. + + This slot may be connected with the \ref rangeChanged signal of another axis so this axis + is always synchronized with the other axis range, when it changes. + + To invert the direction of an axis, use \ref setRangeReversed. +*/ +void QCPAxis::setRange(const QCPRange &range) +{ + if (range.lower == mRange.lower && range.upper == mRange.upper) + return; + + if (!QCPRange::validRange(range)) return; + if (mScaleType == stLogarithmic) + { + mRange = range.sanitizedForLogScale(); + } else + { + mRange = range.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Sets whether the user can (de-)select the parts in \a selectable by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains iSelectAxes.) + + However, even when \a selectable is set to a value not allowing the selection of a specific part, + it is still possible to set the selection of this part manually, by calling \ref setSelectedParts + directly. + + \see SelectablePart, setSelectedParts +*/ +void QCPAxis::setSelectableParts(const SelectableParts &selectable) +{ + mSelectableParts = selectable; +} + +/*! + Sets the selected state of the respective axis parts described by \ref SelectablePart. When a part + is selected, it uses a different pen/font. + + The entire selection mechanism for axes is handled automatically when \ref + QCustomPlot::setInteractions contains iSelectAxes. You only need to call this function when you + wish to change the selection state manually. + + This function can change the selection state of a part, independent of the \ref setSelectableParts setting. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + \see SelectablePart, setSelectableParts, selectTest, setSelectedBasePen, setSelectedTickPen, setSelectedSubTickPen, + setSelectedTickLabelFont, setSelectedLabelFont, setSelectedTickLabelColor, setSelectedLabelColor +*/ +void QCPAxis::setSelectedParts(const SelectableParts &selected) +{ + if (mSelectedParts != selected) + { + if (mSelectedParts.testFlag(spTickLabels) != selected.testFlag(spTickLabels)) + mLabelCache.clear(); + mSelectedParts = selected; + emit selectionChanged(mSelectedParts); + } +} + +/*! + \overload + + Sets the lower and upper bound of the axis range. + + To invert the direction of an axis, use \ref setRangeReversed. + + There is also a slot to set a range, see \ref setRange(const QCPRange &range). +*/ +void QCPAxis::setRange(double lower, double upper) +{ + if (lower == mRange.lower && upper == mRange.upper) + return; + + if (!QCPRange::validRange(lower, upper)) return; + mRange.lower = lower; + mRange.upper = upper; + if (mScaleType == stLogarithmic) + { + mRange = mRange.sanitizedForLogScale(); + } else + { + mRange = mRange.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + \overload + + Sets the range of the axis. + + The \a position coordinate indicates together with the \a alignment parameter, where the new + range will be positioned. \a size defines the size of the new axis range. \a alignment may be + Qt::AlignLeft, Qt::AlignRight or Qt::AlignCenter. This will cause the left border, right border, + or center of the range to be aligned with \a position. Any other values of \a alignment will + default to Qt::AlignCenter. +*/ +void QCPAxis::setRange(double position, double size, Qt::AlignmentFlag alignment) +{ + if (alignment == Qt::AlignLeft) + setRange(position, position+size); + else if (alignment == Qt::AlignRight) + setRange(position-size, position); + else // alignment == Qt::AlignCenter + setRange(position-size/2.0, position+size/2.0); +} + +/*! + Sets the lower bound of the axis range. The upper bound is not changed. + \see setRange +*/ +void QCPAxis::setRangeLower(double lower) +{ + if (mRange.lower == lower) + return; + + mRange.lower = lower; + if (mScaleType == stLogarithmic) + { + mRange = mRange.sanitizedForLogScale(); + } else + { + mRange = mRange.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Sets the upper bound of the axis range. The lower bound is not changed. + \see setRange +*/ +void QCPAxis::setRangeUpper(double upper) +{ + if (mRange.upper == upper) + return; + + mRange.upper = upper; + if (mScaleType == stLogarithmic) + { + mRange = mRange.sanitizedForLogScale(); + } else + { + mRange = mRange.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Sets whether the axis range (direction) is displayed reversed. Normally, the values on horizontal + axes increase left to right, on vertical axes bottom to top. When \a reversed is set to true, the + direction of increasing values is inverted. + + Note that the range and data interface stays the same for reversed axes, e.g. the \a lower part + of the \ref setRange interface will still reference the mathematically smaller number than the \a + upper part. +*/ +void QCPAxis::setRangeReversed(bool reversed) +{ + if (mRangeReversed != reversed) + { + mRangeReversed = reversed; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the tick positions should be calculated automatically (either from an automatically + generated tick step or a tick step provided manually via \ref setTickStep, see \ref setAutoTickStep). + + If \a on is set to false, you must provide the tick positions manually via \ref setTickVector. + For these manual ticks you may let QCPAxis generate the appropriate labels automatically by + leaving \ref setAutoTickLabels set to true. If you also wish to control the displayed labels + manually, set \ref setAutoTickLabels to false and provide the label strings with \ref + setTickVectorLabels. + + If you need dynamically calculated tick vectors (and possibly tick label vectors), set the + vectors in a slot connected to the \ref ticksRequest signal. +*/ +void QCPAxis::setAutoTicks(bool on) +{ + if (mAutoTicks != on) + { + mAutoTicks = on; + mCachedMarginValid = false; + } +} + +/*! + When \ref setAutoTickStep is true, \a approximateCount determines how many ticks should be + generated in the visible range, approximately. + + It's not guaranteed that this number of ticks is met exactly, but approximately within a + tolerance of about two. + + Only values greater than zero are accepted as \a approximateCount. +*/ +void QCPAxis::setAutoTickCount(int approximateCount) +{ + if (mAutoTickCount != approximateCount) + { + if (approximateCount > 0) + { + mAutoTickCount = approximateCount; + mCachedMarginValid = false; + } else + qDebug() << Q_FUNC_INFO << "approximateCount must be greater than zero:" << approximateCount; + } +} + +/*! + Sets whether the tick labels are generated automatically. Depending on the tick label type (\ref + ltNumber or \ref ltDateTime), the labels will either show the coordinate as floating point + number (\ref setNumberFormat), or a date/time formatted according to \ref setDateTimeFormat. + + If \a on is set to false, you should provide the tick labels via \ref setTickVectorLabels. This + is usually used in a combination with \ref setAutoTicks set to false for complete control over + tick positions and labels, e.g. when the ticks should be at multiples of pi and show "2pi", "3pi" + etc. as tick labels. + + If you need dynamically calculated tick vectors (and possibly tick label vectors), set the + vectors in a slot connected to the \ref ticksRequest signal. +*/ +void QCPAxis::setAutoTickLabels(bool on) +{ + if (mAutoTickLabels != on) + { + mAutoTickLabels = on; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the tick step, i.e. the interval between two (major) ticks, is calculated + automatically. If \a on is set to true, the axis finds a tick step that is reasonable for human + readable plots. + + The number of ticks the algorithm aims for within the visible range can be set with \ref + setAutoTickCount. + + If \a on is set to false, you may set the tick step manually with \ref setTickStep. +*/ +void QCPAxis::setAutoTickStep(bool on) +{ + if (mAutoTickStep != on) + { + mAutoTickStep = on; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the number of sub ticks in one tick interval is determined automatically. This + works, as long as the tick step mantissa is a multiple of 0.5. When \ref setAutoTickStep is + enabled, this is always the case. + + When \a on is set to false, you may set the sub tick count with \ref setSubTickCount manually. +*/ +void QCPAxis::setAutoSubTicks(bool on) +{ + if (mAutoSubTicks != on) + { + mAutoSubTicks = on; + mCachedMarginValid = false; + } +} + +/*! + Sets whether tick marks are displayed. + + Note that setting \a show to false does not imply that tick labels are invisible, too. To achieve + that, see \ref setTickLabels. +*/ +void QCPAxis::setTicks(bool show) +{ + if (mTicks != show) + { + mTicks = show; + mCachedMarginValid = false; + } +} + +/*! + Sets whether tick labels are displayed. Tick labels are the numbers drawn next to tick marks. +*/ +void QCPAxis::setTickLabels(bool show) +{ + if (mTickLabels != show) + { + mTickLabels = show; + mCachedMarginValid = false; + } +} + +/*! + Sets the distance between the axis base line (including any outward ticks) and the tick labels. + \see setLabelPadding, setPadding +*/ +void QCPAxis::setTickLabelPadding(int padding) +{ + if (mTickLabelPadding != padding) + { + mTickLabelPadding = padding; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the tick labels display numbers or dates/times. + + If \a type is set to \ref ltNumber, the format specifications of \ref setNumberFormat apply. + + If \a type is set to \ref ltDateTime, the format specifications of \ref setDateTimeFormat apply. + + In QCustomPlot, date/time coordinates are double numbers representing the seconds since + 1970-01-01T00:00:00 UTC. This format can be retrieved from QDateTime objects with the + QDateTime::toTime_t() function. Since this only gives a resolution of one second, there is also + the QDateTime::toMSecsSinceEpoch() function which returns the timespan described above in + milliseconds. Divide its return value by 1000.0 to get a value with the format needed for + date/time plotting, with a resolution of one millisecond. + + Using the toMSecsSinceEpoch function allows dates that go back to 2nd January 4713 B.C. + (represented by a negative number), unlike the toTime_t function, which works with unsigned + integers and thus only goes back to 1st January 1970. So both for range and accuracy, use of + toMSecsSinceEpoch()/1000.0 should be preferred as key coordinate for date/time axes. + + \see setTickLabels +*/ +void QCPAxis::setTickLabelType(LabelType type) +{ + if (mTickLabelType != type) + { + mTickLabelType = type; + mCachedMarginValid = false; + } +} + +/*! + Sets the font of the tick labels. + + \see setTickLabels, setTickLabelColor +*/ +void QCPAxis::setTickLabelFont(const QFont &font) +{ + if (font != mTickLabelFont) + { + mTickLabelFont = font; + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the color of the tick labels. + + \see setTickLabels, setTickLabelFont +*/ +void QCPAxis::setTickLabelColor(const QColor &color) +{ + if (color != mTickLabelColor) + { + mTickLabelColor = color; + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the rotation of the tick labels. If \a degrees is zero, the labels are drawn normally. Else, + the tick labels are drawn rotated by \a degrees clockwise. The specified angle is bound to values + from -90 to 90 degrees. + + If \a degrees is exactly -90, 0 or 90, the tick labels are centered on the tick coordinate. For + other angles, the label is drawn with an offset such that it seems to point toward or away from + the tick mark. +*/ +void QCPAxis::setTickLabelRotation(double degrees) +{ + if (!qFuzzyIsNull(degrees-mTickLabelRotation)) + { + mTickLabelRotation = qBound(-90.0, degrees, 90.0); + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the format in which dates and times are displayed as tick labels, if \ref setTickLabelType is \ref ltDateTime. + for details about the \a format string, see the documentation of QDateTime::toString(). + + Newlines can be inserted with "\n". +*/ +void QCPAxis::setDateTimeFormat(const QString &format) +{ + if (mDateTimeFormat != format) + { + mDateTimeFormat = format; + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the number format for the numbers drawn as tick labels (if tick label type is \ref + ltNumber). This \a formatCode is an extended version of the format code used e.g. by + QString::number() and QLocale::toString(). For reference about that, see the "Argument Formats" + section in the detailed description of the QString class. \a formatCode is a string of one, two + or three characters. The first character is identical to the normal format code used by Qt. In + short, this means: 'e'/'E' scientific format, 'f' fixed format, 'g'/'G' scientific or fixed, + whichever is shorter. + + The second and third characters are optional and specific to QCustomPlot:\n + If the first char was 'e' or 'g', numbers are/might be displayed in the scientific format, e.g. + "5.5e9", which is ugly in a plot. So when the second char of \a formatCode is set to 'b' (for + "beautiful"), those exponential numbers are formatted in a more natural way, i.e. "5.5 + [multiplication sign] 10 [superscript] 9". By default, the multiplication sign is a centered dot. + If instead a cross should be shown (as is usual in the USA), the third char of \a formatCode can + be set to 'c'. The inserted multiplication signs are the UTF-8 characters 215 (0xD7) for the + cross and 183 (0xB7) for the dot. + + If the scale type (\ref setScaleType) is \ref stLogarithmic and the \a formatCode uses the 'b' + option (beautifully typeset decimal powers), the display usually is "1 [multiplication sign] 10 + [superscript] n", which looks unnatural for logarithmic scaling (the "1 [multiplication sign]" + part). To only display the decimal power, set the number precision to zero with \ref + setNumberPrecision. + + Examples for \a formatCode: + \li \c g normal format code behaviour. If number is small, fixed format is used, if number is large, + normal scientific format is used + \li \c gb If number is small, fixed format is used, if number is large, scientific format is used with + beautifully typeset decimal powers and a dot as multiplication sign + \li \c ebc All numbers are in scientific format with beautifully typeset decimal power and a cross as + multiplication sign + \li \c fb illegal format code, since fixed format doesn't support (or need) beautifully typeset decimal + powers. Format code will be reduced to 'f'. + \li \c hello illegal format code, since first char is not 'e', 'E', 'f', 'g' or 'G'. Current format + code will not be changed. +*/ +void QCPAxis::setNumberFormat(const QString &formatCode) +{ + if (formatCode.isEmpty()) + { + qDebug() << Q_FUNC_INFO << "Passed formatCode is empty"; + return; + } + mLabelCache.clear(); + mCachedMarginValid = false; + + // interpret first char as number format char: + QString allowedFormatChars = "eEfgG"; + if (allowedFormatChars.contains(formatCode.at(0))) + { + mNumberFormatChar = formatCode.at(0).toLatin1(); + } else + { + qDebug() << Q_FUNC_INFO << "Invalid number format code (first char not in 'eEfgG'):" << formatCode; + return; + } + if (formatCode.length() < 2) + { + mNumberBeautifulPowers = false; + mNumberMultiplyCross = false; + return; + } + + // interpret second char as indicator for beautiful decimal powers: + if (formatCode.at(1) == 'b' && (mNumberFormatChar == 'e' || mNumberFormatChar == 'g')) + { + mNumberBeautifulPowers = true; + } else + { + qDebug() << Q_FUNC_INFO << "Invalid number format code (second char not 'b' or first char neither 'e' nor 'g'):" << formatCode; + return; + } + if (formatCode.length() < 3) + { + mNumberMultiplyCross = false; + return; + } + + // interpret third char as indicator for dot or cross multiplication symbol: + if (formatCode.at(2) == 'c') + { + mNumberMultiplyCross = true; + } else if (formatCode.at(2) == 'd') + { + mNumberMultiplyCross = false; + } else + { + qDebug() << Q_FUNC_INFO << "Invalid number format code (third char neither 'c' nor 'd'):" << formatCode; + return; + } +} + +/*! + Sets the precision of the tick label numbers. See QLocale::toString(double i, char f, int prec) + for details. The effect of precisions are most notably for number Formats starting with 'e', see + \ref setNumberFormat + + If the scale type (\ref setScaleType) is \ref stLogarithmic and the number format (\ref + setNumberFormat) uses the 'b' format code (beautifully typeset decimal powers), the display + usually is "1 [multiplication sign] 10 [superscript] n", which looks unnatural for logarithmic + scaling (the redundant "1 [multiplication sign]" part). To only display the decimal power "10 + [superscript] n", set \a precision to zero. +*/ +void QCPAxis::setNumberPrecision(int precision) +{ + if (mNumberPrecision != precision) + { + mNumberPrecision = precision; + mCachedMarginValid = false; + } +} + +/*! + If \ref setAutoTickStep is set to false, use this function to set the tick step manually. + The tick step is the interval between (major) ticks, in plot coordinates. + \see setSubTickCount +*/ +void QCPAxis::setTickStep(double step) +{ + if (mTickStep != step) + { + mTickStep = step; + mCachedMarginValid = false; + } +} + +/*! + If you want full control over what ticks (and possibly labels) the axes show, this function is + used to set the coordinates at which ticks will appear.\ref setAutoTicks must be disabled, else + the provided tick vector will be overwritten with automatically generated tick coordinates upon + replot. The labels of the ticks can be generated automatically when \ref setAutoTickLabels is + left enabled. If it is disabled, you can set the labels manually with \ref setTickVectorLabels. + + \a vec is a vector containing the positions of the ticks, in plot coordinates. + + \warning \a vec must be sorted in ascending order, no additional checks are made to ensure this. + + \see setTickVectorLabels +*/ +void QCPAxis::setTickVector(const QVector &vec) +{ + // don't check whether mTickVector != vec here, because it takes longer than we would save + mTickVector = vec; + mCachedMarginValid = false; +} + +/*! + If you want full control over what ticks and labels the axes show, this function is used to set a + number of QStrings that will be displayed at the tick positions which you need to provide with + \ref setTickVector. These two vectors should have the same size. (Note that you need to disable + \ref setAutoTicks and \ref setAutoTickLabels first.) + + \a vec is a vector containing the labels of the ticks. The entries correspond to the respective + indices in the tick vector, passed via \ref setTickVector. + + \see setTickVector +*/ +void QCPAxis::setTickVectorLabels(const QVector &vec) +{ + // don't check whether mTickVectorLabels != vec here, because it takes longer than we would save + mTickVectorLabels = vec; + mCachedMarginValid = false; +} + +/*! + Sets the length of the ticks in pixels. \a inside is the length the ticks will reach inside the + plot and \a outside is the length they will reach outside the plot. If \a outside is greater than + zero, the tick labels and axis label will increase their distance to the axis accordingly, so + they won't collide with the ticks. + + \see setSubTickLength +*/ +void QCPAxis::setTickLength(int inside, int outside) +{ + if (mTickLengthIn != inside) + { + mTickLengthIn = inside; + } + if (mTickLengthOut != outside) + { + mTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the length of the inward ticks in pixels. \a inside is the length the ticks will reach + inside the plot. + + \see setTickLengthOut, setSubTickLength +*/ +void QCPAxis::setTickLengthIn(int inside) +{ + if (mTickLengthIn != inside) + { + mTickLengthIn = inside; + } +} + +/*! + Sets the length of the outward ticks in pixels. \a outside is the length the ticks will reach + outside the plot. If \a outside is greater than zero, the tick labels and axis label will + increase their distance to the axis accordingly, so they won't collide with the ticks. + + \see setTickLengthIn, setSubTickLength +*/ +void QCPAxis::setTickLengthOut(int outside) +{ + if (mTickLengthOut != outside) + { + mTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the number of sub ticks in one (major) tick step. A sub tick count of three for example, + divides the tick intervals in four sub intervals. + + By default, the number of sub ticks is chosen automatically in a reasonable manner as long as the + mantissa of the tick step is a multiple of 0.5. When \ref setAutoTickStep is enabled, this is + always the case. + + If you want to disable automatic sub tick count and use this function to set the count manually, + see \ref setAutoSubTicks. +*/ +void QCPAxis::setSubTickCount(int count) +{ + mSubTickCount = count; +} + +/*! + Sets the length of the subticks in pixels. \a inside is the length the subticks will reach inside + the plot and \a outside is the length they will reach outside the plot. If \a outside is greater + than zero, the tick labels and axis label will increase their distance to the axis accordingly, + so they won't collide with the ticks. +*/ +void QCPAxis::setSubTickLength(int inside, int outside) +{ + if (mSubTickLengthIn != inside) + { + mSubTickLengthIn = inside; + } + if (mSubTickLengthOut != outside) + { + mSubTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the length of the inward subticks in pixels. \a inside is the length the subticks will reach inside + the plot. + + \see setSubTickLengthOut, setTickLength +*/ +void QCPAxis::setSubTickLengthIn(int inside) +{ + if (mSubTickLengthIn != inside) + { + mSubTickLengthIn = inside; + } +} + +/*! + Sets the length of the outward subticks in pixels. \a outside is the length the subticks will reach + outside the plot. If \a outside is greater than zero, the tick labels will increase their + distance to the axis accordingly, so they won't collide with the ticks. + + \see setSubTickLengthIn, setTickLength +*/ +void QCPAxis::setSubTickLengthOut(int outside) +{ + if (mSubTickLengthOut != outside) + { + mSubTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the pen, the axis base line is drawn with. + + \see setTickPen, setSubTickPen +*/ +void QCPAxis::setBasePen(const QPen &pen) +{ + mBasePen = pen; +} + +/*! + Sets the pen, tick marks will be drawn with. + + \see setTickLength, setBasePen +*/ +void QCPAxis::setTickPen(const QPen &pen) +{ + mTickPen = pen; +} + +/*! + Sets the pen, subtick marks will be drawn with. + + \see setSubTickCount, setSubTickLength, setBasePen +*/ +void QCPAxis::setSubTickPen(const QPen &pen) +{ + mSubTickPen = pen; +} + +/*! + Sets the font of the axis label. + + \see setLabelColor +*/ +void QCPAxis::setLabelFont(const QFont &font) +{ + if (mLabelFont != font) + { + mLabelFont = font; + mCachedMarginValid = false; + } +} + +/*! + Sets the color of the axis label. + + \see setLabelFont +*/ +void QCPAxis::setLabelColor(const QColor &color) +{ + mLabelColor = color; +} + +/*! + Sets the text of the axis label that will be shown below/above or next to the axis, depending on + its orientation. To disable axis labels, pass an empty string as \a str. +*/ +void QCPAxis::setLabel(const QString &str) +{ + if (mLabel != str) + { + mLabel = str; + mCachedMarginValid = false; + } +} + +/*! + Sets the distance between the tick labels and the axis label. + + \see setTickLabelPadding, setPadding +*/ +void QCPAxis::setLabelPadding(int padding) +{ + if (mLabelPadding != padding) + { + mLabelPadding = padding; + mCachedMarginValid = false; + } +} + +/*! + Sets the padding of the axis. + + When \ref QCPAxisRect::setAutoMargins is enabled, the padding is the additional outer most space, + that is left blank. + + The axis padding has no meaning if \ref QCPAxisRect::setAutoMargins is disabled. + + \see setLabelPadding, setTickLabelPadding +*/ +void QCPAxis::setPadding(int padding) +{ + if (mPadding != padding) + { + mPadding = padding; + mCachedMarginValid = false; + } +} + +/*! + Sets the offset the axis has to its axis rect side. + + If an axis rect side has multiple axes, only the offset of the inner most axis has meaning. The offset of the other axes + is controlled automatically, to place the axes at appropriate positions to prevent them from overlapping. +*/ +void QCPAxis::setOffset(int offset) +{ + mOffset = offset; +} + +/*! + Sets the font that is used for tick labels when they are selected. + + \see setTickLabelFont, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedTickLabelFont(const QFont &font) +{ + if (font != mSelectedTickLabelFont) + { + mSelectedTickLabelFont = font; + mLabelCache.clear(); + // don't set mCachedMarginValid to false here because margin calculation is always done with non-selected fonts + } +} + +/*! + Sets the font that is used for the axis label when it is selected. + + \see setLabelFont, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedLabelFont(const QFont &font) +{ + mSelectedLabelFont = font; + // don't set mCachedMarginValid to false here because margin calculation is always done with non-selected fonts +} + +/*! + Sets the color that is used for tick labels when they are selected. + + \see setTickLabelColor, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedTickLabelColor(const QColor &color) +{ + if (color != mSelectedTickLabelColor) + { + mSelectedTickLabelColor = color; + mLabelCache.clear(); + } +} + +/*! + Sets the color that is used for the axis label when it is selected. + + \see setLabelColor, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedLabelColor(const QColor &color) +{ + mSelectedLabelColor = color; +} + +/*! + Sets the pen that is used to draw the axis base line when selected. + + \see setBasePen, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedBasePen(const QPen &pen) +{ + mSelectedBasePen = pen; +} + +/*! + Sets the pen that is used to draw the (major) ticks when selected. + + \see setTickPen, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedTickPen(const QPen &pen) +{ + mSelectedTickPen = pen; +} + +/*! + Sets the pen that is used to draw the subticks when selected. + + \see setSubTickPen, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedSubTickPen(const QPen &pen) +{ + mSelectedSubTickPen = pen; +} + +/*! + Sets the style for the lower axis ending. See the documentation of QCPLineEnding for available + styles. + + For horizontal axes, this method refers to the left ending, for vertical axes the bottom ending. + Note that this meaning does not change when the axis range is reversed with \ref + setRangeReversed. + + \see setUpperEnding +*/ +void QCPAxis::setLowerEnding(const QCPLineEnding &ending) +{ + mLowerEnding = ending; +} + +/*! + Sets the style for the upper axis ending. See the documentation of QCPLineEnding for available + styles. + + For horizontal axes, this method refers to the right ending, for vertical axes the top ending. + Note that this meaning does not change when the axis range is reversed with \ref + setRangeReversed. + + \see setLowerEnding +*/ +void QCPAxis::setUpperEnding(const QCPLineEnding &ending) +{ + mUpperEnding = ending; +} + +/*! + If the scale type (\ref setScaleType) is \ref stLinear, \a diff is added to the lower and upper + bounds of the range. The range is simply moved by \a diff. + + If the scale type is \ref stLogarithmic, the range bounds are multiplied by \a diff. This + corresponds to an apparent "linear" move in logarithmic scaling by a distance of log(diff). +*/ +void QCPAxis::moveRange(double diff) +{ + if (mScaleType == stLinear) + { + mRange.lower += diff; + mRange.upper += diff; + } else // mScaleType == stLogarithmic + { + mRange.lower *= diff; + mRange.upper *= diff; + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Scales the range of this axis by \a factor around the coordinate \a center. For example, if \a + factor is 2.0, \a center is 1.0, then the axis range will double its size, and the point at + coordinate 1.0 won't have changed its position in the QCustomPlot widget (i.e. coordinates + around 1.0 will have moved symmetrically closer to 1.0). +*/ +void QCPAxis::scaleRange(double factor, double center) +{ + if (mScaleType == stLinear) + { + QCPRange newRange; + newRange.lower = (mRange.lower-center)*factor + center; + newRange.upper = (mRange.upper-center)*factor + center; + if (QCPRange::validRange(newRange)) + mRange = newRange.sanitizedForLinScale(); + } else // mScaleType == stLogarithmic + { + if ((mRange.upper < 0 && center < 0) || (mRange.upper > 0 && center > 0)) // make sure center has same sign as range + { + QCPRange newRange; + newRange.lower = pow(mRange.lower/center, factor)*center; + newRange.upper = pow(mRange.upper/center, factor)*center; + if (QCPRange::validRange(newRange)) + mRange = newRange.sanitizedForLogScale(); + } else + qDebug() << Q_FUNC_INFO << "Center of scaling operation doesn't lie in same logarithmic sign domain as range:" << center; + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Scales the range of this axis to have a certain scale \a ratio to \a otherAxis. The scaling will + be done around the center of the current axis range. + + For example, if \a ratio is 1, this axis is the \a yAxis and \a otherAxis is \a xAxis, graphs + plotted with those axes will appear in a 1:1 aspect ratio, independent of the aspect ratio the + axis rect has. + + This is an operation that changes the range of this axis once, it doesn't fix the scale ratio + indefinitely. Note that calling this function in the constructor of the QCustomPlot's parent + won't have the desired effect, since the widget dimensions aren't defined yet, and a resizeEvent + will follow. +*/ +void QCPAxis::setScaleRatio(const QCPAxis *otherAxis, double ratio) +{ + int otherPixelSize, ownPixelSize; + + if (otherAxis->orientation() == Qt::Horizontal) + otherPixelSize = otherAxis->axisRect()->width(); + else + otherPixelSize = otherAxis->axisRect()->height(); + + if (orientation() == Qt::Horizontal) + ownPixelSize = axisRect()->width(); + else + ownPixelSize = axisRect()->height(); + + double newRangeSize = ratio*otherAxis->range().size()*ownPixelSize/(double)otherPixelSize; + setRange(range().center(), newRangeSize, Qt::AlignCenter); +} + +/*! + Transforms \a value, in pixel coordinates of the QCustomPlot widget, to axis coordinates. +*/ +double QCPAxis::pixelToCoord(double value) const +{ + if (orientation() == Qt::Horizontal) + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return (value-mAxisRect->left())/(double)mAxisRect->width()*mRange.size()+mRange.lower; + else + return -(value-mAxisRect->left())/(double)mAxisRect->width()*mRange.size()+mRange.upper; + } else // mScaleType == stLogarithmic + { + if (!mRangeReversed) + return pow(mRange.upper/mRange.lower, (value-mAxisRect->left())/(double)mAxisRect->width())*mRange.lower; + else + return pow(mRange.upper/mRange.lower, (mAxisRect->left()-value)/(double)mAxisRect->width())*mRange.upper; + } + } else // orientation() == Qt::Vertical + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return (mAxisRect->bottom()-value)/(double)mAxisRect->height()*mRange.size()+mRange.lower; + else + return -(mAxisRect->bottom()-value)/(double)mAxisRect->height()*mRange.size()+mRange.upper; + } else // mScaleType == stLogarithmic + { + if (!mRangeReversed) + return pow(mRange.upper/mRange.lower, (mAxisRect->bottom()-value)/(double)mAxisRect->height())*mRange.lower; + else + return pow(mRange.upper/mRange.lower, (value-mAxisRect->bottom())/(double)mAxisRect->height())*mRange.upper; + } + } +} + +/*! + Transforms \a value, in coordinates of the axis, to pixel coordinates of the QCustomPlot widget. +*/ +double QCPAxis::coordToPixel(double value) const +{ + if (orientation() == Qt::Horizontal) + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return (value-mRange.lower)/mRange.size()*mAxisRect->width()+mAxisRect->left(); + else + return (mRange.upper-value)/mRange.size()*mAxisRect->width()+mAxisRect->left(); + } else // mScaleType == stLogarithmic + { + if (value >= 0 && mRange.upper < 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->right()+200 : mAxisRect->left()-200; + else if (value <= 0 && mRange.upper > 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->left()-200 : mAxisRect->right()+200; + else + { + if (!mRangeReversed) + return baseLog(value/mRange.lower)/baseLog(mRange.upper/mRange.lower)*mAxisRect->width()+mAxisRect->left(); + else + return baseLog(mRange.upper/value)/baseLog(mRange.upper/mRange.lower)*mAxisRect->width()+mAxisRect->left(); + } + } + } else // orientation() == Qt::Vertical + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return mAxisRect->bottom()-(value-mRange.lower)/mRange.size()*mAxisRect->height(); + else + return mAxisRect->bottom()-(mRange.upper-value)/mRange.size()*mAxisRect->height(); + } else // mScaleType == stLogarithmic + { + if (value >= 0 && mRange.upper < 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->top()-200 : mAxisRect->bottom()+200; + else if (value <= 0 && mRange.upper > 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->bottom()+200 : mAxisRect->top()-200; + else + { + if (!mRangeReversed) + return mAxisRect->bottom()-baseLog(value/mRange.lower)/baseLog(mRange.upper/mRange.lower)*mAxisRect->height(); + else + return mAxisRect->bottom()-baseLog(mRange.upper/value)/baseLog(mRange.upper/mRange.lower)*mAxisRect->height(); + } + } + } +} + +/*! + Returns the part of the axis that is hit by \a pos (in pixels). The return value of this function + is independent of the user-selectable parts defined with \ref setSelectableParts. Further, this + function does not change the current selection state of the axis. + + If the axis is not visible (\ref setVisible), this function always returns \ref spNone. + + \see setSelectedParts, setSelectableParts, QCustomPlot::setInteractions +*/ +QCPAxis::SelectablePart QCPAxis::getPartAt(const QPointF &pos) const +{ + if (!mVisible) + return spNone; + + if (mAxisSelectionBox.contains(pos.toPoint())) + return spAxis; + else if (mTickLabelsSelectionBox.contains(pos.toPoint())) + return spTickLabels; + else if (mLabelSelectionBox.contains(pos.toPoint())) + return spAxisLabel; + else + return spNone; +} + +/* inherits documentation from base class */ +double QCPAxis::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + if (!mParentPlot) return -1; + SelectablePart part = getPartAt(pos); + if ((onlySelectable && !mSelectableParts.testFlag(part)) || part == spNone) + return -1; + + if (details) + details->setValue(part); + return mParentPlot->selectionTolerance()*0.99; +} + +/*! + Returns a list of all the plottables that have this axis as key or value axis. + + If you are only interested in plottables of type QCPGraph, see \ref graphs. + + \see graphs, items +*/ +QList QCPAxis::plottables() const +{ + QList result; + if (!mParentPlot) return result; + + for (int i=0; imPlottables.size(); ++i) + { + if (mParentPlot->mPlottables.at(i)->keyAxis() == this ||mParentPlot->mPlottables.at(i)->valueAxis() == this) + result.append(mParentPlot->mPlottables.at(i)); + } + return result; +} + +/*! + Returns a list of all the graphs that have this axis as key or value axis. + + \see plottables, items +*/ +QList QCPAxis::graphs() const +{ + QList result; + if (!mParentPlot) return result; + + for (int i=0; imGraphs.size(); ++i) + { + if (mParentPlot->mGraphs.at(i)->keyAxis() == this || mParentPlot->mGraphs.at(i)->valueAxis() == this) + result.append(mParentPlot->mGraphs.at(i)); + } + return result; +} + +/*! + Returns a list of all the items that are associated with this axis. An item is considered + associated with an axis if at least one of its positions uses the axis as key or value axis. + + \see plottables, graphs +*/ +QList QCPAxis::items() const +{ + QList result; + if (!mParentPlot) return result; + + for (int itemId=0; itemIdmItems.size(); ++itemId) + { + QList positions = mParentPlot->mItems.at(itemId)->positions(); + for (int posId=0; posIdkeyAxis() == this || positions.at(posId)->valueAxis() == this) + { + result.append(mParentPlot->mItems.at(itemId)); + break; + } + } + } + return result; +} + +/*! + Transforms a margin side to the logically corresponding axis type. (QCP::msLeft to + QCPAxis::atLeft, QCP::msRight to QCPAxis::atRight, etc.) +*/ +QCPAxis::AxisType QCPAxis::marginSideToAxisType(QCP::MarginSide side) +{ + switch (side) + { + case QCP::msLeft: return atLeft; + case QCP::msRight: return atRight; + case QCP::msTop: return atTop; + case QCP::msBottom: return atBottom; + default: break; + } + qDebug() << Q_FUNC_INFO << "Invalid margin side passed:" << (int)side; + return atLeft; +} + +/*! \internal + + This function is called to prepare the tick vector, sub tick vector and tick label vector. If + \ref setAutoTicks is set to true, appropriate tick values are determined automatically via \ref + generateAutoTicks. If it's set to false, the signal ticksRequest is emitted, which can be used to + provide external tick positions. Then the sub tick vectors and tick label vectors are created. +*/ +void QCPAxis::setupTickVectors() +{ + if (!mParentPlot) return; + if ((!mTicks && !mTickLabels && !mGrid->visible()) || mRange.size() <= 0) return; + + // fill tick vectors, either by auto generating or by notifying user to fill the vectors himself + if (mAutoTicks) + { + generateAutoTicks(); + } else + { + emit ticksRequest(); + } + + visibleTickBounds(mLowestVisibleTick, mHighestVisibleTick); + if (mTickVector.isEmpty()) + { + mSubTickVector.clear(); + return; + } + + // generate subticks between ticks: + mSubTickVector.resize((mTickVector.size()-1)*mSubTickCount); + if (mSubTickCount > 0) + { + double subTickStep = 0; + double subTickPosition = 0; + int subTickIndex = 0; + bool done = false; + int lowTick = mLowestVisibleTick > 0 ? mLowestVisibleTick-1 : mLowestVisibleTick; + int highTick = mHighestVisibleTick < mTickVector.size()-1 ? mHighestVisibleTick+1 : mHighestVisibleTick; + for (int i=lowTick+1; i<=highTick; ++i) + { + subTickStep = (mTickVector.at(i)-mTickVector.at(i-1))/(double)(mSubTickCount+1); + for (int k=1; k<=mSubTickCount; ++k) + { + subTickPosition = mTickVector.at(i-1) + k*subTickStep; + if (subTickPosition < mRange.lower) + continue; + if (subTickPosition > mRange.upper) + { + done = true; + break; + } + mSubTickVector[subTickIndex] = subTickPosition; + subTickIndex++; + } + if (done) break; + } + mSubTickVector.resize(subTickIndex); + } + + // generate tick labels according to tick positions: + mExponentialChar = mParentPlot->locale().exponential(); // will be needed when drawing the numbers generated here, in getTickLabelData() + mPositiveSignChar = mParentPlot->locale().positiveSign(); // will be needed when drawing the numbers generated here, in getTickLabelData() + if (mAutoTickLabels) + { + int vecsize = mTickVector.size(); + mTickVectorLabels.resize(vecsize); + if (mTickLabelType == ltNumber) + { + for (int i=mLowestVisibleTick; i<=mHighestVisibleTick; ++i) + mTickVectorLabels[i] = mParentPlot->locale().toString(mTickVector.at(i), mNumberFormatChar, mNumberPrecision); + } else if (mTickLabelType == ltDateTime) + { + for (int i=mLowestVisibleTick; i<=mHighestVisibleTick; ++i) + { +#if QT_VERSION < QT_VERSION_CHECK(4, 7, 0) // use fromMSecsSinceEpoch function if available, to gain sub-second accuracy on tick labels (e.g. for format "hh:mm:ss:zzz") + mTickVectorLabels[i] = mParentPlot->locale().toString(QDateTime::fromTime_t(mTickVector.at(i)), mDateTimeFormat); +#else + mTickVectorLabels[i] = mParentPlot->locale().toString(QDateTime::fromMSecsSinceEpoch(mTickVector.at(i)*1000), mDateTimeFormat); +#endif + } + } + } else // mAutoTickLabels == false + { + if (mAutoTicks) // ticks generated automatically, but not ticklabels, so emit ticksRequest here for labels + { + emit ticksRequest(); + } + // make sure provided tick label vector has correct (minimal) length: + if (mTickVectorLabels.size() < mTickVector.size()) + mTickVectorLabels.resize(mTickVector.size()); + } +} + +/*! \internal + + If \ref setAutoTicks is set to true, this function is called by \ref setupTickVectors to + generate reasonable tick positions (and subtick count). The algorithm tries to create + approximately mAutoTickCount ticks (set via \ref setAutoTickCount). + + If the scale is logarithmic, \ref setAutoTickCount is ignored, and one tick is generated at every + power of the current logarithm base, set via \ref setScaleLogBase. +*/ +void QCPAxis::generateAutoTicks() +{ + if (mScaleType == stLinear) + { + if (mAutoTickStep) + { + // Generate tick positions according to linear scaling: + mTickStep = mRange.size()/(double)(mAutoTickCount+1e-10); // mAutoTickCount ticks on average, the small addition is to prevent jitter on exact integers + double magnitudeFactor = qPow(10.0, qFloor(qLn(mTickStep)/qLn(10.0))); // get magnitude factor e.g. 0.01, 1, 10, 1000 etc. + double tickStepMantissa = mTickStep/magnitudeFactor; + if (tickStepMantissa < 5) + { + // round digit after decimal point to 0.5 + mTickStep = (int)(tickStepMantissa*2)/2.0*magnitudeFactor; + } else + { + // round to first digit in multiples of 2 + mTickStep = (int)(tickStepMantissa/2.0)*2.0*magnitudeFactor; + } + } + if (mAutoSubTicks) + mSubTickCount = calculateAutoSubTickCount(mTickStep); + // Generate tick positions according to mTickStep: + qint64 firstStep = floor(mRange.lower/mTickStep); + qint64 lastStep = ceil(mRange.upper/mTickStep); + int tickcount = lastStep-firstStep+1; + if (tickcount < 0) tickcount = 0; + mTickVector.resize(tickcount); + for (int i=0; i 0 && mRange.upper > 0) // positive range + { + double lowerMag = basePow((int)floor(baseLog(mRange.lower))); + double currentMag = lowerMag; + mTickVector.clear(); + mTickVector.append(currentMag); + while (currentMag < mRange.upper && currentMag > 0) // currentMag might be zero for ranges ~1e-300, just cancel in that case + { + currentMag *= mScaleLogBase; + mTickVector.append(currentMag); + } + } else if (mRange.lower < 0 && mRange.upper < 0) // negative range + { + double lowerMag = -basePow((int)ceil(baseLog(-mRange.lower))); + double currentMag = lowerMag; + mTickVector.clear(); + mTickVector.append(currentMag); + while (currentMag < mRange.upper && currentMag < 0) // currentMag might be zero for ranges ~1e-300, just cancel in that case + { + currentMag /= mScaleLogBase; + mTickVector.append(currentMag); + } + } else // invalid range for logarithmic scale, because lower and upper have different sign + { + mTickVector.clear(); + qDebug() << Q_FUNC_INFO << "Invalid range for logarithmic plot: " << mRange.lower << "-" << mRange.upper; + } + } +} + +/*! \internal + + Called by generateAutoTicks when \ref setAutoSubTicks is set to true. Depending on the \a + tickStep between two major ticks on the axis, a different number of sub ticks is appropriate. For + Example taking 4 sub ticks for a \a tickStep of 1 makes more sense than taking 5 sub ticks, + because this corresponds to a sub tick step of 0.2, instead of the less intuitive 0.16667. Note + that a subtick count of 4 means dividing the major tick step into 5 sections. + + This is implemented by a hand made lookup for integer tick steps as well as fractional tick steps + with a fractional part of (approximately) 0.5. If a tick step is different (i.e. has no + fractional part close to 0.5), the currently set sub tick count (\ref setSubTickCount) is + returned. +*/ +int QCPAxis::calculateAutoSubTickCount(double tickStep) const +{ + int result = mSubTickCount; // default to current setting, if no proper value can be found + + // get mantissa of tickstep: + double magnitudeFactor = qPow(10.0, qFloor(qLn(tickStep)/qLn(10.0))); // get magnitude factor e.g. 0.01, 1, 10, 1000 etc. + double tickStepMantissa = tickStep/magnitudeFactor; + + // separate integer and fractional part of mantissa: + double epsilon = 0.01; + double intPartf; + int intPart; + double fracPart = modf(tickStepMantissa, &intPartf); + intPart = intPartf; + + // handle cases with (almost) integer mantissa: + if (fracPart < epsilon || 1.0-fracPart < epsilon) + { + if (1.0-fracPart < epsilon) + ++intPart; + switch (intPart) + { + case 1: result = 4; break; // 1.0 -> 0.2 substep + case 2: result = 3; break; // 2.0 -> 0.5 substep + case 3: result = 2; break; // 3.0 -> 1.0 substep + case 4: result = 3; break; // 4.0 -> 1.0 substep + case 5: result = 4; break; // 5.0 -> 1.0 substep + case 6: result = 2; break; // 6.0 -> 2.0 substep + case 7: result = 6; break; // 7.0 -> 1.0 substep + case 8: result = 3; break; // 8.0 -> 2.0 substep + case 9: result = 2; break; // 9.0 -> 3.0 substep + } + } else + { + // handle cases with significantly fractional mantissa: + if (qAbs(fracPart-0.5) < epsilon) // *.5 mantissa + { + switch (intPart) + { + case 1: result = 2; break; // 1.5 -> 0.5 substep + case 2: result = 4; break; // 2.5 -> 0.5 substep + case 3: result = 4; break; // 3.5 -> 0.7 substep + case 4: result = 2; break; // 4.5 -> 1.5 substep + case 5: result = 4; break; // 5.5 -> 1.1 substep (won't occur with autoTickStep from here on) + case 6: result = 4; break; // 6.5 -> 1.3 substep + case 7: result = 2; break; // 7.5 -> 2.5 substep + case 8: result = 4; break; // 8.5 -> 1.7 substep + case 9: result = 4; break; // 9.5 -> 1.9 substep + } + } + // if mantissa fraction isnt 0.0 or 0.5, don't bother finding good sub tick marks, leave default + } + + return result; +} + +/*! \internal + + Draws the axis with the specified \a painter. + + The selection boxes (mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox) are set + here, too. +*/ +void QCPAxis::draw(QCPPainter *painter) +{ + if (!mParentPlot) return; + QPoint origin; + if (mAxisType == atLeft) + origin = mAxisRect->bottomLeft()+QPoint(-mOffset, 0); + else if (mAxisType == atRight) + origin = mAxisRect->bottomRight()+QPoint(+mOffset, 0); + else if (mAxisType == atTop) + origin = mAxisRect->topLeft()+QPoint(0, -mOffset); + else if (mAxisType == atBottom) + origin = mAxisRect->bottomLeft()+QPoint(0, +mOffset); + + double xCor = 0, yCor = 0; // paint system correction, for pixel exact matches (affects baselines and ticks of top/right axes) + switch (mAxisType) + { + case atTop: yCor = -1; break; + case atRight: xCor = 1; break; + default: break; + } + + int margin = 0; + int lowTick = mLowestVisibleTick; + int highTick = mHighestVisibleTick; + double t; // helper variable, result of coordinate-to-pixel transforms + + // draw baseline: + QLineF baseLine; + painter->setPen(getBasePen()); + if (orientation() == Qt::Horizontal) + baseLine.setPoints(origin+QPointF(xCor, yCor), origin+QPointF(mAxisRect->width()+xCor, yCor)); + else + baseLine.setPoints(origin+QPointF(xCor, yCor), origin+QPointF(xCor, -mAxisRect->height()+yCor)); + if (mRangeReversed) + baseLine = QLineF(baseLine.p2(), baseLine.p1()); // won't make a difference for line itself, but for line endings later + painter->drawLine(baseLine); + + // draw ticks: + if (mTicks) + { + painter->setPen(getTickPen()); + // direction of ticks ("inward" is right for left axis and left for right axis) + int tickDir = (mAxisType == atBottom || mAxisType == atRight) ? -1 : 1; + if (orientation() == Qt::Horizontal) + { + for (int i=lowTick; i <= highTick; ++i) + { + t = coordToPixel(mTickVector.at(i)); // x + painter->drawLine(QLineF(t+xCor, origin.y()-mTickLengthOut*tickDir+yCor, t+xCor, origin.y()+mTickLengthIn*tickDir+yCor)); + } + } else + { + for (int i=lowTick; i <= highTick; ++i) + { + t = coordToPixel(mTickVector.at(i)); // y + painter->drawLine(QLineF(origin.x()-mTickLengthOut*tickDir+xCor, t+yCor, origin.x()+mTickLengthIn*tickDir+xCor, t+yCor)); + } + } + } + + // draw subticks: + if (mTicks && mSubTickCount > 0) + { + painter->setPen(getSubTickPen()); + // direction of ticks ("inward" is right for left axis and left for right axis) + int tickDir = (mAxisType == atBottom || mAxisType == atRight) ? -1 : 1; + if (orientation() == Qt::Horizontal) + { + for (int i=0; idrawLine(QLineF(t+xCor, origin.y()-mSubTickLengthOut*tickDir+yCor, t+xCor, origin.y()+mSubTickLengthIn*tickDir+yCor)); + } + } else + { + for (int i=0; idrawLine(QLineF(origin.x()-mSubTickLengthOut*tickDir+xCor, t+yCor, origin.x()+mSubTickLengthIn*tickDir+xCor, t+yCor)); + } + } + } + margin += qMax(0, qMax(mTickLengthOut, mSubTickLengthOut)); + + // draw axis base endings: + bool antialiasingBackup = painter->antialiasing(); + painter->setAntialiasing(true); // always want endings to be antialiased, even if base and ticks themselves aren't + painter->setBrush(QBrush(basePen().color())); + QVector2D baseLineVector(baseLine.dx(), baseLine.dy()); + if (mLowerEnding.style() != QCPLineEnding::esNone) + mLowerEnding.draw(painter, QVector2D(baseLine.p1())-baseLineVector.normalized()*mLowerEnding.realLength()*(mLowerEnding.inverted()?-1:1), -baseLineVector); + if (mUpperEnding.style() != QCPLineEnding::esNone) + mUpperEnding.draw(painter, QVector2D(baseLine.p2())+baseLineVector.normalized()*mUpperEnding.realLength()*(mUpperEnding.inverted()?-1:1), baseLineVector); + painter->setAntialiasing(antialiasingBackup); + + // tick labels: + QSize tickLabelsSize(0, 0); // size of largest tick label, for offset calculation of axis label + if (mTickLabels) + { + margin += mTickLabelPadding; + painter->setFont(getTickLabelFont()); + painter->setPen(QPen(getTickLabelColor())); + for (int i=lowTick; i <= highTick; ++i) + { + t = coordToPixel(mTickVector.at(i)); + placeTickLabel(painter, t, margin, mTickVectorLabels.at(i), &tickLabelsSize); + } + } + if (orientation() == Qt::Horizontal) + margin += tickLabelsSize.height(); + else + margin += tickLabelsSize.width(); + + // axis label: + QRect labelBounds; + if (!mLabel.isEmpty()) + { + margin += mLabelPadding; + painter->setFont(getLabelFont()); + painter->setPen(QPen(getLabelColor())); + labelBounds = painter->fontMetrics().boundingRect(0, 0, 0, 0, Qt::TextDontClip, mLabel); + if (mAxisType == atLeft) + { + QTransform oldTransform = painter->transform(); + painter->translate((origin.x()-margin-labelBounds.height()), origin.y()); + painter->rotate(-90); + painter->drawText(0, 0, mAxisRect->height(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + painter->setTransform(oldTransform); + } + else if (mAxisType == atRight) + { + QTransform oldTransform = painter->transform(); + painter->translate((origin.x()+margin+labelBounds.height()), origin.y()-mAxisRect->height()); + painter->rotate(90); + painter->drawText(0, 0, mAxisRect->height(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + painter->setTransform(oldTransform); + } + else if (mAxisType == atTop) + painter->drawText(origin.x(), origin.y()-margin-labelBounds.height(), mAxisRect->width(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + else if (mAxisType == atBottom) + painter->drawText(origin.x(), origin.y()+margin, mAxisRect->width(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + } + + // set selection boxes: + int selAxisOutSize = qMax(qMax(mTickLengthOut, mSubTickLengthOut), mParentPlot->selectionTolerance()); + int selAxisInSize = mParentPlot->selectionTolerance(); + int selTickLabelSize = (orientation()==Qt::Horizontal ? tickLabelsSize.height() : tickLabelsSize.width()); + int selTickLabelOffset = qMax(mTickLengthOut, mSubTickLengthOut)+mTickLabelPadding; + int selLabelSize = labelBounds.height(); + int selLabelOffset = selTickLabelOffset+selTickLabelSize+mLabelPadding; + if (mAxisType == atLeft) + { + mAxisSelectionBox.setCoords(origin.x()-selAxisOutSize, mAxisRect->top(), origin.x()+selAxisInSize, mAxisRect->bottom()); + mTickLabelsSelectionBox.setCoords(origin.x()-selTickLabelOffset-selTickLabelSize, mAxisRect->top(), origin.x()-selTickLabelOffset, mAxisRect->bottom()); + mLabelSelectionBox.setCoords(origin.x()-selLabelOffset-selLabelSize, mAxisRect->top(), origin.x()-selLabelOffset, mAxisRect->bottom()); + } else if (mAxisType == atRight) + { + mAxisSelectionBox.setCoords(origin.x()-selAxisInSize, mAxisRect->top(), origin.x()+selAxisOutSize, mAxisRect->bottom()); + mTickLabelsSelectionBox.setCoords(origin.x()+selTickLabelOffset+selTickLabelSize, mAxisRect->top(), origin.x()+selTickLabelOffset, mAxisRect->bottom()); + mLabelSelectionBox.setCoords(origin.x()+selLabelOffset+selLabelSize, mAxisRect->top(), origin.x()+selLabelOffset, mAxisRect->bottom()); + } else if (mAxisType == atTop) + { + mAxisSelectionBox.setCoords(mAxisRect->left(), origin.y()-selAxisOutSize, mAxisRect->right(), origin.y()+selAxisInSize); + mTickLabelsSelectionBox.setCoords(mAxisRect->left(), origin.y()-selTickLabelOffset-selTickLabelSize, mAxisRect->right(), origin.y()-selTickLabelOffset); + mLabelSelectionBox.setCoords(mAxisRect->left(), origin.y()-selLabelOffset-selLabelSize, mAxisRect->right(), origin.y()-selLabelOffset); + } else if (mAxisType == atBottom) + { + mAxisSelectionBox.setCoords(mAxisRect->left(), origin.y()-selAxisInSize, mAxisRect->right(), origin.y()+selAxisOutSize); + mTickLabelsSelectionBox.setCoords(mAxisRect->left(), origin.y()+selTickLabelOffset+selTickLabelSize, mAxisRect->right(), origin.y()+selTickLabelOffset); + mLabelSelectionBox.setCoords(mAxisRect->left(), origin.y()+selLabelOffset+selLabelSize, mAxisRect->right(), origin.y()+selLabelOffset); + } + // draw hitboxes for debug purposes: + //painter->setBrush(Qt::NoBrush); + //painter->drawRects(QVector() << mAxisSelectionBox << mTickLabelsSelectionBox << mLabelSelectionBox); +} + +/*! \internal + + Draws a single tick label with the provided \a painter, utilizing the internal label cache to + significantly speed up drawing of labels that were drawn in previous calls. The tick label is + always bound to an axis, the distance to the axis is controllable via \a distanceToAxis in + pixels. The pixel position in the axis direction is passed in the \a position parameter. Hence + for the bottom axis, \a position would indicate the horizontal pixel position (not coordinate), + at which the label should be drawn. + + In order to later draw the axis label in a place that doesn't overlap with the tick labels, the + largest tick label size is needed. This is acquired by passing a \a tickLabelsSize to the \ref + drawTickLabel calls during the process of drawing all tick labels of one axis. In every call, \a + tickLabelsSize is expanded, if the drawn label exceeds the value \a tickLabelsSize currently + holds. + + The label is drawn with the font and pen that are currently set on the \a painter. To draw + superscripted powers, the font is temporarily made smaller by a fixed factor (see \ref + getTickLabelData). +*/ +void QCPAxis::placeTickLabel(QCPPainter *painter, double position, int distanceToAxis, const QString &text, QSize *tickLabelsSize) +{ + // warning: if you change anything here, also adapt getMaxTickLabelSize() accordingly! + if (!mParentPlot) return; + if (text.isEmpty()) return; + QSize finalSize; + QPointF labelAnchor; + switch (mAxisType) + { + case atLeft: labelAnchor = QPointF(mAxisRect->left()-distanceToAxis-mOffset, position); break; + case atRight: labelAnchor = QPointF(mAxisRect->right()+distanceToAxis+mOffset, position); break; + case atTop: labelAnchor = QPointF(position, mAxisRect->top()-distanceToAxis-mOffset); break; + case atBottom: labelAnchor = QPointF(position, mAxisRect->bottom()+distanceToAxis+mOffset); break; + } + if (parentPlot()->plottingHints().testFlag(QCP::phCacheLabels) && !painter->modes().testFlag(QCPPainter::pmNoCaching)) // label caching enabled + { + if (!mLabelCache.contains(text)) // no cached label exists, create it + { + CachedLabel *newCachedLabel = new CachedLabel; + TickLabelData labelData = getTickLabelData(painter->font(), text); + QPointF drawOffset = getTickLabelDrawOffset(labelData); + newCachedLabel->offset = drawOffset+labelData.rotatedTotalBounds.topLeft(); + newCachedLabel->pixmap = QPixmap(labelData.rotatedTotalBounds.size()); + newCachedLabel->pixmap.fill(Qt::transparent); + QCPPainter cachePainter(&newCachedLabel->pixmap); + cachePainter.setPen(painter->pen()); + drawTickLabel(&cachePainter, -labelData.rotatedTotalBounds.topLeft().x(), -labelData.rotatedTotalBounds.topLeft().y(), labelData); + mLabelCache.insert(text, newCachedLabel, 1); + } + // draw cached label: + const CachedLabel *cachedLabel = mLabelCache.object(text); + // if label would be partly clipped by widget border on sides, don't draw it: + if (orientation() == Qt::Horizontal) + { + if (labelAnchor.x()+cachedLabel->offset.x()+cachedLabel->pixmap.width() > mParentPlot->viewport().right() || + labelAnchor.x()+cachedLabel->offset.x() < mParentPlot->viewport().left()) + return; + } else + { + if (labelAnchor.y()+cachedLabel->offset.y()+cachedLabel->pixmap.height() > mParentPlot->viewport().bottom() || + labelAnchor.y()+cachedLabel->offset.y() < mParentPlot->viewport().top()) + return; + } + painter->drawPixmap(labelAnchor+cachedLabel->offset, cachedLabel->pixmap); + finalSize = cachedLabel->pixmap.size(); + } else // label caching disabled, draw text directly on surface: + { + TickLabelData labelData = getTickLabelData(painter->font(), text); + QPointF finalPosition = labelAnchor + getTickLabelDrawOffset(labelData); + // if label would be partly clipped by widget border on sides, don't draw it: + if (orientation() == Qt::Horizontal) + { + if (finalPosition.x()+(labelData.rotatedTotalBounds.width()+labelData.rotatedTotalBounds.left()) > mParentPlot->viewport().right() || + finalPosition.x()+labelData.rotatedTotalBounds.left() < mParentPlot->viewport().left()) + return; + } else + { + if (finalPosition.y()+(labelData.rotatedTotalBounds.height()+labelData.rotatedTotalBounds.top()) > mParentPlot->viewport().bottom() || + finalPosition.y()+labelData.rotatedTotalBounds.top() < mParentPlot->viewport().top()) + return; + } + drawTickLabel(painter, finalPosition.x(), finalPosition.y(), labelData); + finalSize = labelData.rotatedTotalBounds.size(); + } + + // expand passed tickLabelsSize if current tick label is larger: + if (finalSize.width() > tickLabelsSize->width()) + tickLabelsSize->setWidth(finalSize.width()); + if (finalSize.height() > tickLabelsSize->height()) + tickLabelsSize->setHeight(finalSize.height()); +} + +/*! \internal + + This is a \ref placeTickLabel helper function. + + Draws the tick label specified in \a labelData with \a painter at the pixel positions \a x and \a + y. This function is used by \ref placeTickLabel to create new tick labels for the cache, or to + directly draw the labels on the QCustomPlot surface when label caching is disabled, i.e. when + QCP::phCacheLabels plotting hint is not set. +*/ +void QCPAxis::drawTickLabel(QCPPainter *painter, double x, double y, const QCPAxis::TickLabelData &labelData) const +{ + // backup painter settings that we're about to change: + QTransform oldTransform = painter->transform(); + QFont oldFont = painter->font(); + + // transform painter to position/rotation: + painter->translate(x, y); + if (!qFuzzyIsNull(mTickLabelRotation)) + painter->rotate(mTickLabelRotation); + + // draw text: + if (!labelData.expPart.isEmpty()) // indicator that beautiful powers must be used + { + painter->setFont(labelData.baseFont); + painter->drawText(0, 0, 0, 0, Qt::TextDontClip, labelData.basePart); + painter->setFont(labelData.expFont); + painter->drawText(labelData.baseBounds.width()+1, 0, labelData.expBounds.width(), labelData.expBounds.height(), Qt::TextDontClip, labelData.expPart); + } else + { + painter->setFont(labelData.baseFont); + painter->drawText(0, 0, labelData.totalBounds.width(), labelData.totalBounds.height(), Qt::TextDontClip | Qt::AlignHCenter, labelData.basePart); + } + + // reset painter settings to what it was before: + painter->setTransform(oldTransform); + painter->setFont(oldFont); +} + +/*! \internal + + This is a \ref placeTickLabel helper function. + + Transforms the passed \a text and \a font to a tickLabelData structure that can then be further + processed by \ref getTickLabelDrawOffset and \ref drawTickLabel. It splits the text into base and + exponent if necessary (see \ref setNumberFormat) and calculates appropriate bounding boxes. +*/ +QCPAxis::TickLabelData QCPAxis::getTickLabelData(const QFont &font, const QString &text) const +{ + TickLabelData result; + + // determine whether beautiful decimal powers should be used + bool useBeautifulPowers = false; + int ePos = -1; + if (mAutoTickLabels && mNumberBeautifulPowers && mTickLabelType == ltNumber) + { + ePos = text.indexOf('e'); + if (ePos > -1) + useBeautifulPowers = true; + } + + // calculate text bounding rects and do string preparation for beautiful decimal powers: + result.baseFont = font; + result.baseFont.setPointSizeF(result.baseFont.pointSizeF()+0.05); // QFontMetrics.boundingRect has a bug for exact point sizes that make the results oscillate due to internal rounding + if (useBeautifulPowers) + { + // split text into parts of number/symbol that will be drawn normally and part that will be drawn as exponent: + result.basePart = text.left(ePos); + // in log scaling, we want to turn "1*10^n" into "10^n", else add multiplication sign and decimal base: + if (mScaleType == stLogarithmic && result.basePart == "1") + result.basePart = "10"; + else + result.basePart += (mNumberMultiplyCross ? QString(QChar(215)) : QString(QChar(183))) + "10"; + result.expPart = text.mid(ePos+1); + // clip "+" and leading zeros off expPart: + while (result.expPart.at(1) == '0' && result.expPart.length() > 2) // length > 2 so we leave one zero when numberFormatChar is 'e' + result.expPart.remove(1, 1); + if (result.expPart.at(0) == mPositiveSignChar) + result.expPart.remove(0, 1); + // prepare smaller font for exponent: + result.expFont = font; + result.expFont.setPointSize(result.expFont.pointSize()*0.75); + // calculate bounding rects of base part, exponent part and total one: + result.baseBounds = QFontMetrics(result.baseFont).boundingRect(0, 0, 0, 0, Qt::TextDontClip, result.basePart); + result.expBounds = QFontMetrics(result.expFont).boundingRect(0, 0, 0, 0, Qt::TextDontClip, result.expPart); + result.totalBounds = result.baseBounds.adjusted(0, 0, result.expBounds.width()+2, 0); // +2 consists of the 1 pixel spacing between base and exponent (see drawTickLabel) and an extra pixel to include AA + } else // useBeautifulPowers == false + { + result.basePart = text; + result.totalBounds = QFontMetrics(result.baseFont).boundingRect(0, 0, 0, 0, Qt::TextDontClip | Qt::AlignHCenter, result.basePart); + } + result.totalBounds.moveTopLeft(QPoint(0, 0)); // want bounding box aligned top left at origin, independent of how it was created, to make further processing simpler + + // calculate possibly different bounding rect after rotation: + result.rotatedTotalBounds = result.totalBounds; + if (!qFuzzyIsNull(mTickLabelRotation)) + { + QTransform transform; + transform.rotate(mTickLabelRotation); + result.rotatedTotalBounds = transform.mapRect(result.rotatedTotalBounds); + } + + return result; +} + +/*! \internal + + This is a \ref placeTickLabel helper function. + + Calculates the offset at which the top left corner of the specified tick label shall be drawn. + The offset is relative to a point right next to the tick the label belongs to. + + This function is thus responsible for e.g. centering tick labels under ticks and positioning them + appropriately when they are rotated. +*/ +QPointF QCPAxis::getTickLabelDrawOffset(const QCPAxis::TickLabelData &labelData) const +{ + /* + calculate label offset from base point at tick (non-trivial, for best visual appearance): short + explanation for bottom axis: The anchor, i.e. the point in the label that is placed + horizontally under the corresponding tick is always on the label side that is closer to the + axis (e.g. the left side of the text when we're rotating clockwise). On that side, the height + is halved and the resulting point is defined the anchor. This way, a 90 degree rotated text + will be centered under the tick (i.e. displaced horizontally by half its height). At the same + time, a 45 degree rotated text will "point toward" its tick, as is typical for rotated tick + labels. + */ + bool doRotation = !qFuzzyIsNull(mTickLabelRotation); + bool flip = qFuzzyCompare(qAbs(mTickLabelRotation), 90.0); // perfect +/-90 degree flip. Indicates vertical label centering on vertical axes. + double radians = mTickLabelRotation/180.0*M_PI; + int x=0, y=0; + if (mAxisType == atLeft) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = -qCos(radians)*labelData.totalBounds.width(); + y = flip ? -labelData.totalBounds.width()/2.0 : -qSin(radians)*labelData.totalBounds.width()-qCos(radians)*labelData.totalBounds.height()/2.0; + } else + { + x = -qCos(-radians)*labelData.totalBounds.width()-qSin(-radians)*labelData.totalBounds.height(); + y = flip ? +labelData.totalBounds.width()/2.0 : +qSin(-radians)*labelData.totalBounds.width()-qCos(-radians)*labelData.totalBounds.height()/2.0; + } + } else + { + x = -labelData.totalBounds.width(); + y = -labelData.totalBounds.height()/2.0; + } + } else if (mAxisType == atRight) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = +qSin(radians)*labelData.totalBounds.height(); + y = flip ? -labelData.totalBounds.width()/2.0 : -qCos(radians)*labelData.totalBounds.height()/2.0; + } else + { + x = 0; + y = flip ? +labelData.totalBounds.width()/2.0 : -qCos(-radians)*labelData.totalBounds.height()/2.0; + } + } else + { + x = 0; + y = -labelData.totalBounds.height()/2.0; + } + } else if (mAxisType == atTop) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = -qCos(radians)*labelData.totalBounds.width()+qSin(radians)*labelData.totalBounds.height()/2.0; + y = -qSin(radians)*labelData.totalBounds.width()-qCos(radians)*labelData.totalBounds.height(); + } else + { + x = -qSin(-radians)*labelData.totalBounds.height()/2.0; + y = -qCos(-radians)*labelData.totalBounds.height(); + } + } else + { + x = -labelData.totalBounds.width()/2.0; + y = -labelData.totalBounds.height(); + } + } else if (mAxisType == atBottom) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = +qSin(radians)*labelData.totalBounds.height()/2.0; + y = 0; + } else + { + x = -qCos(-radians)*labelData.totalBounds.width()-qSin(-radians)*labelData.totalBounds.height()/2.0; + y = +qSin(-radians)*labelData.totalBounds.width(); + } + } else + { + x = -labelData.totalBounds.width()/2.0; + y = 0; + } + } + + return QPointF(x, y); +} + +/*! \internal + + Simulates the steps done by \ref placeTickLabel by calculating bounding boxes of the text label + to be drawn, depending on number format etc. Since only the largest tick label is wanted for the + margin calculation, the passed \a tickLabelsSize is only expanded, if it's currently set to a + smaller width/height. +*/ +void QCPAxis::getMaxTickLabelSize(const QFont &font, const QString &text, QSize *tickLabelsSize) const +{ + // note: this function must return the same tick label sizes as the placeTickLabel function. + QSize finalSize; + if (parentPlot()->plottingHints().testFlag(QCP::phCacheLabels) && mLabelCache.contains(text)) // label caching enabled and have cached label + { + const CachedLabel *cachedLabel = mLabelCache.object(text); + finalSize = cachedLabel->pixmap.size(); + } else // label caching disabled or no label with this text cached: + { + TickLabelData labelData = getTickLabelData(font, text); + finalSize = labelData.rotatedTotalBounds.size(); + } + + // expand passed tickLabelsSize if current tick label is larger: + if (finalSize.width() > tickLabelsSize->width()) + tickLabelsSize->setWidth(finalSize.width()); + if (finalSize.height() > tickLabelsSize->height()) + tickLabelsSize->setHeight(finalSize.height()); +} + +/* inherits documentation from base class */ +void QCPAxis::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + SelectablePart part = details.value(); + if (mSelectableParts.testFlag(part)) + { + SelectableParts selBefore = mSelectedParts; + setSelectedParts(additive ? mSelectedParts^part : part); + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAxis::deselectEvent(bool *selectionStateChanged) +{ + SelectableParts selBefore = mSelectedParts; + setSelectedParts(mSelectedParts & ~mSelectableParts); + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing axis lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPAxis::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeAxes); +} + +/*! \internal + + Returns via \a lowIndex and \a highIndex, which ticks in the current tick vector are visible in + the current range. The return values are indices of the tick vector, not the positions of the + ticks themselves. + + The actual use of this function is when an external tick vector is provided, since it might + exceed far beyond the currently displayed range, and would cause unnecessary calculations e.g. of + subticks. + + If all ticks are outside the axis range, an inverted range is returned, i.e. highIndex will be + smaller than lowIndex. There is one case, where this function returns indices that are not really + visible in the current axis range: When the tick spacing is larger than the axis range size and + one tick is below the axis range and the next tick is already above the axis range. Because in + such cases it is usually desirable to know the tick pair, to draw proper subticks. +*/ +void QCPAxis::visibleTickBounds(int &lowIndex, int &highIndex) const +{ + bool lowFound = false; + bool highFound = false; + lowIndex = 0; + highIndex = -1; + + for (int i=0; i < mTickVector.size(); ++i) + { + if (mTickVector.at(i) >= mRange.lower) + { + lowFound = true; + lowIndex = i; + break; + } + } + for (int i=mTickVector.size()-1; i >= 0; --i) + { + if (mTickVector.at(i) <= mRange.upper) + { + highFound = true; + highIndex = i; + break; + } + } + + if (!lowFound && highFound) + lowIndex = highIndex+1; + else if (lowFound && !highFound) + highIndex = lowIndex-1; +} + +/*! \internal + + A log function with the base mScaleLogBase, used mostly for coordinate transforms in logarithmic + scales with arbitrary log base. Uses the buffered mScaleLogBaseLogInv for faster calculation. + This is set to 1.0/qLn(mScaleLogBase) in \ref setScaleLogBase. + + \see basePow, setScaleLogBase, setScaleType +*/ +double QCPAxis::baseLog(double value) const +{ + return qLn(value)*mScaleLogBaseLogInv; +} + +/*! \internal + + A power function with the base mScaleLogBase, used mostly for coordinate transforms in + logarithmic scales with arbitrary log base. + + \see baseLog, setScaleLogBase, setScaleType +*/ +double QCPAxis::basePow(double value) const +{ + return qPow(mScaleLogBase, value); +} + +/*! \internal + + Returns the pen that is used to draw the axis base line. Depending on the selection state, this + is either mSelectedBasePen or mBasePen. +*/ +QPen QCPAxis::getBasePen() const +{ + return mSelectedParts.testFlag(spAxis) ? mSelectedBasePen : mBasePen; +} + +/*! \internal + + Returns the pen that is used to draw the (major) ticks. Depending on the selection state, this + is either mSelectedTickPen or mTickPen. +*/ +QPen QCPAxis::getTickPen() const +{ + return mSelectedParts.testFlag(spAxis) ? mSelectedTickPen : mTickPen; +} + +/*! \internal + + Returns the pen that is used to draw the subticks. Depending on the selection state, this + is either mSelectedSubTickPen or mSubTickPen. +*/ +QPen QCPAxis::getSubTickPen() const +{ + return mSelectedParts.testFlag(spAxis) ? mSelectedSubTickPen : mSubTickPen; +} + +/*! \internal + + Returns the font that is used to draw the tick labels. Depending on the selection state, this + is either mSelectedTickLabelFont or mTickLabelFont. +*/ +QFont QCPAxis::getTickLabelFont() const +{ + return mSelectedParts.testFlag(spTickLabels) ? mSelectedTickLabelFont : mTickLabelFont; +} + +/*! \internal + + Returns the font that is used to draw the axis label. Depending on the selection state, this + is either mSelectedLabelFont or mLabelFont. +*/ +QFont QCPAxis::getLabelFont() const +{ + return mSelectedParts.testFlag(spAxisLabel) ? mSelectedLabelFont : mLabelFont; +} + +/*! \internal + + Returns the color that is used to draw the tick labels. Depending on the selection state, this + is either mSelectedTickLabelColor or mTickLabelColor. +*/ +QColor QCPAxis::getTickLabelColor() const +{ + return mSelectedParts.testFlag(spTickLabels) ? mSelectedTickLabelColor : mTickLabelColor; +} + +/*! \internal + + Returns the color that is used to draw the axis label. Depending on the selection state, this + is either mSelectedLabelColor or mLabelColor. +*/ +QColor QCPAxis::getLabelColor() const +{ + return mSelectedParts.testFlag(spAxisLabel) ? mSelectedLabelColor : mLabelColor; +} + +/*! \internal + + Returns the appropriate outward margin for this axis. It is needed if \ref + QCPAxisRect::setAutoMargins is set to true on the parent axis rect. An axis with axis type \ref + atLeft will return an appropriate left margin, \ref atBottom will return an appropriate bottom + margin and so forth. For the calculation, this function goes through similar steps as \ref draw, + so changing one function likely requires the modification of the other one as well. + + The margin consists of the outward tick length, tick label padding, tick label size, label + padding, label size, and padding. + + The margin is cached internally, so repeated calls while leaving the axis range, fonts, etc. + unchanged are very fast. +*/ +int QCPAxis::calculateMargin() +{ + if (mCachedMarginValid) + return mCachedMargin; + + // run through similar steps as QCPAxis::draw, and caluclate margin needed to fit axis and its labels + int margin = 0; + + if (mVisible) + { + int lowTick, highTick; + visibleTickBounds(lowTick, highTick); + // get length of tick marks pointing outwards: + if (mTicks) + margin += qMax(0, qMax(mTickLengthOut, mSubTickLengthOut)); + // calculate size of tick labels: + QSize tickLabelsSize(0, 0); + if (mTickLabels) + { + for (int i=lowTick; i<=highTick; ++i) + getMaxTickLabelSize(mTickLabelFont, mTickVectorLabels.at(i), &tickLabelsSize); // don't use getTickLabelFont() because we don't want margin to possibly change on selection + margin += orientation() == Qt::Horizontal ? tickLabelsSize.height() : tickLabelsSize.width(); + margin += mTickLabelPadding; + } + // calculate size of axis label (only height needed, because left/right labels are rotated by 90 degrees): + if (!mLabel.isEmpty()) + { + QFontMetrics fontMetrics(mLabelFont); // don't use getLabelFont() because we don't want margin to possibly change on selection + QRect bounds; + bounds = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip | Qt::AlignHCenter | Qt::AlignVCenter, mLabel); + margin += bounds.height() + mLabelPadding; + } + } + margin += mPadding; + + mCachedMargin = margin; + mCachedMarginValid = true; + return margin; +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAxis::selectionCategory() const +{ + return QCP::iSelectAxes; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAbstractPlottable +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAbstractPlottable + \brief The abstract base class for all data representing objects in a plot. + + It defines a very basic interface like name, pen, brush, visibility etc. Since this class is + abstract, it can't be instantiated. Use one of the subclasses or create a subclass yourself to + create new ways of displaying data (see "Creating own plottables" below). + + All further specifics are in the subclasses, for example: + \li A normal graph with possibly a line, scatter points and error bars is displayed by \ref QCPGraph + (typically created with \ref QCustomPlot::addGraph). + \li A parametric curve can be displayed with \ref QCPCurve. + \li A stackable bar chart can be achieved with \ref QCPBars. + \li A box of a statistical box plot is created with \ref QCPStatisticalBox. + + \section plottables-subclassing Creating own plottables + + To create an own plottable, you implement a subclass of QCPAbstractPlottable. These are the pure + virtual functions, you must implement: + \li \ref clearData + \li \ref selectTest + \li \ref draw + \li \ref drawLegendIcon + \li \ref getKeyRange + \li \ref getValueRange + + See the documentation of those functions for what they need to do. + + For drawing your plot, you can use the \ref coordsToPixels functions to translate a point in plot + coordinates to pixel coordinates. This function is quite convenient, because it takes the + orientation of the key and value axes into account for you (x and y are swapped when the key axis + is vertical and the value axis horizontal). If you are worried about performance (i.e. you need + to translate many points in a loop like QCPGraph), you can directly use \ref + QCPAxis::coordToPixel. However, you must then take care about the orientation of the axis + yourself. + + Here are some important members you inherit from QCPAbstractPlottable: + + + + + + + + + + + + + + + + + + + + + + + + + + +
QCustomPlot *\b mParentPlotA pointer to the parent QCustomPlot instance. The parent plot is inferred from the axes that are passed in the constructor.
QString \b mNameThe name of the plottable.
QPen \b mPenThe generic pen of the plottable. You should use this pen for the most prominent data representing lines in the plottable (e.g QCPGraph uses this pen for its graph lines and scatters)
QPen \b mSelectedPenThe generic pen that should be used when the plottable is selected (hint: \ref mainPen gives you the right pen, depending on selection state).
QBrush \b mBrushThe generic brush of the plottable. You should use this brush for the most prominent fillable structures in the plottable (e.g. QCPGraph uses this brush to control filling under the graph)
QBrush \b mSelectedBrushThe generic brush that should be used when the plottable is selected (hint: \ref mainBrush gives you the right brush, depending on selection state).
QWeakPointer\b mKeyAxis, \b mValueAxisThe key and value axes this plottable is attached to. Call their QCPAxis::coordToPixel functions to translate coordinates to pixels in either the key or value dimension. + Make sure to check whether the weak pointer is null before using it. If one of the axes is null, don't draw the plottable.
bool \b mSelectedindicates whether the plottable is selected or not.
+*/ + +/* start of documentation of pure virtual functions */ + +/*! \fn void QCPAbstractPlottable::clearData() = 0 + Clears all data in the plottable. +*/ + +/*! \fn void QCPAbstractPlottable::drawLegendIcon(QCPPainter *painter, const QRect &rect) const = 0 + \internal + + called by QCPLegend::draw (via QCPPlottableLegendItem::draw) to create a graphical representation + of this plottable inside \a rect, next to the plottable name. +*/ + +/*! \fn QCPRange QCPAbstractPlottable::getKeyRange(bool &validRange, SignDomain inSignDomain) const = 0 + \internal + + called by rescaleAxes functions to get the full data key bounds. For logarithmic plots, one can + set \a inSignDomain to either \ref sdNegative or \ref sdPositive in order to restrict the + returned range to that sign domain. E.g. when only negative range is wanted, set \a inSignDomain + to \ref sdNegative and all positive points will be ignored for range calculation. For no + restriction, just set \a inSignDomain to \ref sdBoth (default). \a validRange is an output + parameter that indicates whether a proper range could be found or not. If this is false, you + shouldn't use the returned range (e.g. no points in data). + + \see rescaleAxes, getValueRange +*/ + +/*! \fn QCPRange QCPAbstractPlottable::getValueRange(bool &validRange, SignDomain inSignDomain) const = 0 + \internal + + called by rescaleAxes functions to get the full data value bounds. For logarithmic plots, one can + set \a inSignDomain to either \ref sdNegative or \ref sdPositive in order to restrict the + returned range to that sign domain. E.g. when only negative range is wanted, set \a inSignDomain + to \ref sdNegative and all positive points will be ignored for range calculation. For no + restriction, just set \a inSignDomain to \ref sdBoth (default). \a validRange is an output + parameter that indicates whether a proper range could be found or not. If this is false, you + shouldn't use the returned range (e.g. no points in data). + + \see rescaleAxes, getKeyRange +*/ + +/* end of documentation of pure virtual functions */ +/* start of documentation of signals */ + +/*! \fn void QCPAbstractPlottable::selectionChanged(bool selected) + + This signal is emitted when the selection state of this plottable has changed to \a selected, + either by user interaction or by a direct call to \ref setSelected. +*/ + +/* end of documentation of signals */ + +/*! + Constructs an abstract plottable which uses \a keyAxis as its key axis ("x") and \a valueAxis as + its value axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance + and have perpendicular orientations. If either of these restrictions is violated, a corresponding + message is printed to the debug output (qDebug), the construction is not aborted, though. + + Since QCPAbstractPlottable is an abstract class that defines the basic interface to plottables, + it can't be directly instantiated. + + You probably want one of the subclasses like \ref QCPGraph or \ref QCPCurve instead. +*/ +QCPAbstractPlottable::QCPAbstractPlottable(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPLayerable(keyAxis->parentPlot(), "", keyAxis->axisRect()), + mName(""), + mAntialiasedFill(true), + mAntialiasedScatters(true), + mAntialiasedErrorBars(false), + mPen(Qt::black), + mSelectedPen(Qt::black), + mBrush(Qt::NoBrush), + mSelectedBrush(Qt::NoBrush), + mKeyAxis(keyAxis), + mValueAxis(valueAxis), + mSelectable(true), + mSelected(false) +{ + if (keyAxis->parentPlot() != valueAxis->parentPlot()) + qDebug() << Q_FUNC_INFO << "Parent plot of keyAxis is not the same as that of valueAxis."; + if (keyAxis->orientation() == valueAxis->orientation()) + qDebug() << Q_FUNC_INFO << "keyAxis and valueAxis must be orthogonal to each other."; +} + +/*! + The name is the textual representation of this plottable as it is displayed in the legend + (\ref QCPLegend). It may contain any UTF-8 characters, including newlines. +*/ +void QCPAbstractPlottable::setName(const QString &name) +{ + mName = name; +} + +/*! + Sets whether fills of this plottable is drawn antialiased or not. + + Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPAbstractPlottable::setAntialiasedFill(bool enabled) +{ + mAntialiasedFill = enabled; +} + +/*! + Sets whether the scatter symbols of this plottable are drawn antialiased or not. + + Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPAbstractPlottable::setAntialiasedScatters(bool enabled) +{ + mAntialiasedScatters = enabled; +} + +/*! + Sets whether the error bars of this plottable are drawn antialiased or not. + + Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPAbstractPlottable::setAntialiasedErrorBars(bool enabled) +{ + mAntialiasedErrorBars = enabled; +} + + +/*! + The pen is used to draw basic lines that make up the plottable representation in the + plot. + + For example, the \ref QCPGraph subclass draws its graph lines and scatter points + with this pen. + + \see setBrush +*/ +void QCPAbstractPlottable::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + When the plottable is selected, this pen is used to draw basic lines instead of the normal + pen set via \ref setPen. + + \see setSelected, setSelectable, setSelectedBrush, selectTest +*/ +void QCPAbstractPlottable::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + The brush is used to draw basic fills of the plottable representation in the + plot. The Fill can be a color, gradient or texture, see the usage of QBrush. + + For example, the \ref QCPGraph subclass draws the fill under the graph with this brush, when + it's not set to Qt::NoBrush. + + \see setPen +*/ +void QCPAbstractPlottable::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + When the plottable is selected, this brush is used to draw fills instead of the normal + brush set via \ref setBrush. + + \see setSelected, setSelectable, setSelectedPen, selectTest +*/ +void QCPAbstractPlottable::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + The key axis of a plottable can be set to any axis of a QCustomPlot, as long as it is orthogonal + to the plottable's value axis. This function performs no checks to make sure this is the case. + The typical mathematical choice is to use the x-axis (QCustomPlot::xAxis) as key axis and the + y-axis (QCustomPlot::yAxis) as value axis. + + Normally, the key and value axes are set in the constructor of the plottable (or \ref + QCustomPlot::addGraph when working with QCPGraphs through the dedicated graph interface). + + \see setValueAxis +*/ +void QCPAbstractPlottable::setKeyAxis(QCPAxis *axis) +{ + mKeyAxis = axis; +} + +/*! + The value axis of a plottable can be set to any axis of a QCustomPlot, as long as it is + orthogonal to the plottable's key axis. This function performs no checks to make sure this is the + case. The typical mathematical choice is to use the x-axis (QCustomPlot::xAxis) as key axis and + the y-axis (QCustomPlot::yAxis) as value axis. + + Normally, the key and value axes are set in the constructor of the plottable (or \ref + QCustomPlot::addGraph when working with QCPGraphs through the dedicated graph interface). + + \see setKeyAxis +*/ +void QCPAbstractPlottable::setValueAxis(QCPAxis *axis) +{ + mValueAxis = axis; +} + +/*! + Sets whether the user can (de-)select this plottable by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains iSelectPlottables.) + + However, even when \a selectable was set to false, it is possible to set the selection manually, + by calling \ref setSelected directly. + + \see setSelected +*/ +void QCPAbstractPlottable::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets whether this plottable is selected or not. When selected, it uses a different pen and brush + to draw its lines and fills, see \ref setSelectedPen and \ref setSelectedBrush. + + The entire selection mechanism for plottables is handled automatically when \ref + QCustomPlot::setInteractions contains iSelectPlottables. You only need to call this function when + you wish to change the selection state manually. + + This function can change the selection state even when \ref setSelectable was set to false. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + \see setSelectable, selectTest +*/ +void QCPAbstractPlottable::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/*! + Rescales the key and value axes associated with this plottable to contain all displayed data, so + the whole plottable is visible. If the scaling of an axis is logarithmic, rescaleAxes will make + sure not to rescale to an illegal range i.e. a range containing different signs and/or zero. + Instead it will stay in the current sign domain and ignore all parts of the plottable that lie + outside of that domain. + + \a onlyEnlarge makes sure the ranges are only expanded, never reduced. So it's possible to show + multiple plottables in their entirety by multiple calls to rescaleAxes where the first call has + \a onlyEnlarge set to false (the default), and all subsequent set to true. + + \see rescaleKeyAxis, rescaleValueAxis, QCustomPlot::rescaleAxes +*/ +void QCPAbstractPlottable::rescaleAxes(bool onlyEnlarge) const +{ + rescaleKeyAxis(onlyEnlarge); + rescaleValueAxis(onlyEnlarge); +} + +/*! + Rescales the key axis of the plottable so the whole plottable is visible. + + See \ref rescaleAxes for detailed behaviour. +*/ +void QCPAbstractPlottable::rescaleKeyAxis(bool onlyEnlarge) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + if (!keyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + SignDomain signDomain = sdBoth; + if (keyAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (keyAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getKeyRange(validRange, signDomain); + if (validRange) + { + if (onlyEnlarge) + { + if (keyAxis->range().lower < newRange.lower) + newRange.lower = keyAxis->range().lower; + if (keyAxis->range().upper > newRange.upper) + newRange.upper = keyAxis->range().upper; + } + keyAxis->setRange(newRange); + } +} + +/*! + Rescales the value axis of the plottable so the whole plottable is visible. + + See \ref rescaleAxes for detailed behaviour. +*/ +void QCPAbstractPlottable::rescaleValueAxis(bool onlyEnlarge) const +{ + QCPAxis *valueAxis = mValueAxis.data(); + if (!valueAxis) { qDebug() << Q_FUNC_INFO << "invalid value axis"; return; } + + SignDomain signDomain = sdBoth; + if (valueAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (valueAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getValueRange(validRange, signDomain); + + if (validRange) + { + if (onlyEnlarge) + { + if (valueAxis->range().lower < newRange.lower) + newRange.lower = valueAxis->range().lower; + if (valueAxis->range().upper > newRange.upper) + newRange.upper = valueAxis->range().upper; + } + valueAxis->setRange(newRange); + } +} + +/*! + Adds this plottable to the legend of the parent QCustomPlot (QCustomPlot::legend). + + Normally, a QCPPlottableLegendItem is created and inserted into the legend. If the plottable + needs a more specialized representation in the legend, this function will take this into account + and instead create the specialized subclass of QCPAbstractLegendItem. + + Returns true on success, i.e. when the legend exists and a legend item associated with this plottable isn't already in + the legend. + + \see removeFromLegend, QCPLegend::addItem +*/ +bool QCPAbstractPlottable::addToLegend() +{ + if (!mParentPlot || !mParentPlot->legend) + return false; + + if (!mParentPlot->legend->hasItemWithPlottable(this)) + { + mParentPlot->legend->addItem(new QCPPlottableLegendItem(mParentPlot->legend, this)); + return true; + } else + return false; +} + +/*! + Removes the plottable from the legend of the parent QCustomPlot. This means the + QCPAbstractLegendItem (usually a QCPPlottableLegendItem) that is associated with this plottable + is removed. + + Returns true on success, i.e. if the legend exists and a legend item associated with this + plottable was found and removed. + + \see addToLegend, QCPLegend::removeItem +*/ +bool QCPAbstractPlottable::removeFromLegend() const +{ + if (!mParentPlot->legend) + return false; + + if (QCPPlottableLegendItem *lip = mParentPlot->legend->itemWithPlottable(this)) + return mParentPlot->legend->removeItem(lip); + else + return false; +} + +/* inherits documentation from base class */ +QRect QCPAbstractPlottable::clipRect() const +{ + if (mKeyAxis && mValueAxis) + return mKeyAxis.data()->axisRect()->rect() & mValueAxis.data()->axisRect()->rect(); + else + return QRect(); +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAbstractPlottable::selectionCategory() const +{ + return QCP::iSelectPlottables; +} + +/*! \internal + + Convenience function for transforming a key/value pair to pixels on the QCustomPlot surface, + taking the orientations of the axes associated with this plottable into account (e.g. whether key + represents x or y). + + \a key and \a value are transformed to the coodinates in pixels and are written to \a x and \a y. + + \see pixelsToCoords, QCPAxis::coordToPixel +*/ +void QCPAbstractPlottable::coordsToPixels(double key, double value, double &x, double &y) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + if (keyAxis->orientation() == Qt::Horizontal) + { + x = keyAxis->coordToPixel(key); + y = valueAxis->coordToPixel(value); + } else + { + y = keyAxis->coordToPixel(key); + x = valueAxis->coordToPixel(value); + } +} + +/*! \internal + \overload + + Returns the input as pixel coordinates in a QPointF. +*/ +const QPointF QCPAbstractPlottable::coordsToPixels(double key, double value) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPointF(); } + + if (keyAxis->orientation() == Qt::Horizontal) + return QPointF(keyAxis->coordToPixel(key), valueAxis->coordToPixel(value)); + else + return QPointF(valueAxis->coordToPixel(value), keyAxis->coordToPixel(key)); +} + +/*! \internal + + Convenience function for transforming a x/y pixel pair on the QCustomPlot surface to plot coordinates, + taking the orientations of the axes associated with this plottable into account (e.g. whether key + represents x or y). + + \a x and \a y are transformed to the plot coodinates and are written to \a key and \a value. + + \see coordsToPixels, QCPAxis::coordToPixel +*/ +void QCPAbstractPlottable::pixelsToCoords(double x, double y, double &key, double &value) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + if (keyAxis->orientation() == Qt::Horizontal) + { + key = keyAxis->pixelToCoord(x); + value = valueAxis->pixelToCoord(y); + } else + { + key = keyAxis->pixelToCoord(y); + value = valueAxis->pixelToCoord(x); + } +} + +/*! \internal + \overload + + Returns the pixel input \a pixelPos as plot coordinates \a key and \a value. +*/ +void QCPAbstractPlottable::pixelsToCoords(const QPointF &pixelPos, double &key, double &value) const +{ + pixelsToCoords(pixelPos.x(), pixelPos.y(), key, value); +} + +/*! \internal + + Returns the pen that should be used for drawing lines of the plottable. Returns mPen when the + graph is not selected and mSelectedPen when it is. +*/ +QPen QCPAbstractPlottable::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the plottable. Returns mBrush when the + graph is not selected and mSelectedBrush when it is. +*/ +QBrush QCPAbstractPlottable::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyFillAntialiasingHint, applyScattersAntialiasingHint, applyErrorBarsAntialiasingHint +*/ +void QCPAbstractPlottable::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aePlottables); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable fills. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyDefaultAntialiasingHint, applyScattersAntialiasingHint, applyErrorBarsAntialiasingHint +*/ +void QCPAbstractPlottable::applyFillAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiasedFill, QCP::aeFills); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable scatter points. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyFillAntialiasingHint, applyDefaultAntialiasingHint, applyErrorBarsAntialiasingHint +*/ +void QCPAbstractPlottable::applyScattersAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiasedScatters, QCP::aeScatters); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable error bars. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyFillAntialiasingHint, applyScattersAntialiasingHint, applyDefaultAntialiasingHint +*/ +void QCPAbstractPlottable::applyErrorBarsAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiasedErrorBars, QCP::aeErrorBars); +} + +/*! \internal + + Finds the shortest squared distance of \a point to the line segment defined by \a start and \a + end. + + This function may be used to help with the implementation of the \ref selectTest function for + specific plottables. + + \note This function is identical to QCPAbstractItem::distSqrToLine +*/ +double QCPAbstractPlottable::distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const +{ + QVector2D a(start); + QVector2D b(end); + QVector2D p(point); + QVector2D v(b-a); + + double vLengthSqr = v.lengthSquared(); + if (!qFuzzyIsNull(vLengthSqr)) + { + double mu = QVector2D::dotProduct(p-a, v)/vLengthSqr; + if (mu < 0) + return (a-p).lengthSquared(); + else if (mu > 1) + return (b-p).lengthSquared(); + else + return ((a + mu*v)-p).lengthSquared(); + } else + return (a-p).lengthSquared(); +} + +/* inherits documentation from base class */ +void QCPAbstractPlottable::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAbstractPlottable::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemAnchor +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemAnchor + \brief An anchor of an item to which positions can be attached to. + + An item (QCPAbstractItem) may have one or more anchors. Unlike QCPItemPosition, an anchor doesn't + control anything on its item, but provides a way to tie other items via their positions to the + anchor. + + For example, a QCPItemRect is defined by its positions \a topLeft and \a bottomRight. + Additionally it has various anchors like \a top, \a topRight or \a bottomLeft etc. So you can + attach the \a start (which is a QCPItemPosition) of a QCPItemLine to one of the anchors by + calling QCPItemPosition::setParentAnchor on \a start, passing the wanted anchor of the + QCPItemRect. This way the start of the line will now always follow the respective anchor location + on the rect item. + + Note that QCPItemPosition derives from QCPItemAnchor, so every position can also serve as an + anchor to other positions. + + To learn how to provide anchors in your own item subclasses, see the subclassing section of the + QCPAbstractItem documentation. +*/ + +/*! + Creates a new QCPItemAnchor. You shouldn't create QCPItemAnchor instances directly, even if + you want to make a new item subclass. Use \ref QCPAbstractItem::createAnchor instead, as + explained in the subclassing section of the QCPAbstractItem documentation. +*/ +QCPItemAnchor::QCPItemAnchor(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name, int anchorId) : + mName(name), + mParentPlot(parentPlot), + mParentItem(parentItem), + mAnchorId(anchorId) +{ +} + +QCPItemAnchor::~QCPItemAnchor() +{ + // unregister as parent at children: + QList currentChildren(mChildren.toList()); + for (int i=0; isetParentAnchor(0); // this acts back on this anchor and child removes itself from mChildren +} + +/*! + Returns the final absolute pixel position of the QCPItemAnchor on the QCustomPlot surface. + + The pixel information is internally retrieved via QCPAbstractItem::anchorPixelPosition of the + parent item, QCPItemAnchor is just an intermediary. +*/ +QPointF QCPItemAnchor::pixelPoint() const +{ + if (mParentItem) + { + if (mAnchorId > -1) + { + return mParentItem->anchorPixelPoint(mAnchorId); + } else + { + qDebug() << Q_FUNC_INFO << "no valid anchor id set:" << mAnchorId; + return QPointF(); + } + } else + { + qDebug() << Q_FUNC_INFO << "no parent item set"; + return QPointF(); + } +} + +/*! \internal + + Adds \a pos to the child list of this anchor. This is necessary to notify the children prior to + destruction of the anchor. + + Note that this function does not change the parent setting in \a pos. +*/ +void QCPItemAnchor::addChild(QCPItemPosition *pos) +{ + if (!mChildren.contains(pos)) + mChildren.insert(pos); + else + qDebug() << Q_FUNC_INFO << "provided pos is child already" << reinterpret_cast(pos); +} + +/*! \internal + + Removes \a pos from the child list of this anchor. + + Note that this function does not change the parent setting in \a pos. +*/ +void QCPItemAnchor::removeChild(QCPItemPosition *pos) +{ + if (!mChildren.remove(pos)) + qDebug() << Q_FUNC_INFO << "provided pos isn't child" << reinterpret_cast(pos); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemPosition +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemPosition + \brief Manages the position of an item. + + Every item has at least one public QCPItemPosition member pointer which provides ways to position the + item on the QCustomPlot surface. Some items have multiple positions, for example QCPItemRect has two: + \a topLeft and \a bottomRight. + + QCPItemPosition has a type (\ref PositionType) that can be set with \ref setType. This type defines + how coordinates passed to \ref setCoords are to be interpreted, e.g. as absolute pixel coordinates, as + plot coordinates of certain axes, etc. + + Further, QCPItemPosition may have a parent QCPItemAnchor, see \ref setParentAnchor. (Note that every + QCPItemPosition inherits from QCPItemAnchor and thus can itself be used as parent anchor for other + positions.) This way you can tie multiple items together. If the QCPItemPosition has a parent, the + coordinates set with \ref setCoords are considered to be absolute values in the reference frame of the + parent anchor, where (0, 0) means directly ontop of the parent anchor. For example, You could attach + the \a start position of a QCPItemLine to the \a bottom anchor of a QCPItemText to make the starting + point of the line always be centered under the text label, no matter where the text is moved to, or is + itself tied to. + + To set the apparent pixel position on the QCustomPlot surface directly, use \ref setPixelPoint. This + works no matter what type this QCPItemPosition is or what parent-child situation it is in, as \ref + setPixelPoint transforms the coordinates appropriately, to make the position appear at the specified + pixel values. +*/ + +/*! + Creates a new QCPItemPosition. You shouldn't create QCPItemPosition instances directly, even if + you want to make a new item subclass. Use \ref QCPAbstractItem::createPosition instead, as + explained in the subclassing section of the QCPAbstractItem documentation. +*/ +QCPItemPosition::QCPItemPosition(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name) : + QCPItemAnchor(parentPlot, parentItem, name), + mPositionType(ptAbsolute), + mKey(0), + mValue(0), + mParentAnchor(0) +{ +} + +QCPItemPosition::~QCPItemPosition() +{ + // unregister as parent at children: + // Note: this is done in ~QCPItemAnchor again, but it's important QCPItemPosition does it itself, because only then + // the setParentAnchor(0) call the correct QCPItemPosition::pixelPoint function instead of QCPItemAnchor::pixelPoint + QList currentChildren(mChildren.toList()); + for (int i=0; isetParentAnchor(0); // this acts back on this anchor and child removes itself from mChildren + // unregister as child in parent: + if (mParentAnchor) + mParentAnchor->removeChild(this); +} + +/*! + Sets the type of the position. The type defines how the coordinates passed to \ref setCoords + should be handled and how the QCPItemPosition should behave in the plot. + + The possible values for \a type can be separated in two main categories: + + \li The position is regarded as a point in plot coordinates. This corresponds to \ref ptPlotCoords + and requires two axes that define the plot coordinate system. They can be specified with \ref setAxes. + By default, the QCustomPlot's x- and yAxis are used. + + \li The position is fixed on the QCustomPlot surface, i.e. independent of axis ranges. This + corresponds to all other types, i.e. \ref ptAbsolute, \ref ptViewportRatio and \ref + ptAxisRectRatio. They differ only in the way the absolute position is described, see the + documentation of PositionType for details. For \ref ptAxisRectRatio, note that you can specify + the axis rect with \ref setAxisRect. By default this is set to the main axis rect. + + Note that the position type \ref ptPlotCoords is only available (and sensible) when the position + has no parent anchor (\ref setParentAnchor). + + If the type is changed, the apparent pixel position on the plot is preserved. This means + the coordinates as retrieved with coords() and set with \ref setCoords may change in the process. +*/ +void QCPItemPosition::setType(QCPItemPosition::PositionType type) +{ + if (mPositionType != type) + { + // if switching from or to coordinate type that isn't valid (e.g. because axes or axis rect + // were deleted), don't try to recover the pixelPoint() because it would output a qDebug warning. + bool recoverPixelPosition = true; + if ((mPositionType == ptPlotCoords || type == ptPlotCoords) && (!mKeyAxis || !mValueAxis)) + recoverPixelPosition = false; + if ((mPositionType == ptAxisRectRatio || type == ptAxisRectRatio) && (!mAxisRect)) + recoverPixelPosition = false; + + QPointF pixelP; + if (recoverPixelPosition) + pixelP = pixelPoint(); + + mPositionType = type; + + if (recoverPixelPosition) + setPixelPoint(pixelP); + } +} + +/*! + Sets the parent of this QCPItemPosition to \a parentAnchor. This means the position will now + follow any position changes of the anchor. The local coordinate system of positions with a parent + anchor always is absolute with (0, 0) being exactly on top of the parent anchor. (Hence the type + shouldn't be \ref ptPlotCoords for positions with parent anchors.) + + if \a keepPixelPosition is true, the current pixel position of the QCPItemPosition is preserved + during reparenting. If it's set to false, the coordinates are set to (0, 0), i.e. the position + will be exactly on top of the parent anchor. + + To remove this QCPItemPosition from any parent anchor, set \a parentAnchor to 0. + + If the QCPItemPosition previously had no parent and the type is \ref ptPlotCoords, the type is + set to \ref ptAbsolute, to keep the position in a valid state. +*/ +bool QCPItemPosition::setParentAnchor(QCPItemAnchor *parentAnchor, bool keepPixelPosition) +{ + // make sure self is not assigned as parent: + if (parentAnchor == this) + { + qDebug() << Q_FUNC_INFO << "can't set self as parent anchor" << reinterpret_cast(parentAnchor); + return false; + } + // make sure no recursive parent-child-relationships are created: + QCPItemAnchor *currentParent = parentAnchor; + while (currentParent) + { + if (QCPItemPosition *currentParentPos = currentParent->toQCPItemPosition()) + { + // is a QCPItemPosition, might have further parent, so keep iterating + if (currentParentPos == this) + { + qDebug() << Q_FUNC_INFO << "can't create recursive parent-child-relationship" << reinterpret_cast(parentAnchor); + return false; + } + currentParent = currentParentPos->mParentAnchor; + } else + { + // is a QCPItemAnchor, can't have further parent. Now make sure the parent items aren't the + // same, to prevent a position being child of an anchor which itself depends on the position, + // because they're both on the same item: + if (currentParent->mParentItem == mParentItem) + { + qDebug() << Q_FUNC_INFO << "can't set parent to be an anchor which itself depends on this position" << reinterpret_cast(parentAnchor); + return false; + } + break; + } + } + + // if previously no parent set and PosType is still ptPlotCoords, set to ptAbsolute: + if (!mParentAnchor && mPositionType == ptPlotCoords) + setType(ptAbsolute); + + // save pixel position: + QPointF pixelP; + if (keepPixelPosition) + pixelP = pixelPoint(); + // unregister at current parent anchor: + if (mParentAnchor) + mParentAnchor->removeChild(this); + // register at new parent anchor: + if (parentAnchor) + parentAnchor->addChild(this); + mParentAnchor = parentAnchor; + // restore pixel position under new parent: + if (keepPixelPosition) + setPixelPoint(pixelP); + else + setCoords(0, 0); + return true; +} + +/*! + Sets the coordinates of this QCPItemPosition. What the coordinates mean, is defined by the type + (\ref setType). + + For example, if the type is \ref ptAbsolute, \a key and \a value mean the x and y pixel position + on the QCustomPlot surface. In that case the origin (0, 0) is in the top left corner of the + QCustomPlot viewport. If the type is \ref ptPlotCoords, \a key and \a value mean a point in the + plot coordinate system defined by the axes set by \ref setAxes. By default those are the + QCustomPlot's xAxis and yAxis. See the documentation of \ref setType for other available + coordinate types and their meaning. + + \see setPixelPoint +*/ +void QCPItemPosition::setCoords(double key, double value) +{ + mKey = key; + mValue = value; +} + +/*! \overload + + Sets the coordinates as a QPointF \a pos where pos.x has the meaning of \a key and pos.y the + meaning of \a value of the \ref setCoords(double key, double value) method. +*/ +void QCPItemPosition::setCoords(const QPointF &pos) +{ + setCoords(pos.x(), pos.y()); +} + +/*! + Returns the final absolute pixel position of the QCPItemPosition on the QCustomPlot surface. It + includes all effects of type (\ref setType) and possible parent anchors (\ref setParentAnchor). + + \see setPixelPoint +*/ +QPointF QCPItemPosition::pixelPoint() const +{ + switch (mPositionType) + { + case ptAbsolute: + { + if (mParentAnchor) + return QPointF(mKey, mValue) + mParentAnchor->pixelPoint(); + else + return QPointF(mKey, mValue); + } + + case ptViewportRatio: + { + if (mParentAnchor) + { + return QPointF(mKey*mParentPlot->viewport().width(), + mValue*mParentPlot->viewport().height()) + mParentAnchor->pixelPoint(); + } else + { + return QPointF(mKey*mParentPlot->viewport().width(), + mValue*mParentPlot->viewport().height()) + mParentPlot->viewport().topLeft(); + } + } + + case ptAxisRectRatio: + { + if (mAxisRect) + { + if (mParentAnchor) + { + return QPointF(mKey*mAxisRect.data()->width(), + mValue*mAxisRect.data()->height()) + mParentAnchor->pixelPoint(); + } else + { + return QPointF(mKey*mAxisRect.data()->width(), + mValue*mAxisRect.data()->height()) + mAxisRect.data()->topLeft(); + } + } else + { + qDebug() << Q_FUNC_INFO << "No axis rect defined"; + return QPointF(mKey, mValue); + } + } + + case ptPlotCoords: + { + double x, y; + if (mKeyAxis && mValueAxis) + { + // both key and value axis are given, translate key/value to x/y coordinates: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + x = mKeyAxis.data()->coordToPixel(mKey); + y = mValueAxis.data()->coordToPixel(mValue); + } else + { + y = mKeyAxis.data()->coordToPixel(mKey); + x = mValueAxis.data()->coordToPixel(mValue); + } + } else if (mKeyAxis) + { + // only key axis is given, depending on orientation only transform x or y to key coordinate, other stays pixel: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + x = mKeyAxis.data()->coordToPixel(mKey); + y = mValue; + } else + { + y = mKeyAxis.data()->coordToPixel(mKey); + x = mValue; + } + } else if (mValueAxis) + { + // only value axis is given, depending on orientation only transform x or y to value coordinate, other stays pixel: + if (mValueAxis.data()->orientation() == Qt::Horizontal) + { + x = mValueAxis.data()->coordToPixel(mValue); + y = mKey; + } else + { + y = mValueAxis.data()->coordToPixel(mValue); + x = mKey; + } + } else + { + // no axis given, basically the same as if mPositionType were ptAbsolute + qDebug() << Q_FUNC_INFO << "No axes defined"; + x = mKey; + y = mValue; + } + return QPointF(x, y); + } + } + return QPointF(); +} + +/*! + When \ref setType is \ref ptPlotCoords, this function may be used to specify the axes the + coordinates set with \ref setCoords relate to. By default they are set to the initial xAxis and + yAxis of the QCustomPlot. +*/ +void QCPItemPosition::setAxes(QCPAxis *keyAxis, QCPAxis *valueAxis) +{ + mKeyAxis = keyAxis; + mValueAxis = valueAxis; +} + +/*! + When \ref setType is \ref ptAxisRectRatio, this function may be used to specify the axis rect the + coordinates set with \ref setCoords relate to. By default this is set to the main axis rect of + the QCustomPlot. +*/ +void QCPItemPosition::setAxisRect(QCPAxisRect *axisRect) +{ + mAxisRect = axisRect; +} + +/*! + Sets the apparent pixel position. This works no matter what type (\ref setType) this + QCPItemPosition is or what parent-child situation it is in, as coordinates are transformed + appropriately, to make the position finally appear at the specified pixel values. + + Only if the type is \ref ptAbsolute and no parent anchor is set, this function's effect is + identical to that of \ref setCoords. + + \see pixelPoint, setCoords +*/ +void QCPItemPosition::setPixelPoint(const QPointF &pixelPoint) +{ + switch (mPositionType) + { + case ptAbsolute: + { + if (mParentAnchor) + setCoords(pixelPoint-mParentAnchor->pixelPoint()); + else + setCoords(pixelPoint); + break; + } + + case ptViewportRatio: + { + if (mParentAnchor) + { + QPointF p(pixelPoint-mParentAnchor->pixelPoint()); + p.rx() /= (double)mParentPlot->viewport().width(); + p.ry() /= (double)mParentPlot->viewport().height(); + setCoords(p); + } else + { + QPointF p(pixelPoint-mParentPlot->viewport().topLeft()); + p.rx() /= (double)mParentPlot->viewport().width(); + p.ry() /= (double)mParentPlot->viewport().height(); + setCoords(p); + } + break; + } + + case ptAxisRectRatio: + { + if (mAxisRect) + { + if (mParentAnchor) + { + QPointF p(pixelPoint-mParentAnchor->pixelPoint()); + p.rx() /= (double)mAxisRect.data()->width(); + p.ry() /= (double)mAxisRect.data()->height(); + setCoords(p); + } else + { + QPointF p(pixelPoint-mAxisRect.data()->topLeft()); + p.rx() /= (double)mAxisRect.data()->width(); + p.ry() /= (double)mAxisRect.data()->height(); + setCoords(p); + } + } else + { + qDebug() << Q_FUNC_INFO << "No axis rect defined"; + setCoords(pixelPoint); + } + break; + } + + case ptPlotCoords: + { + double newKey, newValue; + if (mKeyAxis && mValueAxis) + { + // both key and value axis are given, translate point to key/value coordinates: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.x()); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.y()); + } else + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.y()); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.x()); + } + } else if (mKeyAxis) + { + // only key axis is given, depending on orientation only transform x or y to key coordinate, other stays pixel: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.x()); + newValue = pixelPoint.y(); + } else + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.y()); + newValue = pixelPoint.x(); + } + } else if (mValueAxis) + { + // only value axis is given, depending on orientation only transform x or y to value coordinate, other stays pixel: + if (mValueAxis.data()->orientation() == Qt::Horizontal) + { + newKey = pixelPoint.y(); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.x()); + } else + { + newKey = pixelPoint.x(); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.y()); + } + } else + { + // no axis given, basically the same as if mPositionType were ptAbsolute + qDebug() << Q_FUNC_INFO << "No axes defined"; + newKey = pixelPoint.x(); + newValue = pixelPoint.y(); + } + setCoords(newKey, newValue); + break; + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAbstractItem +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAbstractItem + \brief The abstract base class for all items in a plot. + + In QCustomPlot, items are supplemental graphical elements that are neither plottables + (QCPAbstractPlottable) nor axes (QCPAxis). While plottables are always tied to two axes and thus + plot coordinates, items can also be placed in absolute coordinates independent of any axes. Each + specific item has at least one QCPItemPosition member which controls the positioning. Some items + are defined by more than one coordinate and thus have two or more QCPItemPosition members (For + example, QCPItemRect has \a topLeft and \a bottomRight). + + This abstract base class defines a very basic interface like visibility and clipping. Since this + class is abstract, it can't be instantiated. Use one of the subclasses or create a subclass + yourself to create new items. + + The built-in items are: + + + + + + + + + + +
QCPItemLineA line defined by a start and an end point. May have different ending styles on each side (e.g. arrows).
QCPItemStraightLineA straight line defined by a start and a direction point. Unlike QCPItemLine, the straight line is infinitely long and has no endings.
QCPItemCurveA curve defined by start, end and two intermediate control points. May have different ending styles on each side (e.g. arrows).
QCPItemRectA rectangle
QCPItemEllipseAn ellipse
QCPItemPixmapAn arbitrary pixmap
QCPItemTextA text label
QCPItemBracketA bracket which may be used to reference/highlight certain parts in the plot.
QCPItemTracerAn item that can be attached to a QCPGraph and sticks to its data points, given a key coordinate.
+ + Items are by default clipped to the main axis rect. To make an item visible outside that axis + rect, disable clipping via \ref setClipToAxisRect. + + \section items-using Using items + + First you instantiate the item you want to use and add it to the plot: + \code + QCPItemLine *line = new QCPItemLine(customPlot); + customPlot->addItem(line); + \endcode + by default, the positions of the item are bound to the x- and y-Axis of the plot. So we can just + set the plot coordinates where the line should start/end: + \code + line->start->setCoords(-0.1, 0.8); + line->end->setCoords(1.1, 0.2); + \endcode + If we don't want the line to be positioned in plot coordinates but a different coordinate system, + e.g. absolute pixel positions on the QCustomPlot surface, we need to change the position type like this: + \code + line->start->setType(QCPItemPosition::ptAbsolute); + line->end->setType(QCPItemPosition::ptAbsolute); + \endcode + Then we can set the coordinates, this time in pixels: + \code + line->start->setCoords(100, 200); + line->end->setCoords(450, 320); + \endcode + + \section items-subclassing Creating own items + + To create an own item, you implement a subclass of QCPAbstractItem. These are the pure + virtual functions, you must implement: + \li \ref selectTest + \li \ref draw + + See the documentation of those functions for what they need to do. + + \subsection items-positioning Allowing the item to be positioned + + As mentioned, item positions are represented by QCPItemPosition members. Let's assume the new item shall + have only one point as its position (as opposed to two like a rect or multiple like a polygon). You then add + a public member of type QCPItemPosition like so: + + \code QCPItemPosition * const myPosition;\endcode + + the const makes sure the pointer itself can't be modified from the user of your new item (the QCPItemPosition + instance it points to, can be modified, of course). + The initialization of this pointer is made easy with the \ref createPosition function. Just assign + the return value of this function to each QCPItemPosition in the constructor of your item. \ref createPosition + takes a string which is the name of the position, typically this is identical to the variable name. + For example, the constructor of QCPItemExample could look like this: + + \code + QCPItemExample::QCPItemExample(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + myPosition(createPosition("myPosition")) + { + // other constructor code + } + \endcode + + \subsection items-drawing The draw function + + To give your item a visual representation, reimplement the \ref draw function and use the passed + QCPPainter to draw the item. You can retrieve the item position in pixel coordinates from the + position member(s) via \ref QCPItemPosition::pixelPoint. + + To optimize performance you should calculate a bounding rect first (don't forget to take the pen + width into account), check whether it intersects the \ref clipRect, and only draw the item at all + if this is the case. + + \subsection items-selection The selectTest function + + Your implementation of the \ref selectTest function may use the helpers \ref distSqrToLine and + \ref rectSelectTest. With these, the implementation of the selection test becomes significantly + simpler for most items. See the documentation of \ref selectTest for what the function parameters + mean and what the function should return. + + \subsection anchors Providing anchors + + Providing anchors (QCPItemAnchor) starts off like adding a position. First you create a public + member, e.g. + + \code QCPItemAnchor * const bottom;\endcode + + and create it in the constructor with the \ref createAnchor function, assigning it a name and an + anchor id (an integer enumerating all anchors on the item, you may create an own enum for this). + Since anchors can be placed anywhere, relative to the item's position(s), your item needs to + provide the position of every anchor with the reimplementation of the \ref anchorPixelPoint(int + anchorId) function. + + In essence the QCPItemAnchor is merely an intermediary that itself asks your item for the pixel + position when anything attached to the anchor needs to know the coordinates. +*/ + +/* start of documentation of inline functions */ + +/*! \fn QList QCPAbstractItem::positions() const + + Returns all positions of the item in a list. + + \see anchors, position +*/ + +/*! \fn QList QCPAbstractItem::anchors() const + + Returns all anchors of the item in a list. Note that since a position (QCPItemPosition) is always + also an anchor, the list will also contain the positions of this item. + + \see positions, anchor +*/ + +/* end of documentation of inline functions */ +/* start documentation of pure virtual functions */ + +/*! \fn void QCPAbstractItem::draw(QCPPainter *painter) = 0 + \internal + + Draws this item with the provided \a painter. + + The cliprect of the provided painter is set to the rect returned by \ref clipRect before this + function is called. The clipRect depends on the clipping settings defined by \ref + setClipToAxisRect and \ref setClipAxisRect. +*/ + +/* end documentation of pure virtual functions */ +/* start documentation of signals */ + +/*! \fn void QCPAbstractItem::selectionChanged(bool selected) + This signal is emitted when the selection state of this item has changed, either by user interaction + or by a direct call to \ref setSelected. +*/ + +/* end documentation of signals */ + +/*! + Base class constructor which initializes base class members. +*/ +QCPAbstractItem::QCPAbstractItem(QCustomPlot *parentPlot) : + QCPLayerable(parentPlot), + mClipToAxisRect(false), + mSelectable(true), + mSelected(false) +{ + QList rects = parentPlot->axisRects(); + if (rects.size() > 0) + { + setClipToAxisRect(true); + setClipAxisRect(rects.first()); + } +} + +QCPAbstractItem::~QCPAbstractItem() +{ + // don't delete mPositions because every position is also an anchor and thus in mAnchors + qDeleteAll(mAnchors); +} + +/*! + Sets whether the item shall be clipped to an axis rect or whether it shall be visible on the + entire QCustomPlot. The axis rect can be set with \ref setClipAxisRect. + + \see setClipAxisRect +*/ +void QCPAbstractItem::setClipToAxisRect(bool clip) +{ + mClipToAxisRect = clip; + if (mClipToAxisRect) + setParentLayerable(mClipAxisRect.data()); +} + +/*! + Sets the clip axis rect. It defines the rect that will be used to clip the item when \ref + setClipToAxisRect is set to true. + + \see setClipToAxisRect +*/ +void QCPAbstractItem::setClipAxisRect(QCPAxisRect *rect) +{ + mClipAxisRect = rect; + if (mClipToAxisRect) + setParentLayerable(mClipAxisRect.data()); +} + +/*! + Sets whether the user can (de-)select this item by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains QCustomPlot::iSelectItems.) + + However, even when \a selectable was set to false, it is possible to set the selection manually, + by calling \ref setSelected. + + \see QCustomPlot::setInteractions, setSelected +*/ +void QCPAbstractItem::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets whether this item is selected or not. When selected, it might use a different visual + appearance (e.g. pen and brush), this depends on the specific item though. + + The entire selection mechanism for items is handled automatically when \ref + QCustomPlot::setInteractions contains QCustomPlot::iSelectItems. You only need to call this + function when you wish to change the selection state manually. + + This function can change the selection state even when \ref setSelectable was set to false. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + \see setSelectable, selectTest +*/ +void QCPAbstractItem::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/*! + Returns the QCPItemPosition with the specified \a name. If this item doesn't have a position by + that name, returns 0. + + This function provides an alternative way to access item positions. Normally, you access + positions direcly by their member pointers (which typically have the same variable name as \a + name). + + \see positions, anchor +*/ +QCPItemPosition *QCPAbstractItem::position(const QString &name) const +{ + for (int i=0; iname() == name) + return mPositions.at(i); + } + qDebug() << Q_FUNC_INFO << "position with name not found:" << name; + return 0; +} + +/*! + Returns the QCPItemAnchor with the specified \a name. If this item doesn't have an anchor by + that name, returns 0. + + This function provides an alternative way to access item anchors. Normally, you access + anchors direcly by their member pointers (which typically have the same variable name as \a + name). + + \see anchors, position +*/ +QCPItemAnchor *QCPAbstractItem::anchor(const QString &name) const +{ + for (int i=0; iname() == name) + return mAnchors.at(i); + } + qDebug() << Q_FUNC_INFO << "anchor with name not found:" << name; + return 0; +} + +/*! + Returns whether this item has an anchor with the specified \a name. + + Note that you can check for positions with this function, too. This is because every position is + also an anchor (QCPItemPosition inherits from QCPItemAnchor). + + \see anchor, position +*/ +bool QCPAbstractItem::hasAnchor(const QString &name) const +{ + for (int i=0; iname() == name) + return true; + } + return false; +} + +/*! \internal + + Returns the rect the visual representation of this item is clipped to. This depends on the + current setting of \ref setClipToAxisRect as well as the axis rect set with \ref setClipAxisRect. + + If the item is not clipped to an axis rect, the \ref QCustomPlot::viewport rect is returned. + + \see draw +*/ +QRect QCPAbstractItem::clipRect() const +{ + if (mClipToAxisRect && mClipAxisRect) + return mClipAxisRect.data()->rect(); + else + return mParentPlot->viewport(); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing item lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPAbstractItem::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeItems); +} + +/*! \internal + + Finds the shortest squared distance of \a point to the line segment defined by \a start and \a + end. + + This function may be used to help with the implementation of the \ref selectTest function for + specific items. + + \note This function is identical to QCPAbstractPlottable::distSqrToLine + + \see rectSelectTest +*/ +double QCPAbstractItem::distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const +{ + QVector2D a(start); + QVector2D b(end); + QVector2D p(point); + QVector2D v(b-a); + + double vLengthSqr = v.lengthSquared(); + if (!qFuzzyIsNull(vLengthSqr)) + { + double mu = QVector2D::dotProduct(p-a, v)/vLengthSqr; + if (mu < 0) + return (a-p).lengthSquared(); + else if (mu > 1) + return (b-p).lengthSquared(); + else + return ((a + mu*v)-p).lengthSquared(); + } else + return (a-p).lengthSquared(); +} + +/*! \internal + + A convenience function which returns the selectTest value for a specified \a rect and a specified + click position \a pos. \a filledRect defines whether a click inside the rect should also be + considered a hit or whether only the rect border is sensitive to hits. + + This function may be used to help with the implementation of the \ref selectTest function for + specific items. + + For example, if your item consists of four rects, call this function four times, once for each + rect, in your \ref selectTest reimplementation. Finally, return the minimum of all four returned + values which were greater or equal to zero. (Because this function may return -1.0 when \a pos + doesn't hit \a rect at all). If all calls returned -1.0, return -1.0, too, because your item + wasn't hit. + + \see distSqrToLine +*/ +double QCPAbstractItem::rectSelectTest(const QRectF &rect, const QPointF &pos, bool filledRect) const +{ + double result = -1; + + // distance to border: + QList lines; + lines << QLineF(rect.topLeft(), rect.topRight()) << QLineF(rect.bottomLeft(), rect.bottomRight()) + << QLineF(rect.topLeft(), rect.bottomLeft()) << QLineF(rect.topRight(), rect.bottomRight()); + double minDistSqr = std::numeric_limits::max(); + for (int i=0; i mParentPlot->selectionTolerance()*0.99) + { + if (rect.contains(pos)) + result = mParentPlot->selectionTolerance()*0.99; + } + return result; +} + +/*! \internal + + Returns the pixel position of the anchor with Id \a anchorId. This function must be reimplemented in + item subclasses if they want to provide anchors (QCPItemAnchor). + + For example, if the item has two anchors with id 0 and 1, this function takes one of these anchor + ids and returns the respective pixel points of the specified anchor. + + \see createAnchor +*/ +QPointF QCPAbstractItem::anchorPixelPoint(int anchorId) const +{ + qDebug() << Q_FUNC_INFO << "called on item which shouldn't have any anchors (this method not reimplemented). anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Creates a QCPItemPosition, registers it with this item and returns a pointer to it. The specified + \a name must be a unique string that is usually identical to the variable name of the position + member (This is needed to provide the name-based \ref position access to positions). + + Don't delete positions created by this function manually, as the item will take care of it. + + Use this function in the constructor (initialization list) of the specific item subclass to + create each position member. Don't create QCPItemPositions with \b new yourself, because they + won't be registered with the item properly. + + \see createAnchor +*/ +QCPItemPosition *QCPAbstractItem::createPosition(const QString &name) +{ + if (hasAnchor(name)) + qDebug() << Q_FUNC_INFO << "anchor/position with name exists already:" << name; + QCPItemPosition *newPosition = new QCPItemPosition(mParentPlot, this, name); + mPositions.append(newPosition); + mAnchors.append(newPosition); // every position is also an anchor + newPosition->setAxes(mParentPlot->xAxis, mParentPlot->yAxis); + newPosition->setType(QCPItemPosition::ptPlotCoords); + if (mParentPlot->axisRect()) + newPosition->setAxisRect(mParentPlot->axisRect()); + newPosition->setCoords(0, 0); + return newPosition; +} + +/*! \internal + + Creates a QCPItemAnchor, registers it with this item and returns a pointer to it. The specified + \a name must be a unique string that is usually identical to the variable name of the anchor + member (This is needed to provide the name based \ref anchor access to anchors). + + The \a anchorId must be a number identifying the created anchor. It is recommended to create an + enum (e.g. "AnchorIndex") for this on each item that uses anchors. This id is used by the anchor + to identify itself when it calls QCPAbstractItem::anchorPixelPoint. That function then returns + the correct pixel coordinates for the passed anchor id. + + Don't delete anchors created by this function manually, as the item will take care of it. + + Use this function in the constructor (initialization list) of the specific item subclass to + create each anchor member. Don't create QCPItemAnchors with \b new yourself, because then they + won't be registered with the item properly. + + \see createPosition +*/ +QCPItemAnchor *QCPAbstractItem::createAnchor(const QString &name, int anchorId) +{ + if (hasAnchor(name)) + qDebug() << Q_FUNC_INFO << "anchor/position with name exists already:" << name; + QCPItemAnchor *newAnchor = new QCPItemAnchor(mParentPlot, this, name, anchorId); + mAnchors.append(newAnchor); + return newAnchor; +} + +/* inherits documentation from base class */ +void QCPAbstractItem::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAbstractItem::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAbstractItem::selectionCategory() const +{ + return QCP::iSelectItems; +} + + +/*! \file */ + + + +/*! \mainpage %QCustomPlot 1.0.1 Documentation + + \image html qcp-doc-logo.png + + Below is a brief overview of and guide to the classes and their relations. If you are new to + QCustomPlot and just want to start using it, it's recommended to look at the tutorials and + examples at + + http://www.qcustomplot.com/ + + This documentation is especially helpful as a reference, when you're familiar with the basic + concept of how to use %QCustomPlot and you wish to learn more about specific functionality. + See the \ref classoverview "class overview" for diagrams explaining the relationships between + the most important classes of the QCustomPlot library. + + The central widget which displays the plottables and axes on its surface is QCustomPlot. Every + QCustomPlot contains four axes by default. They can be accessed via the members xAxis, yAxis, + xAxis2 and yAxis2, and are of type QCPAxis. QCustomPlot supports an arbitrary number of axes and + axis rects, see the documentation of QCPAxisRect for details. + + \section mainpage-plottables Plottables + + \a Plottables are classes that display any kind of data inside the QCustomPlot. They all derive + from QCPAbstractPlottable. For example, the QCPGraph class is a plottable that displays a graph + inside the plot with different line styles, scatter styles, filling etc. + + Since plotting graphs is such a dominant use case, QCustomPlot has a special interface for working + with QCPGraph plottables, that makes it very easy to handle them:\n + You create a new graph with QCustomPlot::addGraph and access them with QCustomPlot::graph. + + For all other plottables, you need to use the normal plottable interface:\n + First, you create an instance of the plottable you want, e.g. + \code + QCPCurve *newCurve = new QCPCurve(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot: + \code + customPlot->addPlottable(newCurve);\endcode + and then modify the properties of the newly created plottable via the newCurve pointer. + + Plottables (including graphs) can be retrieved via QCustomPlot::plottable. Since the return type + of that function is the abstract base class of all plottables, QCPAbstractPlottable, you will + probably want to qobject_cast the returned pointer to the respective plottable subclass. (As + usual, if the cast returns zero, the plottable wasn't of that specific subclass.) + + All further interfacing with plottables (e.g how to set data) is specific to the plottable type. + See the documentations of the subclasses: QCPGraph, QCPCurve, QCPBars, QCPStatisticalBox. + + \section mainpage-axes Controlling the Axes + + As mentioned, QCustomPlot has four axes by default: \a xAxis (bottom), \a yAxis (left), \a xAxis2 + (top), \a yAxis2 (right). + + Their range is handled by the simple QCPRange class. You can set the range with the + QCPAxis::setRange function. By default, the axes represent a linear scale. To set a logarithmic + scale, set \ref QCPAxis::setScaleType to \ref QCPAxis::stLogarithmic. The logarithm base can be set freely + with \ref QCPAxis::setScaleLogBase. + + By default, an axis automatically creates and labels ticks in a sensible manner. See the + following functions for tick manipulation:\n QCPAxis::setTicks, QCPAxis::setAutoTicks, + QCPAxis::setAutoTickCount, QCPAxis::setAutoTickStep, QCPAxis::setTickLabels, + QCPAxis::setTickLabelType, QCPAxis::setTickLabelRotation, QCPAxis::setTickStep, + QCPAxis::setTickLength,... + + Each axis can be given an axis label (e.g. "Voltage (mV)") with QCPAxis::setLabel. + + The distance of an axis backbone to the respective viewport border is called its margin. + Normally, the margins are calculated automatically. To change this, set + \ref QCPAxisRect::setAutoMargins to exclude the respective margin sides, set the margins manually with + \ref QCPAxisRect::setMargins. The main axis rect can be reached with \ref QCustomPlot::axisRect(). + + \section mainpage-legend Plot Legend + + Every QCustomPlot owns one QCPLegend (as \a legend) by default. A legend is a small layout + element inside the plot which lists the plottables with an icon of the plottable line/symbol and + a description. The Description is retrieved from the plottable name + (QCPAbstractPlottable::setName). Plottables can be added and removed from the legend via \ref + QCPAbstractPlottable::addToLegend and \ref QCPAbstractPlottable::removeFromLegend. By default, + adding a plottable to QCustomPlot automatically adds it to the legend, too. This behaviour can be + modified with the QCustomPlot::setAutoAddPlottableToLegend property. + + The QCPLegend provides an interface to access, add and remove legend items directly, too. See + QCPLegend::item, QCPLegend::itemWithPlottable, QCPLegend::addItem, QCPLegend::removeItem for + example. + + Multiple legends are supported via the layout system (as a QCPLegend simply is a normal layout + element). + + \section mainpage-userinteraction User Interactions + + QCustomPlot supports dragging axis ranges with the mouse (\ref + QCPAxisRect::setRangeDrag), zooming axis ranges with the mouse wheel (\ref + QCPAxisRect::setRangeZoom) and a complete selection mechanism. + + The availability of these interactions is controlled with \ref QCustomPlot::setInteractions. For + details about the interaction system, see the documentation there. + + Further, QCustomPlot always emits corresponding signals, when objects are clicked or + doubleClicked. See \ref QCustomPlot::plottableClick, \ref QCustomPlot::plottableDoubleClick + and \ref QCustomPlot::axisClick for example. + + \section mainpage-items Items + + Apart from plottables there is another category of plot objects that are important: Items. The + base class of all items is QCPAbstractItem. An item sets itself apart from plottables in that + it's not necessarily bound to any axes. This means it may also be positioned in absolute pixel + coordinates or placed at a relative position on an axis rect. Further, it usually doesn't + represent data directly, but acts as decoration, emphasis, description etc. + + Multiple items can be arranged in a parent-child-hierarchy allowing for dynamical behaviour. For + example, you could place the head of an arrow at a fixed plot coordinate, so it always points to + some important area in the plot. The tail of the arrow can be anchored to a text item which + always resides in the top center of the axis rect, independent of where the user drags the axis + ranges. This way the arrow stretches and turns so it always points from the label to the + specified plot coordinate, without any further code necessary. + + For a more detailed introduction, see the QCPAbstractItem documentation, and from there the + documentations of the individual built-in items, to find out how to use them. + + \section mainpage-layoutelements Layout elements and layouts + + QCustomPlot uses an internal layout system to provide dynamic sizing and positioning of objects like + the axis rect(s), legends and the plot title. They are all based on \ref QCPLayoutElement and are arranged by + placing them inside a \ref QCPLayout. + + Details on this topic are given on the dedicated page about \ref thelayoutsystem "the layout system". + + \section mainpage-performancetweaks Performance Tweaks + + Although QCustomPlot is quite fast, some features like translucent fills, antialiasing and thick + lines can cause a significant slow down. If you notice this in your application, here are some + thoughts on how to increase performance. By far the most time is spent in the drawing functions, + specifically the drawing of graphs. For maximum performance, consider the following (most + recommended/effective measures first): + + \li use Qt 4.8.0 and up. Performance has doubled or tripled with respect to Qt 4.7.4. However + QPainter was broken and drawing pixel precise things, e.g. scatters, isn't possible with Qt >= + 4.8.0. So it's a performance vs. plot quality tradeoff when switching to Qt 4.8. + \li To increase responsiveness during dragging, consider setting \ref QCustomPlot::setNoAntialiasingOnDrag to true. + \li On X11 (GNU/Linux), avoid the slow native drawing system, use raster by supplying + "-graphicssystem raster" as command line argument or calling QApplication::setGraphicsSystem("raster") + before creating the QApplication object. (Only available for Qt versions before 5.0) + \li On all operating systems, use OpenGL hardware acceleration by supplying "-graphicssystem + opengl" as command line argument or calling QApplication::setGraphicsSystem("opengl") (Only + available for Qt versions before 5.0). If OpenGL is available, this will slightly decrease the + quality of antialiasing, but extremely increase performance especially with alpha + (semi-transparent) fills, much antialiasing and a large QCustomPlot drawing surface. Note + however, that the maximum frame rate might be constrained by the vertical sync frequency of your + monitor (VSync can be disabled in the graphics card driver configuration). So for simple plots + (where the potential framerate is far above 60 frames per second), OpenGL acceleration might + achieve numerically lower frame rates than the other graphics systems, because they are not + capped at the VSync frequency. + \li Avoid any kind of alpha (transparency), especially in fills + \li Avoid lines with a pen width greater than one + \li Avoid any kind of antialiasing, especially in graph lines (see \ref QCustomPlot::setNotAntialiasedElements) + \li Avoid repeatedly setting the complete data set with \ref QCPGraph::setData. Use \ref QCPGraph::addData instead, if most + data points stay unchanged, e.g. in a running measurement. + \li Set the \a copy parameter of the setData functions to false, so only pointers get + transferred. (Relevant only if preparing data maps with a large number of points, i.e. over 10000) + + \section mainpage-flags Preprocessor Define Flags + + QCustomPlot understands some preprocessor defines that are useful for debugging and compilation: +
+
\c QCUSTOMPLOT_COMPILE_LIBRARY +
Define this flag when you compile QCustomPlot as a shared library (.so/.dll) +
\c QCUSTOMPLOT_USE_LIBRARY +
Define this flag before including the header, when using QCustomPlot as a shared library +
\c QCUSTOMPLOT_CHECK_DATA +
If this flag is defined, the QCustomPlot plottables will perform data validity checks on every redraw. + This means they will give qDebug output when you plot \e inf or \e nan values, they will not + fix your data. +
+ +*/ + +/*! \page classoverview Class Overview + + The following diagrams may help to gain a deeper understanding of the relationships between classes that make up + the QCustomPlot library. The diagrams are not exhaustive, so only the classes deemed most relevant are shown. + + \section classoverview-relations Class Relationship Diagram + \image html RelationOverview.png "Overview of most important classes and their relations" + \section classoverview-inheritance Class Inheritance Tree + \image html InheritanceOverview.png "Inheritance tree of most important classes" + +*/ + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCustomPlot +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCustomPlot + + \brief The central class of the library. This is the QWidget which displays the plot and + interacts with the user. + + For tutorials on how to use QCustomPlot, see the website\n + http://www.qcustomplot.com/ +*/ + +/* start of documentation of inline functions */ + +/*! \fn QRect QCustomPlot::viewport() const + + Returns the viewport rect of this QCustomPlot instance. The viewport is the area the plot is + drawn in, all mechanisms, e.g. margin caluclation take the viewport to be the outer border of the + plot. The viewport normally is the rect() of the QCustomPlot widget, i.e. a rect with top left + (0, 0) and size of the QCustomPlot widget. + + Don't confuse the viewport with the axis rect (QCustomPlot::axisRect). An axis rect is typically + an area enclosed by four axes, where the graphs/plottables are drawn in. The viewport is larger + and contains also the axes themselves, their tick numbers, their labels, the plot title etc. + + Only when saving to a file (see \ref savePng, savePdf etc.) the viewport is temporarily modified + to allow saving plots with sizes independent of the current widget size. +*/ + +/*! \fn QCPLayoutGrid *QCustomPlot::plotLayout() const + + Returns the top level layout of this QCustomPlot instance. It is a \ref QCPLayoutGrid, initially containing just + one cell with the main QCPAxisRect inside. +*/ + +/* end of documentation of inline functions */ +/* start of documentation of signals */ + +/*! \fn void QCustomPlot::mouseDoubleClick(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse double click event. +*/ + +/*! \fn void QCustomPlot::mousePress(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse press event. + + It is emitted before QCustomPlot handles any other mechanism like range dragging. So a slot + connected to this signal can still influence the behaviour e.g. with \ref QCPAxisRect::setRangeDrag or \ref + QCPAxisRect::setRangeDragAxes. +*/ + +/*! \fn void QCustomPlot::mouseMove(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse move event. + + It is emitted before QCustomPlot handles any other mechanism like range dragging. So a slot + connected to this signal can still influence the behaviour e.g. with \ref QCPAxisRect::setRangeDrag or \ref + QCPAxisRect::setRangeDragAxes. + + \warning It is discouraged to change the drag-axes with \ref QCPAxisRect::setRangeDragAxes here, + because the dragging starting point was saved the moment the mouse was pressed. Thus it only has + a meaning for the range drag axes that were set at that moment. If you want to change the drag + axes, consider doing this in the \ref mousePress signal instead. +*/ + +/*! \fn void QCustomPlot::mouseRelease(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse release event. + + It is emitted before QCustomPlot handles any other mechanisms like object selection. So a + slot connected to this signal can still influence the behaviour e.g. with \ref setInteractions or + \ref QCPAbstractPlottable::setSelectable. +*/ + +/*! \fn void QCustomPlot::mouseWheel(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse wheel event. + + It is emitted before QCustomPlot handles any other mechanisms like range zooming. So a slot + connected to this signal can still influence the behaviour e.g. with \ref QCPAxisRect::setRangeZoom, \ref + QCPAxisRect::setRangeZoomAxes or \ref QCPAxisRect::setRangeZoomFactor. +*/ + +/*! \fn void QCustomPlot::plottableClick(QCPAbstractPlottable *plottable, QMouseEvent *event) + + This signal is emitted when a plottable is clicked. + + \a event is the mouse event that caused the click and \a plottable is the plottable that received + the click. + + \see plottableDoubleClick +*/ + +/*! \fn void QCustomPlot::plottableDoubleClick(QCPAbstractPlottable *plottable, QMouseEvent *event) + + This signal is emitted when a plottable is double clicked. + + \a event is the mouse event that caused the click and \a plottable is the plottable that received + the click. + + \see plottableClick +*/ + +/*! \fn void QCustomPlot::itemClick(QCPAbstractItem *item, QMouseEvent *event) + + This signal is emitted when an item is clicked. + + \a event is the mouse event that caused the click and \a item is the item that received the + click. + + \see itemDoubleClick +*/ + +/*! \fn void QCustomPlot::itemDoubleClick(QCPAbstractItem *item, QMouseEvent *event) + + This signal is emitted when an item is double clicked. + + \a event is the mouse event that caused the click and \a item is the item that received the + click. + + \see itemClick +*/ + +/*! \fn void QCustomPlot::axisClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event) + + This signal is emitted when an axis is clicked. + + \a event is the mouse event that caused the click, \a axis is the axis that received the click and + \a part indicates the part of the axis that was clicked. + + \see axisDoubleClick +*/ + +/*! \fn void QCustomPlot::axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event) + + This signal is emitted when an axis is double clicked. + + \a event is the mouse event that caused the click, \a axis is the axis that received the click and + \a part indicates the part of the axis that was clicked. + + \see axisClick +*/ + +/*! \fn void QCustomPlot::legendClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event) + + This signal is emitted when a legend (item) is clicked. + + \a event is the mouse event that caused the click, \a legend is the legend that received the + click and \a item is the legend item that received the click. If only the legend and no item is + clicked, \a item is 0. This happens for a click inside the legend padding or the space between + two items. + + \see legendDoubleClick +*/ + +/*! \fn void QCustomPlot::legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event) + + This signal is emitted when a legend (item) is double clicked. + + \a event is the mouse event that caused the click, \a legend is the legend that received the + click and \a item is the legend item that received the click. If only the legend and no item is + clicked, \a item is 0. This happens for a click inside the legend padding or the space between + two items. + + \see legendClick +*/ + +/*! \fn void QCustomPlot:: titleClick(QMouseEvent *event, QCPPlotTitle *title) + + This signal is emitted when a plot title is clicked. + + \a event is the mouse event that caused the click and \a title is the plot title that received + the click. + + \see titleDoubleClick +*/ + +/*! \fn void QCustomPlot::titleDoubleClick(QMouseEvent *event, QCPPlotTitle *title) + + This signal is emitted when a plot title is double clicked. + + \a event is the mouse event that caused the click and \a title is the plot title that received + the click. + + \see titleClick +*/ + +/*! \fn void QCustomPlot::selectionChangedByUser() + + This signal is emitted after the user has changed the selection in the QCustomPlot, e.g. by + clicking. It is not emitted when the selection state of an object has changed programmatically by + a direct call to setSelected() on an object or by calling \ref deselectAll. + + In addition to this signal, selectable objects also provide individual signals, for example + QCPAxis::selectionChanged or QCPAbstractPlottable::selectionChanged. Note that those signals are + emitted even if the selection state is changed programmatically. + + See the documentation of \ref setInteractions for details about the selection mechanism. + + \see selectedPlottables, selectedGraphs, selectedItems, selectedAxes, selectedLegends +*/ + +/*! \fn void QCustomPlot::beforeReplot() + + This signal is emitted immediately before a replot takes place (caused by a call to the slot \ref + replot). + + It is safe to mutually connect the replot slot with this signal on two QCustomPlots to make them + replot synchronously, it won't cause an infinite recursion. + + \see replot, afterReplot +*/ + +/*! \fn void QCustomPlot::afterReplot() + + This signal is emitted immediately after a replot has taken place (caused by a call to the slot \ref + replot). + + It is safe to mutually connect the replot slot with this signal on two QCustomPlots to make them + replot synchronously, it won't cause an infinite recursion. + + \see replot, beforeReplot +*/ + +/* end of documentation of signals */ + +/*! + Constructs a QCustomPlot and sets reasonable default values. +*/ +QCustomPlot::QCustomPlot(QWidget *parent) : + QWidget(parent), + xAxis(0), + yAxis(0), + xAxis2(0), + yAxis2(0), + legend(0), + mPlotLayout(0), + mAutoAddPlottableToLegend(true), + mAntialiasedElements(QCP::aeNone), + mNotAntialiasedElements(QCP::aeNone), + mInteractions(0), + mSelectionTolerance(8), + mNoAntialiasingOnDrag(false), + mBackgroundBrush(Qt::white, Qt::SolidPattern), + mBackgroundScaled(true), + mBackgroundScaledMode(Qt::KeepAspectRatioByExpanding), + mCurrentLayer(0), + mPlottingHints(QCP::phCacheLabels), + mMultiSelectModifier(Qt::ControlModifier), + mPaintBuffer(size()), + mMouseEventElement(0), + mReplotting(false) +{ + setAttribute(Qt::WA_NoMousePropagation); + setAttribute(Qt::WA_OpaquePaintEvent); + setMouseTracking(true); + QLocale currentLocale = locale(); + currentLocale.setNumberOptions(QLocale::OmitGroupSeparator); + setLocale(currentLocale); + + // create initial layers: + mLayers.append(new QCPLayer(this, "background")); + mLayers.append(new QCPLayer(this, "grid")); + mLayers.append(new QCPLayer(this, "main")); + mLayers.append(new QCPLayer(this, "axes")); + mLayers.append(new QCPLayer(this, "legend")); + updateLayerIndices(); + setCurrentLayer("main"); + + // create initial layout, axis rect and legend: + mPlotLayout = new QCPLayoutGrid; + mPlotLayout->initializeParentPlot(this); + mPlotLayout->setParent(this); // important because if parent is QWidget, QCPLayout::sizeConstraintsChanged will call QWidget::updateGeometry + QCPAxisRect *defaultAxisRect = new QCPAxisRect(this, true); + mPlotLayout->addElement(0, 0, defaultAxisRect); + xAxis = defaultAxisRect->axis(QCPAxis::atBottom); + yAxis = defaultAxisRect->axis(QCPAxis::atLeft); + xAxis2 = defaultAxisRect->axis(QCPAxis::atTop); + yAxis2 = defaultAxisRect->axis(QCPAxis::atRight); + legend = new QCPLegend; + legend->setVisible(false); + defaultAxisRect->insetLayout()->addElement(legend, Qt::AlignRight|Qt::AlignTop); + defaultAxisRect->insetLayout()->setMargins(QMargins(12, 12, 12, 12)); + + defaultAxisRect->setLayer("background"); + xAxis->setLayer("axes"); + yAxis->setLayer("axes"); + xAxis2->setLayer("axes"); + yAxis2->setLayer("axes"); + xAxis->grid()->setLayer("grid"); + yAxis->grid()->setLayer("grid"); + xAxis2->grid()->setLayer("grid"); + yAxis2->grid()->setLayer("grid"); + legend->setLayer("legend"); + + setViewport(rect()); // needs to be called after mPlotLayout has been created + +#ifdef Q_OS_WIN + setPlottingHint(QCP::phForceRepaint); +#endif + + replot(); +} + +QCustomPlot::~QCustomPlot() +{ + clearPlottables(); + clearItems(); + + if (mPlotLayout) + { + delete mPlotLayout; + mPlotLayout = 0; + } + + mCurrentLayer = 0; + qDeleteAll(mLayers); // don't use removeLayer, because it would prevent the last layer to be removed + mLayers.clear(); +} + +/*! + Sets which elements are forcibly drawn antialiased as an \a or combination of QCP::AntialiasedElement. + + This overrides the antialiasing settings for whole element groups, normally controlled with the + \a setAntialiasing function on the individual elements. If an element is neither specified in + \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on + each individual element instance is used. + + For example, if \a antialiasedElements contains \ref QCP::aePlottables, all plottables will be + drawn antialiased, no matter what the specific QCPAbstractPlottable::setAntialiased value was set + to. + + if an element in \a antialiasedElements is already set in \ref setNotAntialiasedElements, it is + removed from there. + + \see setNotAntialiasedElements +*/ +void QCustomPlot::setAntialiasedElements(const QCP::AntialiasedElements &antialiasedElements) +{ + mAntialiasedElements = antialiasedElements; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mNotAntialiasedElements |= ~mAntialiasedElements; +} + +/*! + Sets whether the specified \a antialiasedElement is forcibly drawn antialiased. + + See \ref setAntialiasedElements for details. + + \see setNotAntialiasedElement +*/ +void QCustomPlot::setAntialiasedElement(QCP::AntialiasedElement antialiasedElement, bool enabled) +{ + if (!enabled && mAntialiasedElements.testFlag(antialiasedElement)) + mAntialiasedElements &= ~antialiasedElement; + else if (enabled && !mAntialiasedElements.testFlag(antialiasedElement)) + mAntialiasedElements |= antialiasedElement; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mNotAntialiasedElements |= ~mAntialiasedElements; +} + +/*! + Sets which elements are forcibly drawn not antialiased as an \a or combination of + QCP::AntialiasedElement. + + This overrides the antialiasing settings for whole element groups, normally controlled with the + \a setAntialiasing function on the individual elements. If an element is neither specified in + \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on + each individual element instance is used. + + For example, if \a notAntialiasedElements contains \ref QCP::aePlottables, no plottables will be + drawn antialiased, no matter what the specific QCPAbstractPlottable::setAntialiased value was set + to. + + if an element in \a notAntialiasedElements is already set in \ref setAntialiasedElements, it is + removed from there. + + \see setAntialiasedElements +*/ +void QCustomPlot::setNotAntialiasedElements(const QCP::AntialiasedElements ¬AntialiasedElements) +{ + mNotAntialiasedElements = notAntialiasedElements; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mAntialiasedElements |= ~mNotAntialiasedElements; +} + +/*! + Sets whether the specified \a notAntialiasedElement is forcibly drawn not antialiased. + + See \ref setNotAntialiasedElements for details. + + \see setAntialiasedElement +*/ +void QCustomPlot::setNotAntialiasedElement(QCP::AntialiasedElement notAntialiasedElement, bool enabled) +{ + if (!enabled && mNotAntialiasedElements.testFlag(notAntialiasedElement)) + mNotAntialiasedElements &= ~notAntialiasedElement; + else if (enabled && !mNotAntialiasedElements.testFlag(notAntialiasedElement)) + mNotAntialiasedElements |= notAntialiasedElement; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mAntialiasedElements |= ~mNotAntialiasedElements; +} + +/*! + If set to true, adding a plottable (e.g. a graph) to the QCustomPlot automatically also adds the + plottable to the legend (QCustomPlot::legend). + + \see addPlottable, addGraph, QCPLegend::addItem +*/ +void QCustomPlot::setAutoAddPlottableToLegend(bool on) +{ + mAutoAddPlottableToLegend = on; +} + +/*! + Sets the possible interactions of this QCustomPlot as an or-combination of \ref QCP::Interaction + enums. There are the following types of interactions: + + Axis range manipulation is controlled via \ref QCP::iRangeDrag and \ref QCP::iRangeZoom. When the + respective interaction is enabled, the user may drag axes ranges and zoom with the mouse wheel. + For details how to control which axes the user may drag/zoom and in what orientations, see \ref + QCPAxisRect::setRangeDrag, \ref QCPAxisRect::setRangeZoom, \ref QCPAxisRect::setRangeDragAxes, + \ref QCPAxisRect::setRangeZoomAxes. + + Plottable selection is controlled by \ref QCP::iSelectPlottables. If \ref QCP::iSelectPlottables is + set, the user may select plottables (graphs, curves, bars,...) by clicking on them or in their + vicinity (\ref setSelectionTolerance). Whether the user can actually select a plottable can + further be restricted with the \ref QCPAbstractPlottable::setSelectable function on the specific + plottable. To find out whether a specific plottable is selected, call + QCPAbstractPlottable::selected(). To retrieve a list of all currently selected plottables, call + \ref selectedPlottables. If you're only interested in QCPGraphs, you may use the convenience + function \ref selectedGraphs. + + Item selection is controlled by \ref QCP::iSelectItems. If \ref QCP::iSelectItems is set, the user + may select items (QCPItemLine, QCPItemText,...) by clicking on them or in their vicinity. To find + out whether a specific item is selected, call QCPAbstractItem::selected(). To retrieve a list of + all currently selected items, call \ref selectedItems. + + Axis selection is controlled with \ref QCP::iSelectAxes. If \ref QCP::iSelectAxes is set, the user + may select parts of the axes by clicking on them. What parts exactly (e.g. Axis base line, tick + labels, axis label) are selectable can be controlled via \ref QCPAxis::setSelectableParts for + each axis. To retrieve a list of all axes that currently contain selected parts, call \ref + selectedAxes. Which parts of an axis are selected, can be retrieved with QCPAxis::selectedParts(). + + Legend selection is controlled with \ref QCP::iSelectLegend. If this is set, the user may + select the legend itself or individual items by clicking on them. What parts exactly are + selectable can be controlled via \ref QCPLegend::setSelectableParts. To find out whether the + legend or any of its child items are selected, check the value of QCPLegend::selectedParts. To + find out which child items are selected, call \ref QCPLegend::selectedItems. + + All other selectable elements The selection of all other selectable objects (e.g. + QCPPlotTitle, or your own layerable subclasses) is controlled with \ref QCP::iSelectOther. If set, the + user may select those objects by clicking on them. To find out which are currently selected, you + need to check their selected state explicitly. + + If the selection state has changed by user interaction, the \ref selectionChangedByUser signal is + emitted. Each selectable object additionally emits an individual selectionChanged signal whenever + their selection state has changed, i.e. not only by user interaction. + + To allow multiple objects to be selected by holding the selection modifier (\ref + setMultiSelectModifier), set the flag \ref QCP::iMultiSelect. + + \note In addition to the selection mechanism presented here, QCustomPlot always emits + corresponding signals, when an object is clicked or double clicked. see \ref plottableClick and + \ref plottableDoubleClick for example. + + \see setInteraction, setSelectionTolerance +*/ +void QCustomPlot::setInteractions(const QCP::Interactions &interactions) +{ + mInteractions = interactions; +} + +/*! + Sets the single \a interaction of this QCustomPlot to \a enabled. + + For details about the interaction system, see \ref setInteractions. + + \see setInteractions +*/ +void QCustomPlot::setInteraction(const QCP::Interaction &interaction, bool enabled) +{ + if (!enabled && mInteractions.testFlag(interaction)) + mInteractions &= ~interaction; + else if (enabled && !mInteractions.testFlag(interaction)) + mInteractions |= interaction; +} + +/*! + Sets the tolerance that is used to decide whether a click selects an object (e.g. a plottable) or + not. + + If the user clicks in the vicinity of the line of e.g. a QCPGraph, it's only regarded as a + potential selection when the minimum distance between the click position and the graph line is + smaller than \a pixels. Objects that are defined by an area (e.g. QCPBars) only react to clicks + directly inside the area and ignore this selection tolerance. In other words, it only has meaning + for parts of objects that are too thin to exactly hit with a click and thus need such a + tolerance. + + \see setInteractions, QCPLayerable::selectTest +*/ +void QCustomPlot::setSelectionTolerance(int pixels) +{ + mSelectionTolerance = pixels; +} + +/*! + Sets whether antialiasing is disabled for this QCustomPlot while the user is dragging axes + ranges. If many objects, especially plottables, are drawn antialiased, this greatly improves + performance during dragging. Thus it creates a more responsive user experience. As soon as the + user stops dragging, the last replot is done with normal antialiasing, to restore high image + quality. + + \see setAntialiasedElements, setNotAntialiasedElements +*/ +void QCustomPlot::setNoAntialiasingOnDrag(bool enabled) +{ + mNoAntialiasingOnDrag = enabled; +} + +/*! + Sets the plotting hints for this QCustomPlot instance as an \a or combination of QCP::PlottingHint. + + \see setPlottingHint +*/ +void QCustomPlot::setPlottingHints(const QCP::PlottingHints &hints) +{ + mPlottingHints = hints; +} + +/*! + Sets the specified plotting \a hint to \a enabled. + + \see setPlottingHints +*/ +void QCustomPlot::setPlottingHint(QCP::PlottingHint hint, bool enabled) +{ + QCP::PlottingHints newHints = mPlottingHints; + if (!enabled) + newHints &= ~hint; + else + newHints |= hint; + + if (newHints != mPlottingHints) + setPlottingHints(newHints); +} + +/*! + Sets the keyboard modifier that will be recognized as multi-select-modifier. + + If \ref QCP::iMultiSelect is specified in \ref setInteractions, the user may select multiple objects + by clicking on them one after the other while holding down \a modifier. + + By default the multi-select-modifier is set to Qt::ControlModifier. + + \see setInteractions +*/ +void QCustomPlot::setMultiSelectModifier(Qt::KeyboardModifier modifier) +{ + mMultiSelectModifier = modifier; +} + +/*! + Sets the viewport of this QCustomPlot. The Viewport is the area that the top level layout + (QCustomPlot::plotLayout()) uses as its rect. Normally, the viewport is the entire widget rect. + + This function is used to allow arbitrary size exports with \ref toPixmap, \ref savePng, \ref + savePdf, etc. by temporarily changing the viewport size. +*/ +void QCustomPlot::setViewport(const QRect &rect) +{ + mViewport = rect; + if (mPlotLayout) + mPlotLayout->setOuterRect(mViewport); +} + +/*! + Sets \a pm as the viewport background pixmap (see \ref setViewport). The pixmap is always drawn + below all other objects in the plot. + + For cases where the provided pixmap doesn't have the same size as the viewport, scaling can be + enabled with \ref setBackgroundScaled and the scaling mode (whether and how the aspect ratio is + preserved) can be set with \ref setBackgroundScaledMode. To set all these options in one call, + consider using the overloaded version of this function. + + If a background brush was set with \ref setBackground(const QBrush &brush), the viewport will + first be filled with that brush, before drawing the background pixmap. This can be useful for + background pixmaps with translucent areas. + + \see setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::setBackground(const QPixmap &pm) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); +} + +/*! + Sets the background brush of the viewport (see \ref setViewport). + + Before drawing everything else, the background is filled with \a brush. If a background pixmap + was set with \ref setBackground(const QPixmap &pm), this brush will be used to fill the viewport + before the background pixmap is drawn. This can be useful for background pixmaps with translucent + areas. + + Set \a brush to Qt::NoBrush or Qt::Transparent to leave background transparent. This can be + useful for exporting to image formats which support transparency, e.g. \ref savePng. + + \see setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::setBackground(const QBrush &brush) +{ + mBackgroundBrush = brush; +} + +/*! \overload + + Allows setting the background pixmap of the viewport, whether it shall be scaled and how it + shall be scaled in one call. + + \see setBackground(const QPixmap &pm), setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); + mBackgroundScaled = scaled; + mBackgroundScaledMode = mode; +} + +/*! + Sets whether the viewport background pixmap shall be scaled to fit the viewport. If \a scaled is + set to true, control whether and how the aspect ratio of the original pixmap is preserved with + \ref setBackgroundScaledMode. + + Note that the scaled version of the original pixmap is buffered, so there is no performance + penalty on replots. (Except when the viewport dimensions are changed continuously.) + + \see setBackground, setBackgroundScaledMode +*/ +void QCustomPlot::setBackgroundScaled(bool scaled) +{ + mBackgroundScaled = scaled; +} + +/*! + If scaling of the viewport background pixmap is enabled (\ref setBackgroundScaled), use this + function to define whether and how the aspect ratio of the original pixmap is preserved. + + \see setBackground, setBackgroundScaled +*/ +void QCustomPlot::setBackgroundScaledMode(Qt::AspectRatioMode mode) +{ + mBackgroundScaledMode = mode; +} + +/*! + Returns the plottable with \a index. If the index is invalid, returns 0. + + There is an overloaded version of this function with no parameter which returns the last added + plottable, see QCustomPlot::plottable() + + \see plottableCount, addPlottable +*/ +QCPAbstractPlottable *QCustomPlot::plottable(int index) +{ + if (index >= 0 && index < mPlottables.size()) + { + return mPlottables.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! \overload + + Returns the last plottable that was added with \ref addPlottable. If there are no plottables in + the plot, returns 0. + + \see plottableCount, addPlottable +*/ +QCPAbstractPlottable *QCustomPlot::plottable() +{ + if (!mPlottables.isEmpty()) + { + return mPlottables.last(); + } else + return 0; +} + +/*! + Adds the specified plottable to the plot and, if \ref setAutoAddPlottableToLegend is enabled, to + the legend (QCustomPlot::legend). QCustomPlot takes ownership of the plottable. + + Returns true on success, i.e. when \a plottable isn't already in the plot and the parent plot of + \a plottable is this QCustomPlot (the latter is controlled by what axes were passed in the + plottable's constructor). + + \see plottable, plottableCount, removePlottable, clearPlottables +*/ +bool QCustomPlot::addPlottable(QCPAbstractPlottable *plottable) +{ + if (mPlottables.contains(plottable)) + { + qDebug() << Q_FUNC_INFO << "plottable already added to this QCustomPlot:" << reinterpret_cast(plottable); + return false; + } + if (plottable->parentPlot() != this) + { + qDebug() << Q_FUNC_INFO << "plottable not created with this QCustomPlot as parent:" << reinterpret_cast(plottable); + return false; + } + + mPlottables.append(plottable); + // possibly add plottable to legend: + if (mAutoAddPlottableToLegend) + plottable->addToLegend(); + // special handling for QCPGraphs to maintain the simple graph interface: + if (QCPGraph *graph = qobject_cast(plottable)) + mGraphs.append(graph); + if (!plottable->layer()) // usually the layer is already set in the constructor of the plottable (via QCPLayerable constructor) + plottable->setLayer(currentLayer()); + return true; +} + +/*! + Removes the specified plottable from the plot and, if necessary, from the legend (QCustomPlot::legend). + + Returns true on success. + + \see addPlottable, clearPlottables +*/ +bool QCustomPlot::removePlottable(QCPAbstractPlottable *plottable) +{ + if (!mPlottables.contains(plottable)) + { + qDebug() << Q_FUNC_INFO << "plottable not in list:" << reinterpret_cast(plottable); + return false; + } + + // remove plottable from legend: + plottable->removeFromLegend(); + // special handling for QCPGraphs to maintain the simple graph interface: + if (QCPGraph *graph = qobject_cast(plottable)) + mGraphs.removeOne(graph); + // remove plottable: + delete plottable; + mPlottables.removeOne(plottable); + return true; +} + +/*! \overload + + Removes the plottable by its \a index. +*/ +bool QCustomPlot::removePlottable(int index) +{ + if (index >= 0 && index < mPlottables.size()) + return removePlottable(mPlottables[index]); + else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return false; + } +} + +/*! + Removes all plottables from the plot (and the QCustomPlot::legend, if necessary). + + Returns the number of plottables removed. + + \see removePlottable +*/ +int QCustomPlot::clearPlottables() +{ + int c = mPlottables.size(); + for (int i=c-1; i >= 0; --i) + removePlottable(mPlottables[i]); + return c; +} + +/*! + Returns the number of currently existing plottables in the plot + + \see plottable, addPlottable +*/ +int QCustomPlot::plottableCount() const +{ + return mPlottables.size(); +} + +/*! + Returns a list of the selected plottables. If no plottables are currently selected, the list is empty. + + There is a convenience function if you're only interested in selected graphs, see \ref selectedGraphs. + + \see setInteractions, QCPAbstractPlottable::setSelectable, QCPAbstractPlottable::setSelected +*/ +QList QCustomPlot::selectedPlottables() const +{ + QList result; + for (int i=0; iselected()) + result.append(mPlottables.at(i)); + } + return result; +} + +/*! + Returns the plottable at the pixel position \a pos. Plottables that only consist of single lines + (like graphs) have a tolerance band around them, see \ref setSelectionTolerance. If multiple + plottables come into consideration, the one closest to \a pos is returned. + + If \a onlySelectable is true, only plottables that are selectable + (QCPAbstractPlottable::setSelectable) are considered. + + If there is no plottable at \a pos, the return value is 0. + + \see itemAt, layoutElementAt +*/ +QCPAbstractPlottable *QCustomPlot::plottableAt(const QPointF &pos, bool onlySelectable) const +{ + QCPAbstractPlottable *resultPlottable = 0; + double resultDistance = mSelectionTolerance; // only regard clicks with distances smaller than mSelectionTolerance as selections, so initialize with that value + + for (int i=0; iselectable()) // we could have also passed onlySelectable to the selectTest function, but checking here is faster, because we have access to QCPabstractPlottable::selectable + continue; + if ((currentPlottable->keyAxis()->axisRect()->rect() & currentPlottable->valueAxis()->axisRect()->rect()).contains(pos.toPoint())) // only consider clicks inside the rect that is spanned by the plottable's key/value axes + { + double currentDistance = currentPlottable->selectTest(pos, false); + if (currentDistance >= 0 && currentDistance < resultDistance) + { + resultPlottable = currentPlottable; + resultDistance = currentDistance; + } + } + } + + return resultPlottable; +} + +/*! + Returns whether this QCustomPlot instance contains the \a plottable. + + \see addPlottable +*/ +bool QCustomPlot::hasPlottable(QCPAbstractPlottable *plottable) const +{ + return mPlottables.contains(plottable); +} + +/*! + Returns the graph with \a index. If the index is invalid, returns 0. + + There is an overloaded version of this function with no parameter which returns the last created + graph, see QCustomPlot::graph() + + \see graphCount, addGraph +*/ +QCPGraph *QCustomPlot::graph(int index) const +{ + if (index >= 0 && index < mGraphs.size()) + { + return mGraphs.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! \overload + + Returns the last graph, that was created with \ref addGraph. If there are no graphs in the plot, + returns 0. + + \see graphCount, addGraph +*/ +QCPGraph *QCustomPlot::graph() const +{ + if (!mGraphs.isEmpty()) + { + return mGraphs.last(); + } else + return 0; +} + +/*! + Creates a new graph inside the plot. If \a keyAxis and \a valueAxis are left unspecified (0), the + bottom (xAxis) is used as key and the left (yAxis) is used as value axis. If specified, \a + keyAxis and \a valueAxis must reside in this QCustomPlot. + + \a keyAxis will be used as key axis (typically "x") and \a valueAxis as value axis (typically + "y") for the graph. + + Returns a pointer to the newly created graph, or 0 if adding the graph failed. + + \see graph, graphCount, removeGraph, clearGraphs +*/ +QCPGraph *QCustomPlot::addGraph(QCPAxis *keyAxis, QCPAxis *valueAxis) +{ + if (!keyAxis) keyAxis = xAxis; + if (!valueAxis) valueAxis = yAxis; + if (!keyAxis || !valueAxis) + { + qDebug() << Q_FUNC_INFO << "can't use default QCustomPlot xAxis or yAxis, because at least one is invalid (has been deleted)"; + return 0; + } + if (keyAxis->parentPlot() != this || valueAxis->parentPlot() != this) + { + qDebug() << Q_FUNC_INFO << "passed keyAxis or valueAxis doesn't have this QCustomPlot as parent"; + return 0; + } + + QCPGraph *newGraph = new QCPGraph(keyAxis, valueAxis); + if (addPlottable(newGraph)) + { + newGraph->setName("Graph "+QString::number(mGraphs.size())); + return newGraph; + } else + { + delete newGraph; + return 0; + } +} + +/*! + Removes the specified \a graph from the plot and, if necessary, from the QCustomPlot::legend. If + any other graphs in the plot have a channel fill set towards the removed graph, the channel fill + property of those graphs is reset to zero (no channel fill). + + Returns true on success. + + \see clearGraphs +*/ +bool QCustomPlot::removeGraph(QCPGraph *graph) +{ + return removePlottable(graph); +} + +/*! \overload + + Removes the graph by its \a index. +*/ +bool QCustomPlot::removeGraph(int index) +{ + if (index >= 0 && index < mGraphs.size()) + return removeGraph(mGraphs[index]); + else + return false; +} + +/*! + Removes all graphs from the plot (and the QCustomPlot::legend, if necessary). + + Returns the number of graphs removed. + + \see removeGraph +*/ +int QCustomPlot::clearGraphs() +{ + int c = mGraphs.size(); + for (int i=c-1; i >= 0; --i) + removeGraph(mGraphs[i]); + return c; +} + +/*! + Returns the number of currently existing graphs in the plot + + \see graph, addGraph +*/ +int QCustomPlot::graphCount() const +{ + return mGraphs.size(); +} + +/*! + Returns a list of the selected graphs. If no graphs are currently selected, the list is empty. + + If you are not only interested in selected graphs but other plottables like QCPCurve, QCPBars, + etc., use \ref selectedPlottables. + + \see setInteractions, selectedPlottables, QCPAbstractPlottable::setSelectable, QCPAbstractPlottable::setSelected +*/ +QList QCustomPlot::selectedGraphs() const +{ + QList result; + for (int i=0; iselected()) + result.append(mGraphs.at(i)); + } + return result; +} + +/*! + Returns the item with \a index. If the index is invalid, returns 0. + + There is an overloaded version of this function with no parameter which returns the last added + item, see QCustomPlot::item() + + \see itemCount, addItem +*/ +QCPAbstractItem *QCustomPlot::item(int index) const +{ + if (index >= 0 && index < mItems.size()) + { + return mItems.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! \overload + + Returns the last item, that was added with \ref addItem. If there are no items in the plot, + returns 0. + + \see itemCount, addItem +*/ +QCPAbstractItem *QCustomPlot::item() const +{ + if (!mItems.isEmpty()) + { + return mItems.last(); + } else + return 0; +} + +/*! + Adds the specified item to the plot. QCustomPlot takes ownership of the item. + + Returns true on success, i.e. when \a item wasn't already in the plot and the parent plot of \a + item is this QCustomPlot. + + \see item, itemCount, removeItem, clearItems +*/ +bool QCustomPlot::addItem(QCPAbstractItem *item) +{ + if (!mItems.contains(item) && item->parentPlot() == this) + { + mItems.append(item); + return true; + } else + { + qDebug() << Q_FUNC_INFO << "item either already in list or not created with this QCustomPlot as parent:" << reinterpret_cast(item); + return false; + } +} + +/*! + Removes the specified item from the plot. + + Returns true on success. + + \see addItem, clearItems +*/ +bool QCustomPlot::removeItem(QCPAbstractItem *item) +{ + if (mItems.contains(item)) + { + delete item; + mItems.removeOne(item); + return true; + } else + { + qDebug() << Q_FUNC_INFO << "item not in list:" << reinterpret_cast(item); + return false; + } +} + +/*! \overload + + Removes the item by its \a index. +*/ +bool QCustomPlot::removeItem(int index) +{ + if (index >= 0 && index < mItems.size()) + return removeItem(mItems[index]); + else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return false; + } +} + +/*! + Removes all items from the plot. + + Returns the number of items removed. + + \see removeItem +*/ +int QCustomPlot::clearItems() +{ + int c = mItems.size(); + for (int i=c-1; i >= 0; --i) + removeItem(mItems[i]); + return c; +} + +/*! + Returns the number of currently existing items in the plot + + \see item, addItem +*/ +int QCustomPlot::itemCount() const +{ + return mItems.size(); +} + +/*! + Returns a list of the selected items. If no items are currently selected, the list is empty. + + \see setInteractions, QCPAbstractItem::setSelectable, QCPAbstractItem::setSelected +*/ +QList QCustomPlot::selectedItems() const +{ + QList result; + for (int i=0; iselected()) + result.append(mItems.at(i)); + } + return result; +} + +/*! + Returns the item at the pixel position \a pos. Items that only consist of single lines (e.g. \ref + QCPItemLine or \ref QCPItemCurve) have a tolerance band around them, see \ref + setSelectionTolerance. If multiple items come into consideration, the one closest to \a pos is + returned. + + If \a onlySelectable is true, only items that are selectable (QCPAbstractItem::setSelectable) are + considered. + + If there is no item at \a pos, the return value is 0. + + \see plottableAt, layoutElementAt +*/ +QCPAbstractItem *QCustomPlot::itemAt(const QPointF &pos, bool onlySelectable) const +{ + QCPAbstractItem *resultItem = 0; + double resultDistance = mSelectionTolerance; // only regard clicks with distances smaller than mSelectionTolerance as selections, so initialize with that value + + for (int i=0; iselectable()) // we could have also passed onlySelectable to the selectTest function, but checking here is faster, because we have access to QCPAbstractItem::selectable + continue; + if (!currentItem->clipToAxisRect() || currentItem->clipRect().contains(pos.toPoint())) // only consider clicks inside axis cliprect of the item if actually clipped to it + { + double currentDistance = currentItem->selectTest(pos, false); + if (currentDistance >= 0 && currentDistance < resultDistance) + { + resultItem = currentItem; + resultDistance = currentDistance; + } + } + } + + return resultItem; +} + +/*! + Returns whether this QCustomPlot contains the \a item. + + \see addItem +*/ +bool QCustomPlot::hasItem(QCPAbstractItem *item) const +{ + return mItems.contains(item); +} + +/*! + Returns the layer with the specified \a name. If there is no layer with the specified name, 0 is + returned. + + Layer names are case-sensitive. + + \see addLayer, moveLayer, removeLayer +*/ +QCPLayer *QCustomPlot::layer(const QString &name) const +{ + for (int i=0; iname() == name) + return mLayers.at(i); + } + return 0; +} + +/*! \overload + + Returns the layer by \a index. If the index is invalid, 0 is returned. + + \see addLayer, moveLayer, removeLayer +*/ +QCPLayer *QCustomPlot::layer(int index) const +{ + if (index >= 0 && index < mLayers.size()) + { + return mLayers.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! + Returns the layer that is set as current layer (see \ref setCurrentLayer). +*/ +QCPLayer *QCustomPlot::currentLayer() const +{ + return mCurrentLayer; +} + +/*! + Sets the layer with the specified \a name to be the current layer. All layerables (\ref + QCPLayerable), e.g. plottables and items, are created on the current layer. + + Returns true on success, i.e. if there is a layer with the specified \a name in the QCustomPlot. + + Layer names are case-sensitive. + + \see addLayer, moveLayer, removeLayer, QCPLayerable::setLayer +*/ +bool QCustomPlot::setCurrentLayer(const QString &name) +{ + if (QCPLayer *newCurrentLayer = layer(name)) + { + return setCurrentLayer(newCurrentLayer); + } else + { + qDebug() << Q_FUNC_INFO << "layer with name doesn't exist:" << name; + return false; + } +} + +/*! \overload + + Sets the provided \a layer to be the current layer. + + Returns true on success, i.e. when \a layer is a valid layer in the QCustomPlot. + + \see addLayer, moveLayer, removeLayer +*/ +bool QCustomPlot::setCurrentLayer(QCPLayer *layer) +{ + if (!mLayers.contains(layer)) + { + qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); + return false; + } + + mCurrentLayer = layer; + return true; +} + +/*! + Returns the number of currently existing layers in the plot + + \see layer, addLayer +*/ +int QCustomPlot::layerCount() const +{ + return mLayers.size(); +} + +/*! + Adds a new layer to this QCustomPlot instance. The new layer will have the name \a name, which + must be unique. Depending on \a insertMode, it is positioned either below or above \a otherLayer. + + Returns true on success, i.e. if there is no other layer named \a name and \a otherLayer is a + valid layer inside this QCustomPlot. + + If \a otherLayer is 0, the highest layer in the QCustomPlot will be used. + + For an explanation of what layers are in QCustomPlot, see the documentation of \ref QCPLayer. + + \see layer, moveLayer, removeLayer +*/ +bool QCustomPlot::addLayer(const QString &name, QCPLayer *otherLayer, QCustomPlot::LayerInsertMode insertMode) +{ + if (!otherLayer) + otherLayer = mLayers.last(); + if (!mLayers.contains(otherLayer)) + { + qDebug() << Q_FUNC_INFO << "otherLayer not a layer of this QCustomPlot:" << reinterpret_cast(otherLayer); + return false; + } + if (layer(name)) + { + qDebug() << Q_FUNC_INFO << "A layer exists already with the name" << name; + return false; + } + + QCPLayer *newLayer = new QCPLayer(this, name); + mLayers.insert(otherLayer->index() + (insertMode==limAbove ? 1:0), newLayer); + updateLayerIndices(); + return true; +} + +/*! + Removes the specified \a layer and returns true on success. + + All layerables (e.g. plottables and items) on the removed layer will be moved to the layer below + \a layer. If \a layer is the bottom layer, the layerables are moved to the layer above. In both + cases, the total rendering order of all layerables in the QCustomPlot is preserved. + + If \a layer is the current layer (\ref setCurrentLayer), the layer below (or above, if bottom + layer) becomes the new current layer. + + It is not possible to remove the last layer of the plot. + + \see layer, addLayer, moveLayer +*/ +bool QCustomPlot::removeLayer(QCPLayer *layer) +{ + if (!mLayers.contains(layer)) + { + qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); + return false; + } + if (mLayers.size() < 2) + { + qDebug() << Q_FUNC_INFO << "can't remove last layer"; + return false; + } + + // append all children of this layer to layer below (if this is lowest layer, prepend to layer above) + int removedIndex = layer->index(); + bool isFirstLayer = removedIndex==0; + QCPLayer *targetLayer = isFirstLayer ? mLayers.at(removedIndex+1) : mLayers.at(removedIndex-1); + QList children = layer->children(); + if (isFirstLayer) // prepend in reverse order (so order relative to each other stays the same) + { + for (int i=children.size()-1; i>=0; --i) + children.at(i)->moveToLayer(targetLayer, true); + } else // append normally + { + for (int i=0; imoveToLayer(targetLayer, false); + } + // if removed layer is current layer, change current layer to layer below/above: + if (layer == mCurrentLayer) + setCurrentLayer(targetLayer); + // remove layer: + delete layer; + mLayers.removeOne(layer); + updateLayerIndices(); + return true; +} + +/*! + Moves the specified \a layer either above or below \a otherLayer. Whether it's placed above or + below is controlled with \a insertMode. + + Returns true on success, i.e. when both \a layer and \a otherLayer are valid layers in the + QCustomPlot. + + \see layer, addLayer, moveLayer +*/ +bool QCustomPlot::moveLayer(QCPLayer *layer, QCPLayer *otherLayer, QCustomPlot::LayerInsertMode insertMode) +{ + if (!mLayers.contains(layer)) + { + qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); + return false; + } + if (!mLayers.contains(otherLayer)) + { + qDebug() << Q_FUNC_INFO << "otherLayer not a layer of this QCustomPlot:" << reinterpret_cast(otherLayer); + return false; + } + + mLayers.move(layer->index(), otherLayer->index() + (insertMode==limAbove ? 1:0)); + updateLayerIndices(); + return true; +} + +/*! + Returns the number of axis rects in the plot. + + All axis rects can be accessed via QCustomPlot::axisRect(). + + Initially, only one axis rect exists in the plot. + + \see axisRect, axisRects +*/ +int QCustomPlot::axisRectCount() const +{ + return axisRects().size(); +} + +/*! + Returns the axis rect with \a index. + + Initially, only one axis rect (with index 0) exists in the plot. If multiple axis rects were + added, all of them may be accessed with this function in a linear fashion (even when they are + nested in a layout hierarchy or inside other axis rects via QCPAxisRect::insetLayout). + + \see axisRectCount, axisRects +*/ +QCPAxisRect *QCustomPlot::axisRect(int index) const +{ + const QList rectList = axisRects(); + if (index >= 0 && index < rectList.size()) + { + return rectList.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "invalid axis rect index" << index; + return 0; + } +} + +/*! + Returns all axis rects in the plot. + + \see axisRectCount, axisRect +*/ +QList QCustomPlot::axisRects() const +{ + QList result; + QStack elementStack; + if (mPlotLayout) + elementStack.push(mPlotLayout); + + while (!elementStack.isEmpty()) + { + QList subElements = elementStack.pop()->elements(false); + for (int i=0; i(element)) + result.append(ar); + } + } + } + + return result; +} + +/*! + Returns the layout element at pixel position \a pos. If there is no element at that position, + returns 0. + + Only visible elements are used. If \ref QCPLayoutElement::setVisible on the element itself or on + any of its parent elements is set to false, it will not be considered. + + \see itemAt, plottableAt +*/ +QCPLayoutElement *QCustomPlot::layoutElementAt(const QPointF &pos) const +{ + QCPLayoutElement *current = mPlotLayout; + bool searchSubElements = true; + while (searchSubElements && current) + { + searchSubElements = false; + const QList elements = current->elements(false); + for (int i=0; irealVisibility() && elements.at(i)->selectTest(pos, false) >= 0) + { + current = elements.at(i); + searchSubElements = true; + break; + } + } + } + return current; +} + +/*! + Returns the axes that currently have selected parts, i.e. whose selection state is not \ref + QCPAxis::spNone. + + \see selectedPlottables, selectedLegends, setInteractions, QCPAxis::setSelectedParts, + QCPAxis::setSelectableParts +*/ +QList QCustomPlot::selectedAxes() const +{ + QList result, allAxes; + QList rects = axisRects(); + for (int i=0; iaxes(); + + for (int i=0; iselectedParts() != QCPAxis::spNone) + result.append(allAxes.at(i)); + } + + return result; +} + +/*! + Returns the legends that currently have selected parts, i.e. whose selection state is not \ref + QCPLegend::spNone. + + \see selectedPlottables, selectedAxes, setInteractions, QCPLegend::setSelectedParts, + QCPLegend::setSelectableParts, QCPLegend::selectedItems +*/ +QList QCustomPlot::selectedLegends() const +{ + QList result; + + QStack elementStack; + if (mPlotLayout) + elementStack.push(mPlotLayout); + + while (!elementStack.isEmpty()) + { + QList subElements = elementStack.pop()->elements(false); + for (int i=0; i(element)) + { + if (leg->selectedParts() != QCPLegend::spNone) + result.append(leg); + } + } + } + } + + return result; +} + +/*! + Deselects all layerables (plottables, items, axes, legends,...) of the QCustomPlot. + + Since calling this function is not a user interaction, this does not emit the \ref + selectionChangedByUser signal. The individual selectionChanged signals are emitted though, if the + objects were previously selected. + + \see setInteractions, selectedPlottables, selectedItems, selectedAxes, selectedLegends +*/ +void QCustomPlot::deselectAll() +{ + for (int i=0; i layerables = mLayers.at(i)->children(); + for (int k=0; kdeselectEvent(0); + } +} + +/*! + Causes a complete replot into the internal buffer. Finally, update() is called, to redraw the + buffer on the QCustomPlot widget surface. This is the method that must be called to make changes, + for example on the axis ranges or data points of graphs, visible. + + Under a few circumstances, QCustomPlot causes a replot by itself. Those are resize events of the + QCustomPlot widget and user interactions (object selection and range dragging/zooming). + + Before the replot happens, the signal \ref beforeReplot is emitted. After the replot, \ref + afterReplot is emitted. It is safe to mutually connect the replot slot with any of those two + signals on two QCustomPlots to make them replot synchronously, it won't cause an infinite + recursion. +*/ +void QCustomPlot::replot() +{ + if (mReplotting) // incase signals loop back to replot slot + return; + mReplotting = true; + emit beforeReplot(); + mPaintBuffer.fill(mBackgroundBrush.style() == Qt::SolidPattern ? mBackgroundBrush.color() : Qt::transparent); + QCPPainter painter; + painter.begin(&mPaintBuffer); + if (painter.isActive()) + { + painter.setRenderHint(QPainter::HighQualityAntialiasing); // to make Antialiasing look good if using the OpenGL graphicssystem + if (mBackgroundBrush.style() != Qt::SolidPattern && mBackgroundBrush.style() != Qt::NoBrush) + painter.fillRect(mViewport, mBackgroundBrush); + draw(&painter); + painter.end(); + if (mPlottingHints.testFlag(QCP::phForceRepaint)) + repaint(); + else + update(); + } else // might happen if QCustomPlot has width or height zero + qDebug() << Q_FUNC_INFO << "Couldn't activate painter on buffer"; + emit afterReplot(); + mReplotting = false; +} + +/*! + Rescales the axes such that all plottables (like graphs) in the plot are fully visible. It does + this by calling \ref QCPAbstractPlottable::rescaleAxes on all plottables. + + if \a onlyVisible is set to true, only the plottables that have their visibility set to true + (QCPLayerable::setVisible), will be used to rescale the axes. + + \see QCPAbstractPlottable::rescaleAxes +*/ +void QCustomPlot::rescaleAxes(bool onlyVisible) +{ + if (mPlottables.isEmpty()) return; + bool firstPlottable = true; + + for (int i=0; irealVisibility() || !onlyVisible) + { + mPlottables.at(i)->rescaleAxes(!firstPlottable); // onlyEnlarge disabled on first plottable + firstPlottable = false; + } + } +} + +/*! + Saves a PDF with the vectorized plot to the file \a fileName. The axis ratio as well as the scale + of texts and lines will be derived from the specified \a width and \a height. This means, the + output will look like the normal on-screen output of a QCustomPlot widget with the corresponding + pixel width and height. If either \a width or \a height is zero, the exported image will have the + same dimensions as the QCustomPlot widget currently has. + + \a noCosmeticPen disables the use of cosmetic pens when drawing to the PDF file. Cosmetic pens + are pens with numerical width 0, which are always drawn as a one pixel wide line, no matter what + zoom factor is set in the PDF-Viewer. For more information about cosmetic pens, see the QPainter + and QPen documentation. + + The objects of the plot will appear in the current selection state. If you don't want any + selected objects to be painted in their selected look, deselect everything with \ref deselectAll + before calling this function. + + Returns true on success. + + \warning + \li If you plan on editing the exported PDF file with a vector graphics editor like + Inkscape, it is advised to set \a noCosmeticPen to true to avoid losing those cosmetic lines + (which might be quite many, because cosmetic pens are the default for e.g. axes and tick marks). + \li If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + \see savePng, saveBmp, saveJpg, saveRastered +*/ +bool QCustomPlot::savePdf(const QString &fileName, bool noCosmeticPen, int width, int height) +{ + bool success = false; + int newWidth, newHeight; + if (width == 0 || height == 0) + { + newWidth = this->width(); + newHeight = this->height(); + } else + { + newWidth = width; + newHeight = height; + } + + QPrinter printer(QPrinter::ScreenResolution); + printer.setOutputFileName(fileName); + printer.setOutputFormat(QPrinter::PdfFormat); + printer.setFullPage(true); + QRect oldViewport = viewport(); + setViewport(QRect(0, 0, newWidth, newHeight)); + printer.setPaperSize(viewport().size(), QPrinter::DevicePixel); + QCPPainter printpainter; + if (printpainter.begin(&printer)) + { + printpainter.setMode(QCPPainter::pmVectorized); + printpainter.setMode(QCPPainter::pmNoCaching); + printpainter.setMode(QCPPainter::pmNonCosmetic, noCosmeticPen); + printpainter.setWindow(mViewport); + if (mBackgroundBrush.style() != Qt::NoBrush && + mBackgroundBrush.color() != Qt::white && + mBackgroundBrush.color() != Qt::transparent && + mBackgroundBrush.color().alpha() > 0) // draw pdf background color if not white/transparent + printpainter.fillRect(viewport(), mBackgroundBrush); + draw(&printpainter); + printpainter.end(); + success = true; + } + setViewport(oldViewport); + return success; +} + +/*! + Saves a PNG image file to \a fileName on disc. The output plot will have the dimensions \a width + and \a height in pixels. If either \a width or \a height is zero, the exported image will have + the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not + scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. + + For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an + image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, + texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full + 200*200 pixel resolution. + + If you use a high scaling factor, it is recommended to enable antialiasing for all elements via + temporarily setting \ref QCustomPlot::setAntialiasedElements to \ref QCP::aeAll as this allows + QCustomPlot to place objects with sub-pixel accuracy. + + \warning If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + The objects of the plot will appear in the current selection state. If you don't want any selected + objects to be painted in their selected look, deselect everything with \ref deselectAll before calling + this function. + + If you want the PNG to have a transparent background, call \ref setBackground(const QBrush + &brush) with no brush (Qt::NoBrush) or a transparent color (Qt::transparent), before saving. + + PNG compression can be controlled with the \a quality parameter which must be between 0 and 100 or + -1 to use the default setting. + + Returns true on success. If this function fails, most likely the PNG format isn't supported by + the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see savePdf, saveBmp, saveJpg, saveRastered +*/ +bool QCustomPlot::savePng(const QString &fileName, int width, int height, double scale, int quality) +{ + return saveRastered(fileName, width, height, scale, "PNG", quality); +} + +/*! + Saves a JPG image file to \a fileName on disc. The output plot will have the dimensions \a width + and \a height in pixels. If either \a width or \a height is zero, the exported image will have + the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not + scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. + + For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an + image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, + texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full + 200*200 pixel resolution. + + If you use a high scaling factor, it is recommended to enable antialiasing for all elements via + temporarily setting \ref QCustomPlot::setAntialiasedElements to \ref QCP::aeAll as this allows + QCustomPlot to place objects with sub-pixel accuracy. + + \warning If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + The objects of the plot will appear in the current selection state. If you don't want any selected + objects to be painted in their selected look, deselect everything with \ref deselectAll before calling + this function. + + JPG compression can be controlled with the \a quality parameter which must be between 0 and 100 or + -1 to use the default setting. + + Returns true on success. If this function fails, most likely the JPG format isn't supported by + the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see savePdf, savePng, saveBmp, saveRastered +*/ +bool QCustomPlot::saveJpg(const QString &fileName, int width, int height, double scale, int quality) +{ + return saveRastered(fileName, width, height, scale, "JPG", quality); +} + +/*! + Saves a BMP image file to \a fileName on disc. The output plot will have the dimensions \a width + and \a height in pixels. If either \a width or \a height is zero, the exported image will have + the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not + scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. + + For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an + image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, + texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full + 200*200 pixel resolution. + + If you use a high scaling factor, it is recommended to enable antialiasing for all elements via + temporarily setting \ref QCustomPlot::setAntialiasedElements to \ref QCP::aeAll as this allows + QCustomPlot to place objects with sub-pixel accuracy. + + \warning If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + The objects of the plot will appear in the current selection state. If you don't want any selected + objects to be painted in their selected look, deselect everything with \ref deselectAll before calling + this function. + + Returns true on success. If this function fails, most likely the BMP format isn't supported by + the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see savePdf, savePng, saveJpg, saveRastered +*/ +bool QCustomPlot::saveBmp(const QString &fileName, int width, int height, double scale) +{ + return saveRastered(fileName, width, height, scale, "BMP"); +} + +/*! \internal + + Returns a minimum size hint that corresponds to the minimum size of the top level layout + (\ref plotLayout). To prevent QCustomPlot from being collapsed to size/width zero, set a minimum + size (setMinimumSize) either on the whole QCustomPlot or on any layout elements inside the plot. + This is especially important, when placed in a QLayout where other components try to take in as + much space as possible (e.g. QMdiArea). +*/ +QSize QCustomPlot::minimumSizeHint() const +{ + return mPlotLayout->minimumSizeHint(); +} + +/*! \internal + + Returns a size hint that is the same as \ref minimumSizeHint. + +*/ +QSize QCustomPlot::sizeHint() const +{ + return mPlotLayout->minimumSizeHint(); +} + +/*! \internal + + Event handler for when the QCustomPlot widget needs repainting. This does not cause a \ref replot, but + draws the internal buffer on the widget surface. +*/ +void QCustomPlot::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event); + QPainter painter(this); + painter.drawPixmap(0, 0, mPaintBuffer); +} + +/*! \internal + + Event handler for a resize of the QCustomPlot widget. Causes the internal buffer to be resized to + the new size. The viewport (which becomes the outer rect of mPlotLayout) is resized + appropriately. Finally a \ref replot is performed. +*/ +void QCustomPlot::resizeEvent(QResizeEvent *event) +{ + // resize and repaint the buffer: + mPaintBuffer = QPixmap(event->size()); + setViewport(rect()); + replot(); +} + +/*! \internal + + Event handler for when a double click occurs. Emits the \ref mouseDoubleClick signal, then emits + the specialized signals when certain objecs are clicked (e.g. \ref plottableDoubleClick, \ref + axisDoubleClick, etc.). Finally determines the affected layout element and forwards the event to + it. + + \see mousePressEvent, mouseReleaseEvent +*/ +void QCustomPlot::mouseDoubleClickEvent(QMouseEvent *event) +{ + emit mouseDoubleClick(event); + + QVariant details; + QCPLayerable *clickedLayerable = layerableAt(event->pos(), false, &details); + + // emit specialized object double click signals: + if (QCPAbstractPlottable *ap = qobject_cast(clickedLayerable)) + emit plottableDoubleClick(ap, event); + else if (QCPAxis *ax = qobject_cast(clickedLayerable)) + emit axisDoubleClick(ax, details.value(), event); + else if (QCPAbstractItem *ai = qobject_cast(clickedLayerable)) + emit itemDoubleClick(ai, event); + else if (QCPLegend *lg = qobject_cast(clickedLayerable)) + emit legendDoubleClick(lg, 0, event); + else if (QCPAbstractLegendItem *li = qobject_cast(clickedLayerable)) + emit legendDoubleClick(li->parentLegend(), li, event); + else if (QCPPlotTitle *pt = qobject_cast(clickedLayerable)) + emit titleDoubleClick(event, pt); + + // call double click event of affected layout element: + if (QCPLayoutElement *el = layoutElementAt(event->pos())) + el->mouseDoubleClickEvent(event); + + // call release event of affected layout element (as in mouseReleaseEvent, since the mouseDoubleClick replaces the second release event in double click case): + if (mMouseEventElement) + { + mMouseEventElement->mouseReleaseEvent(event); + mMouseEventElement = 0; + } + + //QWidget::mouseDoubleClickEvent(event); don't call base class implementation because it would just cause a mousePress/ReleaseEvent, which we don't want. +} + +/*! \internal + + Event handler for when a mouse button is pressed. Emits the mousePress signal. Then determines + the affected layout element and forwards the event to it. + + \see mouseMoveEvent, mouseReleaseEvent +*/ +void QCustomPlot::mousePressEvent(QMouseEvent *event) +{ + emit mousePress(event); + mMousePressPos = event->pos(); // need this to determine in releaseEvent whether it was a click (no position change between press and release) + + // call event of affected layout element: + mMouseEventElement = layoutElementAt(event->pos()); + if (mMouseEventElement) + mMouseEventElement->mousePressEvent(event); + + QWidget::mousePressEvent(event); +} + +/*! \internal + + Event handler for when the cursor is moved. Emits the \ref mouseMove signal. + + If a layout element has mouse capture focus (a mousePressEvent happened on top of the layout + element before), the mouseMoveEvent is forwarded to that element. + + \see mousePressEvent, mouseReleaseEvent +*/ +void QCustomPlot::mouseMoveEvent(QMouseEvent *event) +{ + emit mouseMove(event); + + // call event of affected layout element: + if (mMouseEventElement) + mMouseEventElement->mouseMoveEvent(event); + + QWidget::mouseMoveEvent(event); +} + +/*! \internal + + Event handler for when a mouse button is released. Emits the \ref mouseRelease signal. + + If the mouse was moved less than a certain threshold in any direction since the \ref + mousePressEvent, it is considered a click which causes the selection mechanism (if activated via + \ref setInteractions) to possibly change selection states accordingly. Further, specialized mouse + click signals are emitted (e.g. \ref plottableClick, \ref axisClick, etc.) + + If a layout element has mouse capture focus (a \ref mousePressEvent happened on top of the layout + element before), the \ref mouseReleaseEvent is forwarded to that element. + + \see mousePressEvent, mouseMoveEvent +*/ +void QCustomPlot::mouseReleaseEvent(QMouseEvent *event) +{ + emit mouseRelease(event); + bool doReplot = false; + + if ((mMousePressPos-event->pos()).manhattanLength() < 5) // determine whether it was a click operation + { + if (event->button() == Qt::LeftButton) + { + // handle selection mechanism: + QVariant details; + QCPLayerable *clickedLayerable = layerableAt(event->pos(), true, &details); + bool selectionStateChanged = false; + bool additive = mInteractions.testFlag(QCP::iMultiSelect) && event->modifiers().testFlag(mMultiSelectModifier); + if (clickedLayerable && mInteractions.testFlag(clickedLayerable->selectionCategory())) + { + // a layerable was actually clicked, call its selectEvent: + bool selChanged = false; + clickedLayerable->selectEvent(event, additive, details, &selChanged); + selectionStateChanged |= selChanged; + } + // deselect all other layerables if not additive selection: + if (!additive) + { + for (int i=0; i layerables = mLayers.at(i)->children(); + for (int k=0; kselectionCategory())) + { + bool selChanged = false; + layerables.at(k)->deselectEvent(&selChanged); + selectionStateChanged |= selChanged; + } + } + } + } + doReplot = true; + if (selectionStateChanged) + emit selectionChangedByUser(); + } + + // emit specialized object click signals: + QVariant details; + QCPLayerable *clickedLayerable = layerableAt(event->pos(), false, &details); // for these signals, selectability is ignored, that's why we call this again with onlySelectable set to false + if (QCPAbstractPlottable *ap = qobject_cast(clickedLayerable)) + emit plottableClick(ap, event); + else if (QCPAxis *ax = qobject_cast(clickedLayerable)) + emit axisClick(ax, details.value(), event); + else if (QCPAbstractItem *ai = qobject_cast(clickedLayerable)) + emit itemClick(ai, event); + else if (QCPLegend *lg = qobject_cast(clickedLayerable)) + emit legendClick(lg, 0, event); + else if (QCPAbstractLegendItem *li = qobject_cast(clickedLayerable)) + emit legendClick(li->parentLegend(), li, event); + else if (QCPPlotTitle *pt = qobject_cast(clickedLayerable)) + emit titleClick(event, pt); + } + + // call event of affected layout element: + if (mMouseEventElement) + { + mMouseEventElement->mouseReleaseEvent(event); + mMouseEventElement = 0; + } + + if (doReplot || noAntialiasingOnDrag()) + replot(); + + QWidget::mouseReleaseEvent(event); +} + +/*! \internal + + Event handler for mouse wheel events. First, the \ref mouseWheel signal is emitted. Then + determines the affected layout element and forwards the event to it. + +*/ +void QCustomPlot::wheelEvent(QWheelEvent *event) +{ + emit mouseWheel(event); + + // call event of affected layout element: + if (QCPLayoutElement *el = layoutElementAt(event->pos())) + el->wheelEvent(event); + + QWidget::wheelEvent(event); +} + +/*! \internal + + This is the main draw function. It draws the entire plot, including background pixmap, with the + specified \a painter. Note that it does not fill the background with the background brush (as the + user may specify with \ref setBackground(const QBrush &brush)), this is up to the respective + functions calling this method (e.g. \ref replot, \ref toPixmap and \ref toPainter). +*/ +void QCustomPlot::draw(QCPPainter *painter) +{ + // update all axis tick vectors: + QList rects = axisRects(); + for (int i=0; i axes = rects.at(i)->axes(); + for (int k=0; ksetupTickVectors(); + } + + // recalculate layout: + mPlotLayout->update(); + + // draw viewport background pixmap: + drawBackground(painter); + + // draw all layered objects (grid, axes, plottables, items, legend,...): + for (int layerIndex=0; layerIndex < mLayers.size(); ++layerIndex) + { + QList layerChildren = mLayers.at(layerIndex)->children(); + for (int k=0; k < layerChildren.size(); ++k) + { + QCPLayerable *child = layerChildren.at(k); + if (child->realVisibility()) + { + painter->save(); + painter->setClipRect(child->clipRect().translated(0, -1)); + child->applyDefaultAntialiasingHint(painter); + child->draw(painter); + painter->restore(); + } + } + } +} + +/*! \internal + + Draws the viewport background pixmap of the plot. + + If a pixmap was provided via \ref setBackground, this function buffers the scaled version + depending on \ref setBackgroundScaled and \ref setBackgroundScaledMode and then draws it inside + the viewport with the provided \a painter. The scaled version is buffered in + mScaledBackgroundPixmap to prevent expensive rescaling at every redraw. It is only updated, when + the axis rect has changed in a way that requires a rescale of the background pixmap (this is + dependant on the \ref setBackgroundScaledMode), or when a differend axis backgroud pixmap was + set. + + Note that this function does not draw a fill with the background brush (\ref setBackground(const + QBrush &brush)) beneath the pixmap. + + \see setBackground, setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::drawBackground(QCPPainter *painter) +{ + // Note: background color is handled in individual replot/save functions + + // draw background pixmap (on top of fill, if brush specified): + if (!mBackgroundPixmap.isNull()) + { + if (mBackgroundScaled) + { + // check whether mScaledBackground needs to be updated: + QSize scaledSize(mBackgroundPixmap.size()); + scaledSize.scale(mViewport.size(), mBackgroundScaledMode); + if (mScaledBackgroundPixmap.size() != scaledSize) + mScaledBackgroundPixmap = mBackgroundPixmap.scaled(mViewport.size(), mBackgroundScaledMode, Qt::SmoothTransformation); + painter->drawPixmap(mViewport.topLeft(), mScaledBackgroundPixmap, QRect(0, 0, mViewport.width(), mViewport.height()) & mScaledBackgroundPixmap.rect()); + } else + { + painter->drawPixmap(mViewport.topLeft(), mBackgroundPixmap, QRect(0, 0, mViewport.width(), mViewport.height())); + } + } +} + + +/*! \internal + + This method is used by \ref QCPAxisRect::removeAxis to report removed axes to the QCustomPlot + so it may clear its QCustomPlot::xAxis, yAxis, xAxis2 and yAxis2 members accordingly. +*/ +void QCustomPlot::axisRemoved(QCPAxis *axis) +{ + if (xAxis == axis) + xAxis = 0; + if (xAxis2 == axis) + xAxis2 = 0; + if (yAxis == axis) + yAxis = 0; + if (yAxis2 == axis) + yAxis2 = 0; + + // Note: No need to take care of range drag axes and range zoom axes, because they are stored in smart pointers +} + +/*! \internal + + This method is used by the QCPLegend destructor to report legend removal to the QCustomPlot so + it may clear its QCustomPlot::legend member accordingly. +*/ +void QCustomPlot::legendRemoved(QCPLegend *legend) +{ + if (this->legend == legend) + this->legend = 0; +} + +/*! \internal + + Assigns all layers their index (QCPLayer::mIndex) in the mLayers list. This method is thus called + after every operation that changes the layer indices, like layer removal, layer creation, layer + moving. +*/ +void QCustomPlot::updateLayerIndices() const +{ + for (int i=0; imIndex = i; +} + +/*! \internal + + Returns the layerable at pixel position \a pos. If \a onlySelectable is set to true, only those + layerables that are selectable will be considered. (Layerable subclasses communicate their + selectability via the QCPLayerable::selectTest method, by returning -1.) + + \a selectionDetails is an output parameter that contains selection specifics of the affected + layerable. This is useful if the respective layerable shall be given a subsequent + QCPLayerable::selectEvent (like in \ref mouseReleaseEvent). \a selectionDetails usually contains + information about which part of the layerable was hit, in multi-part layerables (e.g. + QCPAxis::SelectablePart). +*/ +QCPLayerable *QCustomPlot::layerableAt(const QPointF &pos, bool onlySelectable, QVariant *selectionDetails) const +{ + for (int layerIndex=mLayers.size()-1; layerIndex>=0; --layerIndex) + { + const QList layerables = mLayers.at(layerIndex)->children(); + double minimumDistance = selectionTolerance()*1.1; + QCPLayerable *minimumDistanceLayerable = 0; + for (int i=layerables.size()-1; i>=0; --i) + { + if (!layerables.at(i)->realVisibility()) + continue; + QVariant details; + double dist = layerables.at(i)->selectTest(pos, onlySelectable, &details); + if (dist >= 0 && dist < minimumDistance) + { + minimumDistance = dist; + minimumDistanceLayerable = layerables.at(i); + if (selectionDetails) *selectionDetails = details; + } + } + if (minimumDistance < selectionTolerance()) + return minimumDistanceLayerable; + } + return 0; +} + +/*! + Saves the plot to a rastered image file \a fileName in the image format \a format. The plot is + sized to \a width and \a height in pixels and scaled with \a scale. (width 100 and scale 2.0 lead + to a full resolution file with width 200.) If the \a format supports compression, \a quality may + be between 0 and 100 to control it. + + Returns true on success. If this function fails, most likely the given \a format isn't supported + by the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see saveBmp, saveJpg, savePng, savePdf +*/ +bool QCustomPlot::saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality) +{ + QPixmap buffer = toPixmap(width, height, scale); + if (!buffer.isNull()) + return buffer.save(fileName, format, quality); + else + return false; +} + +/*! + Renders the plot to a pixmap and returns it. + + The plot is sized to \a width and \a height in pixels and scaled with \a scale. (width 100 and + scale 2.0 lead to a full resolution pixmap with width 200.) + + \see toPainter, saveRastered, saveBmp, savePng, saveJpg, savePdf +*/ +QPixmap QCustomPlot::toPixmap(int width, int height, double scale) +{ + // this method is somewhat similar to toPainter. Change something here, and a change in toPainter might be necessary, too. + int newWidth, newHeight; + if (width == 0 || height == 0) + { + newWidth = this->width(); + newHeight = this->height(); + } else + { + newWidth = width; + newHeight = height; + } + int scaledWidth = qRound(scale*newWidth); + int scaledHeight = qRound(scale*newHeight); + + QPixmap result(scaledWidth, scaledHeight); + result.fill(mBackgroundBrush.style() == Qt::SolidPattern ? mBackgroundBrush.color() : Qt::transparent); // if using non-solid pattern, make transparent now and draw brush pattern later + QCPPainter painter; + painter.begin(&result); + if (painter.isActive()) + { + QRect oldViewport = viewport(); + setViewport(QRect(0, 0, newWidth, newHeight)); + painter.setMode(QCPPainter::pmNoCaching); + if (!qFuzzyCompare(scale, 1.0)) + { + if (scale > 1.0) // for scale < 1 we always want cosmetic pens where possible, because else lines might disappear for very small scales + painter.setMode(QCPPainter::pmNonCosmetic); + painter.scale(scale, scale); + } + if (mBackgroundBrush.style() != Qt::SolidPattern && mBackgroundBrush.style() != Qt::NoBrush) + painter.fillRect(mViewport, mBackgroundBrush); + draw(&painter); + setViewport(oldViewport); + painter.end(); + } else // might happen if pixmap has width or height zero + { + qDebug() << Q_FUNC_INFO << "Couldn't activate painter on pixmap"; + return QPixmap(); + } + return result; +} + +/*! + Renders the plot using the passed \a painter. + + The plot is sized to \a width and \a height in pixels. If the \a painter's scale is not 1.0, the resulting plot will + appear scaled accordingly. + + \note If you are restricted to using a QPainter (instead of QCPPainter), create a temporary QPicture and open a QCPPainter + on it. Then call \ref toPainter with this QCPPainter. After ending the paint operation on the picture, draw it with + the QPainter. This will reproduce the painter actions the QCPPainter took, with a QPainter. + + \see toPixmap +*/ +void QCustomPlot::toPainter(QCPPainter *painter, int width, int height) +{ + // this method is somewhat similar to toPixmap. Change something here, and a change in toPixmap might be necessary, too. + int newWidth, newHeight; + if (width == 0 || height == 0) + { + newWidth = this->width(); + newHeight = this->height(); + } else + { + newWidth = width; + newHeight = height; + } + + if (painter->isActive()) + { + QRect oldViewport = viewport(); + setViewport(QRect(0, 0, newWidth, newHeight)); + painter->setMode(QCPPainter::pmNoCaching); + // warning: the following is different in toPixmap, because a solid background color is applied there via QPixmap::fill + // here, we need to do this via QPainter::fillRect. + if (mBackgroundBrush.style() != Qt::NoBrush) + painter->fillRect(mViewport, mBackgroundBrush); + draw(painter); + setViewport(oldViewport); + } else + qDebug() << Q_FUNC_INFO << "Passed painter is not active"; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPData +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPData + \brief Holds the data of one single data point for QCPGraph. + + The container for storing multiple data points is \ref QCPDataMap. + + The stored data is: + \li \a key: coordinate on the key axis of this data point + \li \a value: coordinate on the value axis of this data point + \li \a keyErrorMinus: negative error in the key dimension (for error bars) + \li \a keyErrorPlus: positive error in the key dimension (for error bars) + \li \a valueErrorMinus: negative error in the value dimension (for error bars) + \li \a valueErrorPlus: positive error in the value dimension (for error bars) + + \see QCPDataMap +*/ + +/*! + Constructs a data point with key, value and all errors set to zero. +*/ +QCPData::QCPData() : + key(0), + value(0), + keyErrorPlus(0), + keyErrorMinus(0), + valueErrorPlus(0), + valueErrorMinus(0) +{ +} + +/*! + Constructs a data point with the specified \a key and \a value. All errors are set to zero. +*/ +QCPData::QCPData(double key, double value) : + key(key), + value(value), + keyErrorPlus(0), + keyErrorMinus(0), + valueErrorPlus(0), + valueErrorMinus(0) +{ +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPGraph +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPGraph + \brief A plottable representing a graph in a plot. + + \image html QCPGraph.png + + Usually QCustomPlot creates graphs internally via QCustomPlot::addGraph and the resulting + instance is accessed via QCustomPlot::graph. + + To plot data, assign it with the \ref setData or \ref addData functions. + + Graphs are used to display single-valued data. Single-valued means that there should only be one + data point per unique key coordinate. In other words, the graph can't have \a loops. If you do + want to plot non-single-valued curves, rather use the QCPCurve plottable. + + \section appearance Changing the appearance + + The appearance of the graph is mainly determined by the line style, scatter style, brush and pen + of the graph (\ref setLineStyle, \ref setScatterStyle, \ref setBrush, \ref setPen). + + \subsection filling Filling under or between graphs + + QCPGraph knows two types of fills: Normal graph fills towards the zero-value-line parallel to + the key axis of the graph, and fills between two graphs, called channel fills. To enable a fill, + just set a brush with \ref setBrush which is neither Qt::NoBrush nor fully transparent. + + By default, a normal fill towards the zero-value-line will be drawn. To set up a channel fill + between this graph and another one, call \ref setChannelFillGraph with the other graph as + parameter. + + \see QCustomPlot::addGraph, QCustomPlot::graph, QCPLegend::addGraph +*/ + +/*! + Constructs a graph which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value + axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have + the same orientation. If either of these restrictions is violated, a corresponding message is + printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed QCPGraph can be added to the plot with QCustomPlot::addPlottable, QCustomPlot + then takes ownership of the graph. + + To directly create a graph inside a plot, you can also use the simpler QCustomPlot::addGraph function. +*/ +QCPGraph::QCPGraph(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis) +{ + mData = new QCPDataMap; + + setPen(QPen(Qt::blue, 0)); + setErrorPen(QPen(Qt::black)); + setBrush(Qt::NoBrush); + setSelectedPen(QPen(QColor(80, 80, 255), 2.5)); + setSelectedBrush(Qt::NoBrush); + + setLineStyle(lsLine); + setErrorType(etNone); + setErrorBarSize(6); + setErrorBarSkipSymbol(true); + setChannelFillGraph(0); +} + +QCPGraph::~QCPGraph() +{ + delete mData; +} + +/*! + Replaces the current data with the provided \a data. + + If \a copy is set to true, data points in \a data will only be copied. if false, the graph + takes ownership of the passed data and replaces the internal data pointer with it. This is + significantly faster than copying for large datasets. +*/ +void QCPGraph::setData(QCPDataMap *data, bool copy) +{ + if (copy) + { + *mData = *data; + } else + { + delete mData; + mData = data; + } +} + +/*! \overload + + Replaces the current data with the provided points in \a key and \a value pairs. The provided + vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setData(const QVector &key, const QVector &value) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + QCPData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + symmetrical value error of the data points are set to the values in \a valueError. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. + + For asymmetrical errors (plus different from minus), see the overloaded version of this function. +*/ +void QCPGraph::setDataValueError(const QVector &key, const QVector &value, const QVector &valueError) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueError.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + \overload + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + negative value error of the data points are set to the values in \a valueErrorMinus, the positive + value error to \a valueErrorPlus. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setDataValueError(const QVector &key, const QVector &value, const QVector &valueErrorMinus, const QVector &valueErrorPlus) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueErrorMinus.size()); + n = qMin(n, valueErrorPlus.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + symmetrical key error of the data points are set to the values in \a keyError. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. + + For asymmetrical errors (plus different from minus), see the overloaded version of this function. +*/ +void QCPGraph::setDataKeyError(const QVector &key, const QVector &value, const QVector &keyError) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, keyError.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + \overload + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + negative key error of the data points are set to the values in \a keyErrorMinus, the positive + key error to \a keyErrorPlus. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setDataKeyError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, keyErrorMinus.size()); + n = qMin(n, keyErrorPlus.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + symmetrical key and value errors of the data points are set to the values in \a keyError and \a valueError. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. + + For asymmetrical errors (plus different from minus), see the overloaded version of this function. +*/ +void QCPGraph::setDataBothError(const QVector &key, const QVector &value, const QVector &keyError, const QVector &valueError) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueError.size()); + n = qMin(n, keyError.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + \overload + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + negative key and value errors of the data points are set to the values in \a keyErrorMinus and \a valueErrorMinus. The positive + key and value errors are set to the values in \a keyErrorPlus \a valueErrorPlus. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setDataBothError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus, const QVector &valueErrorMinus, const QVector &valueErrorPlus) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueErrorMinus.size()); + n = qMin(n, valueErrorPlus.size()); + n = qMin(n, keyErrorMinus.size()); + n = qMin(n, keyErrorPlus.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + + +/*! + Sets how the single data points are connected in the plot. For scatter-only plots, set \a ls to + \ref lsNone and \ref setScatterStyle to the desired scatter style. + + \see setScatterStyle +*/ +void QCPGraph::setLineStyle(LineStyle ls) +{ + mLineStyle = ls; +} + +/*! + Sets the visual appearance of single data points in the plot. If set to \ref QCPScatterStyle::ssNone, no scatter points + are drawn (e.g. for line-only-plots with appropriate line style). + + \see QCPScatterStyle, setLineStyle +*/ +void QCPGraph::setScatterStyle(const QCPScatterStyle &style) +{ + mScatterStyle = style; +} + +/*! + Sets which kind of error bars (Key Error, Value Error or both) should be drawn on each data + point. If you set \a errorType to something other than \ref etNone, make sure to actually pass + error data via the specific setData functions along with the data points (e.g. \ref + setDataValueError, \ref setDataKeyError, \ref setDataBothError). + + \see ErrorType +*/ +void QCPGraph::setErrorType(ErrorType errorType) +{ + mErrorType = errorType; +} + +/*! + Sets the pen with which the error bars will be drawn. + \see setErrorBarSize, setErrorType +*/ +void QCPGraph::setErrorPen(const QPen &pen) +{ + mErrorPen = pen; +} + +/*! + Sets the width of the handles at both ends of an error bar in pixels. +*/ +void QCPGraph::setErrorBarSize(double size) +{ + mErrorBarSize = size; +} + +/*! + If \a enabled is set to true, the error bar will not be drawn as a solid line under the scatter symbol but + leave some free space around the symbol. + + This feature uses the current scatter size (\ref QCPScatterStyle::setSize) to determine the size + of the area to leave blank. So when drawing Pixmaps as scatter points (\ref + QCPScatterStyle::ssPixmap), the scatter size must be set manually to a value corresponding to the + size of the Pixmap, if the error bars should leave gaps to its boundaries. + + \ref setErrorType, setErrorBarSize, setScatterStyle +*/ +void QCPGraph::setErrorBarSkipSymbol(bool enabled) +{ + mErrorBarSkipSymbol = enabled; +} + +/*! + Sets the target graph for filling the area between this graph and \a targetGraph with the current + brush (\ref setBrush). + + When \a targetGraph is set to 0, a normal graph fill to the zero-value-line will be shown. To + disable any filling, set the brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPGraph::setChannelFillGraph(QCPGraph *targetGraph) +{ + // prevent setting channel target to this graph itself: + if (targetGraph == this) + { + qDebug() << Q_FUNC_INFO << "targetGraph is this graph itself"; + mChannelFillGraph.clear(); + return; + } + // prevent setting channel target to a graph not in the plot: + if (targetGraph && targetGraph->mParentPlot != mParentPlot) + { + qDebug() << Q_FUNC_INFO << "targetGraph not in same plot"; + mChannelFillGraph.clear(); + return; + } + + mChannelFillGraph = targetGraph; +} + +/*! + Adds the provided data points in \a dataMap to the current data. + \see removeData +*/ +void QCPGraph::addData(const QCPDataMap &dataMap) +{ + mData->unite(dataMap); +} + +/*! \overload + Adds the provided single data point in \a data to the current data. + \see removeData +*/ +void QCPGraph::addData(const QCPData &data) +{ + mData->insertMulti(data.key, data); +} + +/*! \overload + Adds the provided single data point as \a key and \a value pair to the current data. + \see removeData +*/ +void QCPGraph::addData(double key, double value) +{ + QCPData newData; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.key, newData); +} + +/*! \overload + Adds the provided data points as \a key and \a value pairs to the current data. + \see removeData +*/ +void QCPGraph::addData(const QVector &keys, const QVector &values) +{ + int n = qMin(keys.size(), values.size()); + QCPData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Removes all data points with keys smaller than \a key. + \see addData, clearData +*/ +void QCPGraph::removeDataBefore(double key) +{ + QCPDataMap::iterator it = mData->begin(); + while (it != mData->end() && it.key() < key) + it = mData->erase(it); +} + +/*! + Removes all data points with keys greater than \a key. + \see addData, clearData +*/ +void QCPGraph::removeDataAfter(double key) +{ + if (mData->isEmpty()) return; + QCPDataMap::iterator it = mData->upperBound(key); + while (it != mData->end()) + it = mData->erase(it); +} + +/*! + Removes all data points with keys between \a fromKey and \a toKey. + if \a fromKey is greater or equal to \a toKey, the function does nothing. To remove + a single data point with known key, use \ref removeData(double key). + + \see addData, clearData +*/ +void QCPGraph::removeData(double fromKey, double toKey) +{ + if (fromKey >= toKey || mData->isEmpty()) return; + QCPDataMap::iterator it = mData->upperBound(fromKey); + QCPDataMap::iterator itEnd = mData->upperBound(toKey); + while (it != itEnd) + it = mData->erase(it); +} + +/*! \overload + + Removes a single data point at \a key. If the position is not known with absolute precision, + consider using \ref removeData(double fromKey, double toKey) with a small fuzziness interval around + the suspected position, depeding on the precision with which the key is known. + + \see addData, clearData +*/ +void QCPGraph::removeData(double key) +{ + mData->remove(key); +} + +/*! + Removes all data points. + \see removeData, removeDataAfter, removeDataBefore +*/ +void QCPGraph::clearData() +{ + mData->clear(); +} + +/* inherits documentation from base class */ +double QCPGraph::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if ((onlySelectable && !mSelectable) || mData->isEmpty()) + return -1; + + return pointDistance(pos); +} + +/*! \overload + + Allows to define whether error bars are taken into consideration when determining the new axis + range. + + \see rescaleKeyAxis, rescaleValueAxis, QCPAbstractPlottable::rescaleAxes, QCustomPlot::rescaleAxes +*/ +void QCPGraph::rescaleAxes(bool onlyEnlarge, bool includeErrorBars) const +{ + rescaleKeyAxis(onlyEnlarge, includeErrorBars); + rescaleValueAxis(onlyEnlarge, includeErrorBars); +} + +/*! \overload + + Allows to define whether error bars (of kind \ref QCPGraph::etKey) are taken into consideration + when determining the new axis range. + + \see rescaleAxes, QCPAbstractPlottable::rescaleKeyAxis +*/ +void QCPGraph::rescaleKeyAxis(bool onlyEnlarge, bool includeErrorBars) const +{ + // this code is a copy of QCPAbstractPlottable::rescaleKeyAxis with the only change + // that getKeyRange is passed the includeErrorBars value. + if (mData->isEmpty()) return; + + QCPAxis *keyAxis = mKeyAxis.data(); + if (!keyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + SignDomain signDomain = sdBoth; + if (keyAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (keyAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getKeyRange(validRange, signDomain, includeErrorBars); + + if (validRange) + { + if (onlyEnlarge) + { + if (keyAxis->range().lower < newRange.lower) + newRange.lower = keyAxis->range().lower; + if (keyAxis->range().upper > newRange.upper) + newRange.upper = keyAxis->range().upper; + } + keyAxis->setRange(newRange); + } +} + +/*! \overload + + Allows to define whether error bars (of kind \ref QCPGraph::etValue) are taken into consideration + when determining the new axis range. + + \see rescaleAxes, QCPAbstractPlottable::rescaleValueAxis +*/ +void QCPGraph::rescaleValueAxis(bool onlyEnlarge, bool includeErrorBars) const +{ + // this code is a copy of QCPAbstractPlottable::rescaleValueAxis with the only change + // is that getValueRange is passed the includeErrorBars value. + if (mData->isEmpty()) return; + + QCPAxis *valueAxis = mValueAxis.data(); + if (!valueAxis) { qDebug() << Q_FUNC_INFO << "invalid value axis"; return; } + + SignDomain signDomain = sdBoth; + if (valueAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (valueAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getValueRange(validRange, signDomain, includeErrorBars); + + if (validRange) + { + if (onlyEnlarge) + { + if (valueAxis->range().lower < newRange.lower) + newRange.lower = valueAxis->range().lower; + if (valueAxis->range().upper > newRange.upper) + newRange.upper = valueAxis->range().upper; + } + valueAxis->setRange(newRange); + } +} + +/* inherits documentation from base class */ +void QCPGraph::draw(QCPPainter *painter) +{ + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (mKeyAxis.data()->range().size() <= 0 || mData->isEmpty()) return; + if (mLineStyle == lsNone && mScatterStyle.isNone()) return; + + // allocate line and (if necessary) point vectors: + QVector *lineData = new QVector; + QVector *pointData = 0; + if (!mScatterStyle.isNone()) + pointData = new QVector; + + // fill vectors with data appropriate to plot style: + getPlotData(lineData, pointData); + + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + QCPDataMap::const_iterator it; + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + if (QCP::isInvalidData(it.value().key, it.value().value) || + QCP::isInvalidData(it.value().keyErrorPlus, it.value().keyErrorMinus) || + QCP::isInvalidData(it.value().valueErrorPlus, it.value().valueErrorPlus)) + qDebug() << Q_FUNC_INFO << "Data point at" << it.key() << "invalid." << "Plottable name:" << name(); + } +#endif + + // draw fill of graph: + drawFill(painter, lineData); + + // draw line: + if (mLineStyle == lsImpulse) + drawImpulsePlot(painter, lineData); + else if (mLineStyle != lsNone) + drawLinePlot(painter, lineData); // also step plots can be drawn as a line plot + + // draw scatters: + if (pointData) + drawScatterPlot(painter, pointData); + + // free allocated line and point vectors: + delete lineData; + if (pointData) + delete pointData; +} + +/* inherits documentation from base class */ +void QCPGraph::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw fill: + if (mBrush.style() != Qt::NoBrush) + { + applyFillAntialiasingHint(painter); + painter->fillRect(QRectF(rect.left(), rect.top()+rect.height()/2.0, rect.width(), rect.height()/3.0), mBrush); + } + // draw line vertically centered: + if (mLineStyle != lsNone) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + painter->drawLine(QLineF(rect.left(), rect.top()+rect.height()/2.0, rect.right()+5, rect.top()+rect.height()/2.0)); // +5 on x2 else last segment is missing from dashed/dotted pens + } + // draw scatter symbol: + if (!mScatterStyle.isNone()) + { + applyScattersAntialiasingHint(painter); + // scale scatter pixmap if it's too large to fit in legend icon rect: + if (mScatterStyle.shape() == QCPScatterStyle::ssPixmap && (mScatterStyle.pixmap().size().width() > rect.width() || mScatterStyle.pixmap().size().height() > rect.height())) + { + QCPScatterStyle scaledStyle(mScatterStyle); + scaledStyle.setPixmap(scaledStyle.pixmap().scaled(rect.size().toSize(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); + scaledStyle.applyTo(painter, mPen); + scaledStyle.drawShape(painter, QRectF(rect).center()); + } else + { + mScatterStyle.applyTo(painter, mPen); + mScatterStyle.drawShape(painter, QRectF(rect).center()); + } + } +} + +/*! \internal + + This function branches out to the line style specific "get(...)PlotData" functions, according to + the line style of the graph. + + \a lineData will be filled with raw points that will be drawn with the according draw functions, + e.g. \ref drawLinePlot and \ref drawImpulsePlot. These aren't necessarily the original data + points, since for step plots for example, additional points are needed for drawing lines that + make up steps. If the line style of the graph is \ref lsNone, the \a lineData vector will be left + untouched. + + \a pointData will be filled with the original data points so \ref drawScatterPlot can draw the + scatter symbols accordingly. If no scatters need to be drawn, i.e. the scatter style's shape is + \ref QCPScatterStyle::ssNone, pass 0 as \a pointData, and this step will be skipped. + + \see getScatterPlotData, getLinePlotData, getStepLeftPlotData, getStepRightPlotData, + getStepCenterPlotData, getImpulsePlotData +*/ +void QCPGraph::getPlotData(QVector *lineData, QVector *pointData) const +{ + switch(mLineStyle) + { + case lsNone: getScatterPlotData(pointData); break; + case lsLine: getLinePlotData(lineData, pointData); break; + case lsStepLeft: getStepLeftPlotData(lineData, pointData); break; + case lsStepRight: getStepRightPlotData(lineData, pointData); break; + case lsStepCenter: getStepCenterPlotData(lineData, pointData); break; + case lsImpulse: getImpulsePlotData(lineData, pointData); break; + } +} + +/*! \internal + + If line style is \ref lsNone and the scatter style's shape is not \ref QCPScatterStyle::ssNone, + this function serves at providing the visible data points in \a pointData, so the \ref + drawScatterPlot function can draw the scatter points accordingly. + + If line style is not \ref lsNone, this function is not called and the data for the scatter points + are (if needed) calculated inside the corresponding other "get(...)PlotData" functions. + + \see drawScatterPlot +*/ +void QCPGraph::getScatterPlotData(QVector *pointData) const +{ + if (!pointData) return; + QCPAxis *keyAxis = mKeyAxis.data(); + if (!keyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + // prepare vectors: + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + while (it != upperEnd) + { + (*pointData)[i] = it.value(); + ++i; + ++it; + } + } +} + +/*! \internal + + Places the raw data points needed for a normal linearly connected graph in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getLinePlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->reserve(dataCount+2); // added 2 to reserve memory for lower/upper fill base points that might be needed for fill + lineData->resize(dataCount); + if (pointData) + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + while (it != upperEnd) + { + if (pointData) + (*pointData)[i] = it.value(); + (*lineData)[i].setX(valueAxis->coordToPixel(it.value().value)); + (*lineData)[i].setY(keyAxis->coordToPixel(it.key())); + ++i; + ++it; + } + } else // key axis is horizontal + { + while (it != upperEnd) + { + if (pointData) + (*pointData)[i] = it.value(); + (*lineData)[i].setX(keyAxis->coordToPixel(it.key())); + (*lineData)[i].setY(valueAxis->coordToPixel(it.value().value)); + ++i; + ++it; + } + } + } +} + +/*! + \internal + Places the raw data points needed for a step plot with left oriented steps in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getStepLeftPlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->reserve(dataCount*2+2); // added 2 to reserve memory for lower/upper fill base points that might be needed for fill + lineData->resize(dataCount*2); // multiplied by 2 because step plot needs two polyline points per one actual data point + if (pointData) + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++i; + ++it; + } + } else // key axis is horizontal + { + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++i; + ++it; + } + } + } +} + +/*! + \internal + Places the raw data points needed for a step plot with right oriented steps in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getStepRightPlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->reserve(dataCount*2+2); // added 2 to reserve memory for lower/upper fill base points that might be needed for fill + lineData->resize(dataCount*2); // multiplied by 2 because step plot needs two polyline points per one actual data point + if (pointData) + pointData->resize(dataCount); + + // position points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double lastKey = keyAxis->coordToPixel(it.key()); + double value; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + value = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(value); + (*lineData)[i].setY(lastKey); + ++i; + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(value); + (*lineData)[i].setY(lastKey); + ++i; + ++it; + } + } else // key axis is horizontal + { + double lastKey = keyAxis->coordToPixel(it.key()); + double value; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + value = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(value); + ++i; + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(value); + ++i; + ++it; + } + } + } +} + +/*! + \internal + Places the raw data points needed for a step plot with centered steps in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getStepCenterPlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + // added 2 to reserve memory for lower/upper fill base points that might be needed for base fill + // multiplied by 2 because step plot needs two polyline points per one actual data point + lineData->reserve(dataCount*2+2); + lineData->resize(dataCount*2); + if (pointData) + pointData->resize(dataCount); + + // position points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double lastKey = keyAxis->coordToPixel(it.key()); + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(lastKey); + ++it; + ++i; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = (keyAxis->coordToPixel(it.key())-lastKey)*0.5 + lastKey; + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++it; + ++i; + } + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(lastKey); + } else // key axis is horizontal + { + double lastKey = keyAxis->coordToPixel(it.key()); + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(lastValue); + ++it; + ++i; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = (keyAxis->coordToPixel(it.key())-lastKey)*0.5 + lastKey; + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++it; + ++i; + } + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(lastValue); + } + } +} + +/*! + \internal + Places the raw data points needed for an impulse plot in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawImpulsePlot +*/ +void QCPGraph::getImpulsePlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->resize(dataCount*2); // no need to reserve 2 extra points, because there is no fill for impulse plot + if (pointData) + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double zeroPointX = valueAxis->coordToPixel(0); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(zeroPointX); + (*lineData)[i].setY(key); + ++i; + (*lineData)[i].setX(valueAxis->coordToPixel(it.value().value)); + (*lineData)[i].setY(key); + ++i; + ++it; + } + } else // key axis is horizontal + { + double zeroPointY = valueAxis->coordToPixel(0); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(key); + (*lineData)[i].setY(zeroPointY); + ++i; + (*lineData)[i].setX(key); + (*lineData)[i].setY(valueAxis->coordToPixel(it.value().value)); + ++i; + ++it; + } + } + } +} + +/*! \internal + + Draws the fill of the graph with the specified brush. + + If the fill is a normal fill towards the zero-value-line, only the \a lineData is required (and + two extra points at the zero-value-line, which are added by \ref addFillBasePoints and removed by + \ref removeFillBasePoints after the fill drawing is done). + + If the fill is a channel fill between this QCPGraph and another QCPGraph (mChannelFillGraph), the + more complex polygon is calculated with the \ref getChannelFillPolygon function. + + \see drawLinePlot +*/ +void QCPGraph::drawFill(QCPPainter *painter, QVector *lineData) const +{ + if (mLineStyle == lsImpulse) return; // fill doesn't make sense for impulse plot + if (mainBrush().style() == Qt::NoBrush || mainBrush().color().alpha() == 0) return; + + applyFillAntialiasingHint(painter); + if (!mChannelFillGraph) + { + // draw base fill under graph, fill goes all the way to the zero-value-line: + addFillBasePoints(lineData); + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(QPolygonF(*lineData)); + removeFillBasePoints(lineData); + } else + { + // draw channel fill between this graph and mChannelFillGraph: + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(getChannelFillPolygon(lineData)); + } +} + +/*! \internal + + Draws scatter symbols at every data point passed in \a pointData. scatter symbols are independent + of the line style and are always drawn if the scatter style's shape is not \ref + QCPScatterStyle::ssNone. Hence, the \a pointData vector is outputted by all "get(...)PlotData" + functions, together with the (line style dependent) line data. + + \see drawLinePlot, drawImpulsePlot +*/ +void QCPGraph::drawScatterPlot(QCPPainter *painter, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + // draw error bars: + if (mErrorType != etNone) + { + applyErrorBarsAntialiasingHint(painter); + painter->setPen(mErrorPen); + if (keyAxis->orientation() == Qt::Vertical) + { + for (int i=0; isize(); ++i) + drawError(painter, valueAxis->coordToPixel(pointData->at(i).value), keyAxis->coordToPixel(pointData->at(i).key), pointData->at(i)); + } else + { + for (int i=0; isize(); ++i) + drawError(painter, keyAxis->coordToPixel(pointData->at(i).key), valueAxis->coordToPixel(pointData->at(i).value), pointData->at(i)); + } + } + + // draw scatter point symbols: + applyScattersAntialiasingHint(painter); + mScatterStyle.applyTo(painter, mPen); + if (keyAxis->orientation() == Qt::Vertical) + { + for (int i=0; isize(); ++i) + mScatterStyle.drawShape(painter, valueAxis->coordToPixel(pointData->at(i).value), keyAxis->coordToPixel(pointData->at(i).key)); + } else + { + for (int i=0; isize(); ++i) + mScatterStyle.drawShape(painter, keyAxis->coordToPixel(pointData->at(i).key), valueAxis->coordToPixel(pointData->at(i).value)); + } +} + +/*! \internal + + Draws line graphs from the provided data. It connects all points in \a lineData, which was + created by one of the "get(...)PlotData" functions for line styles that require simple line + connections between the point vector they create. These are for example \ref getLinePlotData, + \ref getStepLeftPlotData, \ref getStepRightPlotData and \ref getStepCenterPlotData. + + \see drawScatterPlot, drawImpulsePlot +*/ +void QCPGraph::drawLinePlot(QCPPainter *painter, QVector *lineData) const +{ + // draw line of graph: + if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(Qt::NoBrush); + + /* Draws polyline in batches, currently not used: + int p = 0; + while (p < lineData->size()) + { + int batch = qMin(25, lineData->size()-p); + if (p != 0) + { + ++batch; + --p; // to draw the connection lines between two batches + } + painter->drawPolyline(lineData->constData()+p, batch); + p += batch; + } + */ + + // if drawing solid line and not in PDF, use much faster line drawing instead of polyline: + if (mParentPlot->plottingHints().testFlag(QCP::phFastPolylines) && + painter->pen().style() == Qt::SolidLine && + !painter->modes().testFlag(QCPPainter::pmVectorized)&& + !painter->modes().testFlag(QCPPainter::pmNoCaching)) + { + for (int i=1; isize(); ++i) + painter->drawLine(lineData->at(i-1), lineData->at(i)); + } else + { + painter->drawPolyline(QPolygonF(*lineData)); + } + } +} + +/*! \internal + + Draws impulses from the provided data, i.e. it connects all line pairs in \a lineData, which was + created by \ref getImpulsePlotData. + + \see drawScatterPlot, drawLinePlot +*/ +void QCPGraph::drawImpulsePlot(QCPPainter *painter, QVector *lineData) const +{ + // draw impulses: + if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + QPen pen = mainPen(); + pen.setCapStyle(Qt::FlatCap); // so impulse line doesn't reach beyond zero-line + painter->setPen(pen); + painter->setBrush(Qt::NoBrush); + painter->drawLines(*lineData); + } +} + +/*! \internal + + called by the scatter drawing function (\ref drawScatterPlot) to draw the error bars on one data + point. \a x and \a y pixel positions of the data point are passed since they are already known in + pixel coordinates in the drawing function, so we save some extra coordToPixel transforms here. \a + data is therefore only used for the errors, not key and value. +*/ +void QCPGraph::drawError(QCPPainter *painter, double x, double y, const QCPData &data) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + double a, b; // positions of error bar bounds in pixels + double barWidthHalf = mErrorBarSize*0.5; + double skipSymbolMargin = mScatterStyle.size(); // pixels left blank per side, when mErrorBarSkipSymbol is true + + if (keyAxis->orientation() == Qt::Vertical) + { + // draw key error vertically and value error horizontally + if (mErrorType == etKey || mErrorType == etBoth) + { + a = keyAxis->coordToPixel(data.key-data.keyErrorMinus); + b = keyAxis->coordToPixel(data.key+data.keyErrorPlus); + if (keyAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (a-y > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(x, a, x, y+skipSymbolMargin)); + if (y-b > skipSymbolMargin) + painter->drawLine(QLineF(x, y-skipSymbolMargin, x, b)); + } else + painter->drawLine(QLineF(x, a, x, b)); + // draw handles: + painter->drawLine(QLineF(x-barWidthHalf, a, x+barWidthHalf, a)); + painter->drawLine(QLineF(x-barWidthHalf, b, x+barWidthHalf, b)); + } + if (mErrorType == etValue || mErrorType == etBoth) + { + a = valueAxis->coordToPixel(data.value-data.valueErrorMinus); + b = valueAxis->coordToPixel(data.value+data.valueErrorPlus); + if (valueAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (x-a > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(a, y, x-skipSymbolMargin, y)); + if (b-x > skipSymbolMargin) + painter->drawLine(QLineF(x+skipSymbolMargin, y, b, y)); + } else + painter->drawLine(QLineF(a, y, b, y)); + // draw handles: + painter->drawLine(QLineF(a, y-barWidthHalf, a, y+barWidthHalf)); + painter->drawLine(QLineF(b, y-barWidthHalf, b, y+barWidthHalf)); + } + } else // mKeyAxis->orientation() is Qt::Horizontal + { + // draw value error vertically and key error horizontally + if (mErrorType == etKey || mErrorType == etBoth) + { + a = keyAxis->coordToPixel(data.key-data.keyErrorMinus); + b = keyAxis->coordToPixel(data.key+data.keyErrorPlus); + if (keyAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (x-a > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(a, y, x-skipSymbolMargin, y)); + if (b-x > skipSymbolMargin) + painter->drawLine(QLineF(x+skipSymbolMargin, y, b, y)); + } else + painter->drawLine(QLineF(a, y, b, y)); + // draw handles: + painter->drawLine(QLineF(a, y-barWidthHalf, a, y+barWidthHalf)); + painter->drawLine(QLineF(b, y-barWidthHalf, b, y+barWidthHalf)); + } + if (mErrorType == etValue || mErrorType == etBoth) + { + a = valueAxis->coordToPixel(data.value-data.valueErrorMinus); + b = valueAxis->coordToPixel(data.value+data.valueErrorPlus); + if (valueAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (a-y > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(x, a, x, y+skipSymbolMargin)); + if (y-b > skipSymbolMargin) + painter->drawLine(QLineF(x, y-skipSymbolMargin, x, b)); + } else + painter->drawLine(QLineF(x, a, x, b)); + // draw handles: + painter->drawLine(QLineF(x-barWidthHalf, a, x+barWidthHalf, a)); + painter->drawLine(QLineF(x-barWidthHalf, b, x+barWidthHalf, b)); + } + } +} + +/*! \internal + + called by the specific plot data generating functions "get(...)PlotData" to determine which data + range is visible, so only that needs to be processed. + + \a lower returns an iterator to the lowest data point that needs to be taken into account when + plotting. Note that in order to get a clean plot all the way to the edge of the axes, \a lower + may still be outside the visible range. + + \a upper returns an iterator to the highest data point. Same as before, \a upper may also lie + outside of the visible range. + + \a count number of data points that need plotting, i.e. points between \a lower and \a upper, + including them. This is useful for allocating the array of QPointFs in the specific + drawing functions. + + if the graph contains no data, \a count is zero and both \a lower and \a upper point to constEnd. +*/ +void QCPGraph::getVisibleDataBounds(QCPDataMap::const_iterator &lower, QCPDataMap::const_iterator &upper, int &count) const +{ + if (!mKeyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + if (mData->isEmpty()) + { + lower = mData->constEnd(); + upper = mData->constEnd(); + count = 0; + return; + } + + // get visible data range as QMap iterators + QCPDataMap::const_iterator lbound = mData->lowerBound(mKeyAxis.data()->range().lower); + QCPDataMap::const_iterator ubound = mData->upperBound(mKeyAxis.data()->range().upper); + bool lowoutlier = lbound != mData->constBegin(); // indicates whether there exist points below axis range + bool highoutlier = ubound != mData->constEnd(); // indicates whether there exist points above axis range + + lower = (lowoutlier ? lbound-1 : lbound); // data point range that will be actually drawn + upper = (highoutlier ? ubound : ubound-1); // data point range that will be actually drawn + + // count number of points in range lower to upper (including them), so we can allocate array for them in draw functions: + QCPDataMap::const_iterator it = lower; + count = 1; + while (it != upper) + { + ++it; + ++count; + } +} + +/*! \internal + + The line data vector generated by e.g. getLinePlotData contains only the line that connects the + data points. If the graph needs to be filled, two additional points need to be added at the + value-zero-line in the lower and upper key positions of the graph. This function calculates these + points and adds them to the end of \a lineData. Since the fill is typically drawn before the line + stroke, these added points need to be removed again after the fill is done, with the + removeFillBasePoints function. + + The expanding of \a lineData by two points will not cause unnecessary memory reallocations, + because the data vector generation functions (getLinePlotData etc.) reserve two extra points when + they allocate memory for \a lineData. + + \see removeFillBasePoints, lowerFillBasePoint, upperFillBasePoint +*/ +void QCPGraph::addFillBasePoints(QVector *lineData) const +{ + if (!mKeyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + // append points that close the polygon fill at the key axis: + if (mKeyAxis.data()->orientation() == Qt::Vertical) + { + *lineData << upperFillBasePoint(lineData->last().y()); + *lineData << lowerFillBasePoint(lineData->first().y()); + } else + { + *lineData << upperFillBasePoint(lineData->last().x()); + *lineData << lowerFillBasePoint(lineData->first().x()); + } +} + +/*! \internal + + removes the two points from \a lineData that were added by \ref addFillBasePoints. + + \see addFillBasePoints, lowerFillBasePoint, upperFillBasePoint +*/ +void QCPGraph::removeFillBasePoints(QVector *lineData) const +{ + lineData->remove(lineData->size()-2, 2); +} + +/*! \internal + + called by \ref addFillBasePoints to conveniently assign the point which closes the fill polygon + on the lower side of the zero-value-line parallel to the key axis. The logarithmic axis scale + case is a bit special, since the zero-value-line in pixel coordinates is in positive or negative + infinity. So this case is handled separately by just closing the fill polygon on the axis which + lies in the direction towards the zero value. + + \a lowerKey will be the the key (in pixels) of the returned point. Depending on whether the key + axis is horizontal or vertical, \a lowerKey will end up as the x or y value of the returned + point, respectively. + + \see upperFillBasePoint, addFillBasePoints +*/ +QPointF QCPGraph::lowerFillBasePoint(double lowerKey) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPointF(); } + + QPointF point; + if (valueAxis->scaleType() == QCPAxis::stLinear) + { + if (keyAxis->axisType() == QCPAxis::atLeft) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(lowerKey); + } else if (keyAxis->axisType() == QCPAxis::atRight) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(lowerKey); + } else if (keyAxis->axisType() == QCPAxis::atTop) + { + point.setX(lowerKey); + point.setY(valueAxis->coordToPixel(0)); + } else if (keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(lowerKey); + point.setY(valueAxis->coordToPixel(0)); + } + } else // valueAxis->mScaleType == QCPAxis::stLogarithmic + { + // In logarithmic scaling we can't just draw to value zero so we just fill all the way + // to the axis which is in the direction towards zero + if (keyAxis->orientation() == Qt::Vertical) + { + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setX(keyAxis->axisRect()->right()); + else + point.setX(keyAxis->axisRect()->left()); + point.setY(lowerKey); + } else if (keyAxis->axisType() == QCPAxis::atTop || keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(lowerKey); + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setY(keyAxis->axisRect()->top()); + else + point.setY(keyAxis->axisRect()->bottom()); + } + } + return point; +} + +/*! \internal + + called by \ref addFillBasePoints to conveniently assign the point which closes the fill + polygon on the upper side of the zero-value-line parallel to the key axis. The logarithmic axis + scale case is a bit special, since the zero-value-line in pixel coordinates is in positive or + negative infinity. So this case is handled separately by just closing the fill polygon on the + axis which lies in the direction towards the zero value. + + \a upperKey will be the the key (in pixels) of the returned point. Depending on whether the key + axis is horizontal or vertical, \a upperKey will end up as the x or y value of the returned + point, respectively. + + \see lowerFillBasePoint, addFillBasePoints +*/ +QPointF QCPGraph::upperFillBasePoint(double upperKey) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPointF(); } + + QPointF point; + if (valueAxis->scaleType() == QCPAxis::stLinear) + { + if (keyAxis->axisType() == QCPAxis::atLeft) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(upperKey); + } else if (keyAxis->axisType() == QCPAxis::atRight) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(upperKey); + } else if (keyAxis->axisType() == QCPAxis::atTop) + { + point.setX(upperKey); + point.setY(valueAxis->coordToPixel(0)); + } else if (keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(upperKey); + point.setY(valueAxis->coordToPixel(0)); + } + } else // valueAxis->mScaleType == QCPAxis::stLogarithmic + { + // In logarithmic scaling we can't just draw to value 0 so we just fill all the way + // to the axis which is in the direction towards 0 + if (keyAxis->orientation() == Qt::Vertical) + { + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setX(keyAxis->axisRect()->right()); + else + point.setX(keyAxis->axisRect()->left()); + point.setY(upperKey); + } else if (keyAxis->axisType() == QCPAxis::atTop || keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(upperKey); + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setY(keyAxis->axisRect()->top()); + else + point.setY(keyAxis->axisRect()->bottom()); + } + } + return point; +} + +/*! \internal + + Generates the polygon needed for drawing channel fills between this graph (data passed via \a + lineData) and the graph specified by mChannelFillGraph (data generated by calling its \ref + getPlotData function). May return an empty polygon if the key ranges have no overlap or fill + target graph and this graph don't have same orientation (i.e. both key axes horizontal or both + key axes vertical). For increased performance (due to implicit sharing), keep the returned + QPolygonF const. +*/ +const QPolygonF QCPGraph::getChannelFillPolygon(const QVector *lineData) const +{ + if (!mChannelFillGraph) + return QPolygonF(); + + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPolygonF(); } + if (!mChannelFillGraph.data()->mKeyAxis) { qDebug() << Q_FUNC_INFO << "channel fill target key axis invalid"; return QPolygonF(); } + + if (mChannelFillGraph.data()->mKeyAxis.data()->orientation() != keyAxis->orientation()) + return QPolygonF(); // don't have same axis orientation, can't fill that (Note: if keyAxis fits, valueAxis will fit too, because it's always orthogonal to keyAxis) + + if (lineData->isEmpty()) return QPolygonF(); + QVector otherData; + mChannelFillGraph.data()->getPlotData(&otherData, 0); + if (otherData.isEmpty()) return QPolygonF(); + QVector thisData; + thisData.reserve(lineData->size()+otherData.size()); // because we will join both vectors at end of this function + for (int i=0; isize(); ++i) // don't use the vector<<(vector), it squeezes internally, which ruins the performance tuning with reserve() + thisData << lineData->at(i); + + // pointers to be able to swap them, depending which data range needs cropping: + QVector *staticData = &thisData; + QVector *croppedData = &otherData; + + // crop both vectors to ranges in which the keys overlap (which coord is key, depends on axisType): + if (keyAxis->orientation() == Qt::Horizontal) + { + // x is key + // if an axis range is reversed, the data point keys will be descending. Reverse them, since following algorithm assumes ascending keys: + if (staticData->first().x() > staticData->last().x()) + { + int size = staticData->size(); + for (int i=0; ifirst().x() > croppedData->last().x()) + { + int size = croppedData->size(); + for (int i=0; ifirst().x() < croppedData->first().x()) // other one must be cropped + qSwap(staticData, croppedData); + int lowBound = findIndexBelowX(croppedData, staticData->first().x()); + if (lowBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(0, lowBound); + // set lowest point of cropped data to fit exactly key position of first static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + double slope; + if (croppedData->at(1).x()-croppedData->at(0).x() != 0) + slope = (croppedData->at(1).y()-croppedData->at(0).y())/(croppedData->at(1).x()-croppedData->at(0).x()); + else + slope = 0; + (*croppedData)[0].setY(croppedData->at(0).y()+slope*(staticData->first().x()-croppedData->at(0).x())); + (*croppedData)[0].setX(staticData->first().x()); + + // crop upper bound: + if (staticData->last().x() > croppedData->last().x()) // other one must be cropped + qSwap(staticData, croppedData); + int highBound = findIndexAboveX(croppedData, staticData->last().x()); + if (highBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(highBound+1, croppedData->size()-(highBound+1)); + // set highest point of cropped data to fit exactly key position of last static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + int li = croppedData->size()-1; // last index + if (croppedData->at(li).x()-croppedData->at(li-1).x() != 0) + slope = (croppedData->at(li).y()-croppedData->at(li-1).y())/(croppedData->at(li).x()-croppedData->at(li-1).x()); + else + slope = 0; + (*croppedData)[li].setY(croppedData->at(li-1).y()+slope*(staticData->last().x()-croppedData->at(li-1).x())); + (*croppedData)[li].setX(staticData->last().x()); + } else // mKeyAxis->orientation() == Qt::Vertical + { + // y is key + // similar to "x is key" but switched x,y. Further, lower/upper meaning is inverted compared to x, + // because in pixel coordinates, y increases from top to bottom, not bottom to top like data coordinate. + // if an axis range is reversed, the data point keys will be descending. Reverse them, since following algorithm assumes ascending keys: + if (staticData->first().y() < staticData->last().y()) + { + int size = staticData->size(); + for (int i=0; ifirst().y() < croppedData->last().y()) + { + int size = croppedData->size(); + for (int i=0; ifirst().y() > croppedData->first().y()) // other one must be cropped + qSwap(staticData, croppedData); + int lowBound = findIndexAboveY(croppedData, staticData->first().y()); + if (lowBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(0, lowBound); + // set lowest point of cropped data to fit exactly key position of first static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + double slope; + if (croppedData->at(1).y()-croppedData->at(0).y() != 0) // avoid division by zero in step plots + slope = (croppedData->at(1).x()-croppedData->at(0).x())/(croppedData->at(1).y()-croppedData->at(0).y()); + else + slope = 0; + (*croppedData)[0].setX(croppedData->at(0).x()+slope*(staticData->first().y()-croppedData->at(0).y())); + (*croppedData)[0].setY(staticData->first().y()); + + // crop upper bound: + if (staticData->last().y() < croppedData->last().y()) // other one must be cropped + qSwap(staticData, croppedData); + int highBound = findIndexBelowY(croppedData, staticData->last().y()); + if (highBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(highBound+1, croppedData->size()-(highBound+1)); + // set highest point of cropped data to fit exactly key position of last static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + int li = croppedData->size()-1; // last index + if (croppedData->at(li).y()-croppedData->at(li-1).y() != 0) // avoid division by zero in step plots + slope = (croppedData->at(li).x()-croppedData->at(li-1).x())/(croppedData->at(li).y()-croppedData->at(li-1).y()); + else + slope = 0; + (*croppedData)[li].setX(croppedData->at(li-1).x()+slope*(staticData->last().y()-croppedData->at(li-1).y())); + (*croppedData)[li].setY(staticData->last().y()); + } + + // return joined: + for (int i=otherData.size()-1; i>=0; --i) // insert reversed, otherwise the polygon will be twisted + thisData << otherData.at(i); + return QPolygonF(thisData); +} + +/*! \internal + + Finds the smallest index of \a data, whose points x value is just above \a x. Assumes x values in + \a data points are ordered ascending, as is the case when plotting with horizontal key axis. + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexAboveX(const QVector *data, double x) const +{ + for (int i=data->size()-1; i>=0; --i) + { + if (data->at(i).x() < x) + { + if (isize()-1) + return i+1; + else + return data->size()-1; + } + } + return -1; +} + +/*! \internal + + Finds the highest index of \a data, whose points x value is just below \a x. Assumes x values in + \a data points are ordered ascending, as is the case when plotting with horizontal key axis. + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexBelowX(const QVector *data, double x) const +{ + for (int i=0; isize(); ++i) + { + if (data->at(i).x() > x) + { + if (i>0) + return i-1; + else + return 0; + } + } + return -1; +} + +/*! \internal + + Finds the smallest index of \a data, whose points y value is just above \a y. Assumes y values in + \a data points are ordered descending, as is the case when plotting with vertical key axis. + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexAboveY(const QVector *data, double y) const +{ + for (int i=0; isize(); ++i) + { + if (data->at(i).y() < y) + { + if (i>0) + return i-1; + else + return 0; + } + } + return -1; +} + +/*! \internal + + Calculates the (minimum) distance (in pixels) the graph's representation has from the given \a + pixelPoint in pixels. This is used to determine whether the graph was clicked or not, e.g. in + \ref selectTest. + + If either the graph has no data or if the line style is \ref lsNone and the scatter style's shape + is \ref QCPScatterStyle::ssNone (i.e. there is no visual representation of the graph), returns + 500. +*/ +double QCPGraph::pointDistance(const QPointF &pixelPoint) const +{ + if (mData->isEmpty()) + { + qDebug() << Q_FUNC_INFO << "requested point distance on graph" << mName << "without data"; + return 500; + } + if (mData->size() == 1) + { + QPointF dataPoint = coordsToPixels(mData->constBegin().key(), mData->constBegin().value().value); + return QVector2D(dataPoint-pixelPoint).length(); + } + + if (mLineStyle == lsNone && mScatterStyle.isNone()) + return 500; + + // calculate minimum distances to graph representation: + if (mLineStyle == lsNone) + { + // no line displayed, only calculate distance to scatter points: + QVector *pointData = new QVector; + getScatterPlotData(pointData); + double minDistSqr = std::numeric_limits::max(); + QPointF ptA; + QPointF ptB = coordsToPixels(pointData->at(0).key, pointData->at(0).value); // getScatterPlotData returns in plot coordinates, so transform to pixels + for (int i=1; isize(); ++i) + { + ptA = ptB; + ptB = coordsToPixels(pointData->at(i).key, pointData->at(i).value); + double currentDistSqr = distSqrToLine(ptA, ptB, pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + delete pointData; + return sqrt(minDistSqr); + } else + { + // line displayed calculate distance to line segments: + QVector *lineData = new QVector; + getPlotData(lineData, 0); // unlike with getScatterPlotData we get pixel coordinates here + double minDistSqr = std::numeric_limits::max(); + if (mLineStyle == lsImpulse) + { + // impulse plot differs from other line styles in that the lineData points are only pairwise connected: + for (int i=0; isize()-1; i+=2) // iterate pairs + { + double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + } else + { + // all other line plots (line and step) connect points directly: + for (int i=0; isize()-1; ++i) + { + double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + } + delete lineData; + return sqrt(minDistSqr); + } +} + +/*! \internal + + Finds the highest index of \a data, whose points y value is just below \a y. Assumes y values in + \a data points are ordered descending, as is the case when plotting with vertical key axis (since + keys are ordered ascending). + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexBelowY(const QVector *data, double y) const +{ + for (int i=data->size()-1; i>=0; --i) + { + if (data->at(i).y() > y) + { + if (isize()-1) + return i+1; + else + return data->size()-1; + } + } + return -1; +} + +/* inherits documentation from base class */ +QCPRange QCPGraph::getKeyRange(bool &validRange, SignDomain inSignDomain) const +{ + // just call the specialized version which takes an additional argument whether error bars + // should also be taken into consideration for range calculation. We set this to true here. + return getKeyRange(validRange, inSignDomain, true); +} + +/* inherits documentation from base class */ +QCPRange QCPGraph::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + // just call the specialized version which takes an additional argument whether error bars + // should also be taken into consideration for range calculation. We set this to true here. + return getValueRange(validRange, inSignDomain, true); +} + +/*! \overload + + Allows to specify whether the error bars should be included in the range calculation. + + \see getKeyRange(bool &validRange, SignDomain inSignDomain) +*/ +QCPRange QCPGraph::getKeyRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current, currentErrorMinus, currentErrorPlus; + + if (inSignDomain == sdBoth) // range may be anywhere + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); + if (current-currentErrorMinus < range.lower || !haveLower) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if (current+currentErrorPlus > range.upper || !haveUpper) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + ++it; + } + } else if (inSignDomain == sdNegative) // range may only be in the negative sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus < 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus < 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to geht that point. + { + if ((current < range.lower || !haveLower) && current < 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current < 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } else if (inSignDomain == sdPositive) // range may only be in the positive sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus > 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus > 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to get that point. + { + if ((current < range.lower || !haveLower) && current > 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current > 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } + + validRange = haveLower && haveUpper; + return range; +} + +/*! \overload + + Allows to specify whether the error bars should be included in the range calculation. + + \see getValueRange(bool &validRange, SignDomain inSignDomain) +*/ +QCPRange QCPGraph::getValueRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current, currentErrorMinus, currentErrorPlus; + + if (inSignDomain == sdBoth) // range may be anywhere + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); + if (current-currentErrorMinus < range.lower || !haveLower) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if (current+currentErrorPlus > range.upper || !haveUpper) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + ++it; + } + } else if (inSignDomain == sdNegative) // range may only be in the negative sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus < 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus < 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to get that point. + { + if ((current < range.lower || !haveLower) && current < 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current < 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } else if (inSignDomain == sdPositive) // range may only be in the positive sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus > 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus > 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to geht that point. + { + if ((current < range.lower || !haveLower) && current > 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current > 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } + + validRange = haveLower && haveUpper; + return range; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPCurveData +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPCurveData + \brief Holds the data of one single data point for QCPCurve. + + The container for storing multiple data points is \ref QCPCurveDataMap. + + The stored data is: + \li \a t: the free parameter of the curve at this curve point (cp. the mathematical vector (x(t), y(t))) + \li \a key: coordinate on the key axis of this curve point + \li \a value: coordinate on the value axis of this curve point + + \see QCPCurveDataMap +*/ + +/*! + Constructs a curve data point with t, key and value set to zero. +*/ +QCPCurveData::QCPCurveData() : + t(0), + key(0), + value(0) +{ +} + +/*! + Constructs a curve data point with the specified \a t, \a key and \a value. +*/ +QCPCurveData::QCPCurveData(double t, double key, double value) : + t(t), + key(key), + value(value) +{ +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPCurve +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPCurve + \brief A plottable representing a parametric curve in a plot. + + \image html QCPCurve.png + + Unlike QCPGraph, plottables of this type may have multiple points with the same key coordinate, + so their visual representation can have \a loops. This is realized by introducing a third + coordinate \a t, which defines the order of the points described by the other two coordinates \a + x and \a y. + + To plot data, assign it with the \ref setData or \ref addData functions. + + \section appearance Changing the appearance + + The appearance of the curve is determined by the pen and the brush (\ref setPen, \ref setBrush). + \section usage Usage + + Like all data representing objects in QCustomPlot, the QCPCurve is a plottable (QCPAbstractPlottable). So + the plottable-interface of QCustomPlot applies (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) + + Usually, you first create an instance: + \code + QCPCurve *newCurve = new QCPCurve(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot with QCustomPlot::addPlottable: + \code + customPlot->addPlottable(newCurve);\endcode + and then modify the properties of the newly created plottable, e.g.: + \code + newCurve->setName("Fermat's Spiral"); + newCurve->setData(tData, xData, yData);\endcode +*/ + +/*! + Constructs a curve which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value + axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have + the same orientation. If either of these restrictions is violated, a corresponding message is + printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed QCPCurve can be added to the plot with QCustomPlot::addPlottable, QCustomPlot + then takes ownership of the graph. +*/ +QCPCurve::QCPCurve(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis) +{ + mData = new QCPCurveDataMap; + mPen.setColor(Qt::blue); + mPen.setStyle(Qt::SolidLine); + mBrush.setColor(Qt::blue); + mBrush.setStyle(Qt::NoBrush); + mSelectedPen = mPen; + mSelectedPen.setWidthF(2.5); + mSelectedPen.setColor(QColor(80, 80, 255)); // lighter than Qt::blue of mPen + mSelectedBrush = mBrush; + + setScatterStyle(QCPScatterStyle()); + setLineStyle(lsLine); +} + +QCPCurve::~QCPCurve() +{ + delete mData; +} + +/*! + Replaces the current data with the provided \a data. + + If \a copy is set to true, data points in \a data will only be copied. if false, the plottable + takes ownership of the passed data and replaces the internal data pointer with it. This is + significantly faster than copying for large datasets. +*/ +void QCPCurve::setData(QCPCurveDataMap *data, bool copy) +{ + if (copy) + { + *mData = *data; + } else + { + delete mData; + mData = data; + } +} + +/*! \overload + + Replaces the current data with the provided points in \a t, \a key and \a value tuples. The + provided vectors should have equal length. Else, the number of added points will be the size of + the smallest vector. +*/ +void QCPCurve::setData(const QVector &t, const QVector &key, const QVector &value) +{ + mData->clear(); + int n = t.size(); + n = qMin(n, key.size()); + n = qMin(n, value.size()); + QCPCurveData newData; + for (int i=0; iinsertMulti(newData.t, newData); + } +} + +/*! \overload + + Replaces the current data with the provided \a key and \a value pairs. The t parameter + of each data point will be set to the integer index of the respective key/value pair. +*/ +void QCPCurve::setData(const QVector &key, const QVector &value) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + QCPCurveData newData; + for (int i=0; iinsertMulti(newData.t, newData); + } +} + +/*! + Sets the visual appearance of single data points in the plot. If set to \ref + QCPScatterStyle::ssNone, no scatter points are drawn (e.g. for line-only plots with appropriate + line style). + + \see QCPScatterStyle, setLineStyle +*/ +void QCPCurve::setScatterStyle(const QCPScatterStyle &style) +{ + mScatterStyle = style; +} + +/*! + Sets how the single data points are connected in the plot or how they are represented visually + apart from the scatter symbol. For scatter-only plots, set \a style to \ref lsNone and \ref + setScatterStyle to the desired scatter style. + + \see setScatterStyle +*/ +void QCPCurve::setLineStyle(QCPCurve::LineStyle style) +{ + mLineStyle = style; +} + +/*! + Adds the provided data points in \a dataMap to the current data. + \see removeData +*/ +void QCPCurve::addData(const QCPCurveDataMap &dataMap) +{ + mData->unite(dataMap); +} + +/*! \overload + Adds the provided single data point in \a data to the current data. + \see removeData +*/ +void QCPCurve::addData(const QCPCurveData &data) +{ + mData->insertMulti(data.t, data); +} + +/*! \overload + Adds the provided single data point as \a t, \a key and \a value tuple to the current data + \see removeData +*/ +void QCPCurve::addData(double t, double key, double value) +{ + QCPCurveData newData; + newData.t = t; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.t, newData); +} + +/*! \overload + + Adds the provided single data point as \a key and \a value pair to the current data The t + parameter of the data point is set to the t of the last data point plus 1. If there is no last + data point, t will be set to 0. + + \see removeData +*/ +void QCPCurve::addData(double key, double value) +{ + QCPCurveData newData; + if (!mData->isEmpty()) + newData.t = (mData->constEnd()-1).key()+1; + else + newData.t = 0; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.t, newData); +} + +/*! \overload + Adds the provided data points as \a t, \a key and \a value tuples to the current data. + \see removeData +*/ +void QCPCurve::addData(const QVector &ts, const QVector &keys, const QVector &values) +{ + int n = ts.size(); + n = qMin(n, keys.size()); + n = qMin(n, values.size()); + QCPCurveData newData; + for (int i=0; iinsertMulti(newData.t, newData); + } +} + +/*! + Removes all data points with curve parameter t smaller than \a t. + \see addData, clearData +*/ +void QCPCurve::removeDataBefore(double t) +{ + QCPCurveDataMap::iterator it = mData->begin(); + while (it != mData->end() && it.key() < t) + it = mData->erase(it); +} + +/*! + Removes all data points with curve parameter t greater than \a t. + \see addData, clearData +*/ +void QCPCurve::removeDataAfter(double t) +{ + if (mData->isEmpty()) return; + QCPCurveDataMap::iterator it = mData->upperBound(t); + while (it != mData->end()) + it = mData->erase(it); +} + +/*! + Removes all data points with curve parameter t between \a fromt and \a tot. if \a fromt is + greater or equal to \a tot, the function does nothing. To remove a single data point with known + t, use \ref removeData(double t). + + \see addData, clearData +*/ +void QCPCurve::removeData(double fromt, double tot) +{ + if (fromt >= tot || mData->isEmpty()) return; + QCPCurveDataMap::iterator it = mData->upperBound(fromt); + QCPCurveDataMap::iterator itEnd = mData->upperBound(tot); + while (it != itEnd) + it = mData->erase(it); +} + +/*! \overload + + Removes a single data point at curve parameter \a t. If the position is not known with absolute + precision, consider using \ref removeData(double fromt, double tot) with a small fuzziness + interval around the suspected position, depeding on the precision with which the curve parameter + is known. + + \see addData, clearData +*/ +void QCPCurve::removeData(double t) +{ + mData->remove(t); +} + +/*! + Removes all data points. + \see removeData, removeDataAfter, removeDataBefore +*/ +void QCPCurve::clearData() +{ + mData->clear(); +} + +/* inherits documentation from base class */ +double QCPCurve::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if ((onlySelectable && !mSelectable) || mData->isEmpty()) + return -1; + + return pointDistance(pos); +} + +/* inherits documentation from base class */ +void QCPCurve::draw(QCPPainter *painter) +{ + if (mData->isEmpty()) return; + + // allocate line vector: + QVector *lineData = new QVector; + + // fill with curve data: + getCurveData(lineData); + + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + QCPCurveDataMap::const_iterator it; + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + if (QCP::isInvalidData(it.value().t) || + QCP::isInvalidData(it.value().key, it.value().value)) + qDebug() << Q_FUNC_INFO << "Data point at" << it.key() << "invalid." << "Plottable name:" << name(); + } +#endif + + // draw curve fill: + if (mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) + { + applyFillAntialiasingHint(painter); + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(QPolygonF(*lineData)); + } + + // draw curve line: + if (mLineStyle != lsNone && mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(Qt::NoBrush); + // if drawing solid line and not in PDF, use much faster line drawing instead of polyline: + if (mParentPlot->plottingHints().testFlag(QCP::phFastPolylines) && + painter->pen().style() == Qt::SolidLine && + !painter->modes().testFlag(QCPPainter::pmVectorized) && + !painter->modes().testFlag(QCPPainter::pmNoCaching)) + { + for (int i=1; isize(); ++i) + painter->drawLine(lineData->at(i-1), lineData->at(i)); + } else + { + painter->drawPolyline(QPolygonF(*lineData)); + } + } + + // draw scatters: + if (!mScatterStyle.isNone()) + drawScatterPlot(painter, lineData); + + // free allocated line data: + delete lineData; +} + +/* inherits documentation from base class */ +void QCPCurve::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw fill: + if (mBrush.style() != Qt::NoBrush) + { + applyFillAntialiasingHint(painter); + painter->fillRect(QRectF(rect.left(), rect.top()+rect.height()/2.0, rect.width(), rect.height()/3.0), mBrush); + } + // draw line vertically centered: + if (mLineStyle != lsNone) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + painter->drawLine(QLineF(rect.left(), rect.top()+rect.height()/2.0, rect.right()+5, rect.top()+rect.height()/2.0)); // +5 on x2 else last segment is missing from dashed/dotted pens + } + // draw scatter symbol: + if (!mScatterStyle.isNone()) + { + applyScattersAntialiasingHint(painter); + // scale scatter pixmap if it's too large to fit in legend icon rect: + if (mScatterStyle.shape() == QCPScatterStyle::ssPixmap && (mScatterStyle.pixmap().size().width() > rect.width() || mScatterStyle.pixmap().size().height() > rect.height())) + { + QCPScatterStyle scaledStyle(mScatterStyle); + scaledStyle.setPixmap(scaledStyle.pixmap().scaled(rect.size().toSize(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); + scaledStyle.applyTo(painter, mPen); + scaledStyle.drawShape(painter, QRectF(rect).center()); + } else + { + mScatterStyle.applyTo(painter, mPen); + mScatterStyle.drawShape(painter, QRectF(rect).center()); + } + } +} + +/*! \internal + + Draws scatter symbols at every data point passed in \a pointData. scatter symbols are independent of + the line style and are always drawn if scatter shape is not \ref QCPScatterStyle::ssNone. +*/ +void QCPCurve::drawScatterPlot(QCPPainter *painter, const QVector *pointData) const +{ + // draw scatter point symbols: + applyScattersAntialiasingHint(painter); + mScatterStyle.applyTo(painter, mPen); + for (int i=0; isize(); ++i) + mScatterStyle.drawShape(painter, pointData->at(i)); +} + +/*! \internal + + called by QCPCurve::draw to generate a point vector (pixels) which represents the line of the + curve. Line segments that aren't visible in the current axis rect are handled in an optimized + way. +*/ +void QCPCurve::getCurveData(QVector *lineData) const +{ + /* Extended sides of axis rect R divide space into 9 regions: + 1__|_4_|__7 + 2__|_R_|__8 + 3 | 6 | 9 + General idea: If the two points of a line segment are in the same region (that is not R), the line segment corner is removed. + Curves outside R become straight lines closely outside of R which greatly reduces drawing time, yet keeps the look of lines and + fills inside R consistent. + The region R has index 5. + */ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + QRect axisRect = mKeyAxis.data()->axisRect()->rect() & mValueAxis.data()->axisRect()->rect(); + lineData->reserve(mData->size()); + QCPCurveDataMap::const_iterator it; + int lastRegion = 5; + int currentRegion = 5; + double RLeft = keyAxis->range().lower; + double RRight = keyAxis->range().upper; + double RBottom = valueAxis->range().lower; + double RTop = valueAxis->range().upper; + double x, y; // current key/value + bool addedLastAlready = true; + bool firstPoint = true; // first point must always be drawn, to make sure fill works correctly + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + x = it.value().key; + y = it.value().value; + // determine current region: + if (x < RLeft) // region 123 + { + if (y > RTop) + currentRegion = 1; + else if (y < RBottom) + currentRegion = 3; + else + currentRegion = 2; + } else if (x > RRight) // region 789 + { + if (y > RTop) + currentRegion = 7; + else if (y < RBottom) + currentRegion = 9; + else + currentRegion = 8; + } else // region 456 + { + if (y > RTop) + currentRegion = 4; + else if (y < RBottom) + currentRegion = 6; + else + currentRegion = 5; + } + + /* + Watch out, the next part is very tricky. It modifies the curve such that it seems like the + whole thing is still drawn, but actually the points outside the axisRect are simplified + ("optimized") greatly. There are some subtle special cases when line segments are large and + thereby each subsequent point may be in a different region or even skip some. + */ + // determine whether to keep current point: + if (currentRegion == 5 || (firstPoint && mBrush.style() != Qt::NoBrush)) // current is in R, add current and last if it wasn't added already + { + if (!addedLastAlready) // in case curve just entered R, make sure the last point outside R is also drawn correctly + lineData->append(coordsToPixels((it-1).value().key, (it-1).value().value)); // add last point to vector + else if (lastRegion != 5) // added last already. If that's the case, we probably added it at optimized position. So go back and make sure it's at original position (else the angle changes under which this segment enters R) + { + if (!firstPoint) // because on firstPoint, currentRegion is 5 and addedLastAlready is true, although there is no last point + lineData->replace(lineData->size()-1, coordsToPixels((it-1).value().key, (it-1).value().value)); + } + lineData->append(coordsToPixels(it.value().key, it.value().value)); // add current point to vector + addedLastAlready = true; // so in next iteration, we don't add this point twice + } else if (currentRegion != lastRegion) // changed region, add current and last if not added already + { + // using outsideCoordsToPixels instead of coorsToPixels for optimized point placement (places points just outside axisRect instead of potentially far away) + + // if we're coming from R or we skip diagonally over the corner regions (so line might still be visible in R), we can't place points optimized + if (lastRegion == 5 || // coming from R + ((lastRegion==2 && currentRegion==4) || (lastRegion==4 && currentRegion==2)) || // skip top left diagonal + ((lastRegion==4 && currentRegion==8) || (lastRegion==8 && currentRegion==4)) || // skip top right diagonal + ((lastRegion==8 && currentRegion==6) || (lastRegion==6 && currentRegion==8)) || // skip bottom right diagonal + ((lastRegion==6 && currentRegion==2) || (lastRegion==2 && currentRegion==6)) // skip bottom left diagonal + ) + { + // always add last point if not added already, original: + if (!addedLastAlready) + lineData->append(coordsToPixels((it-1).value().key, (it-1).value().value)); + // add current point, original: + lineData->append(coordsToPixels(it.value().key, it.value().value)); + } else // no special case that forbids optimized point placement, so do it: + { + // always add last point if not added already, optimized: + if (!addedLastAlready) + lineData->append(outsideCoordsToPixels((it-1).value().key, (it-1).value().value, currentRegion, axisRect)); + // add current point, optimized: + lineData->append(outsideCoordsToPixels(it.value().key, it.value().value, currentRegion, axisRect)); + } + addedLastAlready = true; // so that if next point enters 5, or crosses another region boundary, we don't add this point twice + } else // neither in R, nor crossed a region boundary, skip current point + { + addedLastAlready = false; + } + lastRegion = currentRegion; + firstPoint = false; + } + // If curve ends outside R, we want to add very last point so the fill looks like it should when the curve started inside R: + if (lastRegion != 5 && mBrush.style() != Qt::NoBrush && !mData->isEmpty()) + lineData->append(coordsToPixels((mData->constEnd()-1).value().key, (mData->constEnd()-1).value().value)); +} + +/*! \internal + + Calculates the (minimum) distance (in pixels) the curve's representation has from the given \a + pixelPoint in pixels. This is used to determine whether the curve was clicked or not, e.g. in + \ref selectTest. +*/ +double QCPCurve::pointDistance(const QPointF &pixelPoint) const +{ + if (mData->isEmpty()) + { + qDebug() << Q_FUNC_INFO << "requested point distance on curve" << mName << "without data"; + return 500; + } + if (mData->size() == 1) + { + QPointF dataPoint = coordsToPixels(mData->constBegin().key(), mData->constBegin().value().value); + return QVector2D(dataPoint-pixelPoint).length(); + } + + // calculate minimum distance to line segments: + QVector *lineData = new QVector; + getCurveData(lineData); + double minDistSqr = std::numeric_limits::max(); + for (int i=0; isize()-1; ++i) + { + double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + delete lineData; + return sqrt(minDistSqr); +} + +/*! \internal + + This is a specialized \ref coordsToPixels function for points that are outside the visible + axisRect and just crossing a boundary (since \ref getCurveData reduces non-visible curve segments + to those line segments that cross region boundaries, see documentation there). It only uses the + coordinate parallel to the region boundary of the axisRect. The other coordinate is picked just + outside the axisRect (how far is determined by the scatter size and the line width). Together + with the optimization in \ref getCurveData this improves performance for large curves (or zoomed + in ones) significantly while keeping the illusion the whole curve and its filling is still being + drawn for the viewer. +*/ +QPointF QCPCurve::outsideCoordsToPixels(double key, double value, int region, QRect axisRect) const +{ + int margin = qCeil(qMax(mScatterStyle.size(), (double)mPen.widthF())) + 2; + QPointF result = coordsToPixels(key, value); + switch (region) + { + case 2: result.setX(axisRect.left()-margin); break; // left + case 8: result.setX(axisRect.right()+margin); break; // right + case 4: result.setY(axisRect.top()-margin); break; // top + case 6: result.setY(axisRect.bottom()+margin); break; // bottom + case 1: result.setX(axisRect.left()-margin); + result.setY(axisRect.top()-margin); break; // top left + case 7: result.setX(axisRect.right()+margin); + result.setY(axisRect.top()-margin); break; // top right + case 9: result.setX(axisRect.right()+margin); + result.setY(axisRect.bottom()+margin); break; // bottom right + case 3: result.setX(axisRect.left()-margin); + result.setY(axisRect.bottom()+margin); break; // bottom left + } + return result; +} + +/* inherits documentation from base class */ +QCPRange QCPCurve::getKeyRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current; + + QCPCurveDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) + { + if (current < range.lower || !haveLower) + { + range.lower = current; + haveLower = true; + } + if (current > range.upper || !haveUpper) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + + validRange = haveLower && haveUpper; + return range; +} + +/* inherits documentation from base class */ +QCPRange QCPCurve::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current; + + QCPCurveDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) + { + if (current < range.lower || !haveLower) + { + range.lower = current; + haveLower = true; + } + if (current > range.upper || !haveUpper) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + + validRange = haveLower && haveUpper; + return range; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPBarData +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPBarData + \brief Holds the data of one single data point (one bar) for QCPBars. + + The container for storing multiple data points is \ref QCPBarDataMap. + + The stored data is: + \li \a key: coordinate on the key axis of this bar + \li \a value: height coordinate on the value axis of this bar + + \see QCPBarDataaMap +*/ + +/*! + Constructs a bar data point with key and value set to zero. +*/ +QCPBarData::QCPBarData() : + key(0), + value(0) +{ +} + +/*! + Constructs a bar data point with the specified \a key and \a value. +*/ +QCPBarData::QCPBarData(double key, double value) : + key(key), + value(value) +{ +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPBars +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPBars + \brief A plottable representing a bar chart in a plot. + + \image html QCPBars.png + + To plot data, assign it with the \ref setData or \ref addData functions. + + \section appearance Changing the appearance + + The appearance of the bars is determined by the pen and the brush (\ref setPen, \ref setBrush). + + Bar charts are stackable. This means, Two QCPBars plottables can be placed on top of each other + (see \ref QCPBars::moveAbove). Then, when two bars are at the same key position, they will appear + stacked. + + \section usage Usage + + Like all data representing objects in QCustomPlot, the QCPBars is a plottable + (QCPAbstractPlottable). So the plottable-interface of QCustomPlot applies + (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) + + Usually, you first create an instance: + \code + QCPBars *newBars = new QCPBars(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot with QCustomPlot::addPlottable: + \code + customPlot->addPlottable(newBars);\endcode + and then modify the properties of the newly created plottable, e.g.: + \code + newBars->setName("Country population"); + newBars->setData(xData, yData);\endcode +*/ + +/*! \fn QCPBars *QCPBars::barBelow() const + Returns the bars plottable that is directly below this bars plottable. + If there is no such plottable, returns 0. + + \see barAbove, moveBelow, moveAbove +*/ + +/*! \fn QCPBars *QCPBars::barAbove() const + Returns the bars plottable that is directly above this bars plottable. + If there is no such plottable, returns 0. + + \see barBelow, moveBelow, moveAbove +*/ + +/*! + Constructs a bar chart which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value + axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have + the same orientation. If either of these restrictions is violated, a corresponding message is + printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed QCPBars can be added to the plot with QCustomPlot::addPlottable, QCustomPlot + then takes ownership of the bar chart. +*/ +QCPBars::QCPBars(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis) +{ + mData = new QCPBarDataMap; + mPen.setColor(Qt::blue); + mPen.setStyle(Qt::SolidLine); + mBrush.setColor(QColor(40, 50, 255, 30)); + mBrush.setStyle(Qt::SolidPattern); + mSelectedPen = mPen; + mSelectedPen.setWidthF(2.5); + mSelectedPen.setColor(QColor(80, 80, 255)); // lighter than Qt::blue of mPen + mSelectedBrush = mBrush; + + mWidth = 0.75; +} + +QCPBars::~QCPBars() +{ + if (mBarBelow || mBarAbove) + connectBars(mBarBelow.data(), mBarAbove.data()); // take this bar out of any stacking + delete mData; +} + +/*! + Sets the width of the bars in plot (key) coordinates. +*/ +void QCPBars::setWidth(double width) +{ + mWidth = width; +} + +/*! + Replaces the current data with the provided \a data. + + If \a copy is set to true, data points in \a data will only be copied. if false, the plottable + takes ownership of the passed data and replaces the internal data pointer with it. This is + significantly faster than copying for large datasets. +*/ +void QCPBars::setData(QCPBarDataMap *data, bool copy) +{ + if (copy) + { + *mData = *data; + } else + { + delete mData; + mData = data; + } +} + +/*! \overload + + Replaces the current data with the provided points in \a key and \a value tuples. The + provided vectors should have equal length. Else, the number of added points will be the size of + the smallest vector. +*/ +void QCPBars::setData(const QVector &key, const QVector &value) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + QCPBarData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Moves this bars plottable below \a bars. In other words, the bars of this plottable will appear + below the bars of \a bars. The move target \a bars must use the same key and value axis as this + plottable. + + Inserting into and removing from existing bar stacking is handled gracefully. If \a bars already + has a bars object below itself, this bars object is inserted between the two. If this bars object + is already between two other bars, the two other bars will be stacked on top of each other after + the operation. + + To remove this bars plottable from any stacking, set \a bars to 0. + + \see moveBelow, barAbove, barBelow +*/ +void QCPBars::moveBelow(QCPBars *bars) +{ + if (bars == this) return; + if (bars && (bars->keyAxis() != mKeyAxis.data() || bars->valueAxis() != mValueAxis.data())) + { + qDebug() << Q_FUNC_INFO << "passed QCPBars* doesn't have same key and value axis as this QCPBars"; + return; + } + // remove from stacking: + connectBars(mBarBelow.data(), mBarAbove.data()); // Note: also works if one (or both) of them is 0 + // if new bar given, insert this bar below it: + if (bars) + { + if (bars->mBarBelow) + connectBars(bars->mBarBelow.data(), this); + connectBars(this, bars); + } +} + +/*! + Moves this bars plottable above \a bars. In other words, the bars of this plottable will appear + above the bars of \a bars. The move target \a bars must use the same key and value axis as this + plottable. + + Inserting into and removing from existing bar stacking is handled gracefully. If \a bars already + has a bars object below itself, this bars object is inserted between the two. If this bars object + is already between two other bars, the two other bars will be stacked on top of each other after + the operation. + + To remove this bars plottable from any stacking, set \a bars to 0. + + \see moveBelow, barBelow, barAbove +*/ +void QCPBars::moveAbove(QCPBars *bars) +{ + if (bars == this) return; + if (bars && (bars->keyAxis() != mKeyAxis.data() || bars->valueAxis() != mValueAxis.data())) + { + qDebug() << Q_FUNC_INFO << "passed QCPBars* doesn't have same key and value axis as this QCPBars"; + return; + } + // remove from stacking: + connectBars(mBarBelow.data(), mBarAbove.data()); // Note: also works if one (or both) of them is 0 + // if new bar given, insert this bar above it: + if (bars) + { + if (bars->mBarAbove) + connectBars(this, bars->mBarAbove.data()); + connectBars(bars, this); + } +} + +/*! + Adds the provided data points in \a dataMap to the current data. + \see removeData +*/ +void QCPBars::addData(const QCPBarDataMap &dataMap) +{ + mData->unite(dataMap); +} + +/*! \overload + Adds the provided single data point in \a data to the current data. + \see removeData +*/ +void QCPBars::addData(const QCPBarData &data) +{ + mData->insertMulti(data.key, data); +} + +/*! \overload + Adds the provided single data point as \a key and \a value tuple to the current data + \see removeData +*/ +void QCPBars::addData(double key, double value) +{ + QCPBarData newData; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.key, newData); +} + +/*! \overload + Adds the provided data points as \a key and \a value tuples to the current data. + \see removeData +*/ +void QCPBars::addData(const QVector &keys, const QVector &values) +{ + int n = keys.size(); + n = qMin(n, values.size()); + QCPBarData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Removes all data points with key smaller than \a key. + \see addData, clearData +*/ +void QCPBars::removeDataBefore(double key) +{ + QCPBarDataMap::iterator it = mData->begin(); + while (it != mData->end() && it.key() < key) + it = mData->erase(it); +} + +/*! + Removes all data points with key greater than \a key. + \see addData, clearData +*/ +void QCPBars::removeDataAfter(double key) +{ + if (mData->isEmpty()) return; + QCPBarDataMap::iterator it = mData->upperBound(key); + while (it != mData->end()) + it = mData->erase(it); +} + +/*! + Removes all data points with key between \a fromKey and \a toKey. if \a fromKey is + greater or equal to \a toKey, the function does nothing. To remove a single data point with known + key, use \ref removeData(double key). + + \see addData, clearData +*/ +void QCPBars::removeData(double fromKey, double toKey) +{ + if (fromKey >= toKey || mData->isEmpty()) return; + QCPBarDataMap::iterator it = mData->upperBound(fromKey); + QCPBarDataMap::iterator itEnd = mData->upperBound(toKey); + while (it != itEnd) + it = mData->erase(it); +} + +/*! \overload + + Removes a single data point at \a key. If the position is not known with absolute precision, + consider using \ref removeData(double fromKey, double toKey) with a small fuzziness interval + around the suspected position, depeding on the precision with which the key is known. + + \see addData, clearData +*/ +void QCPBars::removeData(double key) +{ + mData->remove(key); +} + +/*! + Removes all data points. + \see removeData, removeDataAfter, removeDataBefore +*/ +void QCPBars::clearData() +{ + mData->clear(); +} + +/* inherits documentation from base class */ +double QCPBars::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QCPBarDataMap::ConstIterator it; + double posKey, posValue; + pixelsToCoords(pos, posKey, posValue); + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + double baseValue = getBaseValue(it.key(), it.value().value >=0); + QCPRange keyRange(it.key()-mWidth*0.5, it.key()+mWidth*0.5); + QCPRange valueRange(baseValue, baseValue+it.value().value); + if (keyRange.contains(posKey) && valueRange.contains(posValue)) + return mParentPlot->selectionTolerance()*0.99; + } + return -1; +} + +/* inherits documentation from base class */ +void QCPBars::draw(QCPPainter *painter) +{ + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (mData->isEmpty()) return; + + QCPBarDataMap::const_iterator it; + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + // skip bar if not visible in key axis range: + if (it.key()+mWidth*0.5 < mKeyAxis.data()->range().lower || it.key()-mWidth*0.5 > mKeyAxis.data()->range().upper) + continue; + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + if (QCP::isInvalidData(it.value().key, it.value().value)) + qDebug() << Q_FUNC_INFO << "Data point at" << it.key() << "of drawn range invalid." << "Plottable name:" << name(); +#endif + QPolygonF barPolygon = getBarPolygon(it.key(), it.value().value); + // draw bar fill: + if (mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) + { + applyFillAntialiasingHint(painter); + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(barPolygon); + } + // draw bar line: + if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(Qt::NoBrush); + painter->drawPolyline(barPolygon); + } + } +} + +/* inherits documentation from base class */ +void QCPBars::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw filled rect: + applyDefaultAntialiasingHint(painter); + painter->setBrush(mBrush); + painter->setPen(mPen); + QRectF r = QRectF(0, 0, rect.width()*0.67, rect.height()*0.67); + r.moveCenter(rect.center()); + painter->drawRect(r); +} + +/*! \internal + + Returns the polygon of a single bar with \a key and \a value. The Polygon is open at the bottom + and shifted according to the bar stacking (see \ref moveAbove). +*/ +QPolygonF QCPBars::getBarPolygon(double key, double value) const +{ + QPolygonF result; + double baseValue = getBaseValue(key, value >= 0); + result << coordsToPixels(key-mWidth*0.5, baseValue); + result << coordsToPixels(key-mWidth*0.5, baseValue+value); + result << coordsToPixels(key+mWidth*0.5, baseValue+value); + result << coordsToPixels(key+mWidth*0.5, baseValue); + return result; +} + +/*! \internal + + This function is called to find at which value to start drawing the base of a bar at \a key, when + it is stacked on top of another QCPBars (e.g. with \ref moveAbove). + + positive and negative bars are separated per stack (positive are stacked above 0-value upwards, + negative are stacked below 0-value downwards). This can be indicated with \a positive. So if the + bar for which we need the base value is negative, set \a positive to false. +*/ +double QCPBars::getBaseValue(double key, bool positive) const +{ + if (mBarBelow) + { + double max = 0; + // find bars of mBarBelow that are approximately at key and find largest one: + QCPBarDataMap::const_iterator it = mBarBelow.data()->mData->lowerBound(key-mWidth*0.1); + QCPBarDataMap::const_iterator itEnd = mBarBelow.data()->mData->upperBound(key+mWidth*0.1); + while (it != itEnd) + { + if ((positive && it.value().value > max) || + (!positive && it.value().value < max)) + max = it.value().value; + ++it; + } + // recurse down the bar-stack to find the total height: + return max + mBarBelow.data()->getBaseValue(key, positive); + } else + return 0; +} + +/*! \internal + + Connects \a below and \a above to each other via their mBarAbove/mBarBelow properties. + The bar(s) currently below lower and upper will become disconnected to lower/upper. + + If lower is zero, upper will be disconnected at the bottom. + If upper is zero, lower will be disconnected at the top. +*/ +void QCPBars::connectBars(QCPBars *lower, QCPBars *upper) +{ + if (!lower && !upper) return; + + if (!lower) // disconnect upper at bottom + { + // disconnect old bar below upper: + if (upper->mBarBelow && upper->mBarBelow.data()->mBarAbove.data() == upper) + upper->mBarBelow.data()->mBarAbove.clear(); + upper->mBarBelow.clear(); + } else if (!upper) // disconnect lower at top + { + // disconnect old bar above lower: + if (lower->mBarAbove && lower->mBarAbove.data()->mBarBelow.data() == lower) + lower->mBarAbove.data()->mBarBelow.clear(); + lower->mBarAbove.clear(); + } else // connect lower and upper + { + // disconnect old bar above lower: + if (lower->mBarAbove && lower->mBarAbove.data()->mBarBelow.data() == lower) + lower->mBarAbove.data()->mBarBelow.clear(); + // disconnect old bar below upper: + if (upper->mBarBelow && upper->mBarBelow.data()->mBarAbove.data() == upper) + upper->mBarBelow.data()->mBarAbove.clear(); + lower->mBarAbove = upper; + upper->mBarBelow = lower; + } +} + +/* inherits documentation from base class */ +QCPRange QCPBars::getKeyRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current; + double barWidthHalf = mWidth*0.5; + QCPBarDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current+barWidthHalf < 0) || (inSignDomain == sdPositive && current-barWidthHalf > 0)) + { + if (current-barWidthHalf < range.lower || !haveLower) + { + range.lower = current-barWidthHalf; + haveLower = true; + } + if (current+barWidthHalf > range.upper || !haveUpper) + { + range.upper = current+barWidthHalf; + haveUpper = true; + } + } + ++it; + } + + validRange = haveLower && haveUpper; + return range; +} + +/* inherits documentation from base class */ +QCPRange QCPBars::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = true; // set to true, because 0 should always be visible in bar charts + bool haveUpper = true; // set to true, because 0 should always be visible in bar charts + + double current; + + QCPBarDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value + getBaseValue(it.value().key, it.value().value >= 0); + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) + { + if (current < range.lower || !haveLower) + { + range.lower = current; + haveLower = true; + } + if (current > range.upper || !haveUpper) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + + validRange = range.lower < range.upper; + return range; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPStatisticalBox +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPStatisticalBox + \brief A plottable representing a single statistical box in a plot. + + \image html QCPStatisticalBox.png + + To plot data, assign it with the individual parameter functions or use \ref setData to set all + parameters at once. The individual funcions are: + \li \ref setMinimum + \li \ref setLowerQuartile + \li \ref setMedian + \li \ref setUpperQuartile + \li \ref setMaximum + + Additionally you can define a list of outliers, drawn as circle datapoints: + \li \ref setOutliers + + \section appearance Changing the appearance + + The appearance of the box itself is controlled via \ref setPen and \ref setBrush. You may change + the width of the box with \ref setWidth in plot coordinates (not pixels). + + Analog functions exist for the minimum/maximum-whiskers: \ref setWhiskerPen, \ref + setWhiskerBarPen, \ref setWhiskerWidth. The whisker width is the width of the bar at the top + (maximum) and bottom (minimum). + + The median indicator line has its own pen, \ref setMedianPen. + + If the whisker backbone pen is changed, make sure to set the capStyle to Qt::FlatCap. Else, the + backbone line might exceed the whisker bars by a few pixels due to the pen cap being not + perfectly flat. + + The Outlier data points are drawn as normal scatter points. Their look can be controlled with + \ref setOutlierStyle + + \section usage Usage + + Like all data representing objects in QCustomPlot, the QCPStatisticalBox is a plottable + (QCPAbstractPlottable). So the plottable-interface of QCustomPlot applies + (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) + + Usually, you first create an instance: + \code + QCPStatisticalBox *newBox = new QCPStatisticalBox(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot with QCustomPlot::addPlottable: + \code + customPlot->addPlottable(newBox);\endcode + and then modify the properties of the newly created plottable, e.g.: + \code + newBox->setName("Measurement Series 1"); + newBox->setData(1, 3, 4, 5, 7); + newBox->setOutliers(QVector() << 0.5 << 0.64 << 7.2 << 7.42);\endcode +*/ + +/*! + Constructs a statistical box which uses \a keyAxis as its key axis ("x") and \a valueAxis as its + value axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and + not have the same orientation. If either of these restrictions is violated, a corresponding + message is printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed statistical box can be added to the plot with QCustomPlot::addPlottable, + QCustomPlot then takes ownership of the statistical box. +*/ +QCPStatisticalBox::QCPStatisticalBox(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis), + mKey(0), + mMinimum(0), + mLowerQuartile(0), + mMedian(0), + mUpperQuartile(0), + mMaximum(0) +{ + setOutlierStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, 6)); + setWhiskerWidth(0.2); + setWidth(0.5); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2.5)); + setMedianPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::FlatCap)); + setWhiskerPen(QPen(Qt::black, 0, Qt::DashLine, Qt::FlatCap)); + setWhiskerBarPen(QPen(Qt::black)); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); +} + +/*! + Sets the key coordinate of the statistical box. +*/ +void QCPStatisticalBox::setKey(double key) +{ + mKey = key; +} + +/*! + Sets the parameter "minimum" of the statistical box plot. This is the position of the lower + whisker, typically the minimum measurement of the sample that's not considered an outlier. + + \see setMaximum, setWhiskerPen, setWhiskerBarPen, setWhiskerWidth +*/ +void QCPStatisticalBox::setMinimum(double value) +{ + mMinimum = value; +} + +/*! + Sets the parameter "lower Quartile" of the statistical box plot. This is the lower end of the + box. The lower and the upper quartiles are the two statistical quartiles around the median of the + sample, they contain 50% of the sample data. + + \see setUpperQuartile, setPen, setBrush, setWidth +*/ +void QCPStatisticalBox::setLowerQuartile(double value) +{ + mLowerQuartile = value; +} + +/*! + Sets the parameter "median" of the statistical box plot. This is the value of the median mark + inside the quartile box. The median separates the sample data in half (50% of the sample data is + below/above the median). + + \see setMedianPen +*/ +void QCPStatisticalBox::setMedian(double value) +{ + mMedian = value; +} + +/*! + Sets the parameter "upper Quartile" of the statistical box plot. This is the upper end of the + box. The lower and the upper quartiles are the two statistical quartiles around the median of the + sample, they contain 50% of the sample data. + + \see setLowerQuartile, setPen, setBrush, setWidth +*/ +void QCPStatisticalBox::setUpperQuartile(double value) +{ + mUpperQuartile = value; +} + +/*! + Sets the parameter "maximum" of the statistical box plot. This is the position of the upper + whisker, typically the maximum measurement of the sample that's not considered an outlier. + + \see setMinimum, setWhiskerPen, setWhiskerBarPen, setWhiskerWidth +*/ +void QCPStatisticalBox::setMaximum(double value) +{ + mMaximum = value; +} + +/*! + Sets a vector of outlier values that will be drawn as circles. Any data points in the sample that + are not within the whiskers (\ref setMinimum, \ref setMaximum) should be considered outliers and + displayed as such. + + \see setOutlierStyle +*/ +void QCPStatisticalBox::setOutliers(const QVector &values) +{ + mOutliers = values; +} + +/*! + Sets all parameters of the statistical box plot at once. + + \see setKey, setMinimum, setLowerQuartile, setMedian, setUpperQuartile, setMaximum +*/ +void QCPStatisticalBox::setData(double key, double minimum, double lowerQuartile, double median, double upperQuartile, double maximum) +{ + setKey(key); + setMinimum(minimum); + setLowerQuartile(lowerQuartile); + setMedian(median); + setUpperQuartile(upperQuartile); + setMaximum(maximum); +} + +/*! + Sets the width of the box in key coordinates. + + \see setWhiskerWidth +*/ +void QCPStatisticalBox::setWidth(double width) +{ + mWidth = width; +} + +/*! + Sets the width of the whiskers (\ref setMinimum, \ref setMaximum) in key coordinates. + + \see setWidth +*/ +void QCPStatisticalBox::setWhiskerWidth(double width) +{ + mWhiskerWidth = width; +} + +/*! + Sets the pen used for drawing the whisker backbone (That's the line parallel to the value axis). + + Make sure to set the \a pen capStyle to Qt::FlatCap to prevent the whisker backbone from reaching + a few pixels past the whisker bars, when using a non-zero pen width. + + \see setWhiskerBarPen +*/ +void QCPStatisticalBox::setWhiskerPen(const QPen &pen) +{ + mWhiskerPen = pen; +} + +/*! + Sets the pen used for drawing the whisker bars (Those are the lines parallel to the key axis at + each end of the whisker backbone). + + \see setWhiskerPen +*/ +void QCPStatisticalBox::setWhiskerBarPen(const QPen &pen) +{ + mWhiskerBarPen = pen; +} + +/*! + Sets the pen used for drawing the median indicator line inside the statistical box. +*/ +void QCPStatisticalBox::setMedianPen(const QPen &pen) +{ + mMedianPen = pen; +} + +/*! + Sets the appearance of the outlier data points. + + \see setOutliers +*/ +void QCPStatisticalBox::setOutlierStyle(const QCPScatterStyle &style) +{ + mOutlierStyle = style; +} + +/* inherits documentation from base class */ +void QCPStatisticalBox::clearData() +{ + setOutliers(QVector()); + setKey(0); + setMinimum(0); + setLowerQuartile(0); + setMedian(0); + setUpperQuartile(0); + setMaximum(0); +} + +/* inherits documentation from base class */ +double QCPStatisticalBox::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return -1; } + + double posKey, posValue; + pixelsToCoords(pos, posKey, posValue); + // quartile box: + QCPRange keyRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + QCPRange valueRange(mLowerQuartile, mUpperQuartile); + if (keyRange.contains(posKey) && valueRange.contains(posValue)) + return mParentPlot->selectionTolerance()*0.99; + + // min/max whiskers: + if (QCPRange(mMinimum, mMaximum).contains(posValue)) + return qAbs(mKeyAxis.data()->coordToPixel(mKey)-mKeyAxis.data()->coordToPixel(posKey)); + + return -1; +} + +/* inherits documentation from base class */ +void QCPStatisticalBox::draw(QCPPainter *painter) +{ + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + if (QCP::isInvalidData(mKey, mMedian) || + QCP::isInvalidData(mLowerQuartile, mUpperQuartile) || + QCP::isInvalidData(mMinimum, mMaximum)) + qDebug() << Q_FUNC_INFO << "Data point at" << mKey << "of drawn range has invalid data." << "Plottable name:" << name(); + for (int i=0; isave(); + painter->setClipRect(quartileBox, Qt::IntersectClip); + drawMedian(painter); + painter->restore(); + + drawWhiskers(painter); + drawOutliers(painter); +} + +/* inherits documentation from base class */ +void QCPStatisticalBox::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw filled rect: + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + painter->setBrush(mBrush); + QRectF r = QRectF(0, 0, rect.width()*0.67, rect.height()*0.67); + r.moveCenter(rect.center()); + painter->drawRect(r); +} + +/*! \internal + + Draws the quartile box. \a box is an output parameter that returns the quartile box (in pixel + coordinates) which is used to set the clip rect of the painter before calling \ref drawMedian (so + the median doesn't draw outside the quartile box). +*/ +void QCPStatisticalBox::drawQuartileBox(QCPPainter *painter, QRectF *quartileBox) const +{ + QRectF box; + box.setTopLeft(coordsToPixels(mKey-mWidth*0.5, mUpperQuartile)); + box.setBottomRight(coordsToPixels(mKey+mWidth*0.5, mLowerQuartile)); + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + painter->drawRect(box); + if (quartileBox) + *quartileBox = box; +} + +/*! \internal + + Draws the median line inside the quartile box. +*/ +void QCPStatisticalBox::drawMedian(QCPPainter *painter) const +{ + QLineF medianLine; + medianLine.setP1(coordsToPixels(mKey-mWidth*0.5, mMedian)); + medianLine.setP2(coordsToPixels(mKey+mWidth*0.5, mMedian)); + applyDefaultAntialiasingHint(painter); + painter->setPen(mMedianPen); + painter->drawLine(medianLine); +} + +/*! \internal + + Draws both whisker backbones and bars. +*/ +void QCPStatisticalBox::drawWhiskers(QCPPainter *painter) const +{ + QLineF backboneMin, backboneMax, barMin, barMax; + backboneMax.setPoints(coordsToPixels(mKey, mUpperQuartile), coordsToPixels(mKey, mMaximum)); + backboneMin.setPoints(coordsToPixels(mKey, mLowerQuartile), coordsToPixels(mKey, mMinimum)); + barMax.setPoints(coordsToPixels(mKey-mWhiskerWidth*0.5, mMaximum), coordsToPixels(mKey+mWhiskerWidth*0.5, mMaximum)); + barMin.setPoints(coordsToPixels(mKey-mWhiskerWidth*0.5, mMinimum), coordsToPixels(mKey+mWhiskerWidth*0.5, mMinimum)); + applyErrorBarsAntialiasingHint(painter); + painter->setPen(mWhiskerPen); + painter->drawLine(backboneMin); + painter->drawLine(backboneMax); + painter->setPen(mWhiskerBarPen); + painter->drawLine(barMin); + painter->drawLine(barMax); +} + +/*! \internal + + Draws the outlier scatter points. +*/ +void QCPStatisticalBox::drawOutliers(QCPPainter *painter) const +{ + applyScattersAntialiasingHint(painter); + mOutlierStyle.applyTo(painter, mPen); + for (int i=0; i 0; + if (inSignDomain == sdBoth) + { + return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + } else if (inSignDomain == sdNegative) + { + if (mKey+mWidth*0.5 < 0) + return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + else if (mKey < 0) + return QCPRange(mKey-mWidth*0.5, mKey); + else + { + validRange = false; + return QCPRange(); + } + } else if (inSignDomain == sdPositive) + { + if (mKey-mWidth*0.5 > 0) + return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + else if (mKey > 0) + return QCPRange(mKey, mKey+mWidth*0.5); + else + { + validRange = false; + return QCPRange(); + } + } + validRange = false; + return QCPRange(); +} + +/* inherits documentation from base class */ +QCPRange QCPStatisticalBox::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + if (inSignDomain == sdBoth) + { + double lower = qMin(mMinimum, qMin(mMedian, mLowerQuartile)); + double upper = qMax(mMaximum, qMax(mMedian, mUpperQuartile)); + for (int i=0; i upper) + upper = mOutliers.at(i); + } + validRange = upper > lower; + return QCPRange(lower, upper); + } else + { + QVector values; // values that must be considered (i.e. all outliers and the five box-parameters) + values.reserve(mOutliers.size() + 5); + values << mMaximum << mUpperQuartile << mMedian << mLowerQuartile << mMinimum; + values << mOutliers; + // go through values and find the ones in legal range: + bool haveUpper = false; + bool haveLower = false; + double upper = 0; + double lower = 0; + for (int i=0; i 0)) + { + if (values.at(i) > upper || !haveUpper) + { + upper = values.at(i); + haveUpper = true; + } + if (values.at(i) < lower || !haveLower) + { + lower = values.at(i); + haveLower = true; + } + } + } + // return the bounds if we found some sensible values: + if (haveLower && haveUpper && lower < upper) + { + validRange = true; + return QCPRange(lower, upper); + } else + { + validRange = false; + return QCPRange(); + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemStraightLine +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemStraightLine + \brief A straight line that spans infinitely in both directions + + \image html QCPItemStraightLine.png "Straight line example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a point1 and \a point2, which define the straight line. +*/ + +/*! + Creates a straight line item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemStraightLine::QCPItemStraightLine(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + point1(createPosition("point1")), + point2(createPosition("point2")) +{ + point1->setCoords(0, 0); + point2->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); +} + +QCPItemStraightLine::~QCPItemStraightLine() +{ +} + +/*! + Sets the pen that will be used to draw the line + + \see setSelectedPen +*/ +void QCPItemStraightLine::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line when selected + + \see setPen, setSelected +*/ +void QCPItemStraightLine::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/* inherits documentation from base class */ +double QCPItemStraightLine::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + return distToStraightLine(QVector2D(point1->pixelPoint()), QVector2D(point2->pixelPoint()-point1->pixelPoint()), QVector2D(pos)); +} + +/* inherits documentation from base class */ +void QCPItemStraightLine::draw(QCPPainter *painter) +{ + QVector2D start(point1->pixelPoint()); + QVector2D end(point2->pixelPoint()); + // get visible segment of straight line inside clipRect: + double clipPad = mainPen().widthF(); + QLineF line = getRectClippedStraightLine(start, end-start, clipRect().adjusted(-clipPad, -clipPad, clipPad, clipPad)); + // paint visible segment, if existent: + if (!line.isNull()) + { + painter->setPen(mainPen()); + painter->drawLine(line); + } +} + +/*! \internal + + finds the shortest distance of \a point to the straight line defined by the base point \a + base and the direction vector \a vec. + + This is a helper function for \ref selectTest. +*/ +double QCPItemStraightLine::distToStraightLine(const QVector2D &base, const QVector2D &vec, const QVector2D &point) const +{ + return qAbs((base.y()-point.y())*vec.x()-(base.x()-point.x())*vec.y())/vec.length(); +} + +/*! \internal + + Returns the section of the straight line defined by \a base and direction vector \a + vec, that is visible in the specified \a rect. + + This is a helper function for \ref draw. +*/ +QLineF QCPItemStraightLine::getRectClippedStraightLine(const QVector2D &base, const QVector2D &vec, const QRect &rect) const +{ + double bx, by; + double gamma; + QLineF result; + if (vec.x() == 0 && vec.y() == 0) + return result; + if (qFuzzyIsNull(vec.x())) // line is vertical + { + // check top of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); + if (gamma >= 0 && gamma <= rect.width()) + result.setLine(bx+gamma, rect.top(), bx+gamma, rect.bottom()); // no need to check bottom because we know line is vertical + } else if (qFuzzyIsNull(vec.y())) // line is horizontal + { + // check left of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); + if (gamma >= 0 && gamma <= rect.height()) + result.setLine(rect.left(), by+gamma, rect.right(), by+gamma); // no need to check right because we know line is horizontal + } else // line is skewed + { + QList pointVectors; + // check top of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + // check bottom of rect: + bx = rect.left(); + by = rect.bottom(); + gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + // check left of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + // check right of rect: + bx = rect.right(); + by = rect.top(); + gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + + // evaluate points: + if (pointVectors.size() == 2) + { + result.setPoints(pointVectors.at(0).toPointF(), pointVectors.at(1).toPointF()); + } else if (pointVectors.size() > 2) + { + // line probably goes through corner of rect, and we got two points there. single out the point pair with greatest distance: + double distSqrMax = 0; + QVector2D pv1, pv2; + for (int i=0; i distSqrMax) + { + pv1 = pointVectors.at(i); + pv2 = pointVectors.at(k); + distSqrMax = distSqr; + } + } + } + result.setPoints(pv1.toPointF(), pv2.toPointF()); + } + } + return result; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemStraightLine::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemLine +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemLine + \brief A line from one point to another + + \image html QCPItemLine.png "Line example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a start and \a end, which define the end points of the line. + + With \ref setHead and \ref setTail you may set different line ending styles, e.g. to create an arrow. +*/ + +/*! + Creates a line item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemLine::QCPItemLine(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + start(createPosition("start")), + end(createPosition("end")) +{ + start->setCoords(0, 0); + end->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); +} + +QCPItemLine::~QCPItemLine() +{ +} + +/*! + Sets the pen that will be used to draw the line + + \see setSelectedPen +*/ +void QCPItemLine::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line when selected + + \see setPen, setSelected +*/ +void QCPItemLine::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the line ending style of the head. The head corresponds to the \a end position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setHead(QCPLineEnding::esSpikeArrow) \endcode + + \see setTail +*/ +void QCPItemLine::setHead(const QCPLineEnding &head) +{ + mHead = head; +} + +/*! + Sets the line ending style of the tail. The tail corresponds to the \a start position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setTail(QCPLineEnding::esSpikeArrow) \endcode + + \see setHead +*/ +void QCPItemLine::setTail(const QCPLineEnding &tail) +{ + mTail = tail; +} + +/* inherits documentation from base class */ +double QCPItemLine::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + return qSqrt(distSqrToLine(start->pixelPoint(), end->pixelPoint(), pos)); +} + +/* inherits documentation from base class */ +void QCPItemLine::draw(QCPPainter *painter) +{ + QVector2D startVec(start->pixelPoint()); + QVector2D endVec(end->pixelPoint()); + if (startVec.toPoint() == endVec.toPoint()) + return; + // get visible segment of straight line inside clipRect: + double clipPad = qMax(mHead.boundingDistance(), mTail.boundingDistance()); + clipPad = qMax(clipPad, (double)mainPen().widthF()); + QLineF line = getRectClippedLine(startVec, endVec, clipRect().adjusted(-clipPad, -clipPad, clipPad, clipPad)); + // paint visible segment, if existent: + if (!line.isNull()) + { + painter->setPen(mainPen()); + painter->drawLine(line); + painter->setBrush(Qt::SolidPattern); + if (mTail.style() != QCPLineEnding::esNone) + mTail.draw(painter, startVec, startVec-endVec); + if (mHead.style() != QCPLineEnding::esNone) + mHead.draw(painter, endVec, endVec-startVec); + } +} + +/*! \internal + + Returns the section of the line defined by \a start and \a end, that is visible in the specified + \a rect. + + This is a helper function for \ref draw. +*/ +QLineF QCPItemLine::getRectClippedLine(const QVector2D &start, const QVector2D &end, const QRect &rect) const +{ + bool containsStart = rect.contains(start.x(), start.y()); + bool containsEnd = rect.contains(end.x(), end.y()); + if (containsStart && containsEnd) + return QLineF(start.toPointF(), end.toPointF()); + + QVector2D base = start; + QVector2D vec = end-start; + double bx, by; + double gamma, mu; + QLineF result; + QList pointVectors; + + if (!qFuzzyIsNull(vec.y())) // line is not horizontal + { + // check top of rect: + bx = rect.left(); + by = rect.top(); + mu = (by-base.y())/vec.y(); + if (mu >= 0 && mu <= 1) + { + gamma = base.x()-bx + mu*vec.x(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + } + // check bottom of rect: + bx = rect.left(); + by = rect.bottom(); + mu = (by-base.y())/vec.y(); + if (mu >= 0 && mu <= 1) + { + gamma = base.x()-bx + mu*vec.x(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + } + } + if (!qFuzzyIsNull(vec.x())) // line is not vertical + { + // check left of rect: + bx = rect.left(); + by = rect.top(); + mu = (bx-base.x())/vec.x(); + if (mu >= 0 && mu <= 1) + { + gamma = base.y()-by + mu*vec.y(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + } + // check right of rect: + bx = rect.right(); + by = rect.top(); + mu = (bx-base.x())/vec.x(); + if (mu >= 0 && mu <= 1) + { + gamma = base.y()-by + mu*vec.y(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + } + } + + if (containsStart) + pointVectors.append(start); + if (containsEnd) + pointVectors.append(end); + + // evaluate points: + if (pointVectors.size() == 2) + { + result.setPoints(pointVectors.at(0).toPointF(), pointVectors.at(1).toPointF()); + } else if (pointVectors.size() > 2) + { + // line probably goes through corner of rect, and we got two points there. single out the point pair with greatest distance: + double distSqrMax = 0; + QVector2D pv1, pv2; + for (int i=0; i distSqrMax) + { + pv1 = pointVectors.at(i); + pv2 = pointVectors.at(k); + distSqrMax = distSqr; + } + } + } + result.setPoints(pv1.toPointF(), pv2.toPointF()); + } + return result; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemLine::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemCurve +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemCurve + \brief A curved line from one point to another + + \image html QCPItemCurve.png "Curve example. Blue dotted circles are anchors, solid blue discs are positions." + + It has four positions, \a start and \a end, which define the end points of the line, and two + control points which define the direction the line exits from the start and the direction from + which it approaches the end: \a startDir and \a endDir. + + With \ref setHead and \ref setTail you may set different line ending styles, e.g. to create an + arrow. + + Often it is desirable for the control points to stay at fixed relative positions to the start/end + point. This can be achieved by setting the parent anchor e.g. of \a startDir simply to \a start, + and then specify the desired pixel offset with QCPItemPosition::setCoords on \a startDir. +*/ + +/*! + Creates a curve item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemCurve::QCPItemCurve(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + start(createPosition("start")), + startDir(createPosition("startDir")), + endDir(createPosition("endDir")), + end(createPosition("end")) +{ + start->setCoords(0, 0); + startDir->setCoords(0.5, 0); + endDir->setCoords(0, 0.5); + end->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); +} + +QCPItemCurve::~QCPItemCurve() +{ +} + +/*! + Sets the pen that will be used to draw the line + + \see setSelectedPen +*/ +void QCPItemCurve::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line when selected + + \see setPen, setSelected +*/ +void QCPItemCurve::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the line ending style of the head. The head corresponds to the \a end position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setHead(QCPLineEnding::esSpikeArrow) \endcode + + \see setTail +*/ +void QCPItemCurve::setHead(const QCPLineEnding &head) +{ + mHead = head; +} + +/*! + Sets the line ending style of the tail. The tail corresponds to the \a start position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setTail(QCPLineEnding::esSpikeArrow) \endcode + + \see setHead +*/ +void QCPItemCurve::setTail(const QCPLineEnding &tail) +{ + mTail = tail; +} + +/* inherits documentation from base class */ +double QCPItemCurve::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QPointF startVec(start->pixelPoint()); + QPointF startDirVec(startDir->pixelPoint()); + QPointF endDirVec(endDir->pixelPoint()); + QPointF endVec(end->pixelPoint()); + + QPainterPath cubicPath(startVec); + cubicPath.cubicTo(startDirVec, endDirVec, endVec); + + QPolygonF polygon = cubicPath.toSubpathPolygons().first(); + double minDistSqr = std::numeric_limits::max(); + for (int i=1; ipixelPoint()); + QPointF startDirVec(startDir->pixelPoint()); + QPointF endDirVec(endDir->pixelPoint()); + QPointF endVec(end->pixelPoint()); + if (QVector2D(endVec-startVec).length() > 1e10) // too large curves cause crash + return; + + QPainterPath cubicPath(startVec); + cubicPath.cubicTo(startDirVec, endDirVec, endVec); + + // paint visible segment, if existent: + QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); + QRect cubicRect = cubicPath.controlPointRect().toRect(); + if (cubicRect.isEmpty()) // may happen when start and end exactly on same x or y position + cubicRect.adjust(0, 0, 1, 1); + if (clip.intersects(cubicRect)) + { + painter->setPen(mainPen()); + painter->drawPath(cubicPath); + painter->setBrush(Qt::SolidPattern); + if (mTail.style() != QCPLineEnding::esNone) + mTail.draw(painter, QVector2D(startVec), M_PI-cubicPath.angleAtPercent(0)/180.0*M_PI); + if (mHead.style() != QCPLineEnding::esNone) + mHead.draw(painter, QVector2D(endVec), -cubicPath.angleAtPercent(1)/180.0*M_PI); + } +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemCurve::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemRect +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemRect + \brief A rectangle + + \image html QCPItemRect.png "Rectangle example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a topLeft and \a bottomRight, which define the rectangle. +*/ + +/*! + Creates a rectangle item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemRect::QCPItemRect(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + topLeft(createPosition("topLeft")), + bottomRight(createPosition("bottomRight")), + top(createAnchor("top", aiTop)), + topRight(createAnchor("topRight", aiTopRight)), + right(createAnchor("right", aiRight)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), + left(createAnchor("left", aiLeft)) +{ + topLeft->setCoords(0, 1); + bottomRight->setCoords(1, 0); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); +} + +QCPItemRect::~QCPItemRect() +{ +} + +/*! + Sets the pen that will be used to draw the line of the rectangle + + \see setSelectedPen, setBrush +*/ +void QCPItemRect::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line of the rectangle when selected + + \see setPen, setSelected +*/ +void QCPItemRect::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used to fill the rectangle. To disable filling, set \a brush to + Qt::NoBrush. + + \see setSelectedBrush, setPen +*/ +void QCPItemRect::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used to fill the rectangle when selected. To disable filling, set \a + brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPItemRect::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/* inherits documentation from base class */ +double QCPItemRect::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()).normalized(); + bool filledRect = mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0; + return rectSelectTest(rect, pos, filledRect); +} + +/* inherits documentation from base class */ +void QCPItemRect::draw(QCPPainter *painter) +{ + QPointF p1 = topLeft->pixelPoint(); + QPointF p2 = bottomRight->pixelPoint(); + if (p1.toPoint() == p2.toPoint()) + return; + QRectF rect = QRectF(p1, p2).normalized(); + double clipPad = mainPen().widthF(); + QRectF boundingRect = rect.adjusted(-clipPad, -clipPad, clipPad, clipPad); + if (boundingRect.intersects(clipRect())) // only draw if bounding rect of rect item is visible in cliprect + { + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + painter->drawRect(rect); + } +} + +/* inherits documentation from base class */ +QPointF QCPItemRect::anchorPixelPoint(int anchorId) const +{ + QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()); + switch (anchorId) + { + case aiTop: return (rect.topLeft()+rect.topRight())*0.5; + case aiTopRight: return rect.topRight(); + case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; + case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; + case aiBottomLeft: return rect.bottomLeft(); + case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemRect::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemRect::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemText +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemText + \brief A text label + + \image html QCPItemText.png "Text example. Blue dotted circles are anchors, solid blue discs are positions." + + Its position is defined by the member \a position and the setting of \ref setPositionAlignment. + The latter controls which part of the text rect shall be aligned with \a position. + + The text alignment itself (i.e. left, center, right) can be controlled with \ref + setTextAlignment. + + The text may be rotated around the \a position point with \ref setRotation. +*/ + +/*! + Creates a text item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemText::QCPItemText(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + position(createPosition("position")), + topLeft(createAnchor("topLeft", aiTopLeft)), + top(createAnchor("top", aiTop)), + topRight(createAnchor("topRight", aiTopRight)), + right(createAnchor("right", aiRight)), + bottomRight(createAnchor("bottomRight", aiBottomRight)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), + left(createAnchor("left", aiLeft)) +{ + position->setCoords(0, 0); + + setRotation(0); + setTextAlignment(Qt::AlignTop|Qt::AlignHCenter); + setPositionAlignment(Qt::AlignCenter); + setText("text"); + + setPen(Qt::NoPen); + setSelectedPen(Qt::NoPen); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); + setColor(Qt::black); + setSelectedColor(Qt::blue); +} + +QCPItemText::~QCPItemText() +{ +} + +/*! + Sets the color of the text. +*/ +void QCPItemText::setColor(const QColor &color) +{ + mColor = color; +} + +/*! + Sets the color of the text that will be used when the item is selected. +*/ +void QCPItemText::setSelectedColor(const QColor &color) +{ + mSelectedColor = color; +} + +/*! + Sets the pen that will be used do draw a rectangular border around the text. To disable the + border, set \a pen to Qt::NoPen. + + \see setSelectedPen, setBrush, setPadding +*/ +void QCPItemText::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used do draw a rectangular border around the text, when the item is + selected. To disable the border, set \a pen to Qt::NoPen. + + \see setPen +*/ +void QCPItemText::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used do fill the background of the text. To disable the + background, set \a brush to Qt::NoBrush. + + \see setSelectedBrush, setPen, setPadding +*/ +void QCPItemText::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used do fill the background of the text, when the item is selected. To disable the + background, set \a brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPItemText::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + Sets the font of the text. + + \see setSelectedFont, setColor +*/ +void QCPItemText::setFont(const QFont &font) +{ + mFont = font; +} + +/*! + Sets the font of the text that will be used when the item is selected. + + \see setFont +*/ +void QCPItemText::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; +} + +/*! + Sets the text that will be displayed. Multi-line texts are supported by inserting a line break + character, e.g. '\n'. + + \see setFont, setColor, setTextAlignment +*/ +void QCPItemText::setText(const QString &text) +{ + mText = text; +} + +/*! + Sets which point of the text rect shall be aligned with \a position. + + Examples: + \li If \a alignment is Qt::AlignHCenter | Qt::AlignTop, the text will be positioned such + that the top of the text rect will be horizontally centered on \a position. + \li If \a alignment is Qt::AlignLeft | Qt::AlignBottom, \a position will indicate the + bottom left corner of the text rect. + + If you want to control the alignment of (multi-lined) text within the text rect, use \ref + setTextAlignment. +*/ +void QCPItemText::setPositionAlignment(Qt::Alignment alignment) +{ + mPositionAlignment = alignment; +} + +/*! + Controls how (multi-lined) text is aligned inside the text rect (typically Qt::AlignLeft, Qt::AlignCenter or Qt::AlignRight). +*/ +void QCPItemText::setTextAlignment(Qt::Alignment alignment) +{ + mTextAlignment = alignment; +} + +/*! + Sets the angle in degrees by which the text (and the text rectangle, if visible) will be rotated + around \a position. +*/ +void QCPItemText::setRotation(double degrees) +{ + mRotation = degrees; +} + +/*! + Sets the distance between the border of the text rectangle and the text. The appearance (and + visibility) of the text rectangle can be controlled with \ref setPen and \ref setBrush. +*/ +void QCPItemText::setPadding(const QMargins &padding) +{ + mPadding = padding; +} + +/* inherits documentation from base class */ +double QCPItemText::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + // The rect may be rotated, so we transform the actual clicked pos to the rotated + // coordinate system, so we can use the normal rectSelectTest function for non-rotated rects: + QPointF positionPixels(position->pixelPoint()); + QTransform inputTransform; + inputTransform.translate(positionPixels.x(), positionPixels.y()); + inputTransform.rotate(-mRotation); + inputTransform.translate(-positionPixels.x(), -positionPixels.y()); + QPointF rotatedPos = inputTransform.map(pos); + QFontMetrics fontMetrics(mFont); + QRect textRect = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); + QRect textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); + QPointF textPos = getTextDrawPoint(positionPixels, textBoxRect, mPositionAlignment); + textBoxRect.moveTopLeft(textPos.toPoint()); + + return rectSelectTest(textBoxRect, rotatedPos, true); +} + +/* inherits documentation from base class */ +void QCPItemText::draw(QCPPainter *painter) +{ + QPointF pos(position->pixelPoint()); + QTransform transform = painter->transform(); + transform.translate(pos.x(), pos.y()); + if (!qFuzzyIsNull(mRotation)) + transform.rotate(mRotation); + painter->setFont(mainFont()); + QRect textRect = painter->fontMetrics().boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); + QRect textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); + QPointF textPos = getTextDrawPoint(QPointF(0, 0), textBoxRect, mPositionAlignment); // 0, 0 because the transform does the translation + textRect.moveTopLeft(textPos.toPoint()+QPoint(mPadding.left(), mPadding.top())); + textBoxRect.moveTopLeft(textPos.toPoint()); + double clipPad = mainPen().widthF(); + QRect boundingRect = textBoxRect.adjusted(-clipPad, -clipPad, clipPad, clipPad); + if (transform.mapRect(boundingRect).intersects(painter->transform().mapRect(clipRect()))) + { + painter->setTransform(transform); + if ((mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) || + (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0)) + { + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + painter->drawRect(textBoxRect); + } + painter->setBrush(Qt::NoBrush); + painter->setPen(QPen(mainColor())); + painter->drawText(textRect, Qt::TextDontClip|mTextAlignment, mText); + } +} + +/* inherits documentation from base class */ +QPointF QCPItemText::anchorPixelPoint(int anchorId) const +{ + // get actual rect points (pretty much copied from draw function): + QPointF pos(position->pixelPoint()); + QTransform transform; + transform.translate(pos.x(), pos.y()); + if (!qFuzzyIsNull(mRotation)) + transform.rotate(mRotation); + QFontMetrics fontMetrics(mainFont()); + QRect textRect = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); + QRectF textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); + QPointF textPos = getTextDrawPoint(QPointF(0, 0), textBoxRect, mPositionAlignment); // 0, 0 because the transform does the translation + textBoxRect.moveTopLeft(textPos.toPoint()); + QPolygonF rectPoly = transform.map(QPolygonF(textBoxRect)); + + switch (anchorId) + { + case aiTopLeft: return rectPoly.at(0); + case aiTop: return (rectPoly.at(0)+rectPoly.at(1))*0.5; + case aiTopRight: return rectPoly.at(1); + case aiRight: return (rectPoly.at(1)+rectPoly.at(2))*0.5; + case aiBottomRight: return rectPoly.at(2); + case aiBottom: return (rectPoly.at(2)+rectPoly.at(3))*0.5; + case aiBottomLeft: return rectPoly.at(3); + case aiLeft: return (rectPoly.at(3)+rectPoly.at(0))*0.5; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the point that must be given to the QPainter::drawText function (which expects the top + left point of the text rect), according to the position \a pos, the text bounding box \a rect and + the requested \a positionAlignment. + + For example, if \a positionAlignment is Qt::AlignLeft | Qt::AlignBottom the returned point + will be shifted upward by the height of \a rect, starting from \a pos. So if the text is finally + drawn at that point, the lower left corner of the resulting text rect is at \a pos. +*/ +QPointF QCPItemText::getTextDrawPoint(const QPointF &pos, const QRectF &rect, Qt::Alignment positionAlignment) const +{ + if (positionAlignment == 0 || positionAlignment == (Qt::AlignLeft|Qt::AlignTop)) + return pos; + + QPointF result = pos; // start at top left + if (positionAlignment.testFlag(Qt::AlignHCenter)) + result.rx() -= rect.width()/2.0; + else if (positionAlignment.testFlag(Qt::AlignRight)) + result.rx() -= rect.width(); + if (positionAlignment.testFlag(Qt::AlignVCenter)) + result.ry() -= rect.height()/2.0; + else if (positionAlignment.testFlag(Qt::AlignBottom)) + result.ry() -= rect.height(); + return result; +} + +/*! \internal + + Returns the font that should be used for drawing text. Returns mFont when the item is not selected + and mSelectedFont when it is. +*/ +QFont QCPItemText::mainFont() const +{ + return mSelected ? mSelectedFont : mFont; +} + +/*! \internal + + Returns the color that should be used for drawing text. Returns mColor when the item is not + selected and mSelectedColor when it is. +*/ +QColor QCPItemText::mainColor() const +{ + return mSelected ? mSelectedColor : mColor; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemText::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemText::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemEllipse +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemEllipse + \brief An ellipse + + \image html QCPItemEllipse.png "Ellipse example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a topLeft and \a bottomRight, which define the rect the ellipse will be drawn in. +*/ + +/*! + Creates an ellipse item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemEllipse::QCPItemEllipse(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + topLeft(createPosition("topLeft")), + bottomRight(createPosition("bottomRight")), + topLeftRim(createAnchor("topLeftRim", aiTopLeftRim)), + top(createAnchor("top", aiTop)), + topRightRim(createAnchor("topRightRim", aiTopRightRim)), + right(createAnchor("right", aiRight)), + bottomRightRim(createAnchor("bottomRightRim", aiBottomRightRim)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeftRim(createAnchor("bottomLeftRim", aiBottomLeftRim)), + left(createAnchor("left", aiLeft)), + center(createAnchor("center", aiCenter)) +{ + topLeft->setCoords(0, 1); + bottomRight->setCoords(1, 0); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2)); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); +} + +QCPItemEllipse::~QCPItemEllipse() +{ +} + +/*! + Sets the pen that will be used to draw the line of the ellipse + + \see setSelectedPen, setBrush +*/ +void QCPItemEllipse::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line of the ellipse when selected + + \see setPen, setSelected +*/ +void QCPItemEllipse::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used to fill the ellipse. To disable filling, set \a brush to + Qt::NoBrush. + + \see setSelectedBrush, setPen +*/ +void QCPItemEllipse::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used to fill the ellipse when selected. To disable filling, set \a + brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPItemEllipse::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/* inherits documentation from base class */ +double QCPItemEllipse::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + double result = -1; + QPointF p1 = topLeft->pixelPoint(); + QPointF p2 = bottomRight->pixelPoint(); + QPointF center((p1+p2)/2.0); + double a = qAbs(p1.x()-p2.x())/2.0; + double b = qAbs(p1.y()-p2.y())/2.0; + double x = pos.x()-center.x(); + double y = pos.y()-center.y(); + + // distance to border: + double c = 1.0/qSqrt(x*x/(a*a)+y*y/(b*b)); + result = qAbs(c-1)*qSqrt(x*x+y*y); + // filled ellipse, allow click inside to count as hit: + if (result > mParentPlot->selectionTolerance()*0.99 && mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0) + { + if (x*x/(a*a) + y*y/(b*b) <= 1) + result = mParentPlot->selectionTolerance()*0.99; + } + return result; +} + +/* inherits documentation from base class */ +void QCPItemEllipse::draw(QCPPainter *painter) +{ + QPointF p1 = topLeft->pixelPoint(); + QPointF p2 = bottomRight->pixelPoint(); + if (p1.toPoint() == p2.toPoint()) + return; + QRectF ellipseRect = QRectF(p1, p2).normalized(); + QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); + if (ellipseRect.intersects(clip)) // only draw if bounding rect of ellipse is visible in cliprect + { + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); +#ifdef __EXCEPTIONS + try // drawEllipse sometimes throws exceptions if ellipse is too big + { +#endif + painter->drawEllipse(ellipseRect); +#ifdef __EXCEPTIONS + } catch (...) + { + qDebug() << Q_FUNC_INFO << "Item too large for memory, setting invisible"; + setVisible(false); + } +#endif + } +} + +/* inherits documentation from base class */ +QPointF QCPItemEllipse::anchorPixelPoint(int anchorId) const +{ + QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()); + switch (anchorId) + { + case aiTopLeftRim: return rect.center()+(rect.topLeft()-rect.center())*1/qSqrt(2); + case aiTop: return (rect.topLeft()+rect.topRight())*0.5; + case aiTopRightRim: return rect.center()+(rect.topRight()-rect.center())*1/qSqrt(2); + case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; + case aiBottomRightRim: return rect.center()+(rect.bottomRight()-rect.center())*1/qSqrt(2); + case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; + case aiBottomLeftRim: return rect.center()+(rect.bottomLeft()-rect.center())*1/qSqrt(2); + case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5; + case aiCenter: return (rect.topLeft()+rect.bottomRight())*0.5; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemEllipse::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemEllipse::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemPixmap +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemPixmap + \brief An arbitrary pixmap + + \image html QCPItemPixmap.png "Pixmap example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a topLeft and \a bottomRight, which define the rectangle the pixmap will + be drawn in. Depending on the scale setting (\ref setScaled), the pixmap will be either scaled to + fit the rectangle or be drawn aligned to the topLeft position. + + If scaling is enabled and \a topLeft is further to the bottom/right than \a bottomRight (as shown + on the right side of the example image), the pixmap will be flipped in the respective + orientations. +*/ + +/*! + Creates a rectangle item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemPixmap::QCPItemPixmap(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + topLeft(createPosition("topLeft")), + bottomRight(createPosition("bottomRight")), + top(createAnchor("top", aiTop)), + topRight(createAnchor("topRight", aiTopRight)), + right(createAnchor("right", aiRight)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), + left(createAnchor("left", aiLeft)) +{ + topLeft->setCoords(0, 1); + bottomRight->setCoords(1, 0); + + setPen(Qt::NoPen); + setSelectedPen(QPen(Qt::blue)); + setScaled(false, Qt::KeepAspectRatio); +} + +QCPItemPixmap::~QCPItemPixmap() +{ +} + +/*! + Sets the pixmap that will be displayed. +*/ +void QCPItemPixmap::setPixmap(const QPixmap &pixmap) +{ + mPixmap = pixmap; + if (mPixmap.isNull()) + qDebug() << Q_FUNC_INFO << "pixmap is null"; +} + +/*! + Sets whether the pixmap will be scaled to fit the rectangle defined by the \a topLeft and \a + bottomRight positions. +*/ +void QCPItemPixmap::setScaled(bool scaled, Qt::AspectRatioMode aspectRatioMode) +{ + mScaled = scaled; + mAspectRatioMode = aspectRatioMode; + updateScaledPixmap(); +} + +/*! + Sets the pen that will be used to draw a border around the pixmap. + + \see setSelectedPen, setBrush +*/ +void QCPItemPixmap::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw a border around the pixmap when selected + + \see setPen, setSelected +*/ +void QCPItemPixmap::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/* inherits documentation from base class */ +double QCPItemPixmap::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + return rectSelectTest(getFinalRect(), pos, true); +} + +/* inherits documentation from base class */ +void QCPItemPixmap::draw(QCPPainter *painter) +{ + bool flipHorz = false; + bool flipVert = false; + QRect rect = getFinalRect(&flipHorz, &flipVert); + double clipPad = mainPen().style() == Qt::NoPen ? 0 : mainPen().widthF(); + QRect boundingRect = rect.adjusted(-clipPad, -clipPad, clipPad, clipPad); + if (boundingRect.intersects(clipRect())) + { + updateScaledPixmap(rect, flipHorz, flipVert); + painter->drawPixmap(rect.topLeft(), mScaled ? mScaledPixmap : mPixmap); + QPen pen = mainPen(); + if (pen.style() != Qt::NoPen) + { + painter->setPen(pen); + painter->setBrush(Qt::NoBrush); + painter->drawRect(rect); + } + } +} + +/* inherits documentation from base class */ +QPointF QCPItemPixmap::anchorPixelPoint(int anchorId) const +{ + bool flipHorz; + bool flipVert; + QRect rect = getFinalRect(&flipHorz, &flipVert); + // we actually want denormal rects (negative width/height) here, so restore + // the flipped state: + if (flipHorz) + rect.adjust(rect.width(), 0, -rect.width(), 0); + if (flipVert) + rect.adjust(0, rect.height(), 0, -rect.height()); + + switch (anchorId) + { + case aiTop: return (rect.topLeft()+rect.topRight())*0.5; + case aiTopRight: return rect.topRight(); + case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; + case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; + case aiBottomLeft: return rect.bottomLeft(); + case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5;; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Creates the buffered scaled image (\a mScaledPixmap) to fit the specified \a finalRect. The + parameters \a flipHorz and \a flipVert control whether the resulting image shall be flipped + horizontally or vertically. (This is used when \a topLeft is further to the bottom/right than \a + bottomRight.) + + This function only creates the scaled pixmap when the buffered pixmap has a different size than + the expected result, so calling this function repeatedly, e.g. in the \ref draw function, does + not cause expensive rescaling every time. + + If scaling is disabled, sets mScaledPixmap to a null QPixmap. +*/ +void QCPItemPixmap::updateScaledPixmap(QRect finalRect, bool flipHorz, bool flipVert) +{ + if (mPixmap.isNull()) + return; + + if (mScaled) + { + if (finalRect.isNull()) + finalRect = getFinalRect(&flipHorz, &flipVert); + if (finalRect.size() != mScaledPixmap.size()) + { + mScaledPixmap = mPixmap.scaled(finalRect.size(), mAspectRatioMode, Qt::SmoothTransformation); + if (flipHorz || flipVert) + mScaledPixmap = QPixmap::fromImage(mScaledPixmap.toImage().mirrored(flipHorz, flipVert)); + } + } else if (!mScaledPixmap.isNull()) + mScaledPixmap = QPixmap(); +} + +/*! \internal + + Returns the final (tight) rect the pixmap is drawn in, depending on the current item positions + and scaling settings. + + The output parameters \a flippedHorz and \a flippedVert return whether the pixmap should be drawn + flipped horizontally or vertically in the returned rect. (The returned rect itself is always + normalized, i.e. the top left corner of the rect is actually further to the top/left than the + bottom right corner). This is the case when the item position \a topLeft is further to the + bottom/right than \a bottomRight. + + If scaling is disabled, returns a rect with size of the original pixmap and the top left corner + aligned with the item position \a topLeft. The position \a bottomRight is ignored. +*/ +QRect QCPItemPixmap::getFinalRect(bool *flippedHorz, bool *flippedVert) const +{ + QRect result; + bool flipHorz = false; + bool flipVert = false; + QPoint p1 = topLeft->pixelPoint().toPoint(); + QPoint p2 = bottomRight->pixelPoint().toPoint(); + if (p1 == p2) + return QRect(p1, QSize(0, 0)); + if (mScaled) + { + QSize newSize = QSize(p2.x()-p1.x(), p2.y()-p1.y()); + QPoint topLeft = p1; + if (newSize.width() < 0) + { + flipHorz = true; + newSize.rwidth() *= -1; + topLeft.setX(p2.x()); + } + if (newSize.height() < 0) + { + flipVert = true; + newSize.rheight() *= -1; + topLeft.setY(p2.y()); + } + QSize scaledSize = mPixmap.size(); + scaledSize.scale(newSize, mAspectRatioMode); + result = QRect(topLeft, scaledSize); + } else + { + result = QRect(p1, mPixmap.size()); + } + if (flippedHorz) + *flippedHorz = flipHorz; + if (flippedVert) + *flippedVert = flipVert; + return result; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemPixmap::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemTracer +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemTracer + \brief Item that sticks to QCPGraph data points + + \image html QCPItemTracer.png "Tracer example. Blue dotted circles are anchors, solid blue discs are positions." + + The tracer can be connected with a QCPGraph via \ref setGraph. Then it will automatically adopt + the coordinate axes of the graph and update its \a position to be on the graph's data. This means + the key stays controllable via \ref setGraphKey, but the value will follow the graph data. If a + QCPGraph is connected, note that setting the coordinates of the tracer item directly via \a + position will have no effect because they will be overriden in the next redraw (this is when the + coordinate update happens). + + If the specified key in \ref setGraphKey is outside the key bounds of the graph, the tracer will + stay at the corresponding end of the graph. + + With \ref setInterpolating you may specify whether the tracer may only stay exactly on data + points or whether it interpolates data points linearly, if given a key that lies between two data + points of the graph. + + The tracer has different visual styles, see \ref setStyle. It is also possible to make the tracer + have no own visual appearance (set the style to \ref tsNone), and just connect other item + positions to the tracer \a position (used as an anchor) via \ref + QCPItemPosition::setParentAnchor. + + \note The tracer position is only automatically updated upon redraws. So when the data of the + graph changes and immediately afterwards (without a redraw) the a position coordinates of the + tracer are retrieved, they will not reflect the updated data of the graph. In this case \ref + updatePosition must be called manually, prior to reading the tracer coordinates. +*/ + +/*! + Creates a tracer item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemTracer::QCPItemTracer(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + position(createPosition("position")), + mGraph(0) +{ + position->setCoords(0, 0); + + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2)); + setStyle(tsCrosshair); + setSize(6); + setInterpolating(false); + setGraphKey(0); +} + +QCPItemTracer::~QCPItemTracer() +{ +} + +/*! + Sets the pen that will be used to draw the line of the tracer + + \see setSelectedPen, setBrush +*/ +void QCPItemTracer::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line of the tracer when selected + + \see setPen, setSelected +*/ +void QCPItemTracer::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used to draw any fills of the tracer + + \see setSelectedBrush, setPen +*/ +void QCPItemTracer::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used to draw any fills of the tracer, when selected. + + \see setBrush, setSelected +*/ +void QCPItemTracer::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + Sets the size of the tracer in pixels, if the style supports setting a size (e.g. \ref tsSquare + does, \ref tsCrosshair does not). +*/ +void QCPItemTracer::setSize(double size) +{ + mSize = size; +} + +/*! + Sets the style/visual appearance of the tracer. + + If you only want to use the tracer \a position as an anchor for other items, set \a style to + \ref tsNone. +*/ +void QCPItemTracer::setStyle(QCPItemTracer::TracerStyle style) +{ + mStyle = style; +} + +/*! + Sets the QCPGraph this tracer sticks to. The tracer \a position will be set to type + QCPItemPosition::ptPlotCoords and the axes will be set to the axes of \a graph. + + To free the tracer from any graph, set \a graph to 0. The tracer \a position can then be placed + freely like any other item position. This is the state the tracer will assume when its graph gets + deleted while still attached to it. + + \see setGraphKey +*/ +void QCPItemTracer::setGraph(QCPGraph *graph) +{ + if (graph) + { + if (graph->parentPlot() == mParentPlot) + { + position->setType(QCPItemPosition::ptPlotCoords); + position->setAxes(graph->keyAxis(), graph->valueAxis()); + mGraph = graph; + updatePosition(); + } else + qDebug() << Q_FUNC_INFO << "graph isn't in same QCustomPlot instance as this item"; + } else + { + mGraph = 0; + } +} + +/*! + Sets the key of the graph's data point the tracer will be positioned at. This is the only free + coordinate of a tracer when attached to a graph. + + Depending on \ref setInterpolating, the tracer will be either positioned on the data point + closest to \a key, or will stay exactly at \a key and interpolate the value linearly. + + \see setGraph, setInterpolating +*/ +void QCPItemTracer::setGraphKey(double key) +{ + mGraphKey = key; +} + +/*! + Sets whether the value of the graph's data points shall be interpolated, when positioning the + tracer. + + If \a enabled is set to false and a key is given with \ref setGraphKey, the tracer is placed on + the data point of the graph which is closest to the key, but which is not necessarily exactly + there. If \a enabled is true, the tracer will be positioned exactly at the specified key, and + the appropriate value will be interpolated from the graph's data points linearly. + + \see setGraph, setGraphKey +*/ +void QCPItemTracer::setInterpolating(bool enabled) +{ + mInterpolating = enabled; +} + +/* inherits documentation from base class */ +double QCPItemTracer::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QPointF center(position->pixelPoint()); + double w = mSize/2.0; + QRect clip = clipRect(); + switch (mStyle) + { + case tsNone: return -1; + case tsPlus: + { + if (clipRect().intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + return qSqrt(qMin(distSqrToLine(center+QPointF(-w, 0), center+QPointF(w, 0), pos), + distSqrToLine(center+QPointF(0, -w), center+QPointF(0, w), pos))); + break; + } + case tsCrosshair: + { + return qSqrt(qMin(distSqrToLine(QPointF(clip.left(), center.y()), QPointF(clip.right(), center.y()), pos), + distSqrToLine(QPointF(center.x(), clip.top()), QPointF(center.x(), clip.bottom()), pos))); + } + case tsCircle: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + { + // distance to border: + double centerDist = QVector2D(center-pos).length(); + double circleLine = w; + double result = qAbs(centerDist-circleLine); + // filled ellipse, allow click inside to count as hit: + if (result > mParentPlot->selectionTolerance()*0.99 && mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0) + { + if (centerDist <= circleLine) + result = mParentPlot->selectionTolerance()*0.99; + } + return result; + } + break; + } + case tsSquare: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + { + QRectF rect = QRectF(center-QPointF(w, w), center+QPointF(w, w)); + bool filledRect = mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0; + return rectSelectTest(rect, pos, filledRect); + } + break; + } + } + return -1; +} + +/* inherits documentation from base class */ +void QCPItemTracer::draw(QCPPainter *painter) +{ + updatePosition(); + if (mStyle == tsNone) + return; + + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + QPointF center(position->pixelPoint()); + double w = mSize/2.0; + QRect clip = clipRect(); + switch (mStyle) + { + case tsNone: return; + case tsPlus: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + { + painter->drawLine(QLineF(center+QPointF(-w, 0), center+QPointF(w, 0))); + painter->drawLine(QLineF(center+QPointF(0, -w), center+QPointF(0, w))); + } + break; + } + case tsCrosshair: + { + if (center.y() > clip.top() && center.y() < clip.bottom()) + painter->drawLine(QLineF(clip.left(), center.y(), clip.right(), center.y())); + if (center.x() > clip.left() && center.x() < clip.right()) + painter->drawLine(QLineF(center.x(), clip.top(), center.x(), clip.bottom())); + break; + } + case tsCircle: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + painter->drawEllipse(center, w, w); + break; + } + case tsSquare: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + painter->drawRect(QRectF(center-QPointF(w, w), center+QPointF(w, w))); + break; + } + } +} + +/*! + If the tracer is connected with a graph (\ref setGraph), this function updates the tracer's \a + position to reside on the graph data, depending on the configured key (\ref setGraphKey). + + It is called automatically on every redraw and normally doesn't need to be called manually. One + exception is when you want to read the tracer coordinates via \a position and are not sure that + the graph's data (or the tracer key with \ref setGraphKey) hasn't changed since the last redraw. + In that situation, call this function before accessing \a position, to make sure you don't get + out-of-date coordinates. + + If there is no graph set on this tracer, this function does nothing. +*/ +void QCPItemTracer::updatePosition() +{ + if (mGraph) + { + if (mParentPlot->hasPlottable(mGraph)) + { + if (mGraph->data()->size() > 1) + { + QCPDataMap::const_iterator first = mGraph->data()->constBegin(); + QCPDataMap::const_iterator last = mGraph->data()->constEnd()-1; + if (mGraphKey < first.key()) + position->setCoords(first.key(), first.value().value); + else if (mGraphKey > last.key()) + position->setCoords(last.key(), last.value().value); + else + { + QCPDataMap::const_iterator it = first; + it = mGraph->data()->lowerBound(mGraphKey); + if (it != first) // mGraphKey is somewhere between iterators + { + QCPDataMap::const_iterator prevIt = it-1; + if (mInterpolating) + { + // interpolate between iterators around mGraphKey: + double slope = (it.value().value-prevIt.value().value)/(it.key()-prevIt.key()); + position->setCoords(mGraphKey, (mGraphKey-prevIt.key())*slope+prevIt.value().value); + } else + { + // find iterator with key closest to mGraphKey: + if (mGraphKey < (prevIt.key()+it.key())*0.5) + it = prevIt; + position->setCoords(it.key(), it.value().value); + } + } else // mGraphKey is exactly on first iterator + position->setCoords(it.key(), it.value().value); + } + } else if (mGraph->data()->size() == 1) + { + QCPDataMap::const_iterator it = mGraph->data()->constBegin(); + position->setCoords(it.key(), it.value().value); + } else + qDebug() << Q_FUNC_INFO << "graph has no data"; + } else + qDebug() << Q_FUNC_INFO << "graph not contained in QCustomPlot instance (anymore)"; + } +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemTracer::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemTracer::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemBracket +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemBracket + \brief A bracket for referencing/highlighting certain parts in the plot. + + \image html QCPItemBracket.png "Bracket example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a left and \a right, which define the span of the bracket. If \a left is + actually farther to the left than \a right, the bracket is opened to the bottom, as shown in the + example image. + + The bracket supports multiple styles via \ref setStyle. The length, i.e. how far the bracket + stretches away from the embraced span, can be controlled with \ref setLength. + + \image html QCPItemBracket-length.png +
Demonstrating the effect of different values for \ref setLength, for styles \ref + bsCalligraphic and \ref bsSquare. Anchors and positions are displayed for reference.
+ + It provides an anchor \a center, to allow connection of other items, e.g. an arrow (QCPItemLine + or QCPItemCurve) or a text label (QCPItemText), to the bracket. +*/ + +/*! + Creates a bracket item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemBracket::QCPItemBracket(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + left(createPosition("left")), + right(createPosition("right")), + center(createAnchor("center", aiCenter)) +{ + left->setCoords(0, 0); + right->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2)); + setLength(8); + setStyle(bsCalligraphic); +} + +QCPItemBracket::~QCPItemBracket() +{ +} + +/*! + Sets the pen that will be used to draw the bracket. + + Note that when the style is \ref bsCalligraphic, only the color will be taken from the pen, the + stroke and width are ignored. To change the apparent stroke width of a calligraphic bracket, use + \ref setLength, which has a similar effect. + + \see setSelectedPen +*/ +void QCPItemBracket::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the bracket when selected + + \see setPen, setSelected +*/ +void QCPItemBracket::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the \a length in pixels how far the bracket extends in the direction towards the embraced + span of the bracket (i.e. perpendicular to the left-right-direction) + + \image html QCPItemBracket-length.png +
Demonstrating the effect of different values for \ref setLength, for styles \ref + bsCalligraphic and \ref bsSquare. Anchors and positions are displayed for reference.
+*/ +void QCPItemBracket::setLength(double length) +{ + mLength = length; +} + +/*! + Sets the style of the bracket, i.e. the shape/visual appearance. + + \see setPen +*/ +void QCPItemBracket::setStyle(QCPItemBracket::BracketStyle style) +{ + mStyle = style; +} + +/* inherits documentation from base class */ +double QCPItemBracket::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QVector2D leftVec(left->pixelPoint()); + QVector2D rightVec(right->pixelPoint()); + if (leftVec.toPoint() == rightVec.toPoint()) + return -1; + + QVector2D widthVec = (rightVec-leftVec)*0.5; + QVector2D lengthVec(-widthVec.y(), widthVec.x()); + lengthVec = lengthVec.normalized()*mLength; + QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; + + return qSqrt(distSqrToLine((centerVec-widthVec).toPointF(), (centerVec+widthVec).toPointF(), pos)); +} + +/* inherits documentation from base class */ +void QCPItemBracket::draw(QCPPainter *painter) +{ + QVector2D leftVec(left->pixelPoint()); + QVector2D rightVec(right->pixelPoint()); + if (leftVec.toPoint() == rightVec.toPoint()) + return; + + QVector2D widthVec = (rightVec-leftVec)*0.5; + QVector2D lengthVec(-widthVec.y(), widthVec.x()); + lengthVec = lengthVec.normalized()*mLength; + QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; + + QPolygon boundingPoly; + boundingPoly << leftVec.toPoint() << rightVec.toPoint() + << (rightVec-lengthVec).toPoint() << (leftVec-lengthVec).toPoint(); + QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); + if (clip.intersects(boundingPoly.boundingRect())) + { + painter->setPen(mainPen()); + switch (mStyle) + { + case bsSquare: + { + painter->drawLine((centerVec+widthVec).toPointF(), (centerVec-widthVec).toPointF()); + painter->drawLine((centerVec+widthVec).toPointF(), (centerVec+widthVec+lengthVec).toPointF()); + painter->drawLine((centerVec-widthVec).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + break; + } + case bsRound: + { + painter->setBrush(Qt::NoBrush); + QPainterPath path; + path.moveTo((centerVec+widthVec+lengthVec).toPointF()); + path.cubicTo((centerVec+widthVec).toPointF(), (centerVec+widthVec).toPointF(), centerVec.toPointF()); + path.cubicTo((centerVec-widthVec).toPointF(), (centerVec-widthVec).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + painter->drawPath(path); + break; + } + case bsCurly: + { + painter->setBrush(Qt::NoBrush); + QPainterPath path; + path.moveTo((centerVec+widthVec+lengthVec).toPointF()); + path.cubicTo((centerVec+widthVec*1-lengthVec*0.8).toPointF(), (centerVec+0.4*widthVec+1*lengthVec).toPointF(), centerVec.toPointF()); + path.cubicTo((centerVec-0.4*widthVec+1*lengthVec).toPointF(), (centerVec-widthVec*1-lengthVec*0.8).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + painter->drawPath(path); + break; + } + case bsCalligraphic: + { + painter->setPen(Qt::NoPen); + painter->setBrush(QBrush(mainPen().color())); + QPainterPath path; + path.moveTo((centerVec+widthVec+lengthVec).toPointF()); + + path.cubicTo((centerVec+widthVec*1-lengthVec*0.8).toPointF(), (centerVec+0.4*widthVec+0.8*lengthVec).toPointF(), centerVec.toPointF()); + path.cubicTo((centerVec-0.4*widthVec+0.8*lengthVec).toPointF(), (centerVec-widthVec*1-lengthVec*0.8).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + + path.cubicTo((centerVec-widthVec*1-lengthVec*0.5).toPointF(), (centerVec-0.2*widthVec+1.2*lengthVec).toPointF(), (centerVec+lengthVec*0.2).toPointF()); + path.cubicTo((centerVec+0.2*widthVec+1.2*lengthVec).toPointF(), (centerVec+widthVec*1-lengthVec*0.5).toPointF(), (centerVec+widthVec+lengthVec).toPointF()); + + painter->drawPath(path); + break; + } + } + } +} + +/* inherits documentation from base class */ +QPointF QCPItemBracket::anchorPixelPoint(int anchorId) const +{ + QVector2D leftVec(left->pixelPoint()); + QVector2D rightVec(right->pixelPoint()); + if (leftVec.toPoint() == rightVec.toPoint()) + return leftVec.toPointF(); + + QVector2D widthVec = (rightVec-leftVec)*0.5; + QVector2D lengthVec(-widthVec.y(), widthVec.x()); + lengthVec = lengthVec.normalized()*mLength; + QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; + + switch (anchorId) + { + case aiCenter: + return centerVec.toPointF(); + } + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemBracket::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAxisRect +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAxisRect + \brief Holds multiple axes and arranges them in a rectangular shape. + + This class represents an axis rect, a rectangular area that is bounded on all sides with an + arbitrary number of axes. + + Initially QCustomPlot has one axis rect, accessible via QCustomPlot::axisRect(). However, the + layout system allows to have multiple axis rects, e.g. arranged in a grid layout + (QCustomPlot::plotLayout). + + By default, QCPAxisRect comes with four axes, at bottom, top, left and right. They can be + accessed via \ref axis by providing the respective axis type (\ref QCPAxis::AxisType) and index. + If you need all axes in the axis rect, use \ref axes. The top and right axes are set to be + invisible initially (QCPAxis::setVisible). To add more axes to a side, use \ref addAxis or \ref + addAxes. To remove an axis, use \ref removeAxis. + + The axis rect layerable itself only draws a background pixmap or color, if specified (\ref + setBackground). It is placed on the "background" layer initially (see \ref QCPLayer for an + explanation of the QCustomPlot layer system). The axes that are held by the axis rect can be + placed on other layers, independently of the axis rect. + + Every axis rect has a child layout of type \ref QCPLayoutInset. It is accessible via \ref + insetLayout and can be used to have other layout elements (or even other layouts with multiple + elements) hovering inside the axis rect. + + If an axis rect is clicked and dragged, it processes this by moving certain axis ranges. The + behaviour can be controlled with \ref setRangeDrag and \ref setRangeDragAxes. If the mouse wheel + is scrolled while the cursor is on the axis rect, certain axes are scaled. This is controllable + via \ref setRangeZoom, \ref setRangeZoomAxes and \ref setRangeZoomFactor. These interactions are + only enabled if \ref QCustomPlot::setInteractions contains \ref QCP::iRangeDrag and \ref + QCP::iRangeZoom. + + \image html AxisRectSpacingOverview.png +
Overview of the spacings and paddings that define the geometry of an axis. The dashed + line on the far left indicates the viewport/widget border.
+*/ + +/* start documentation of inline functions */ + +/*! \fn QCPLayoutInset *QCPAxisRect::insetLayout() const + + Returns the inset layout of this axis rect. It can be used to place other layout elements (or + even layouts with multiple other elements) inside/on top of an axis rect. + + \see QCPLayoutInset +*/ + +/*! \fn int QCPAxisRect::left() const + + Returns the pixel position of the left border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::right() const + + Returns the pixel position of the right border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::top() const + + Returns the pixel position of the top border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::bottom() const + + Returns the pixel position of the bottom border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::width() const + + Returns the pixel width of this axis rect. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::height() const + + Returns the pixel height of this axis rect. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QSize QCPAxisRect::size() const + + Returns the pixel size of this axis rect. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::topLeft() const + + Returns the top left corner of this axis rect in pixels. Margins are not taken into account here, + so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::topRight() const + + Returns the top right corner of this axis rect in pixels. Margins are not taken into account + here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::bottomLeft() const + + Returns the bottom left corner of this axis rect in pixels. Margins are not taken into account + here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::bottomRight() const + + Returns the bottom right corner of this axis rect in pixels. Margins are not taken into account + here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::center() const + + Returns the center of this axis rect in pixels. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/* end documentation of inline functions */ + +/*! + Creates a QCPAxisRect instance and sets default values. An axis is added for each of the four + sides, the top and right axes are set invisible initially. +*/ +QCPAxisRect::QCPAxisRect(QCustomPlot *parentPlot, bool setupDefaultAxes) : + QCPLayoutElement(parentPlot), + mBackgroundBrush(Qt::NoBrush), + mBackgroundScaled(true), + mBackgroundScaledMode(Qt::KeepAspectRatioByExpanding), + mInsetLayout(new QCPLayoutInset), + mRangeDrag(Qt::Horizontal|Qt::Vertical), + mRangeZoom(Qt::Horizontal|Qt::Vertical), + mRangeZoomFactorHorz(0.85), + mRangeZoomFactorVert(0.85), + mDragging(false) +{ + mInsetLayout->initializeParentPlot(mParentPlot); + mInsetLayout->setParentLayerable(this); + mInsetLayout->setParent(this); + + setMinimumSize(50, 50); + setMinimumMargins(QMargins(15, 15, 15, 15)); + mAxes.insert(QCPAxis::atLeft, QList()); + mAxes.insert(QCPAxis::atRight, QList()); + mAxes.insert(QCPAxis::atTop, QList()); + mAxes.insert(QCPAxis::atBottom, QList()); + + if (setupDefaultAxes) + { + QCPAxis *xAxis = addAxis(QCPAxis::atBottom); + QCPAxis *yAxis = addAxis(QCPAxis::atLeft); + QCPAxis *xAxis2 = addAxis(QCPAxis::atTop); + QCPAxis *yAxis2 = addAxis(QCPAxis::atRight); + setRangeDragAxes(xAxis, yAxis); + setRangeZoomAxes(xAxis, yAxis); + xAxis2->setVisible(false); + yAxis2->setVisible(false); + xAxis->grid()->setVisible(true); + yAxis->grid()->setVisible(true); + xAxis2->grid()->setVisible(false); + yAxis2->grid()->setVisible(false); + xAxis2->grid()->setZeroLinePen(Qt::NoPen); + yAxis2->grid()->setZeroLinePen(Qt::NoPen); + xAxis2->grid()->setVisible(false); + yAxis2->grid()->setVisible(false); + } +} + +QCPAxisRect::~QCPAxisRect() +{ + delete mInsetLayout; + mInsetLayout = 0; + + QList axesList = axes(); + for (int i=0; i ax(mAxes.value(type)); + if (index >= 0 && index < ax.size()) + { + return ax.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "Axis index out of bounds:" << index; + return 0; + } +} + +/*! + Returns all axes on the axis rect sides specified with \a types. + + \a types may be a single \ref QCPAxis::AxisType or an or-combination, to get the axes of + multiple sides. + + \see axis +*/ +QList QCPAxisRect::axes(QCPAxis::AxisTypes types) const +{ + QList result; + if (types.testFlag(QCPAxis::atLeft)) + result << mAxes.value(QCPAxis::atLeft); + if (types.testFlag(QCPAxis::atRight)) + result << mAxes.value(QCPAxis::atRight); + if (types.testFlag(QCPAxis::atTop)) + result << mAxes.value(QCPAxis::atTop); + if (types.testFlag(QCPAxis::atBottom)) + result << mAxes.value(QCPAxis::atBottom); + return result; +} + +/*! \overload + + Returns all axes of this axis rect. +*/ +QList QCPAxisRect::axes() const +{ + QList result; + QHashIterator > it(mAxes); + while (it.hasNext()) + { + it.next(); + result << it.value(); + } + return result; +} + +/*! + Adds a new axis to the axis rect side specified with \a type, and returns it. + + If an axis rect side already contains one or more axes, the lower and upper endings of the new + axis (\ref QCPAxis::setLowerEnding, \ref QCPAxis::setUpperEnding) are initialized to \ref + QCPLineEnding::esHalfBar. + + \see addAxes, setupFullAxesBox +*/ +QCPAxis *QCPAxisRect::addAxis(QCPAxis::AxisType type) +{ + QCPAxis *newAxis = new QCPAxis(this, type); + if (mAxes[type].size() > 0) // multiple axes on one side, add half-bar axis ending to additional axes with offset + { + bool invert = (type == QCPAxis::atRight) || (type == QCPAxis::atBottom); + newAxis->setLowerEnding(QCPLineEnding(QCPLineEnding::esHalfBar, 6, 10, !invert)); + newAxis->setUpperEnding(QCPLineEnding(QCPLineEnding::esHalfBar, 6, 10, invert)); + } + mAxes[type].append(newAxis); + return newAxis; +} + +/*! + Adds a new axis with \ref addAxis to each axis rect side specified in \a types. This may be an + or-combination of QCPAxis::AxisType, so axes can be added to multiple sides at once. + + Returns a list of the added axes. + + \see addAxis, setupFullAxesBox +*/ +QList QCPAxisRect::addAxes(QCPAxis::AxisTypes types) +{ + QList result; + if (types.testFlag(QCPAxis::atLeft)) + result << addAxis(QCPAxis::atLeft); + if (types.testFlag(QCPAxis::atRight)) + result << addAxis(QCPAxis::atRight); + if (types.testFlag(QCPAxis::atTop)) + result << addAxis(QCPAxis::atTop); + if (types.testFlag(QCPAxis::atBottom)) + result << addAxis(QCPAxis::atBottom); + return result; +} + +/*! + Removes the specified \a axis from the axis rect and deletes it. + + Returns true on success, i.e. if \a axis was a valid axis in this axis rect. + + \see addAxis +*/ +bool QCPAxisRect::removeAxis(QCPAxis *axis) +{ + // don't access axis->axisType() to provide safety when axis is an invalid pointer, rather go through all axis containers: + QHashIterator > it(mAxes); + while (it.hasNext()) + { + it.next(); + if (it.value().contains(axis)) + { + mAxes[it.key()].removeOne(axis); + if (qobject_cast(parentPlot())) // make sure this isn't called from QObject dtor when QCustomPlot is already destructed (happens when the axis rect is not in any layout and thus QObject-child of QCustomPlot) + parentPlot()->axisRemoved(axis); + delete axis; + return true; + } + } + qDebug() << Q_FUNC_INFO << "Axis isn't in axis rect:" << reinterpret_cast(axis); + return false; +} + +/*! + Convenience function to create an axis on each side that doesn't have any axes yet, and assign + the top/right axes the following properties of the bottom/left axes (even if they already existed + and weren't created by this function): + + \li range (\ref QCPAxis::setRange) + \li range reversed (\ref QCPAxis::setRangeReversed) + \li scale type (\ref QCPAxis::setScaleType) + \li scale log base (\ref QCPAxis::setScaleLogBase) + \li ticks (\ref QCPAxis::setTicks) + \li auto (major) tick count (\ref QCPAxis::setAutoTickCount) + \li sub tick count (\ref QCPAxis::setSubTickCount) + \li auto sub ticks (\ref QCPAxis::setAutoSubTicks) + \li tick step (\ref QCPAxis::setTickStep) + \li auto tick step (\ref QCPAxis::setAutoTickStep) + + Tick labels (\ref QCPAxis::setTickLabels) of the right and top axes are set to false. + + If \a connectRanges is true, the rangeChanged signals of the bottom and left axes are connected + to the \ref QCPAxis::setRange slots of the top and right axes. +*/ +void QCPAxisRect::setupFullAxesBox(bool connectRanges) +{ + QCPAxis *xAxis, *yAxis, *xAxis2, *yAxis2; + if (axisCount(QCPAxis::atBottom) == 0) + xAxis = addAxis(QCPAxis::atBottom); + else + xAxis = axis(QCPAxis::atBottom); + + if (axisCount(QCPAxis::atLeft) == 0) + yAxis = addAxis(QCPAxis::atLeft); + else + yAxis = axis(QCPAxis::atLeft); + + if (axisCount(QCPAxis::atTop) == 0) + xAxis2 = addAxis(QCPAxis::atTop); + else + xAxis2 = axis(QCPAxis::atTop); + + if (axisCount(QCPAxis::atRight) == 0) + yAxis2 = addAxis(QCPAxis::atRight); + else + yAxis2 = axis(QCPAxis::atRight); + + xAxis2->setVisible(true); + xAxis2->setTickLabels(false); + if (xAxis) + { + xAxis2->setAutoSubTicks(xAxis->autoSubTicks()); + xAxis2->setAutoTickCount(xAxis->autoTickCount()); + xAxis2->setAutoTickStep(xAxis->autoTickStep()); + xAxis2->setScaleType(xAxis->scaleType()); + xAxis2->setScaleLogBase(xAxis->scaleLogBase()); + xAxis2->setTicks(xAxis->ticks()); + xAxis2->setSubTickCount(xAxis->subTickCount()); + xAxis2->setTickStep(xAxis->tickStep()); + xAxis2->setRange(xAxis->range()); + xAxis2->setRangeReversed(xAxis->rangeReversed()); + } + + yAxis2->setVisible(true); + yAxis2->setTickLabels(false); + if (yAxis) + { + yAxis2->setAutoSubTicks(yAxis->autoSubTicks()); + yAxis2->setAutoTickCount(yAxis->autoTickCount()); + yAxis2->setAutoTickStep(yAxis->autoTickStep()); + yAxis2->setScaleType(yAxis->scaleType()); + yAxis2->setScaleLogBase(yAxis->scaleLogBase()); + yAxis2->setTicks(yAxis->ticks()); + yAxis2->setSubTickCount(yAxis->subTickCount()); + yAxis2->setTickStep(yAxis->tickStep()); + yAxis2->setRange(yAxis->range()); + yAxis2->setRangeReversed(yAxis->rangeReversed()); + } + + if (connectRanges) + { + connect(xAxis, SIGNAL(rangeChanged(QCPRange)), xAxis2, SLOT(setRange(QCPRange))); + connect(yAxis, SIGNAL(rangeChanged(QCPRange)), yAxis2, SLOT(setRange(QCPRange))); + } +} + +/*! + Returns a list of all the plottables that are associated with this axis rect. + + A plottable is considered associated with an axis rect if its key or value axis (or both) is in + this axis rect. + + \see graphs, items +*/ +QList QCPAxisRect::plottables() const +{ + // Note: don't append all QCPAxis::plottables() into a list, because we might get duplicate entries + QList result; + for (int i=0; imPlottables.size(); ++i) + { + if (mParentPlot->mPlottables.at(i)->keyAxis()->axisRect() == this ||mParentPlot->mPlottables.at(i)->valueAxis()->axisRect() == this) + result.append(mParentPlot->mPlottables.at(i)); + } + return result; +} + +/*! + Returns a list of all the graphs that are associated with this axis rect. + + A graph is considered associated with an axis rect if its key or value axis (or both) is in + this axis rect. + + \see plottables, items +*/ +QList QCPAxisRect::graphs() const +{ + // Note: don't append all QCPAxis::graphs() into a list, because we might get duplicate entries + QList result; + for (int i=0; imGraphs.size(); ++i) + { + if (mParentPlot->mGraphs.at(i)->keyAxis()->axisRect() == this || mParentPlot->mGraphs.at(i)->valueAxis()->axisRect() == this) + result.append(mParentPlot->mGraphs.at(i)); + } + return result; +} + +/*! + Returns a list of all the items that are associated with this axis rect. + + An item is considered associated with an axis rect if any of its positions has key or value axis + set to an axis that is in this axis rect, or if any of its positions has \ref + QCPItemPosition::setAxisRect set to the axis rect, or if the clip axis rect (\ref + QCPAbstractItem::setClipAxisRect) is set to this axis rect. + + \see plottables, graphs +*/ +QList QCPAxisRect::items() const +{ + // Note: don't just append all QCPAxis::items() into a list, because we might get duplicate entries + // and miss those items that have this axis rect as clipAxisRect. + QList result; + for (int itemId=0; itemIdmItems.size(); ++itemId) + { + if (mParentPlot->mItems.at(itemId)->clipAxisRect() == this) + { + result.append(mParentPlot->mItems.at(itemId)); + continue; + } + QList positions = mParentPlot->mItems.at(itemId)->positions(); + for (int posId=0; posIdaxisRect() == this || + positions.at(posId)->keyAxis()->axisRect() == this || + positions.at(posId)->valueAxis()->axisRect() == this) + { + result.append(mParentPlot->mItems.at(itemId)); + break; + } + } + } + return result; +} + +/*! + This method is called automatically upon replot and doesn't need to be called by users of + QCPAxisRect. + + Calls the base class implementation to update the margins (see \ref QCPLayoutElement::update), + and finally passes the \ref rect to the inset layout (\ref insetLayout) and calls its + QCPInsetLayout::update function. +*/ +void QCPAxisRect::update() +{ + QCPLayoutElement::update(); + + // pass update call on to inset layout (doesn't happen automatically, because QCPAxisRect doesn't derive from QCPLayout): + mInsetLayout->setOuterRect(rect()); + mInsetLayout->update(); +} + +/* inherits documentation from base class */ +QList QCPAxisRect::elements(bool recursive) const +{ + QList result; + if (mInsetLayout) + { + result << mInsetLayout; + if (recursive) + result << mInsetLayout->elements(recursive); + } + return result; +} + +/* inherits documentation from base class */ +void QCPAxisRect::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + painter->setAntialiasing(false); +} + +/* inherits documentation from base class */ +void QCPAxisRect::draw(QCPPainter *painter) +{ + drawBackground(painter); +} + +/*! + Sets \a pm as the axis background pixmap. The axis background pixmap will be drawn inside the + axis rect. Since axis rects place themselves on the "background" layer by default, the axis rect + backgrounds are usually drawn below everything else. + + For cases where the provided pixmap doesn't have the same size as the axis rect, scaling can be + enabled with \ref setBackgroundScaled and the scaling mode (i.e. whether and how the aspect ratio + is preserved) can be set with \ref setBackgroundScaledMode. To set all these options in one call, + consider using the overloaded version of this function. + + Below the pixmap, the axis rect may be optionally filled with a brush, if specified with \ref + setBackground(const QBrush &brush). + + \see setBackgroundScaled, setBackgroundScaledMode, setBackground(const QBrush &brush) +*/ +void QCPAxisRect::setBackground(const QPixmap &pm) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); +} + +/*! \overload + + Sets \a brush as the background brush. The axis rect background will be filled with this brush. + Since axis rects place themselves on the "background" layer by default, the axis rect backgrounds + are usually drawn below everything else. + + The brush will be drawn before (under) any background pixmap, which may be specified with \ref + setBackground(const QPixmap &pm). + + To disable drawing of a background brush, set \a brush to Qt::NoBrush. + + \see setBackground(const QPixmap &pm) +*/ +void QCPAxisRect::setBackground(const QBrush &brush) +{ + mBackgroundBrush = brush; +} + +/*! \overload + + Allows setting the background pixmap of the axis rect, whether it shall be scaled and how it + shall be scaled in one call. + + \see setBackground(const QPixmap &pm), setBackgroundScaled, setBackgroundScaledMode +*/ +void QCPAxisRect::setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); + mBackgroundScaled = scaled; + mBackgroundScaledMode = mode; +} + +/*! + Sets whether the axis background pixmap shall be scaled to fit the axis rect or not. If \a scaled + is set to true, you may control whether and how the aspect ratio of the original pixmap is + preserved with \ref setBackgroundScaledMode. + + Note that the scaled version of the original pixmap is buffered, so there is no performance + penalty on replots. (Except when the axis rect dimensions are changed continuously.) + + \see setBackground, setBackgroundScaledMode +*/ +void QCPAxisRect::setBackgroundScaled(bool scaled) +{ + mBackgroundScaled = scaled; +} + +/*! + If scaling of the axis background pixmap is enabled (\ref setBackgroundScaled), use this function to + define whether and how the aspect ratio of the original pixmap passed to \ref setBackground is preserved. + \see setBackground, setBackgroundScaled +*/ +void QCPAxisRect::setBackgroundScaledMode(Qt::AspectRatioMode mode) +{ + mBackgroundScaledMode = mode; +} + +/*! + Returns the range drag axis of the \a orientation provided. + + \see setRangeDragAxes +*/ +QCPAxis *QCPAxisRect::rangeDragAxis(Qt::Orientation orientation) +{ + return (orientation == Qt::Horizontal ? mRangeDragHorzAxis.data() : mRangeDragVertAxis.data()); +} + +/*! + Returns the range zoom axis of the \a orientation provided. + + \see setRangeZoomAxes +*/ +QCPAxis *QCPAxisRect::rangeZoomAxis(Qt::Orientation orientation) +{ + return (orientation == Qt::Horizontal ? mRangeZoomHorzAxis.data() : mRangeZoomVertAxis.data()); +} + +/*! + Returns the range zoom factor of the \a orientation provided. + + \see setRangeZoomFactor +*/ +double QCPAxisRect::rangeZoomFactor(Qt::Orientation orientation) +{ + return (orientation == Qt::Horizontal ? mRangeZoomFactorHorz : mRangeZoomFactorVert); +} + +/*! + Sets which axis orientation may be range dragged by the user with mouse interaction. + What orientation corresponds to which specific axis can be set with + \ref setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical). By + default, the horizontal axis is the bottom axis (xAxis) and the vertical axis + is the left axis (yAxis). + + To disable range dragging entirely, pass 0 as \a orientations or remove \ref QCP::iRangeDrag from \ref + QCustomPlot::setInteractions. To enable range dragging for both directions, pass Qt::Horizontal | + Qt::Vertical as \a orientations. + + In addition to setting \a orientations to a non-zero value, make sure \ref QCustomPlot::setInteractions + contains \ref QCP::iRangeDrag to enable the range dragging interaction. + + \see setRangeZoom, setRangeDragAxes, setNoAntialiasingOnDrag +*/ +void QCPAxisRect::setRangeDrag(Qt::Orientations orientations) +{ + mRangeDrag = orientations; +} + +/*! + Sets which axis orientation may be zoomed by the user with the mouse wheel. What orientation + corresponds to which specific axis can be set with \ref setRangeZoomAxes(QCPAxis *horizontal, + QCPAxis *vertical). By default, the horizontal axis is the bottom axis (xAxis) and the vertical + axis is the left axis (yAxis). + + To disable range zooming entirely, pass 0 as \a orientations or remove \ref QCP::iRangeZoom from \ref + QCustomPlot::setInteractions. To enable range zooming for both directions, pass Qt::Horizontal | + Qt::Vertical as \a orientations. + + In addition to setting \a orientations to a non-zero value, make sure \ref QCustomPlot::setInteractions + contains \ref QCP::iRangeZoom to enable the range zooming interaction. + + \see setRangeZoomFactor, setRangeZoomAxes, setRangeDrag +*/ +void QCPAxisRect::setRangeZoom(Qt::Orientations orientations) +{ + mRangeZoom = orientations; +} + +/*! + Sets the axes whose range will be dragged when \ref setRangeDrag enables mouse range dragging + on the QCustomPlot widget. + + \see setRangeZoomAxes +*/ +void QCPAxisRect::setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical) +{ + mRangeDragHorzAxis = horizontal; + mRangeDragVertAxis = vertical; +} + +/*! + Sets the axes whose range will be zoomed when \ref setRangeZoom enables mouse wheel zooming on the + QCustomPlot widget. The two axes can be zoomed with different strengths, when different factors + are passed to \ref setRangeZoomFactor(double horizontalFactor, double verticalFactor). + + \see setRangeDragAxes +*/ +void QCPAxisRect::setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical) +{ + mRangeZoomHorzAxis = horizontal; + mRangeZoomVertAxis = vertical; +} + +/*! + Sets how strong one rotation step of the mouse wheel zooms, when range zoom was activated with + \ref setRangeZoom. The two parameters \a horizontalFactor and \a verticalFactor provide a way to + let the horizontal axis zoom at different rates than the vertical axis. Which axis is horizontal + and which is vertical, can be set with \ref setRangeZoomAxes. + + When the zoom factor is greater than one, scrolling the mouse wheel backwards (towards the user) + will zoom in (make the currently visible range smaller). For zoom factors smaller than one, the + same scrolling direction will zoom out. +*/ +void QCPAxisRect::setRangeZoomFactor(double horizontalFactor, double verticalFactor) +{ + mRangeZoomFactorHorz = horizontalFactor; + mRangeZoomFactorVert = verticalFactor; +} + +/*! \overload + + Sets both the horizontal and vertical zoom \a factor. +*/ +void QCPAxisRect::setRangeZoomFactor(double factor) +{ + mRangeZoomFactorHorz = factor; + mRangeZoomFactorVert = factor; +} + +/*! \internal + + Draws the background of this axis rect. It may consist of a background fill (a QBrush) and a + pixmap. + + If a brush was given via \ref setBackground(const QBrush &brush), this function first draws an + according filling inside the axis rect with the provided \a painter. + + Then, if a pixmap was provided via \ref setBackground, this function buffers the scaled version + depending on \ref setBackgroundScaled and \ref setBackgroundScaledMode and then draws it inside + the axis rect with the provided \a painter. The scaled version is buffered in + mScaledBackgroundPixmap to prevent expensive rescaling at every redraw. It is only updated, when + the axis rect has changed in a way that requires a rescale of the background pixmap (this is + dependant on the \ref setBackgroundScaledMode), or when a differend axis backgroud pixmap was + set. + + \see setBackground, setBackgroundScaled, setBackgroundScaledMode +*/ +void QCPAxisRect::drawBackground(QCPPainter *painter) +{ + // draw background fill: + if (mBackgroundBrush != Qt::NoBrush) + painter->fillRect(mRect, mBackgroundBrush); + + // draw background pixmap (on top of fill, if brush specified): + if (!mBackgroundPixmap.isNull()) + { + if (mBackgroundScaled) + { + // check whether mScaledBackground needs to be updated: + QSize scaledSize(mBackgroundPixmap.size()); + scaledSize.scale(mRect.size(), mBackgroundScaledMode); + if (mScaledBackgroundPixmap.size() != scaledSize) + mScaledBackgroundPixmap = mBackgroundPixmap.scaled(mRect.size(), mBackgroundScaledMode, Qt::SmoothTransformation); + painter->drawPixmap(mRect.topLeft(), mScaledBackgroundPixmap, QRect(0, 0, mRect.width(), mRect.height()) & mScaledBackgroundPixmap.rect()); + } else + { + painter->drawPixmap(mRect.topLeft(), mBackgroundPixmap, QRect(0, 0, mRect.width(), mRect.height())); + } + } +} + +/*! \internal + + This function makes sure multiple axes on the side specified with \a type don't collide, but are + distributed according to their respective space requirement (QCPAxis::calculateMargin). + + It does this by setting an appropriate offset (\ref QCPAxis::setOffset) on all axes except the + one with index zero. + + This function is called by \ref calculateAutoMargin. +*/ +void QCPAxisRect::updateAxesOffset(QCPAxis::AxisType type) +{ + const QList axesList = mAxes.value(type); + for (int i=1; isetOffset(axesList.at(i-1)->offset() + axesList.at(i-1)->calculateMargin() + axesList.at(i)->tickLengthIn()); +} + +/* inherits documentation from base class */ +int QCPAxisRect::calculateAutoMargin(QCP::MarginSide side) +{ + if (!mAutoMargins.testFlag(side)) + qDebug() << Q_FUNC_INFO << "Called with side that isn't specified as auto margin"; + + updateAxesOffset(QCPAxis::marginSideToAxisType(side)); + + // note: only need to look at the last (outer most) axis to determine the total margin, due to updateAxisOffset call + const QList axesList = mAxes.value(QCPAxis::marginSideToAxisType(side)); + if (axesList.size() > 0) + return axesList.last()->offset() + axesList.last()->calculateMargin(); + else + return 0; +} + +/*! \internal + + Event handler for when a mouse button is pressed on the axis rect. If the left mouse button is + pressed, the range dragging interaction is initialized (the actual range manipulation happens in + the \ref mouseMoveEvent). + + The mDragging flag is set to true and some anchor points are set that are needed to determine the + distance the mouse was dragged in the mouse move/release events later. + + \see mouseMoveEvent, mouseReleaseEvent +*/ +void QCPAxisRect::mousePressEvent(QMouseEvent *event) +{ + mDragStart = event->pos(); // need this even when not LeftButton is pressed, to determine in releaseEvent whether it was a full click (no position change between press and release) + if (event->buttons() & Qt::LeftButton) + { + mDragging = true; + // initialize antialiasing backup in case we start dragging: + if (mParentPlot->noAntialiasingOnDrag()) + { + mAADragBackup = mParentPlot->antialiasedElements(); + mNotAADragBackup = mParentPlot->notAntialiasedElements(); + } + // Mouse range dragging interaction: + if (mParentPlot->interactions().testFlag(QCP::iRangeDrag)) + { + if (mRangeDragHorzAxis) + mDragStartHorzRange = mRangeDragHorzAxis.data()->range(); + if (mRangeDragVertAxis) + mDragStartVertRange = mRangeDragVertAxis.data()->range(); + } + } +} + +/*! \internal + + Event handler for when the mouse is moved on the axis rect. If range dragging was activated in a + preceding \ref mousePressEvent, the range is moved accordingly. + + \see mousePressEvent, mouseReleaseEvent +*/ +void QCPAxisRect::mouseMoveEvent(QMouseEvent *event) +{ + // Mouse range dragging interaction: + if (mDragging && mParentPlot->interactions().testFlag(QCP::iRangeDrag)) + { + if (mRangeDrag.testFlag(Qt::Horizontal)) + { + if (QCPAxis *rangeDragHorzAxis = mRangeDragHorzAxis.data()) + { + if (rangeDragHorzAxis->mScaleType == QCPAxis::stLinear) + { + double diff = rangeDragHorzAxis->pixelToCoord(mDragStart.x()) - rangeDragHorzAxis->pixelToCoord(event->pos().x()); + rangeDragHorzAxis->setRange(mDragStartHorzRange.lower+diff, mDragStartHorzRange.upper+diff); + } else if (rangeDragHorzAxis->mScaleType == QCPAxis::stLogarithmic) + { + double diff = rangeDragHorzAxis->pixelToCoord(mDragStart.x()) / rangeDragHorzAxis->pixelToCoord(event->pos().x()); + rangeDragHorzAxis->setRange(mDragStartHorzRange.lower*diff, mDragStartHorzRange.upper*diff); + } + } + } + if (mRangeDrag.testFlag(Qt::Vertical)) + { + if (QCPAxis *rangeDragVertAxis = mRangeDragVertAxis.data()) + { + if (rangeDragVertAxis->mScaleType == QCPAxis::stLinear) + { + double diff = rangeDragVertAxis->pixelToCoord(mDragStart.y()) - rangeDragVertAxis->pixelToCoord(event->pos().y()); + rangeDragVertAxis->setRange(mDragStartVertRange.lower+diff, mDragStartVertRange.upper+diff); + } else if (rangeDragVertAxis->mScaleType == QCPAxis::stLogarithmic) + { + double diff = rangeDragVertAxis->pixelToCoord(mDragStart.y()) / rangeDragVertAxis->pixelToCoord(event->pos().y()); + rangeDragVertAxis->setRange(mDragStartVertRange.lower*diff, mDragStartVertRange.upper*diff); + } + } + } + if (mRangeDrag != 0) // if either vertical or horizontal drag was enabled, do a replot + { + if (mParentPlot->noAntialiasingOnDrag()) + mParentPlot->setNotAntialiasedElements(QCP::aeAll); + mParentPlot->replot(); + } + } +} + +/* inherits documentation from base class */ +void QCPAxisRect::mouseReleaseEvent(QMouseEvent *event) +{ + Q_UNUSED(event) + mDragging = false; + if (mParentPlot->noAntialiasingOnDrag()) + { + mParentPlot->setAntialiasedElements(mAADragBackup); + mParentPlot->setNotAntialiasedElements(mNotAADragBackup); + } +} + +/*! \internal + + Event handler for mouse wheel events. If rangeZoom is Qt::Horizontal, Qt::Vertical or both, the + ranges of the axes defined as rangeZoomHorzAxis and rangeZoomVertAxis are scaled. The center of + the scaling operation is the current cursor position inside the axis rect. The scaling factor is + dependant on the mouse wheel delta (which direction the wheel was rotated) to provide a natural + zooming feel. The Strength of the zoom can be controlled via \ref setRangeZoomFactor. + + Note, that event->delta() is usually +/-120 for single rotation steps. However, if the mouse + wheel is turned rapidly, many steps may bunch up to one event, so the event->delta() may then be + multiples of 120. This is taken into account here, by calculating \a wheelSteps and using it as + exponent of the range zoom factor. This takes care of the wheel direction automatically, by + inverting the factor, when the wheel step is negative (f^-1 = 1/f). +*/ +void QCPAxisRect::wheelEvent(QWheelEvent *event) +{ + // Mouse range zooming interaction: + if (mParentPlot->interactions().testFlag(QCP::iRangeZoom)) + { + if (mRangeZoom != 0) + { + double factor; + double wheelSteps = event->delta()/120.0; // a single step delta is +/-120 usually + if (mRangeZoom.testFlag(Qt::Horizontal)) + { + factor = pow(mRangeZoomFactorHorz, wheelSteps); + if (mRangeZoomHorzAxis.data()) + mRangeZoomHorzAxis.data()->scaleRange(factor, mRangeZoomHorzAxis.data()->pixelToCoord(event->pos().x())); + } + if (mRangeZoom.testFlag(Qt::Vertical)) + { + factor = pow(mRangeZoomFactorVert, wheelSteps); + if (mRangeZoomVertAxis.data()) + mRangeZoomVertAxis.data()->scaleRange(factor, mRangeZoomVertAxis.data()->pixelToCoord(event->pos().y())); + } + mParentPlot->replot(); + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAbstractLegendItem +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAbstractLegendItem + \brief The abstract base class for all entries in a QCPLegend. + + It defines a very basic interface for entries in a QCPLegend. For representing plottables in the + legend, the subclass \ref QCPPlottableLegendItem is more suitable. + + Only derive directly from this class when you need absolute freedom (e.g. a custom legend entry + that's not even associated with a plottable). + + You must implement the following pure virtual functions: + \li \ref draw (from QCPLayerable) + + You inherit the following members you may use: + + + + + + + + +
QCPLegend *\b mParentLegendA pointer to the parent QCPLegend.
QFont \b mFontThe generic font of the item. You should use this font for all or at least the most prominent text of the item.
+*/ + +/* start of documentation of signals */ + +/*! \fn void QCPAbstractLegendItem::selectionChanged(bool selected) + + This signal is emitted when the selection state of this legend item has changed, either by user + interaction or by a direct call to \ref setSelected. +*/ + +/* end of documentation of signals */ + +/*! + Constructs a QCPAbstractLegendItem and associates it with the QCPLegend \a parent. This does not + cause the item to be added to \a parent, so \ref QCPLegend::addItem must be called separately. +*/ +QCPAbstractLegendItem::QCPAbstractLegendItem(QCPLegend *parent) : + QCPLayoutElement(parent->parentPlot()), + mParentLegend(parent), + mFont(parent->font()), + mTextColor(parent->textColor()), + mSelectedFont(parent->selectedFont()), + mSelectedTextColor(parent->selectedTextColor()), + mSelectable(true), + mSelected(false) +{ + setLayer("legend"); + setMargins(QMargins(8, 2, 8, 2)); +} + +/*! + Sets the default font of this specific legend item to \a font. + + \see setTextColor, QCPLegend::setFont +*/ +void QCPAbstractLegendItem::setFont(const QFont &font) +{ + mFont = font; +} + +/*! + Sets the default text color of this specific legend item to \a color. + + \see setFont, QCPLegend::setTextColor +*/ +void QCPAbstractLegendItem::setTextColor(const QColor &color) +{ + mTextColor = color; +} + +/*! + When this legend item is selected, \a font is used to draw generic text, instead of the normal + font set with \ref setFont. + + \see setFont, QCPLegend::setSelectedFont +*/ +void QCPAbstractLegendItem::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; +} + +/*! + When this legend item is selected, \a color is used to draw generic text, instead of the normal + color set with \ref setTextColor. + + \see setTextColor, QCPLegend::setSelectedTextColor +*/ +void QCPAbstractLegendItem::setSelectedTextColor(const QColor &color) +{ + mSelectedTextColor = color; +} + +/*! + Sets whether this specific legend item is selectable. + + \see setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAbstractLegendItem::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets whether this specific legend item is selected. + + It is possible to set the selection state of this item by calling this function directly, even if + setSelectable is set to false. + + \see setSelectableParts, QCustomPlot::setInteractions +*/ +void QCPAbstractLegendItem::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/* inherits documentation from base class */ +double QCPAbstractLegendItem::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (!mParentPlot) return -1; + if (onlySelectable && (!mSelectable || !mParentLegend->selectableParts().testFlag(QCPLegend::spItems))) + return -1; + + if (mRect.contains(pos.toPoint())) + return mParentPlot->selectionTolerance()*0.99; + else + return -1; +} + +/* inherits documentation from base class */ +void QCPAbstractLegendItem::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeLegendItems); +} + +/* inherits documentation from base class */ +QRect QCPAbstractLegendItem::clipRect() const +{ + return mOuterRect; +} + +/* inherits documentation from base class */ +void QCPAbstractLegendItem::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable && mParentLegend->selectableParts().testFlag(QCPLegend::spItems)) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAbstractLegendItem::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable && mParentLegend->selectableParts().testFlag(QCPLegend::spItems)) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPPlottableLegendItem +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPPlottableLegendItem + \brief A legend item representing a plottable with an icon and the plottable name. + + This is the standard legend item for plottables. It displays an icon of the plottable next to the + plottable name. The icon is drawn by the respective plottable itself (\ref + QCPAbstractPlottable::drawLegendIcon), and tries to give an intuitive symbol for the plottable. + For example, the QCPGraph draws a centered horizontal line and/or a single scatter point in the + middle. + + Legend items of this type are always associated with one plottable (retrievable via the + plottable() function and settable with the constructor). You may change the font of the plottable + name with \ref setFont. Icon padding and border pen is taken from the parent QCPLegend, see \ref + QCPLegend::setIconBorderPen and \ref QCPLegend::setIconTextPadding. + + The function \ref QCPAbstractPlottable::addToLegend/\ref QCPAbstractPlottable::removeFromLegend + creates/removes legend items of this type in the default implementation. However, these functions + may be reimplemented such that a different kind of legend item (e.g a direct subclass of + QCPAbstractLegendItem) is used for that plottable. + + Since QCPLegend is based on QCPLayoutGrid, a legend item itself is just a subclass of + QCPLayoutElement. While it could be added to a legend (or any other layout) via the normal layout + interface, QCPLegend has specialized functions for handling legend items conveniently, see the + documentation of \ref QCPLegend. +*/ + +/*! + Creates a new legend item associated with \a plottable. + + Once it's created, it can be added to the legend via \ref QCPLegend::addItem. + + A more convenient way of adding/removing a plottable to/from the legend is via the functions \ref + QCPAbstractPlottable::addToLegend and \ref QCPAbstractPlottable::removeFromLegend. +*/ +QCPPlottableLegendItem::QCPPlottableLegendItem(QCPLegend *parent, QCPAbstractPlottable *plottable) : + QCPAbstractLegendItem(parent), + mPlottable(plottable) +{ +} + +/*! \internal + + Returns the pen that shall be used to draw the icon border, taking into account the selection + state of this item. +*/ +QPen QCPPlottableLegendItem::getIconBorderPen() const +{ + return mSelected ? mParentLegend->selectedIconBorderPen() : mParentLegend->iconBorderPen(); +} + +/*! \internal + + Returns the text color that shall be used to draw text, taking into account the selection state + of this item. +*/ +QColor QCPPlottableLegendItem::getTextColor() const +{ + return mSelected ? mSelectedTextColor : mTextColor; +} + +/*! \internal + + Returns the font that shall be used to draw text, taking into account the selection state of this + item. +*/ +QFont QCPPlottableLegendItem::getFont() const +{ + return mSelected ? mSelectedFont : mFont; +} + +/*! \internal + + Draws the item with \a painter. The size and position of the drawn legend item is defined by the + parent layout (typically a \ref QCPLegend) and the \ref minimumSizeHint and \ref maximumSizeHint + of this legend item. +*/ +void QCPPlottableLegendItem::draw(QCPPainter *painter) +{ + if (!mPlottable) return; + painter->setFont(getFont()); + painter->setPen(QPen(getTextColor())); + QSizeF iconSize = mParentLegend->iconSize(); + QRectF textRect = painter->fontMetrics().boundingRect(0, 0, 0, iconSize.height(), Qt::TextDontClip, mPlottable->name()); + QRectF iconRect(mRect.topLeft(), iconSize); + int textHeight = qMax(textRect.height(), iconSize.height()); // if text has smaller height than icon, center text vertically in icon height, else align tops + painter->drawText(mRect.x()+iconSize.width()+mParentLegend->iconTextPadding(), mRect.y(), textRect.width(), textHeight, Qt::TextDontClip, mPlottable->name()); + // draw icon: + painter->save(); + painter->setClipRect(iconRect, Qt::IntersectClip); + mPlottable->drawLegendIcon(painter, iconRect); + painter->restore(); + // draw icon border: + if (getIconBorderPen().style() != Qt::NoPen) + { + painter->setPen(getIconBorderPen()); + painter->setBrush(Qt::NoBrush); + painter->drawRect(iconRect); + } +} + +/*! \internal + + Calculates and returns the size of this item. This includes the icon, the text and the padding in + between. +*/ +QSize QCPPlottableLegendItem::minimumSizeHint() const +{ + if (!mPlottable) return QSize(); + QSize result(0, 0); + QRect textRect; + QFontMetrics fontMetrics(getFont()); + QSize iconSize = mParentLegend->iconSize(); + textRect = fontMetrics.boundingRect(0, 0, 0, iconSize.height(), Qt::TextDontClip, mPlottable->name()); + result.setWidth(iconSize.width() + mParentLegend->iconTextPadding() + textRect.width() + mMargins.left() + mMargins.right()); + result.setHeight(qMax(textRect.height(), iconSize.height()) + mMargins.top() + mMargins.bottom()); + return result; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLegend +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLegend + \brief Manages a legend inside a QCustomPlot. + + A legend is a small box somewhere in the plot which lists plottables with their name and icon. + + Normally, the legend is populated by calling \ref QCPAbstractPlottable::addToLegend. The + respective legend item can be removed with \ref QCPAbstractPlottable::removeFromLegend. However, + QCPLegend also offers an interface to add and manipulate legend items directly: \ref item, \ref + itemWithPlottable, \ref itemCount, \ref addItem, \ref removeItem, etc. + + The QCPLegend derives from QCPLayoutGrid and as such can be placed in any position a + QCPLayoutElement may be positioned. The legend items are themselves QCPLayoutElements which are + placed in the grid layout of the legend. QCPLegend only adds an interface specialized for + handling child elements of type QCPAbstractLegendItem, as mentioned above. In principle, any + other layout elements may also be added to a legend via the normal \ref QCPLayoutGrid interface. + However, the QCPAbstractLegendItem-Interface will ignore those elements (e.g. \ref itemCount will + only return the number of items with QCPAbstractLegendItems type). + + By default, every QCustomPlot has one legend (QCustomPlot::legend) which is placed in the inset + layout of the main axis rect (\ref QCPAxisRect::insetLayout). To move the legend to another + position inside the axis rect, use the methods of the \ref QCPLayoutInset. To move the legend + outside of the axis rect, place it anywhere else with the QCPLayout/QCPLayoutElement interface. +*/ + +/* start of documentation of signals */ + +/*! \fn void QCPLegend::selectionChanged(QCPLegend::SelectableParts selection); + + This signal is emitted when the selection state of this legend has changed. + + \see setSelectedParts, setSelectableParts +*/ + +/* end of documentation of signals */ + +/*! + Constructs a new QCPLegend instance with \a parentPlot as the containing plot and default values. + + Note that by default, QCustomPlot already contains a legend ready to be used as + QCustomPlot::legend +*/ +QCPLegend::QCPLegend() +{ + setRowSpacing(0); + setColumnSpacing(10); + setMargins(QMargins(2, 3, 2, 2)); + setAntialiased(false); + setIconSize(32, 18); + + setIconTextPadding(7); + + setSelectableParts(spLegendBox | spItems); + setSelectedParts(spNone); + + setBorderPen(QPen(Qt::black)); + setSelectedBorderPen(QPen(Qt::blue, 2)); + setIconBorderPen(Qt::NoPen); + setSelectedIconBorderPen(QPen(Qt::blue, 2)); + setBrush(Qt::white); + setSelectedBrush(Qt::white); + setTextColor(Qt::black); + setSelectedTextColor(Qt::blue); +} + +QCPLegend::~QCPLegend() +{ + clearItems(); + if (mParentPlot) + mParentPlot->legendRemoved(this); +} + +/* no doc for getter, see setSelectedParts */ +QCPLegend::SelectableParts QCPLegend::selectedParts() const +{ + // check whether any legend elements selected, if yes, add spItems to return value + bool hasSelectedItems = false; + for (int i=0; iselected()) + { + hasSelectedItems = true; + break; + } + } + if (hasSelectedItems) + return mSelectedParts | spItems; + else + return mSelectedParts & ~spItems; +} + +/*! + Sets the pen, the border of the entire legend is drawn with. +*/ +void QCPLegend::setBorderPen(const QPen &pen) +{ + mBorderPen = pen; +} + +/*! + Sets the brush of the legend background. +*/ +void QCPLegend::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the default font of legend text. Legend items that draw text (e.g. the name of a graph) will + use this font by default. However, a different font can be specified on a per-item-basis by + accessing the specific legend item. + + This function will also set \a font on all already existing legend items. + + \see QCPAbstractLegendItem::setFont +*/ +void QCPLegend::setFont(const QFont &font) +{ + mFont = font; + for (int i=0; isetFont(mFont); + } +} + +/*! + Sets the default color of legend text. Legend items that draw text (e.g. the name of a graph) + will use this color by default. However, a different colors can be specified on a per-item-basis + by accessing the specific legend item. + + This function will also set \a color on all already existing legend items. + + \see QCPAbstractLegendItem::setTextColor +*/ +void QCPLegend::setTextColor(const QColor &color) +{ + mTextColor = color; + for (int i=0; isetTextColor(color); + } +} + +/*! + Sets the size of legend icons. Legend items that draw an icon (e.g. a visual + representation of the graph) will use this size by default. +*/ +void QCPLegend::setIconSize(const QSize &size) +{ + mIconSize = size; +} + +/*! \overload +*/ +void QCPLegend::setIconSize(int width, int height) +{ + mIconSize.setWidth(width); + mIconSize.setHeight(height); +} + +/*! + Sets the horizontal space in pixels between the legend icon and the text next to it. + Legend items that draw an icon (e.g. a visual representation of the graph) and text (e.g. the + name of the graph) will use this space by default. +*/ +void QCPLegend::setIconTextPadding(int padding) +{ + mIconTextPadding = padding; +} + +/*! + Sets the pen used to draw a border around each legend icon. Legend items that draw an + icon (e.g. a visual representation of the graph) will use this pen by default. + + If no border is wanted, set this to \a Qt::NoPen. +*/ +void QCPLegend::setIconBorderPen(const QPen &pen) +{ + mIconBorderPen = pen; +} + +/*! + Sets whether the user can (de-)select the parts in \a selectable by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains iSelectLegend.) + + However, even when \a selectable is set to a value not allowing the selection of a specific part, + it is still possible to set the selection of this part manually, by calling \ref setSelectedParts + directly. + + \see SelectablePart, setSelectedParts +*/ +void QCPLegend::setSelectableParts(const SelectableParts &selectable) +{ + mSelectableParts = selectable; +} + +/*! + Sets the selected state of the respective legend parts described by \ref SelectablePart. When a part + is selected, it uses a different pen/font and brush. If some legend items are selected and \a selected + doesn't contain \ref spItems, those items become deselected. + + The entire selection mechanism is handled automatically when \ref QCustomPlot::setInteractions + contains iSelectLegend. You only need to call this function when you wish to change the selection + state manually. + + This function can change the selection state of a part even when \ref setSelectableParts was set to a + value that actually excludes the part. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + Note that it doesn't make sense to set the selected state \ref spItems here when it wasn't set + before, because there's no way to specify which exact items to newly select. Do this by calling + \ref QCPAbstractLegendItem::setSelected directly on the legend item you wish to select. + + \see SelectablePart, setSelectableParts, selectTest, setSelectedBorderPen, setSelectedIconBorderPen, setSelectedBrush, + setSelectedFont +*/ +void QCPLegend::setSelectedParts(const SelectableParts &selected) +{ + SelectableParts newSelected = selected; + mSelectedParts = this->selectedParts(); // update mSelectedParts in case item selection changed + + if (mSelectedParts != newSelected) + { + if (!mSelectedParts.testFlag(spItems) && newSelected.testFlag(spItems)) // attempt to set spItems flag (can't do that) + { + qDebug() << Q_FUNC_INFO << "spItems flag can not be set, it can only be unset with this function"; + newSelected &= ~spItems; + } + if (mSelectedParts.testFlag(spItems) && !newSelected.testFlag(spItems)) // spItems flag was unset, so clear item selection + { + for (int i=0; isetSelected(false); + } + } + mSelectedParts = newSelected; + emit selectionChanged(mSelectedParts); + } +} + +/*! + When the legend box is selected, this pen is used to draw the border instead of the normal pen + set via \ref setBorderPen. + + \see setSelectedParts, setSelectableParts, setSelectedBrush +*/ +void QCPLegend::setSelectedBorderPen(const QPen &pen) +{ + mSelectedBorderPen = pen; +} + +/*! + Sets the pen legend items will use to draw their icon borders, when they are selected. + + \see setSelectedParts, setSelectableParts, setSelectedFont +*/ +void QCPLegend::setSelectedIconBorderPen(const QPen &pen) +{ + mSelectedIconBorderPen = pen; +} + +/*! + When the legend box is selected, this brush is used to draw the legend background instead of the normal brush + set via \ref setBrush. + + \see setSelectedParts, setSelectableParts, setSelectedBorderPen +*/ +void QCPLegend::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + Sets the default font that is used by legend items when they are selected. + + This function will also set \a font on all already existing legend items. + + \see setFont, QCPAbstractLegendItem::setSelectedFont +*/ +void QCPLegend::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; + for (int i=0; isetSelectedFont(font); + } +} + +/*! + Sets the default text color that is used by legend items when they are selected. + + This function will also set \a color on all already existing legend items. + + \see setTextColor, QCPAbstractLegendItem::setSelectedTextColor +*/ +void QCPLegend::setSelectedTextColor(const QColor &color) +{ + mSelectedTextColor = color; + for (int i=0; isetSelectedTextColor(color); + } +} + +/*! + Returns the item with index \a i. + + \see itemCount +*/ +QCPAbstractLegendItem *QCPLegend::item(int index) const +{ + return qobject_cast(elementAt(index)); +} + +/*! + Returns the QCPPlottableLegendItem which is associated with \a plottable (e.g. a \ref QCPGraph*). + If such an item isn't in the legend, returns 0. + + \see hasItemWithPlottable +*/ +QCPPlottableLegendItem *QCPLegend::itemWithPlottable(const QCPAbstractPlottable *plottable) const +{ + for (int i=0; i(item(i))) + { + if (pli->plottable() == plottable) + return pli; + } + } + return 0; +} + +/*! + Returns the number of items currently in the legend. + \see item +*/ +int QCPLegend::itemCount() const +{ + return elementCount(); +} + +/*! + Returns whether the legend contains \a itm. +*/ +bool QCPLegend::hasItem(QCPAbstractLegendItem *item) const +{ + for (int i=0; iitem(i)) + return true; + } + return false; +} + +/*! + Returns whether the legend contains a QCPPlottableLegendItem which is associated with \a plottable (e.g. a \ref QCPGraph*). + If such an item isn't in the legend, returns false. + + \see itemWithPlottable +*/ +bool QCPLegend::hasItemWithPlottable(const QCPAbstractPlottable *plottable) const +{ + return itemWithPlottable(plottable); +} + +/*! + Adds \a item to the legend, if it's not present already. + + Returns true on sucess, i.e. if the item wasn't in the list already and has been successfuly added. + + The legend takes ownership of the item. +*/ +bool QCPLegend::addItem(QCPAbstractLegendItem *item) +{ + if (!hasItem(item)) + { + return addElement(rowCount(), 0, item); + } else + return false; +} + +/*! + Removes the item with index \a index from the legend. + + Returns true, if successful. + + \see itemCount, clearItems +*/ +bool QCPLegend::removeItem(int index) +{ + if (QCPAbstractLegendItem *ali = item(index)) + { + bool success = remove(ali); + simplify(); + return success; + } else + return false; +} + +/*! \overload + + Removes \a item from the legend. + + Returns true, if successful. + + \see clearItems +*/ +bool QCPLegend::removeItem(QCPAbstractLegendItem *item) +{ + bool success = remove(item); + simplify(); + return success; +} + +/*! + Removes all items from the legend. +*/ +void QCPLegend::clearItems() +{ + for (int i=itemCount()-1; i>=0; --i) + removeItem(i); +} + +/*! + Returns the legend items that are currently selected. If no items are selected, + the list is empty. + + \see QCPAbstractLegendItem::setSelected, setSelectable +*/ +QList QCPLegend::selectedItems() const +{ + QList result; + for (int i=0; iselected()) + result.append(ali); + } + } + return result; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing main legend elements. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPLegend::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeLegend); +} + +/*! \internal + + Returns the pen used to paint the border of the legend, taking into account the selection state + of the legend box. +*/ +QPen QCPLegend::getBorderPen() const +{ + return mSelectedParts.testFlag(spLegendBox) ? mSelectedBorderPen : mBorderPen; +} + +/*! \internal + + Returns the brush used to paint the background of the legend, taking into account the selection + state of the legend box. +*/ +QBrush QCPLegend::getBrush() const +{ + return mSelectedParts.testFlag(spLegendBox) ? mSelectedBrush : mBrush; +} + +/*! \internal + + Draws the legend box with the provided \a painter. The individual legend items are layerables + themselves, thus are drawn independently. +*/ +void QCPLegend::draw(QCPPainter *painter) +{ + // draw background rect: + painter->setBrush(getBrush()); + painter->setPen(getBorderPen()); + painter->drawRect(mOuterRect); +} + +/* inherits documentation from base class */ +double QCPLegend::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + if (!mParentPlot) return -1; + if (onlySelectable && !mSelectableParts.testFlag(spLegendBox)) + return -1; + + if (mOuterRect.contains(pos.toPoint())) + { + if (details) details->setValue(spLegendBox); + return mParentPlot->selectionTolerance()*0.99; + } + return -1; +} + +/* inherits documentation from base class */ +void QCPLegend::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + mSelectedParts = selectedParts(); // in case item selection has changed + if (details.value() == spLegendBox && mSelectableParts.testFlag(spLegendBox)) + { + SelectableParts selBefore = mSelectedParts; + setSelectedParts(additive ? mSelectedParts^spLegendBox : mSelectedParts|spLegendBox); // no need to unset spItems in !additive case, because they will be deselected by QCustomPlot (they're normal QCPLayerables with own deselectEvent) + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPLegend::deselectEvent(bool *selectionStateChanged) +{ + mSelectedParts = selectedParts(); // in case item selection has changed + if (mSelectableParts.testFlag(spLegendBox)) + { + SelectableParts selBefore = mSelectedParts; + setSelectedParts(selectedParts() & ~spLegendBox); + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; + } +} + +/* inherits documentation from base class */ +QCP::Interaction QCPLegend::selectionCategory() const +{ + return QCP::iSelectLegend; +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAbstractLegendItem::selectionCategory() const +{ + return QCP::iSelectLegend; +} + +/* inherits documentation from base class */ +void QCPLegend::parentPlotInitialized(QCustomPlot *parentPlot) +{ + Q_UNUSED(parentPlot) +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPPlotTitle +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPPlotTitle + \brief A layout element displaying a plot title text + + The text may be specified with \ref setText, theformatting can be controlled with \ref setFont + and \ref setTextColor. + + A plot title can be added as follows: + \code + customPlot->plotLayout()->insertRow(0); // inserts an empty row above the default axis rect + customPlot->plotLayout()->addElement(0, 0, new QCPPlotTitle(customPlot, "Your Plot Title")); + \endcode + + Since a plot title is a common requirement, QCustomPlot offers specialized selection signals for + easy interaction with QCPPlotTitle. If a layout element of type QCPPlotTitle is clicked, the + signal \ref QCustomPlot::titleClick is emitted. A double click emits the \ref + QCustomPlot::titleDoubleClick signal. +*/ + +/* start documentation of signals */ + +/*! \fn void QCPPlotTitle::selectionChanged(bool selected) + + This signal is emitted when the selection state has changed to \a selected, either by user + interaction or by a direct call to \ref setSelected. + + \see setSelected, setSelectable +*/ + +/* end documentation of signals */ + +/*! + Creates a new QCPPlotTitle instance and sets default values. The initial text is empty (\ref setText). + + To set the title text in the constructor, rather use \ref QCPPlotTitle(QCustomPlot *parentPlot, const QString &text). +*/ +QCPPlotTitle::QCPPlotTitle(QCustomPlot *parentPlot) : + QCPLayoutElement(parentPlot), + mFont(QFont("sans serif", 13*1.5, QFont::Bold)), + mTextColor(Qt::black), + mSelectedFont(QFont("sans serif", 13*1.6, QFont::Bold)), + mSelectedTextColor(Qt::blue), + mSelectable(false), + mSelected(false) +{ + if (parentPlot) + { + setLayer(parentPlot->currentLayer()); + mFont = QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.5, QFont::Bold); + mSelectedFont = QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.6, QFont::Bold); + } + setMargins(QMargins(5, 5, 5, 0)); +} + +/*! \overload + + Creates a new QCPPlotTitle instance and sets default values. The initial text is set to \a text. +*/ +QCPPlotTitle::QCPPlotTitle(QCustomPlot *parentPlot, const QString &text) : + QCPLayoutElement(parentPlot), + mText(text), + mFont(QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.5, QFont::Bold)), + mTextColor(Qt::black), + mSelectedFont(QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.6, QFont::Bold)), + mSelectedTextColor(Qt::blue), + mSelectable(false), + mSelected(false) +{ + setLayer("axes"); + setMargins(QMargins(5, 5, 5, 0)); +} + +/*! + Sets the text that will be displayed to \a text. Multiple lines can be created by insertion of "\n". + + \see setFont, setTextColor +*/ +void QCPPlotTitle::setText(const QString &text) +{ + mText = text; +} + +/*! + Sets the \a font of the title text. + + \see setTextColor, setSelectedFont +*/ +void QCPPlotTitle::setFont(const QFont &font) +{ + mFont = font; +} + +/*! + Sets the \a color of the title text. + + \see setFont, setSelectedTextColor +*/ +void QCPPlotTitle::setTextColor(const QColor &color) +{ + mTextColor = color; +} + +/*! + Sets the \a font of the title text that will be used if the plot title is selected (\ref setSelected). + + \see setFont +*/ +void QCPPlotTitle::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; +} + +/*! + Sets the \a color of the title text that will be used if the plot title is selected (\ref setSelected). + + \see setTextColor +*/ +void QCPPlotTitle::setSelectedTextColor(const QColor &color) +{ + mSelectedTextColor = color; +} + +/*! + Sets whether the user may select this plot title to \a selectable. + + Note that even when \a selectable is set to false, the selection state may be changed + programmatically via \ref setSelected. +*/ +void QCPPlotTitle::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets the selection state of this plot title to \a selected. If the selection has changed, \ref + selectionChanged is emitted. + + Note that this function can change the selection state independently of the current \ref + setSelectable state. +*/ +void QCPPlotTitle::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/* inherits documentation from base class */ +void QCPPlotTitle::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeNone); +} + +/* inherits documentation from base class */ +void QCPPlotTitle::draw(QCPPainter *painter) +{ + painter->setFont(mainFont()); + painter->setPen(QPen(mainTextColor())); + painter->drawText(mRect, Qt::AlignCenter, mText, &mTextBoundingRect); +} + +/* inherits documentation from base class */ +QSize QCPPlotTitle::minimumSizeHint() const +{ + QFontMetrics metrics(mFont); + QSize result = metrics.boundingRect(0, 0, 0, 0, Qt::AlignCenter, mText).size(); + result.rwidth() += mMargins.left() + mMargins.right(); + result.rheight() += mMargins.top() + mMargins.bottom(); + return result; +} + +/* inherits documentation from base class */ +QSize QCPPlotTitle::maximumSizeHint() const +{ + QFontMetrics metrics(mFont); + QSize result = metrics.boundingRect(0, 0, 0, 0, Qt::AlignCenter, mText).size(); + result.rheight() += mMargins.top() + mMargins.bottom(); + result.setWidth(QWIDGETSIZE_MAX); + return result; +} + +/* inherits documentation from base class */ +void QCPPlotTitle::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPPlotTitle::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +double QCPPlotTitle::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + if (mTextBoundingRect.contains(pos.toPoint())) + return mParentPlot->selectionTolerance()*0.99; + else + return -1; +} + +/*! \internal + + Returns the main font to be used. This is mSelectedFont if \ref setSelected is set to + true, else mFont is returned. +*/ +QFont QCPPlotTitle::mainFont() const +{ + return mSelected ? mSelectedFont : mFont; +} + +/*! \internal + + Returns the main color to be used. This is mSelectedTextColor if \ref setSelected is set to + true, else mTextColor is returned. +*/ +QColor QCPPlotTitle::mainTextColor() const +{ + return mSelected ? mSelectedTextColor : mTextColor; +} + diff --git a/DEC_GUI/Kolch_Shind/qcustomplot.h b/DEC_GUI/Kolch_Shind/qcustomplot.h new file mode 100644 index 0000000..6d01dd2 --- /dev/null +++ b/DEC_GUI/Kolch_Shind/qcustomplot.h @@ -0,0 +1,3036 @@ +/*************************************************************************** +** ** +** QCustomPlot, an easy to use, modern plotting widget for Qt ** +** Copyright (C) 2011, 2012, 2013 Emanuel Eichhammer ** +** ** +** This program is free software: you can redistribute it and/or modify ** +** it under the terms of the GNU General Public License as published by ** +** the Free Software Foundation, either version 3 of the License, or ** +** (at your option) any later version. ** +** ** +** This program is distributed in the hope that it will be useful, ** +** but WITHOUT ANY WARRANTY; without even the implied warranty of ** +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** +** GNU General Public License for more details. ** +** ** +** You should have received a copy of the GNU General Public License ** +** along with this program. If not, see http://www.gnu.org/licenses/. ** +** ** +**************************************************************************** +** Author: Emanuel Eichhammer ** +** Website/Contact: http://www.qcustomplot.com/ ** +** Date: 05.09.13 ** +** Version: 1.0.1 ** +****************************************************************************/ + +#ifndef QCUSTOMPLOT_H +#define QCUSTOMPLOT_H + +#ifdef QT_DISABLE_DEPRECATED_BEFORE +# undef QT_DISABLE_DEPRECATED_BEFORE +#endif +#define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(0, 0, 0) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) +# include +# include +#else +# include +# include +#endif + +class QCPPainter; +class QCustomPlot; +class QCPLayerable; +class QCPLayoutElement; +class QCPLayout; +class QCPAxis; +class QCPAxisRect; +class QCPAbstractPlottable; +class QCPGraph; +class QCPAbstractItem; +class QCPItemPosition; +class QCPLayer; +class QCPPlotTitle; +class QCPLegend; +class QCPAbstractLegendItem; +class QCPAbstractItem; + + +/*! \file */ + +#ifdef QT_DISABLE_DEPRECATED_BEFORE +# undef QT_DISABLE_DEPRECATED_BEFORE +#endif +#define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(0, 0, 0) + + +// decl definitions for shared library compilation/usage: +#if defined(QCUSTOMPLOT_COMPILE_LIBRARY) +# define QCP_LIB_DECL Q_DECL_EXPORT +#elif defined(QCUSTOMPLOT_USE_LIBRARY) +# define QCP_LIB_DECL Q_DECL_IMPORT +#else +# define QCP_LIB_DECL +#endif + +/*! + The QCP Namespace contains general enums and QFlags used throughout the QCustomPlot library +*/ +namespace QCP +{ +/*! + Defines the sides of a rectangular entity to which margins can be applied. + + \see QCPLayoutElement::setAutoMargins, QCPAxisRect::setAutoMargins +*/ +enum MarginSide { msLeft = 0x01 ///< 0x01 left margin + ,msRight = 0x02 ///< 0x02 right margin + ,msTop = 0x04 ///< 0x04 top margin + ,msBottom = 0x08 ///< 0x08 bottom margin + ,msAll = 0xFF ///< 0xFF all margins + ,msNone = 0x00 ///< 0x00 no margin + }; +Q_DECLARE_FLAGS(MarginSides, MarginSide) + +/*! + Defines what objects of a plot can be forcibly drawn antialiased/not antialiased. If an object is + neither forcibly drawn antialiased nor forcibly drawn not antialiased, it is up to the respective + element how it is drawn. Typically it provides a \a setAntialiased function for this. + + \c AntialiasedElements is a flag of or-combined elements of this enum type. + + \see QCustomPlot::setAntialiasedElements, QCustomPlot::setNotAntialiasedElements +*/ +enum AntialiasedElement { aeAxes = 0x0001 ///< 0x0001 Axis base line and tick marks + ,aeGrid = 0x0002 ///< 0x0002 Grid lines + ,aeSubGrid = 0x0004 ///< 0x0004 Sub grid lines + ,aeLegend = 0x0008 ///< 0x0008 Legend box + ,aeLegendItems = 0x0010 ///< 0x0010 Legend items + ,aePlottables = 0x0020 ///< 0x0020 Main lines of plottables (excluding error bars, see element \ref aeErrorBars) + ,aeItems = 0x0040 ///< 0x0040 Main lines of items + ,aeScatters = 0x0080 ///< 0x0080 Scatter symbols of plottables (excluding scatter symbols of type ssPixmap) + ,aeErrorBars = 0x0100 ///< 0x0100 Error bars + ,aeFills = 0x0200 ///< 0x0200 Borders of fills (e.g. under or between graphs) + ,aeZeroLine = 0x0400 ///< 0x0400 Zero-lines, see \ref QCPGrid::setZeroLinePen + ,aeAll = 0xFFFF ///< 0xFFFF All elements + ,aeNone = 0x0000 ///< 0x0000 No elements + }; +Q_DECLARE_FLAGS(AntialiasedElements, AntialiasedElement) + +/*! + Defines plotting hints that control various aspects of the quality and speed of plotting. + + \see QCustomPlot::setPlottingHints +*/ +enum PlottingHint { phNone = 0x000 ///< 0x000 No hints are set + ,phFastPolylines = 0x001 ///< 0x001 Graph/Curve lines are drawn with a faster method. This reduces the quality + ///< especially of the line segment joins. (Only relevant for solid line pens.) + ,phForceRepaint = 0x002 ///< 0x002 causes an immediate repaint() instead of a soft update() when QCustomPlot::replot() is called. This is set by default + ///< on Windows-Systems to prevent the plot from freezing on fast consecutive replots (e.g. user drags ranges with mouse). + ,phCacheLabels = 0x004 ///< 0x004 axis (tick) labels will be cached as pixmaps, increasing replot performance. + }; +Q_DECLARE_FLAGS(PlottingHints, PlottingHint) + +/*! + Defines the mouse interactions possible with QCustomPlot. + + \c Interactions is a flag of or-combined elements of this enum type. + + \see QCustomPlot::setInteractions +*/ +enum Interaction { iRangeDrag = 0x001 ///< 0x001 Axis ranges are draggable (see \ref QCPAxisRect::setRangeDrag, \ref QCPAxisRect::setRangeDragAxes) + ,iRangeZoom = 0x002 ///< 0x002 Axis ranges are zoomable with the mouse wheel (see \ref QCPAxisRect::setRangeZoom, \ref QCPAxisRect::setRangeZoomAxes) + ,iMultiSelect = 0x004 ///< 0x004 The user can select multiple objects by holding the modifier set by \ref QCustomPlot::setMultiSelectModifier while clicking + ,iSelectPlottables = 0x008 ///< 0x008 Plottables are selectable (e.g. graphs, curves, bars,... see QCPAbstractPlottable) + ,iSelectAxes = 0x010 ///< 0x010 Axes are selectable (or parts of them, see QCPAxis::setSelectableParts) + ,iSelectLegend = 0x020 ///< 0x020 Legends are selectable (or their child items, see QCPLegend::setSelectableParts) + ,iSelectItems = 0x040 ///< 0x040 Items are selectable (Rectangles, Arrows, Textitems, etc. see \ref QCPAbstractItem) + ,iSelectOther = 0x080 ///< 0x080 All other objects are selectable (e.g. your own derived layerables, the plot title,...) + }; +Q_DECLARE_FLAGS(Interactions, Interaction) + +/*! \internal + + Returns whether the specified \a value is considered an invalid data value for plottables (i.e. + is \e nan or \e +/-inf). This function is used to check data validity upon replots, when the + compiler flag \c QCUSTOMPLOT_CHECK_DATA is set. +*/ +inline bool isInvalidData(double value) +{ + return qIsNaN(value) || qIsInf(value); +} + +/*! \internal + \overload + + Checks two arguments instead of one. +*/ +inline bool isInvalidData(double value1, double value2) +{ + return isInvalidData(value1) || isInvalidData(value2); +} + +/*! \internal + + Sets the specified \a side of \a margins to \a value + + \see getMarginValue +*/ +inline void setMarginValue(QMargins &margins, QCP::MarginSide side, int value) +{ + switch (side) + { + case QCP::msLeft: margins.setLeft(value); break; + case QCP::msRight: margins.setRight(value); break; + case QCP::msTop: margins.setTop(value); break; + case QCP::msBottom: margins.setBottom(value); break; + case QCP::msAll: margins = QMargins(value, value, value, value); break; + default: break; + } +} + +/*! \internal + + Returns the value of the specified \a side of \a margins. If \a side is \ref QCP::msNone or + \ref QCP::msAll, returns 0. + + \see setMarginValue +*/ +inline int getMarginValue(const QMargins &margins, QCP::MarginSide side) +{ + switch (side) + { + case QCP::msLeft: return margins.left(); + case QCP::msRight: return margins.right(); + case QCP::msTop: return margins.top(); + case QCP::msBottom: return margins.bottom(); + default: break; + } + return 0; +} + +} // end of namespace QCP + +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::AntialiasedElements) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::PlottingHints) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::MarginSides) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::Interactions) + + +class QCP_LIB_DECL QCPScatterStyle +{ + Q_GADGET +public: + /*! + Defines the shape used for scatter points. + + On plottables/items that draw scatters, the sizes of these visualizations (with exception of + \ref ssDot and \ref ssPixmap) can be controlled with the \ref setSize function. Scatters are + drawn with the pen and brush specified with \ref setPen and \ref setBrush. + */ + Q_ENUMS(ScatterShape) + enum ScatterShape { ssNone ///< no scatter symbols are drawn (e.g. in QCPGraph, data only represented with lines) + ,ssDot ///< \enumimage{ssDot.png} a single pixel (use \ref ssDisc or \ref ssCircle if you want a round shape with a certain radius) + ,ssCross ///< \enumimage{ssCross.png} a cross + ,ssPlus ///< \enumimage{ssPlus.png} a plus + ,ssCircle ///< \enumimage{ssCircle.png} a circle + ,ssDisc ///< \enumimage{ssDisc.png} a circle which is filled with the pen's color (not the brush as with ssCircle) + ,ssSquare ///< \enumimage{ssSquare.png} a square + ,ssDiamond ///< \enumimage{ssDiamond.png} a diamond + ,ssStar ///< \enumimage{ssStar.png} a star with eight arms, i.e. a combination of cross and plus + ,ssTriangle ///< \enumimage{ssTriangle.png} an equilateral triangle, standing on baseline + ,ssTriangleInverted ///< \enumimage{ssTriangleInverted.png} an equilateral triangle, standing on corner + ,ssCrossSquare ///< \enumimage{ssCrossSquare.png} a square with a cross inside + ,ssPlusSquare ///< \enumimage{ssPlusSquare.png} a square with a plus inside + ,ssCrossCircle ///< \enumimage{ssCrossCircle.png} a circle with a cross inside + ,ssPlusCircle ///< \enumimage{ssPlusCircle.png} a circle with a plus inside + ,ssPeace ///< \enumimage{ssPeace.png} a circle, with one vertical and two downward diagonal lines + ,ssPixmap ///< a custom pixmap specified by \ref setPixmap, centered on the data point coordinates + ,ssCustom ///< custom painter operations are performed per scatter (As QPainterPath, see \ref setCustomPath) + }; + + QCPScatterStyle(); + QCPScatterStyle(ScatterShape shape, double size=6); + QCPScatterStyle(ScatterShape shape, const QColor &color, double size); + QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill, double size); + QCPScatterStyle(ScatterShape shape, const QPen &pen, const QBrush &brush, double size); + QCPScatterStyle(const QPixmap &pixmap); + QCPScatterStyle(const QPainterPath &customPath, const QPen &pen, const QBrush &brush=Qt::NoBrush, double size=6); + + // getters: + double size() const { return mSize; } + ScatterShape shape() const { return mShape; } + QPen pen() const { return mPen; } + QBrush brush() const { return mBrush; } + QPixmap pixmap() const { return mPixmap; } + QPainterPath customPath() const { return mCustomPath; } + + // setters: + void setSize(double size); + void setShape(ScatterShape shape); + void setPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setPixmap(const QPixmap &pixmap); + void setCustomPath(const QPainterPath &customPath); + + // non-property methods: + bool isNone() const { return mShape == ssNone; } + bool isPenDefined() const { return mPenDefined; } + void applyTo(QCPPainter *painter, const QPen &defaultPen) const; + void drawShape(QCPPainter *painter, QPointF pos) const; + void drawShape(QCPPainter *painter, double x, double y) const; + +protected: + // property members: + double mSize; + ScatterShape mShape; + QPen mPen; + QBrush mBrush; + QPixmap mPixmap; + QPainterPath mCustomPath; + + // non-property members: + bool mPenDefined; +}; +Q_DECLARE_TYPEINFO(QCPScatterStyle, Q_MOVABLE_TYPE); + + +class QCP_LIB_DECL QCPPainter : public QPainter +{ + Q_GADGET +public: + /*! + Defines special modes the painter can operate in. They disable or enable certain subsets of features/fixes/workarounds, + depending on whether they are wanted on the respective output device. + */ + enum PainterMode {pmDefault = 0x00 ///< 0x00 Default mode for painting on screen devices + ,pmVectorized = 0x01 ///< 0x01 Mode for vectorized painting (e.g. PDF export). For example, this prevents some antialiasing fixes. + ,pmNoCaching = 0x02 ///< 0x02 Mode for all sorts of exports (e.g. PNG, PDF,...). For example, this prevents using cached pixmap labels + ,pmNonCosmetic = 0x04 ///< 0x04 Turns pen widths 0 to 1, i.e. disables cosmetic pens. (A cosmetic pen is always drawn with width 1 pixel in the vector image/pdf viewer, independent of zoom.) + }; + Q_FLAGS(PainterMode PainterModes) + Q_DECLARE_FLAGS(PainterModes, PainterMode) + + QCPPainter(); + QCPPainter(QPaintDevice *device); + ~QCPPainter(); + + // getters: + bool antialiasing() const { return testRenderHint(QPainter::Antialiasing); } + PainterModes modes() const { return mModes; } + + // setters: + void setAntialiasing(bool enabled); + void setMode(PainterMode mode, bool enabled=true); + void setModes(PainterModes modes); + + // methods hiding non-virtual base class functions (QPainter bug workarounds): + bool begin(QPaintDevice *device); + void setPen(const QPen &pen); + void setPen(const QColor &color); + void setPen(Qt::PenStyle penStyle); + void drawLine(const QLineF &line); + void drawLine(const QPointF &p1, const QPointF &p2) {drawLine(QLineF(p1, p2));} + void save(); + void restore(); + + // non-virtual methods: + void makeNonCosmetic(); + +protected: + // property members: + PainterModes mModes; + bool mIsAntialiasing; + + // non-property members: + QStack mAntialiasingStack; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPPainter::PainterModes) + + +class QCP_LIB_DECL QCPLayer : public QObject +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCustomPlot* parentPlot READ parentPlot) + Q_PROPERTY(QString name READ name) + Q_PROPERTY(int index READ index) + Q_PROPERTY(QList children READ children) + /// \endcond +public: + QCPLayer(QCustomPlot* parentPlot, const QString &layerName); + ~QCPLayer(); + + // getters: + QCustomPlot *parentPlot() const { return mParentPlot; } + QString name() const { return mName; } + int index() const { return mIndex; } + QList children() const { return mChildren; } + +protected: + // property members: + QCustomPlot *mParentPlot; + QString mName; + int mIndex; + QList mChildren; + + // non-virtual methods: + void addChild(QCPLayerable *layerable, bool prepend); + void removeChild(QCPLayerable *layerable); + +private: + Q_DISABLE_COPY(QCPLayer) + + friend class QCustomPlot; + friend class QCPLayerable; +}; + +class QCP_LIB_DECL QCPLayerable : public QObject +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(bool visible READ visible WRITE setVisible) + Q_PROPERTY(QCustomPlot* parentPlot READ parentPlot) + Q_PROPERTY(QCPLayerable* parentLayerable READ parentLayerable) + Q_PROPERTY(QCPLayer* layer READ layer WRITE setLayer) + Q_PROPERTY(bool antialiased READ antialiased WRITE setAntialiased) + /// \endcond +public: + QCPLayerable(QCustomPlot *plot, QString targetLayer="", QCPLayerable *parentLayerable=0); + ~QCPLayerable(); + + // getters: + bool visible() const { return mVisible; } + QCustomPlot *parentPlot() const { return mParentPlot; } + QCPLayerable *parentLayerable() const { return mParentLayerable.data(); } + QCPLayer *layer() const { return mLayer; } + bool antialiased() const { return mAntialiased; } + + // setters: + void setVisible(bool on); + bool setLayer(QCPLayer *layer); + bool setLayer(const QString &layerName); + void setAntialiased(bool enabled); + + // introduced virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-property methods: + bool realVisibility() const; + +protected: + // property members: + bool mVisible; + QCustomPlot *mParentPlot; + QWeakPointer mParentLayerable; + QCPLayer *mLayer; + bool mAntialiased; + + // introduced virtual methods: + virtual void parentPlotInitialized(QCustomPlot *parentPlot); + virtual QCP::Interaction selectionCategory() const; + virtual QRect clipRect() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const = 0; + virtual void draw(QCPPainter *painter) = 0; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-property methods: + void initializeParentPlot(QCustomPlot *parentPlot); + void setParentLayerable(QCPLayerable* parentLayerable); + bool moveToLayer(QCPLayer *layer, bool prepend); + void applyAntialiasingHint(QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const; + +private: + Q_DISABLE_COPY(QCPLayerable) + + friend class QCustomPlot; + friend class QCPAxisRect; +}; + + +class QCP_LIB_DECL QCPRange +{ +public: + double lower, upper; + + QCPRange(); + QCPRange(double lower, double upper); + + double size() const; + double center() const; + void normalize(); + QCPRange sanitizedForLogScale() const; + QCPRange sanitizedForLinScale() const; + bool contains(double value) const; + + static bool validRange(double lower, double upper); + static bool validRange(const QCPRange &range); + static const double minRange; //1e-280; + static const double maxRange; //1e280; +}; +Q_DECLARE_TYPEINFO(QCPRange, Q_MOVABLE_TYPE); + + +class QCP_LIB_DECL QCPMarginGroup : public QObject +{ + Q_OBJECT +public: + QCPMarginGroup(QCustomPlot *parentPlot); + ~QCPMarginGroup(); + + // non-virtual methods: + QList elements(QCP::MarginSide side) const { return mChildren.value(side); } + bool isEmpty() const; + void clear(); + +protected: + // non-property members: + QCustomPlot *mParentPlot; + QHash > mChildren; + + // non-virtual methods: + int commonMargin(QCP::MarginSide side) const; + void addChild(QCP::MarginSide side, QCPLayoutElement *element); + void removeChild(QCP::MarginSide side, QCPLayoutElement *element); + +private: + Q_DISABLE_COPY(QCPMarginGroup) + + friend class QCPLayoutElement; +}; + + +class QCP_LIB_DECL QCPLayoutElement : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCPLayout* layout READ layout) + Q_PROPERTY(QRect rect READ rect) + Q_PROPERTY(QRect outerRect READ outerRect WRITE setOuterRect) + Q_PROPERTY(QMargins margins READ margins WRITE setMargins) + Q_PROPERTY(QMargins minimumMargins READ minimumMargins WRITE setMinimumMargins) + Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize) + Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize) + /// \endcond +public: + explicit QCPLayoutElement(QCustomPlot *parentPlot=0); + virtual ~QCPLayoutElement(); + + // getters: + QCPLayout *layout() const { return mParentLayout; } + QRect rect() const { return mRect; } + QRect outerRect() const { return mOuterRect; } + QMargins margins() const { return mMargins; } + QMargins minimumMargins() const { return mMinimumMargins; } + QCP::MarginSides autoMargins() const { return mAutoMargins; } + QSize minimumSize() const { return mMinimumSize; } + QSize maximumSize() const { return mMaximumSize; } + QCPMarginGroup *marginGroup(QCP::MarginSide side) const { return mMarginGroups.value(side, (QCPMarginGroup*)0); } + QHash marginGroups() const { return mMarginGroups; } + + // setters: + void setOuterRect(const QRect &rect); + void setMargins(const QMargins &margins); + void setMinimumMargins(const QMargins &margins); + void setAutoMargins(QCP::MarginSides sides); + void setMinimumSize(const QSize &size); + void setMinimumSize(int width, int height); + void setMaximumSize(const QSize &size); + void setMaximumSize(int width, int height); + void setMarginGroup(QCP::MarginSides sides, QCPMarginGroup *group); + + // introduced virtual methods: + virtual void update(); + virtual QSize minimumSizeHint() const; + virtual QSize maximumSizeHint() const; + virtual QList elements(bool recursive) const; + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QCPLayout *mParentLayout; + QSize mMinimumSize, mMaximumSize; + QRect mRect, mOuterRect; + QMargins mMargins, mMinimumMargins; + QCP::MarginSides mAutoMargins; + QHash mMarginGroups; + + // introduced virtual methods: + virtual int calculateAutoMargin(QCP::MarginSide side); + // events: + virtual void mousePressEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void mouseMoveEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void mouseReleaseEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void mouseDoubleClickEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void wheelEvent(QWheelEvent *event) {Q_UNUSED(event)} + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const { Q_UNUSED(painter) } + virtual void draw(QCPPainter *painter) { Q_UNUSED(painter) } + virtual void parentPlotInitialized(QCustomPlot *parentPlot); + +private: + Q_DISABLE_COPY(QCPLayoutElement) + + friend class QCustomPlot; + friend class QCPLayout; + friend class QCPMarginGroup; +}; + + +class QCP_LIB_DECL QCPLayout : public QCPLayoutElement +{ + Q_OBJECT +public: + explicit QCPLayout(); + + // reimplemented virtual methods: + virtual void update(); + virtual QList elements(bool recursive) const; + + // introduced virtual methods: + virtual int elementCount() const = 0; + virtual QCPLayoutElement* elementAt(int index) const = 0; + virtual QCPLayoutElement* takeAt(int index) = 0; + virtual bool take(QCPLayoutElement* element) = 0; + virtual void simplify(); + + // non-virtual methods: + bool removeAt(int index); + bool remove(QCPLayoutElement* element); + void clear(); + +protected: + // introduced virtual methods: + virtual void updateLayout(); + + // non-virtual methods: + void sizeConstraintsChanged() const; + void adoptElement(QCPLayoutElement *el); + void releaseElement(QCPLayoutElement *el); + QVector getSectionSizes(QVector maxSizes, QVector minSizes, QVector stretchFactors, int totalSize) const; + +private: + Q_DISABLE_COPY(QCPLayout) + friend class QCPLayoutElement; +}; + + +class QCP_LIB_DECL QCPLayoutGrid : public QCPLayout +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(int rowCount READ rowCount) + Q_PROPERTY(int columnCount READ columnCount) + Q_PROPERTY(QList columnStretchFactors READ columnStretchFactors WRITE setColumnStretchFactors) + Q_PROPERTY(QList rowStretchFactors READ rowStretchFactors WRITE setRowStretchFactors) + Q_PROPERTY(int columnSpacing READ columnSpacing WRITE setColumnSpacing) + Q_PROPERTY(int rowSpacing READ rowSpacing WRITE setRowSpacing) + /// \endcond +public: + explicit QCPLayoutGrid(); + virtual ~QCPLayoutGrid(); + + // getters: + int rowCount() const; + int columnCount() const; + QList columnStretchFactors() const { return mColumnStretchFactors; } + QList rowStretchFactors() const { return mRowStretchFactors; } + int columnSpacing() const { return mColumnSpacing; } + int rowSpacing() const { return mRowSpacing; } + + // setters: + void setColumnStretchFactor(int column, double factor); + void setColumnStretchFactors(const QList &factors); + void setRowStretchFactor(int row, double factor); + void setRowStretchFactors(const QList &factors); + void setColumnSpacing(int pixels); + void setRowSpacing(int pixels); + + // reimplemented virtual methods: + virtual void updateLayout(); + virtual int elementCount() const; + virtual QCPLayoutElement* elementAt(int index) const; + virtual QCPLayoutElement* takeAt(int index); + virtual bool take(QCPLayoutElement* element); + virtual QList elements(bool recursive) const; + virtual void simplify(); + virtual QSize minimumSizeHint() const; + virtual QSize maximumSizeHint() const; + + // non-virtual methods: + QCPLayoutElement *element(int row, int column) const; + bool addElement(int row, int column, QCPLayoutElement *element); + bool hasElement(int row, int column); + void expandTo(int newRowCount, int newColumnCount); + void insertRow(int newIndex); + void insertColumn(int newIndex); + +protected: + // property members: + QList > mElements; + QList mColumnStretchFactors; + QList mRowStretchFactors; + int mColumnSpacing, mRowSpacing; + + // non-virtual methods: + void getMinimumRowColSizes(QVector *minColWidths, QVector *minRowHeights) const; + void getMaximumRowColSizes(QVector *maxColWidths, QVector *maxRowHeights) const; + +private: + Q_DISABLE_COPY(QCPLayoutGrid) +}; + + +class QCP_LIB_DECL QCPLayoutInset : public QCPLayout +{ + Q_OBJECT +public: + /*! + Defines how the placement and sizing is handled for a certain element in a QCPLayoutInset. + */ + enum InsetPlacement {ipFree ///< The element may be positioned/sized arbitrarily, see \ref setInsetRect + ,ipBorderAligned ///< The element is aligned to one of the layout sides, see \ref setInsetAlignment + }; + + explicit QCPLayoutInset(); + virtual ~QCPLayoutInset(); + + // getters: + InsetPlacement insetPlacement(int index) const; + Qt::Alignment insetAlignment(int index) const; + QRectF insetRect(int index) const; + + // setters: + void setInsetPlacement(int index, InsetPlacement placement); + void setInsetAlignment(int index, Qt::Alignment alignment); + void setInsetRect(int index, const QRectF &rect); + + // reimplemented virtual methods: + virtual void updateLayout(); + virtual int elementCount() const; + virtual QCPLayoutElement* elementAt(int index) const; + virtual QCPLayoutElement* takeAt(int index); + virtual bool take(QCPLayoutElement* element); + virtual void simplify() {} + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + void addElement(QCPLayoutElement *element, Qt::Alignment alignment); + void addElement(QCPLayoutElement *element, const QRectF &rect); + +protected: + // property members: + QList mElements; + QList mInsetPlacement; + QList mInsetAlignment; + QList mInsetRect; + +private: + Q_DISABLE_COPY(QCPLayoutInset) +}; + + +class QCP_LIB_DECL QCPLineEnding +{ + Q_GADGET +public: + /*! + Defines the type of ending decoration for line-like items, e.g. an arrow. + + \image html QCPLineEnding.png + + The width and length of these decorations can be controlled with the functions \ref setWidth + and \ref setLength. Some decorations like \ref esDisc, \ref esSquare, \ref esDiamond and \ref esBar only + support a width, the length property is ignored. + + \see QCPItemLine::setHead, QCPItemLine::setTail, QCPItemCurve::setHead, QCPItemCurve::setTail + */ + Q_ENUMS(EndingStyle) + enum EndingStyle { esNone ///< No ending decoration + ,esFlatArrow ///< A filled arrow head with a straight/flat back (a triangle) + ,esSpikeArrow ///< A filled arrow head with an indented back + ,esLineArrow ///< A non-filled arrow head with open back + ,esDisc ///< A filled circle + ,esSquare ///< A filled square + ,esDiamond ///< A filled diamond (45° rotated square) + ,esBar ///< A bar perpendicular to the line + ,esHalfBar ///< A bar perpendicular to the line sticking out to one side + ,esSkewedBar ///< A bar that is skewed (skew controllable via \ref setLength) + }; + + QCPLineEnding(); + QCPLineEnding(EndingStyle style, double width=8, double length=10, bool inverted=false); + + // getters: + EndingStyle style() const { return mStyle; } + double width() const { return mWidth; } + double length() const { return mLength; } + bool inverted() const { return mInverted; } + + // setters: + void setStyle(EndingStyle style); + void setWidth(double width); + void setLength(double length); + void setInverted(bool inverted); + + // non-property methods: + double boundingDistance() const; + double realLength() const; + void draw(QCPPainter *painter, const QVector2D &pos, const QVector2D &dir) const; + void draw(QCPPainter *painter, const QVector2D &pos, double angle) const; + +protected: + // property members: + EndingStyle mStyle; + double mWidth, mLength; + bool mInverted; +}; +Q_DECLARE_TYPEINFO(QCPLineEnding, Q_MOVABLE_TYPE); + + +class QCP_LIB_DECL QCPGrid :public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(bool subGridVisible READ subGridVisible WRITE setSubGridVisible) + Q_PROPERTY(bool antialiasedSubGrid READ antialiasedSubGrid WRITE setAntialiasedSubGrid) + Q_PROPERTY(bool antialiasedZeroLine READ antialiasedZeroLine WRITE setAntialiasedZeroLine) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen subGridPen READ subGridPen WRITE setSubGridPen) + Q_PROPERTY(QPen zeroLinePen READ zeroLinePen WRITE setZeroLinePen) + /// \endcond +public: + QCPGrid(QCPAxis *parentAxis); + + // getters: + bool subGridVisible() const { return mSubGridVisible; } + bool antialiasedSubGrid() const { return mAntialiasedSubGrid; } + bool antialiasedZeroLine() const { return mAntialiasedZeroLine; } + QPen pen() const { return mPen; } + QPen subGridPen() const { return mSubGridPen; } + QPen zeroLinePen() const { return mZeroLinePen; } + + // setters: + void setSubGridVisible(bool visible); + void setAntialiasedSubGrid(bool enabled); + void setAntialiasedZeroLine(bool enabled); + void setPen(const QPen &pen); + void setSubGridPen(const QPen &pen); + void setZeroLinePen(const QPen &pen); + +protected: + // property members: + bool mSubGridVisible; + bool mAntialiasedSubGrid, mAntialiasedZeroLine; + QPen mPen, mSubGridPen, mZeroLinePen; + // non-property members: + QCPAxis *mParentAxis; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + void drawGridLines(QCPPainter *painter) const; + void drawSubGridLines(QCPPainter *painter) const; + + friend class QCPAxis; +}; + + +class QCP_LIB_DECL QCPAxis : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(AxisType axisType READ axisType) + Q_PROPERTY(QCPAxisRect* axisRect READ axisRect) + Q_PROPERTY(ScaleType scaleType READ scaleType WRITE setScaleType) + Q_PROPERTY(double scaleLogBase READ scaleLogBase WRITE setScaleLogBase) + Q_PROPERTY(QCPRange range READ range WRITE setRange) + Q_PROPERTY(bool rangeReversed READ rangeReversed WRITE setRangeReversed) + Q_PROPERTY(bool autoTicks READ autoTicks WRITE setAutoTicks) + Q_PROPERTY(int autoTickCount READ autoTickCount WRITE setAutoTickCount) + Q_PROPERTY(bool autoTickLabels READ autoTickLabels WRITE setAutoTickLabels) + Q_PROPERTY(bool autoTickStep READ autoTickStep WRITE setAutoTickStep) + Q_PROPERTY(bool autoSubTicks READ autoSubTicks WRITE setAutoSubTicks) + Q_PROPERTY(bool ticks READ ticks WRITE setTicks) + Q_PROPERTY(bool tickLabels READ tickLabels WRITE setTickLabels) + Q_PROPERTY(int tickLabelPadding READ tickLabelPadding WRITE setTickLabelPadding) + Q_PROPERTY(LabelType tickLabelType READ tickLabelType WRITE setTickLabelType) + Q_PROPERTY(QFont tickLabelFont READ tickLabelFont WRITE setTickLabelFont) + Q_PROPERTY(QColor tickLabelColor READ tickLabelColor WRITE setTickLabelColor) + Q_PROPERTY(double tickLabelRotation READ tickLabelRotation WRITE setTickLabelRotation) + Q_PROPERTY(QString dateTimeFormat READ dateTimeFormat WRITE setDateTimeFormat) + Q_PROPERTY(QString numberFormat READ numberFormat WRITE setNumberFormat) + Q_PROPERTY(int numberPrecision READ numberPrecision WRITE setNumberPrecision) + Q_PROPERTY(double tickStep READ tickStep WRITE setTickStep) + Q_PROPERTY(QVector tickVector READ tickVector WRITE setTickVector) + Q_PROPERTY(QVector tickVectorLabels READ tickVectorLabels WRITE setTickVectorLabels) + Q_PROPERTY(int tickLengthIn READ tickLengthIn WRITE setTickLengthIn) + Q_PROPERTY(int tickLengthOut READ tickLengthOut WRITE setTickLengthOut) + Q_PROPERTY(int subTickCount READ subTickCount WRITE setSubTickCount) + Q_PROPERTY(int subTickLengthIn READ subTickLengthIn WRITE setSubTickLengthIn) + Q_PROPERTY(int subTickLengthOut READ subTickLengthOut WRITE setSubTickLengthOut) + Q_PROPERTY(QPen basePen READ basePen WRITE setBasePen) + Q_PROPERTY(QPen tickPen READ tickPen WRITE setTickPen) + Q_PROPERTY(QPen subTickPen READ subTickPen WRITE setSubTickPen) + Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont) + Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor) + Q_PROPERTY(QString label READ label WRITE setLabel) + Q_PROPERTY(int labelPadding READ labelPadding WRITE setLabelPadding) + Q_PROPERTY(int padding READ padding WRITE setPadding) + Q_PROPERTY(int offset READ offset WRITE setOffset) + Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts) + Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts) + Q_PROPERTY(QFont selectedTickLabelFont READ selectedTickLabelFont WRITE setSelectedTickLabelFont) + Q_PROPERTY(QFont selectedLabelFont READ selectedLabelFont WRITE setSelectedLabelFont) + Q_PROPERTY(QColor selectedTickLabelColor READ selectedTickLabelColor WRITE setSelectedTickLabelColor) + Q_PROPERTY(QColor selectedLabelColor READ selectedLabelColor WRITE setSelectedLabelColor) + Q_PROPERTY(QPen selectedBasePen READ selectedBasePen WRITE setSelectedBasePen) + Q_PROPERTY(QPen selectedTickPen READ selectedTickPen WRITE setSelectedTickPen) + Q_PROPERTY(QPen selectedSubTickPen READ selectedSubTickPen WRITE setSelectedSubTickPen) + Q_PROPERTY(QCPLineEnding lowerEnding READ lowerEnding WRITE setLowerEnding) + Q_PROPERTY(QCPLineEnding upperEnding READ upperEnding WRITE setUpperEnding) + Q_PROPERTY(QCPGrid* grid READ grid) + /// \endcond +public: + /*! + Defines at which side of the axis rect the axis will appear. This also affects how the tick + marks are drawn, on which side the labels are placed etc. + */ + enum AxisType { atLeft = 0x01 ///< 0x01 Axis is vertical and on the left side of the axis rect + ,atRight = 0x02 ///< 0x02 Axis is vertical and on the right side of the axis rect + ,atTop = 0x04 ///< 0x04 Axis is horizontal and on the top side of the axis rect + ,atBottom = 0x08 ///< 0x08 Axis is horizontal and on the bottom side of the axis rect + }; + Q_FLAGS(AxisType AxisTypes) + Q_DECLARE_FLAGS(AxisTypes, AxisType) + /*! + When automatic tick label generation is enabled (\ref setAutoTickLabels), defines how the + coordinate of the tick is interpreted, i.e. translated into a string. + + \see setTickLabelType + */ + enum LabelType { ltNumber ///< Tick coordinate is regarded as normal number and will be displayed as such. (see \ref setNumberFormat) + ,ltDateTime ///< Tick coordinate is regarded as a date/time (seconds since 1970-01-01T00:00:00 UTC) and will be displayed and formatted as such. (for details, see \ref setDateTimeFormat) + }; + Q_ENUMS(LabelType) + /*! + Defines the scale of an axis. + \see setScaleType + */ + enum ScaleType { stLinear ///< Linear scaling + ,stLogarithmic ///< Logarithmic scaling with correspondingly transformed plots and (major) tick marks at every base power (see \ref setScaleLogBase). + }; + Q_ENUMS(ScaleType) + /*! + Defines the selectable parts of an axis. + \see setSelectableParts, setSelectedParts + */ + enum SelectablePart { spNone = 0 ///< None of the selectable parts + ,spAxis = 0x001 ///< The axis backbone and tick marks + ,spTickLabels = 0x002 ///< Tick labels (numbers) of this axis (as a whole, not individually) + ,spAxisLabel = 0x004 ///< The axis label + }; + Q_FLAGS(SelectablePart SelectableParts) + Q_DECLARE_FLAGS(SelectableParts, SelectablePart) + + explicit QCPAxis(QCPAxisRect *parent, AxisType type); + + // getters: + AxisType axisType() const { return mAxisType; } + QCPAxisRect *axisRect() const { return mAxisRect; } + ScaleType scaleType() const { return mScaleType; } + double scaleLogBase() const { return mScaleLogBase; } + const QCPRange range() const { return mRange; } + bool rangeReversed() const { return mRangeReversed; } + bool autoTicks() const { return mAutoTicks; } + int autoTickCount() const { return mAutoTickCount; } + bool autoTickLabels() const { return mAutoTickLabels; } + bool autoTickStep() const { return mAutoTickStep; } + bool autoSubTicks() const { return mAutoSubTicks; } + bool ticks() const { return mTicks; } + bool tickLabels() const { return mTickLabels; } + int tickLabelPadding() const { return mTickLabelPadding; } + LabelType tickLabelType() const { return mTickLabelType; } + QFont tickLabelFont() const { return mTickLabelFont; } + QColor tickLabelColor() const { return mTickLabelColor; } + double tickLabelRotation() const { return mTickLabelRotation; } + QString dateTimeFormat() const { return mDateTimeFormat; } + QString numberFormat() const; + int numberPrecision() const { return mNumberPrecision; } + double tickStep() const { return mTickStep; } + QVector tickVector() const { return mTickVector; } + QVector tickVectorLabels() const { return mTickVectorLabels; } + int tickLengthIn() const { return mTickLengthIn; } + int tickLengthOut() const { return mTickLengthOut; } + int subTickCount() const { return mSubTickCount; } + int subTickLengthIn() const { return mSubTickLengthIn; } + int subTickLengthOut() const { return mSubTickLengthOut; } + QPen basePen() const { return mBasePen; } + QPen tickPen() const { return mTickPen; } + QPen subTickPen() const { return mSubTickPen; } + QFont labelFont() const { return mLabelFont; } + QColor labelColor() const { return mLabelColor; } + QString label() const { return mLabel; } + int labelPadding() const { return mLabelPadding; } + int padding() const { return mPadding; } + int offset() const { return mOffset; } + SelectableParts selectedParts() const { return mSelectedParts; } + SelectableParts selectableParts() const { return mSelectableParts; } + QFont selectedTickLabelFont() const { return mSelectedTickLabelFont; } + QFont selectedLabelFont() const { return mSelectedLabelFont; } + QColor selectedTickLabelColor() const { return mSelectedTickLabelColor; } + QColor selectedLabelColor() const { return mSelectedLabelColor; } + QPen selectedBasePen() const { return mSelectedBasePen; } + QPen selectedTickPen() const { return mSelectedTickPen; } + QPen selectedSubTickPen() const { return mSelectedSubTickPen; } + QCPLineEnding lowerEnding() const { return mLowerEnding; } + QCPLineEnding upperEnding() const { return mUpperEnding; } + QCPGrid *grid() const { return mGrid; } + + // setters: + void setScaleType(ScaleType type); + void setScaleLogBase(double base); + Q_SLOT void setRange(const QCPRange &range); + void setRange(double lower, double upper); + void setRange(double position, double size, Qt::AlignmentFlag alignment); + void setRangeLower(double lower); + void setRangeUpper(double upper); + void setRangeReversed(bool reversed); + void setAutoTicks(bool on); + void setAutoTickCount(int approximateCount); + void setAutoTickLabels(bool on); + void setAutoTickStep(bool on); + void setAutoSubTicks(bool on); + void setTicks(bool show); + void setTickLabels(bool show); + void setTickLabelPadding(int padding); + void setTickLabelType(LabelType type); + void setTickLabelFont(const QFont &font); + void setTickLabelColor(const QColor &color); + void setTickLabelRotation(double degrees); + void setDateTimeFormat(const QString &format); + void setNumberFormat(const QString &formatCode); + void setNumberPrecision(int precision); + void setTickStep(double step); + void setTickVector(const QVector &vec); + void setTickVectorLabels(const QVector &vec); + void setTickLength(int inside, int outside=0); + void setTickLengthIn(int inside); + void setTickLengthOut(int outside); + void setSubTickCount(int count); + void setSubTickLength(int inside, int outside=0); + void setSubTickLengthIn(int inside); + void setSubTickLengthOut(int outside); + void setBasePen(const QPen &pen); + void setTickPen(const QPen &pen); + void setSubTickPen(const QPen &pen); + void setLabelFont(const QFont &font); + void setLabelColor(const QColor &color); + void setLabel(const QString &str); + void setLabelPadding(int padding); + void setPadding(int padding); + void setOffset(int offset); + void setSelectedTickLabelFont(const QFont &font); + void setSelectedLabelFont(const QFont &font); + void setSelectedTickLabelColor(const QColor &color); + void setSelectedLabelColor(const QColor &color); + void setSelectedBasePen(const QPen &pen); + void setSelectedTickPen(const QPen &pen); + void setSelectedSubTickPen(const QPen &pen); + Q_SLOT void setSelectableParts(const QCPAxis::SelectableParts &selectableParts); + Q_SLOT void setSelectedParts(const QCPAxis::SelectableParts &selectedParts); + void setLowerEnding(const QCPLineEnding &ending); + void setUpperEnding(const QCPLineEnding &ending); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + Qt::Orientation orientation() const { return mOrientation; } + void moveRange(double diff); + void scaleRange(double factor, double center); + void setScaleRatio(const QCPAxis *otherAxis, double ratio=1.0); + double pixelToCoord(double value) const; + double coordToPixel(double value) const; + SelectablePart getPartAt(const QPointF &pos) const; + QList plottables() const; + QList graphs() const; + QList items() const; + + static AxisType marginSideToAxisType(QCP::MarginSide side); + +signals: + void ticksRequest(); + void rangeChanged(const QCPRange &newRange); + void selectionChanged(const QCPAxis::SelectableParts &parts); + +protected: + struct CachedLabel + { + QPointF offset; + QPixmap pixmap; + }; + struct TickLabelData + { + QString basePart, expPart; + QRect baseBounds, expBounds, totalBounds, rotatedTotalBounds; + QFont baseFont, expFont; + }; + + // property members: + // axis base: + AxisType mAxisType; + QCPAxisRect *mAxisRect; + int mOffset, mPadding; + Qt::Orientation mOrientation; + SelectableParts mSelectableParts, mSelectedParts; + QPen mBasePen, mSelectedBasePen; + QCPLineEnding mLowerEnding, mUpperEnding; + // axis label: + int mLabelPadding; + QString mLabel; + QFont mLabelFont, mSelectedLabelFont; + QColor mLabelColor, mSelectedLabelColor; + // tick labels: + int mTickLabelPadding; + bool mTickLabels, mAutoTickLabels; + double mTickLabelRotation; + LabelType mTickLabelType; + QFont mTickLabelFont, mSelectedTickLabelFont; + QColor mTickLabelColor, mSelectedTickLabelColor; + QString mDateTimeFormat; + int mNumberPrecision; + char mNumberFormatChar; + bool mNumberBeautifulPowers; + bool mNumberMultiplyCross; + // ticks and subticks: + bool mTicks; + double mTickStep; + int mSubTickCount, mAutoTickCount; + bool mAutoTicks, mAutoTickStep, mAutoSubTicks; + int mTickLengthIn, mTickLengthOut, mSubTickLengthIn, mSubTickLengthOut; + QPen mTickPen, mSelectedTickPen; + QPen mSubTickPen, mSelectedSubTickPen; + // scale and range: + QCPRange mRange; + bool mRangeReversed; + ScaleType mScaleType; + double mScaleLogBase, mScaleLogBaseLogInv; + + // non-property members: + QCPGrid *mGrid; + QCache mLabelCache; + int mLowestVisibleTick, mHighestVisibleTick; + QChar mExponentialChar, mPositiveSignChar; + QVector mTickVector; + QVector mTickVectorLabels; + QVector mSubTickVector; + QRect mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox; + bool mCachedMarginValid; + int mCachedMargin; + + // introduced virtual methods: + virtual void setupTickVectors(); + virtual void generateAutoTicks(); + virtual int calculateAutoSubTickCount(double tickStep) const; + virtual int calculateMargin(); + // tick label drawing/caching: + virtual void placeTickLabel(QCPPainter *painter, double position, int distanceToAxis, const QString &text, QSize *tickLabelsSize); + virtual void drawTickLabel(QCPPainter *painter, double x, double y, const TickLabelData &labelData) const; + virtual TickLabelData getTickLabelData(const QFont &font, const QString &text) const; + virtual QPointF getTickLabelDrawOffset(const TickLabelData &labelData) const; + virtual void getMaxTickLabelSize(const QFont &font, const QString &text, QSize *tickLabelsSize) const; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + virtual QCP::Interaction selectionCategory() const; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-virtual methods: + void visibleTickBounds(int &lowIndex, int &highIndex) const; + double baseLog(double value) const; + double basePow(double value) const; + QPen getBasePen() const; + QPen getTickPen() const; + QPen getSubTickPen() const; + QFont getTickLabelFont() const; + QFont getLabelFont() const; + QColor getTickLabelColor() const; + QColor getLabelColor() const; + +private: + Q_DISABLE_COPY(QCPAxis) + + friend class QCustomPlot; + friend class QCPGrid; + friend class QCPAxisRect; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPAxis::SelectableParts) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPAxis::AxisTypes) +Q_DECLARE_METATYPE(QCPAxis::SelectablePart) + + +class QCP_LIB_DECL QCPAbstractPlottable : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(bool antialiasedFill READ antialiasedFill WRITE setAntialiasedFill) + Q_PROPERTY(bool antialiasedScatters READ antialiasedScatters WRITE setAntialiasedScatters) + Q_PROPERTY(bool antialiasedErrorBars READ antialiasedErrorBars WRITE setAntialiasedErrorBars) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(QCPAxis* keyAxis READ keyAxis WRITE setKeyAxis) + Q_PROPERTY(QCPAxis* valueAxis READ valueAxis WRITE setValueAxis) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + QCPAbstractPlottable(QCPAxis *keyAxis, QCPAxis *valueAxis); + + // getters: + QString name() const { return mName; } + bool antialiasedFill() const { return mAntialiasedFill; } + bool antialiasedScatters() const { return mAntialiasedScatters; } + bool antialiasedErrorBars() const { return mAntialiasedErrorBars; } + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + QCPAxis *keyAxis() const { return mKeyAxis.data(); } + QCPAxis *valueAxis() const { return mValueAxis.data(); } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setName(const QString &name); + void setAntialiasedFill(bool enabled); + void setAntialiasedScatters(bool enabled); + void setAntialiasedErrorBars(bool enabled); + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + void setKeyAxis(QCPAxis *axis); + void setValueAxis(QCPAxis *axis); + Q_SLOT void setSelectable(bool selectable); + Q_SLOT void setSelected(bool selected); + + // introduced virtual methods: + virtual void clearData() = 0; + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const = 0; + virtual bool addToLegend(); + virtual bool removeFromLegend() const; + + // non-property methods: + void rescaleAxes(bool onlyEnlarge=false) const; + void rescaleKeyAxis(bool onlyEnlarge=false) const; + void rescaleValueAxis(bool onlyEnlarge=false) const; + +signals: + void selectionChanged(bool selected); + +protected: + /*! + Represents negative and positive sign domain for passing to \ref getKeyRange and \ref getValueRange. + */ + enum SignDomain { sdNegative ///< The negative sign domain, i.e. numbers smaller than zero + ,sdBoth ///< Both sign domains, including zero, i.e. all (rational) numbers + ,sdPositive ///< The positive sign domain, i.e. numbers greater than zero + }; + + // property members: + QString mName; + bool mAntialiasedFill, mAntialiasedScatters, mAntialiasedErrorBars; + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + QWeakPointer mKeyAxis, mValueAxis; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual QRect clipRect() const; + virtual void draw(QCPPainter *painter) = 0; + virtual QCP::Interaction selectionCategory() const; + void applyDefaultAntialiasingHint(QCPPainter *painter) const; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // introduced virtual methods: + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const = 0; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const = 0; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const = 0; + + // non-virtual methods: + void coordsToPixels(double key, double value, double &x, double &y) const; + const QPointF coordsToPixels(double key, double value) const; + void pixelsToCoords(double x, double y, double &key, double &value) const; + void pixelsToCoords(const QPointF &pixelPos, double &key, double &value) const; + QPen mainPen() const; + QBrush mainBrush() const; + void applyFillAntialiasingHint(QCPPainter *painter) const; + void applyScattersAntialiasingHint(QCPPainter *painter) const; + void applyErrorBarsAntialiasingHint(QCPPainter *painter) const; + double distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const; + +private: + Q_DISABLE_COPY(QCPAbstractPlottable) + + friend class QCustomPlot; + friend class QCPPlottableLegendItem; +}; + + +class QCP_LIB_DECL QCPItemAnchor +{ +public: + QCPItemAnchor(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name, int anchorId=-1); + virtual ~QCPItemAnchor(); + + // getters: + QString name() const { return mName; } + virtual QPointF pixelPoint() const; + +protected: + // property members: + QString mName; + + // non-property members: + QCustomPlot *mParentPlot; + QCPAbstractItem *mParentItem; + int mAnchorId; + QSet mChildren; + + // introduced virtual methods: + virtual QCPItemPosition *toQCPItemPosition() { return 0; } + + // non-virtual methods: + void addChild(QCPItemPosition* pos); // called from pos when this anchor is set as parent + void removeChild(QCPItemPosition *pos); // called from pos when its parent anchor is reset or pos deleted + +private: + Q_DISABLE_COPY(QCPItemAnchor) + + friend class QCPItemPosition; +}; + + + +class QCP_LIB_DECL QCPItemPosition : public QCPItemAnchor +{ +public: + /*! + Defines the ways an item position can be specified. Thus it defines what the numbers passed to + \ref setCoords actually mean. + + \see setType + */ + enum PositionType { ptAbsolute ///< Static positioning in pixels, starting from the top left corner of the viewport/widget. + ,ptViewportRatio ///< Static positioning given by a fraction of the viewport size. + ,ptAxisRectRatio ///< Static positioning given by a fraction of the axis rect size (see \ref setAxisRect). + ,ptPlotCoords ///< Dynamic positioning at a plot coordinate defined by two axes (see \ref setAxes). + }; + + QCPItemPosition(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name); + virtual ~QCPItemPosition(); + + // getters: + PositionType type() const { return mPositionType; } + QCPItemAnchor *parentAnchor() const { return mParentAnchor; } + double key() const { return mKey; } + double value() const { return mValue; } + QPointF coords() const { return QPointF(mKey, mValue); } + QCPAxis *keyAxis() const { return mKeyAxis.data(); } + QCPAxis *valueAxis() const { return mValueAxis.data(); } + QCPAxisRect *axisRect() const { return mAxisRect.data(); } + virtual QPointF pixelPoint() const; + + // setters: + void setType(PositionType type); + bool setParentAnchor(QCPItemAnchor *parentAnchor, bool keepPixelPosition=false); + void setCoords(double key, double value); + void setCoords(const QPointF &coords); + void setAxes(QCPAxis* keyAxis, QCPAxis* valueAxis); + void setAxisRect(QCPAxisRect *axisRect); + void setPixelPoint(const QPointF &pixelPoint); + +protected: + // property members: + PositionType mPositionType; + QWeakPointer mKeyAxis, mValueAxis; + QWeakPointer mAxisRect; + double mKey, mValue; + QCPItemAnchor *mParentAnchor; + + // reimplemented virtual methods: + virtual QCPItemPosition *toQCPItemPosition() { return this; } + +private: + Q_DISABLE_COPY(QCPItemPosition) + +}; + + +class QCP_LIB_DECL QCPAbstractItem : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(bool clipToAxisRect READ clipToAxisRect WRITE setClipToAxisRect) + Q_PROPERTY(QCPAxisRect* clipAxisRect READ clipAxisRect WRITE setClipAxisRect) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + QCPAbstractItem(QCustomPlot *parentPlot); + virtual ~QCPAbstractItem(); + + // getters: + bool clipToAxisRect() const { return mClipToAxisRect; } + QCPAxisRect *clipAxisRect() const { return mClipAxisRect.data(); } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setClipToAxisRect(bool clip); + void setClipAxisRect(QCPAxisRect *rect); + void setSelectable(bool selectable); + void setSelected(bool selected); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const = 0; + + // non-virtual methods: + QList positions() const { return mPositions; } + QList anchors() const { return mAnchors; } + QCPItemPosition *position(const QString &name) const; + QCPItemAnchor *anchor(const QString &name) const; + bool hasAnchor(const QString &name) const; + +signals: + void selectionChanged(bool selected); + +protected: + // property members: + bool mClipToAxisRect; + QWeakPointer mClipAxisRect; + QList mPositions; + QList mAnchors; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual QCP::Interaction selectionCategory() const; + virtual QRect clipRect() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter) = 0; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // introduced virtual methods: + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + double distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const; + double rectSelectTest(const QRectF &rect, const QPointF &pos, bool filledRect) const; + QCPItemPosition *createPosition(const QString &name); + QCPItemAnchor *createAnchor(const QString &name, int anchorId); + +private: + Q_DISABLE_COPY(QCPAbstractItem) + + friend class QCustomPlot; + friend class QCPItemAnchor; +}; + + +class QCP_LIB_DECL QCustomPlot : public QWidget +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QRect viewport READ viewport WRITE setViewport) + Q_PROPERTY(QPixmap background READ background WRITE setBackground) + Q_PROPERTY(bool backgroundScaled READ backgroundScaled WRITE setBackgroundScaled) + Q_PROPERTY(Qt::AspectRatioMode backgroundScaledMode READ backgroundScaledMode WRITE setBackgroundScaledMode) + Q_PROPERTY(QCPLayoutGrid* plotLayout READ plotLayout) + Q_PROPERTY(bool autoAddPlottableToLegend READ autoAddPlottableToLegend WRITE setAutoAddPlottableToLegend) + Q_PROPERTY(int selectionTolerance READ selectionTolerance WRITE setSelectionTolerance) + Q_PROPERTY(bool noAntialiasingOnDrag READ noAntialiasingOnDrag WRITE setNoAntialiasingOnDrag) + Q_PROPERTY(Qt::KeyboardModifier multiSelectModifier READ multiSelectModifier WRITE setMultiSelectModifier) + /// \endcond +public: + /*! + Defines how a layer should be inserted relative to an other layer. + + \see addLayer, moveLayer + */ + enum LayerInsertMode { limBelow ///< Layer is inserted below other layer + ,limAbove ///< Layer is inserted above other layer + }; + Q_ENUMS(LayerInsertMode) + + explicit QCustomPlot(QWidget *parent = 0); + virtual ~QCustomPlot(); + + // getters: + QRect viewport() const { return mViewport; } + QPixmap background() const { return mBackgroundPixmap; } + bool backgroundScaled() const { return mBackgroundScaled; } + Qt::AspectRatioMode backgroundScaledMode() const { return mBackgroundScaledMode; } + QCPLayoutGrid *plotLayout() const { return mPlotLayout; } + QCP::AntialiasedElements antialiasedElements() const { return mAntialiasedElements; } + QCP::AntialiasedElements notAntialiasedElements() const { return mNotAntialiasedElements; } + bool autoAddPlottableToLegend() const { return mAutoAddPlottableToLegend; } + const QCP::Interactions interactions() const { return mInteractions; } + int selectionTolerance() const { return mSelectionTolerance; } + bool noAntialiasingOnDrag() const { return mNoAntialiasingOnDrag; } + QCP::PlottingHints plottingHints() const { return mPlottingHints; } + Qt::KeyboardModifier multiSelectModifier() const { return mMultiSelectModifier; } + + // setters: + void setViewport(const QRect &rect); + void setBackground(const QPixmap &pm); + void setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding); + void setBackground(const QBrush &brush); + void setBackgroundScaled(bool scaled); + void setBackgroundScaledMode(Qt::AspectRatioMode mode); + void setAntialiasedElements(const QCP::AntialiasedElements &antialiasedElements); + void setAntialiasedElement(QCP::AntialiasedElement antialiasedElement, bool enabled=true); + void setNotAntialiasedElements(const QCP::AntialiasedElements ¬AntialiasedElements); + void setNotAntialiasedElement(QCP::AntialiasedElement notAntialiasedElement, bool enabled=true); + void setAutoAddPlottableToLegend(bool on); + void setInteractions(const QCP::Interactions &interactions); + void setInteraction(const QCP::Interaction &interaction, bool enabled=true); + void setSelectionTolerance(int pixels); + void setNoAntialiasingOnDrag(bool enabled); + void setPlottingHints(const QCP::PlottingHints &hints); + void setPlottingHint(QCP::PlottingHint hint, bool enabled=true); + void setMultiSelectModifier(Qt::KeyboardModifier modifier); + + // non-property methods: + // plottable interface: + QCPAbstractPlottable *plottable(int index); + QCPAbstractPlottable *plottable(); + bool addPlottable(QCPAbstractPlottable *plottable); + bool removePlottable(QCPAbstractPlottable *plottable); + bool removePlottable(int index); + int clearPlottables(); + int plottableCount() const; + QList selectedPlottables() const; + QCPAbstractPlottable *plottableAt(const QPointF &pos, bool onlySelectable=false) const; + bool hasPlottable(QCPAbstractPlottable *plottable) const; + + // specialized interface for QCPGraph: + QCPGraph *graph(int index) const; + QCPGraph *graph() const; + QCPGraph *addGraph(QCPAxis *keyAxis=0, QCPAxis *valueAxis=0); + bool removeGraph(QCPGraph *graph); + bool removeGraph(int index); + int clearGraphs(); + int graphCount() const; + QList selectedGraphs() const; + + // item interface: + QCPAbstractItem *item(int index) const; + QCPAbstractItem *item() const; + bool addItem(QCPAbstractItem* item); + bool removeItem(QCPAbstractItem *item); + bool removeItem(int index); + int clearItems(); + int itemCount() const; + QList selectedItems() const; + QCPAbstractItem *itemAt(const QPointF &pos, bool onlySelectable=false) const; + bool hasItem(QCPAbstractItem *item) const; + + // layer interface: + QCPLayer *layer(const QString &name) const; + QCPLayer *layer(int index) const; + QCPLayer *currentLayer() const; + bool setCurrentLayer(const QString &name); + bool setCurrentLayer(QCPLayer *layer); + int layerCount() const; + bool addLayer(const QString &name, QCPLayer *otherLayer=0, LayerInsertMode insertMode=limAbove); + bool removeLayer(QCPLayer *layer); + bool moveLayer(QCPLayer *layer, QCPLayer *otherLayer, LayerInsertMode insertMode=limAbove); + + // axis rect/layout interface: + int axisRectCount() const; + QCPAxisRect* axisRect(int index=0) const; + QList axisRects() const; + QCPLayoutElement* layoutElementAt(const QPointF &pos) const; + Q_SLOT void rescaleAxes(bool onlyVisible=false); + + QList selectedAxes() const; + QList selectedLegends() const; + Q_SLOT void deselectAll(); + + bool savePdf(const QString &fileName, bool noCosmeticPen=false, int width=0, int height=0); + bool savePng(const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1); + bool saveJpg(const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1); + bool saveBmp(const QString &fileName, int width=0, int height=0, double scale=1.0); + bool saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality=-1); + QPixmap toPixmap(int width=0, int height=0, double scale=1.0); + void toPainter(QCPPainter *painter, int width=0, int height=0); + Q_SLOT void replot(); + + QCPAxis *xAxis, *yAxis, *xAxis2, *yAxis2; + QCPLegend *legend; + +signals: + void mouseDoubleClick(QMouseEvent *event); + void mousePress(QMouseEvent *event); + void mouseMove(QMouseEvent *event); + void mouseRelease(QMouseEvent *event); + void mouseWheel(QWheelEvent *event); + + void plottableClick(QCPAbstractPlottable *plottable, QMouseEvent *event); + void plottableDoubleClick(QCPAbstractPlottable *plottable, QMouseEvent *event); + void itemClick(QCPAbstractItem *item, QMouseEvent *event); + void itemDoubleClick(QCPAbstractItem *item, QMouseEvent *event); + void axisClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); + void axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); + void legendClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event); + void legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event); + void titleClick(QMouseEvent *event, QCPPlotTitle *title); + void titleDoubleClick(QMouseEvent *event, QCPPlotTitle *title); + + void selectionChangedByUser(); + void beforeReplot(); + void afterReplot(); + +protected: + // property members: + QRect mViewport; + QCPLayoutGrid *mPlotLayout; + bool mAutoAddPlottableToLegend; + QList mPlottables; + QList mGraphs; // extra list of plottables also in mPlottables that are of type QCPGraph + QList mItems; + QList mLayers; + QCP::AntialiasedElements mAntialiasedElements, mNotAntialiasedElements; + QCP::Interactions mInteractions; + int mSelectionTolerance; + bool mNoAntialiasingOnDrag; + QBrush mBackgroundBrush; + QPixmap mBackgroundPixmap; + QPixmap mScaledBackgroundPixmap; + bool mBackgroundScaled; + Qt::AspectRatioMode mBackgroundScaledMode; + QCPLayer *mCurrentLayer; + QCP::PlottingHints mPlottingHints; + Qt::KeyboardModifier mMultiSelectModifier; + + // non-property members: + QPixmap mPaintBuffer; + QPoint mMousePressPos; + QCPLayoutElement *mMouseEventElement; + bool mReplotting; + + // reimplemented virtual methods: + virtual QSize minimumSizeHint() const; + virtual QSize sizeHint() const; + virtual void paintEvent(QPaintEvent *event); + virtual void resizeEvent(QResizeEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void wheelEvent(QWheelEvent *event); + + // introduced virtual methods: + virtual void draw(QCPPainter *painter); + virtual void axisRemoved(QCPAxis *axis); + virtual void legendRemoved(QCPLegend *legend); + + // non-virtual methods: + void updateLayerIndices() const; + QCPLayerable *layerableAt(const QPointF &pos, bool onlySelectable, QVariant *selectionDetails=0) const; + void drawBackground(QCPPainter *painter); + + friend class QCPLegend; + friend class QCPAxis; + friend class QCPLayer; + friend class QCPAxisRect; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPData +{ +public: + QCPData(); + QCPData(double key, double value); + double key, value; + double keyErrorPlus, keyErrorMinus; + double valueErrorPlus, valueErrorMinus; +}; +Q_DECLARE_TYPEINFO(QCPData, Q_MOVABLE_TYPE); + +/*! \typedef QCPDataMap + Container for storing QCPData items in a sorted fashion. The key of the map + is the key member of the QCPData instance. + + This is the container in which QCPGraph holds its data. + \see QCPData, QCPGraph::setData +*/ +typedef QMap QCPDataMap; +typedef QMapIterator QCPDataMapIterator; +typedef QMutableMapIterator QCPDataMutableMapIterator; + + +class QCP_LIB_DECL QCPGraph : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(LineStyle lineStyle READ lineStyle WRITE setLineStyle) + Q_PROPERTY(QCPScatterStyle scatterStyle READ scatterStyle WRITE setScatterStyle) + Q_PROPERTY(ErrorType errorType READ errorType WRITE setErrorType) + Q_PROPERTY(QPen errorPen READ errorPen WRITE setErrorPen) + Q_PROPERTY(double errorBarSize READ errorBarSize WRITE setErrorBarSize) + Q_PROPERTY(bool errorBarSkipSymbol READ errorBarSkipSymbol WRITE setErrorBarSkipSymbol) + Q_PROPERTY(QCPGraph* channelFillGraph READ channelFillGraph WRITE setChannelFillGraph) + /// \endcond +public: + /*! + Defines how the graph's line is represented visually in the plot. The line is drawn with the + current pen of the graph (\ref setPen). + \see setLineStyle + */ + enum LineStyle { lsNone ///< data points are not connected with any lines (e.g. data only represented + ///< with symbols according to the scatter style, see \ref setScatterStyle) + ,lsLine ///< data points are connected by a straight line + ,lsStepLeft ///< line is drawn as steps where the step height is the value of the left data point + ,lsStepRight ///< line is drawn as steps where the step height is the value of the right data point + ,lsStepCenter ///< line is drawn as steps where the step is in between two data points + ,lsImpulse ///< each data point is represented by a line parallel to the value axis, which reaches from the data point to the zero-value-line + }; + Q_ENUMS(LineStyle) + /*! + Defines what kind of error bars are drawn for each data point + */ + enum ErrorType { etNone ///< No error bars are shown + ,etKey ///< Error bars for the key dimension of the data point are shown + ,etValue ///< Error bars for the value dimension of the data point are shown + ,etBoth ///< Error bars for both key and value dimensions of the data point are shown + }; + Q_ENUMS(ErrorType) + + explicit QCPGraph(QCPAxis *keyAxis, QCPAxis *valueAxis); + virtual ~QCPGraph(); + + // getters: + const QCPDataMap *data() const { return mData; } + LineStyle lineStyle() const { return mLineStyle; } + QCPScatterStyle scatterStyle() const { return mScatterStyle; } + ErrorType errorType() const { return mErrorType; } + QPen errorPen() const { return mErrorPen; } + double errorBarSize() const { return mErrorBarSize; } + bool errorBarSkipSymbol() const { return mErrorBarSkipSymbol; } + QCPGraph *channelFillGraph() const { return mChannelFillGraph.data(); } + + // setters: + void setData(QCPDataMap *data, bool copy=false); + void setData(const QVector &key, const QVector &value); + void setDataKeyError(const QVector &key, const QVector &value, const QVector &keyError); + void setDataKeyError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus); + void setDataValueError(const QVector &key, const QVector &value, const QVector &valueError); + void setDataValueError(const QVector &key, const QVector &value, const QVector &valueErrorMinus, const QVector &valueErrorPlus); + void setDataBothError(const QVector &key, const QVector &value, const QVector &keyError, const QVector &valueError); + void setDataBothError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus, const QVector &valueErrorMinus, const QVector &valueErrorPlus); + void setLineStyle(LineStyle ls); + void setScatterStyle(const QCPScatterStyle &style); + void setErrorType(ErrorType errorType); + void setErrorPen(const QPen &pen); + void setErrorBarSize(double size); + void setErrorBarSkipSymbol(bool enabled); + void setChannelFillGraph(QCPGraph *targetGraph); + + // non-property methods: + void addData(const QCPDataMap &dataMap); + void addData(const QCPData &data); + void addData(double key, double value); + void addData(const QVector &keys, const QVector &values); + void removeDataBefore(double key); + void removeDataAfter(double key); + void removeData(double fromKey, double toKey); + void removeData(double key); + + // reimplemented virtual methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + using QCPAbstractPlottable::rescaleAxes; + using QCPAbstractPlottable::rescaleKeyAxis; + using QCPAbstractPlottable::rescaleValueAxis; + virtual void rescaleAxes(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface + virtual void rescaleKeyAxis(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface + virtual void rescaleValueAxis(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface + +protected: + // property members: + QCPDataMap *mData; + QPen mErrorPen; + LineStyle mLineStyle; + QCPScatterStyle mScatterStyle; + ErrorType mErrorType; + double mErrorBarSize; + bool mErrorBarSkipSymbol; + QWeakPointer mChannelFillGraph; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const; // overloads base class interface + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const; // overloads base class interface + + // introduced virtual methods: + virtual void drawFill(QCPPainter *painter, QVector *lineData) const; + virtual void drawScatterPlot(QCPPainter *painter, QVector *pointData) const; + virtual void drawLinePlot(QCPPainter *painter, QVector *lineData) const; + virtual void drawImpulsePlot(QCPPainter *painter, QVector *lineData) const; + + // non-virtual methods: + void getPlotData(QVector *lineData, QVector *pointData) const; + void getScatterPlotData(QVector *pointData) const; + void getLinePlotData(QVector *lineData, QVector *pointData) const; + void getStepLeftPlotData(QVector *lineData, QVector *pointData) const; + void getStepRightPlotData(QVector *lineData, QVector *pointData) const; + void getStepCenterPlotData(QVector *lineData, QVector *pointData) const; + void getImpulsePlotData(QVector *lineData, QVector *pointData) const; + void drawError(QCPPainter *painter, double x, double y, const QCPData &data) const; + void getVisibleDataBounds(QCPDataMap::const_iterator &lower, QCPDataMap::const_iterator &upper, int &count) const; + void addFillBasePoints(QVector *lineData) const; + void removeFillBasePoints(QVector *lineData) const; + QPointF lowerFillBasePoint(double lowerKey) const; + QPointF upperFillBasePoint(double upperKey) const; + const QPolygonF getChannelFillPolygon(const QVector *lineData) const; + int findIndexBelowX(const QVector *data, double x) const; + int findIndexAboveX(const QVector *data, double x) const; + int findIndexBelowY(const QVector *data, double y) const; + int findIndexAboveY(const QVector *data, double y) const; + double pointDistance(const QPointF &pixelPoint) const; + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPCurveData +{ +public: + QCPCurveData(); + QCPCurveData(double t, double key, double value); + double t, key, value; +}; +Q_DECLARE_TYPEINFO(QCPCurveData, Q_MOVABLE_TYPE); + +/*! \typedef QCPCurveDataMap + Container for storing QCPCurveData items in a sorted fashion. The key of the map + is the t member of the QCPCurveData instance. + + This is the container in which QCPCurve holds its data. + \see QCPCurveData, QCPCurve::setData +*/ + +typedef QMap QCPCurveDataMap; +typedef QMapIterator QCPCurveDataMapIterator; +typedef QMutableMapIterator QCPCurveDataMutableMapIterator; + + +class QCP_LIB_DECL QCPCurve : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCPScatterStyle scatterStyle READ scatterStyle WRITE setScatterStyle) + Q_PROPERTY(LineStyle lineStyle READ lineStyle WRITE setLineStyle) + /// \endcond +public: + /*! + Defines how the curve's line is represented visually in the plot. The line is drawn with the + current pen of the curve (\ref setPen). + \see setLineStyle + */ + enum LineStyle { lsNone, ///< No line is drawn between data points (e.g. only scatters) + lsLine ///< Data points are connected with a straight line + }; + explicit QCPCurve(QCPAxis *keyAxis, QCPAxis *valueAxis); + virtual ~QCPCurve(); + + // getters: + QCPCurveDataMap *data() const { return mData; } + QCPScatterStyle scatterStyle() const { return mScatterStyle; } + LineStyle lineStyle() const { return mLineStyle; } + + // setters: + void setData(QCPCurveDataMap *data, bool copy=false); + void setData(const QVector &t, const QVector &key, const QVector &value); + void setData(const QVector &key, const QVector &value); + void setScatterStyle(const QCPScatterStyle &style); + void setLineStyle(LineStyle style); + + // non-property methods: + void addData(const QCPCurveDataMap &dataMap); + void addData(const QCPCurveData &data); + void addData(double t, double key, double value); + void addData(double key, double value); + void addData(const QVector &ts, const QVector &keys, const QVector &values); + void removeDataBefore(double t); + void removeDataAfter(double t); + void removeData(double fromt, double tot); + void removeData(double t); + + // reimplemented virtual methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QCPCurveDataMap *mData; + QCPScatterStyle mScatterStyle; + LineStyle mLineStyle; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + + // introduced virtual methods: + virtual void drawScatterPlot(QCPPainter *painter, const QVector *pointData) const; + + // non-virtual methods: + void getCurveData(QVector *lineData) const; + double pointDistance(const QPointF &pixelPoint) const; + QPointF outsideCoordsToPixels(double key, double value, int region, QRect axisRect) const; + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPBarData +{ +public: + QCPBarData(); + QCPBarData(double key, double value); + double key, value; +}; +Q_DECLARE_TYPEINFO(QCPBarData, Q_MOVABLE_TYPE); + +/*! \typedef QCPBarDataMap + Container for storing QCPBarData items in a sorted fashion. The key of the map + is the key member of the QCPBarData instance. + + This is the container in which QCPBars holds its data. + \see QCPBarData, QCPBars::setData +*/ +typedef QMap QCPBarDataMap; +typedef QMapIterator QCPBarDataMapIterator; +typedef QMutableMapIterator QCPBarDataMutableMapIterator; + + +class QCP_LIB_DECL QCPBars : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(double width READ width WRITE setWidth) + Q_PROPERTY(QCPBars* barBelow READ barBelow) + Q_PROPERTY(QCPBars* barAbove READ barAbove) + /// \endcond +public: + explicit QCPBars(QCPAxis *keyAxis, QCPAxis *valueAxis); + virtual ~QCPBars(); + + // getters: + double width() const { return mWidth; } + QCPBars *barBelow() const { return mBarBelow.data(); } + QCPBars *barAbove() const { return mBarAbove.data(); } + QCPBarDataMap *data() const { return mData; } + + // setters: + void setWidth(double width); + void setData(QCPBarDataMap *data, bool copy=false); + void setData(const QVector &key, const QVector &value); + + // non-property methods: + void moveBelow(QCPBars *bars); + void moveAbove(QCPBars *bars); + void addData(const QCPBarDataMap &dataMap); + void addData(const QCPBarData &data); + void addData(double key, double value); + void addData(const QVector &keys, const QVector &values); + void removeDataBefore(double key); + void removeDataAfter(double key); + void removeData(double fromKey, double toKey); + void removeData(double key); + + // reimplemented virtual methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QCPBarDataMap *mData; + double mWidth; + QWeakPointer mBarBelow, mBarAbove; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + + // non-virtual methods: + QPolygonF getBarPolygon(double key, double value) const; + double getBaseValue(double key, bool positive) const; + static void connectBars(QCPBars* lower, QCPBars* upper); + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPStatisticalBox : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(double key READ key WRITE setKey) + Q_PROPERTY(double minimum READ minimum WRITE setMinimum) + Q_PROPERTY(double lowerQuartile READ lowerQuartile WRITE setLowerQuartile) + Q_PROPERTY(double median READ median WRITE setMedian) + Q_PROPERTY(double upperQuartile READ upperQuartile WRITE setUpperQuartile) + Q_PROPERTY(double maximum READ maximum WRITE setMaximum) + Q_PROPERTY(QVector outliers READ outliers WRITE setOutliers) + Q_PROPERTY(double width READ width WRITE setWidth) + Q_PROPERTY(double whiskerWidth READ whiskerWidth WRITE setWhiskerWidth) + Q_PROPERTY(QPen whiskerPen READ whiskerPen WRITE setWhiskerPen) + Q_PROPERTY(QPen whiskerBarPen READ whiskerBarPen WRITE setWhiskerBarPen) + Q_PROPERTY(QPen medianPen READ medianPen WRITE setMedianPen) + Q_PROPERTY(QCPScatterStyle outlierStyle READ outlierStyle WRITE setOutlierStyle) + /// \endcond +public: + explicit QCPStatisticalBox(QCPAxis *keyAxis, QCPAxis *valueAxis); + + // getters: + double key() const { return mKey; } + double minimum() const { return mMinimum; } + double lowerQuartile() const { return mLowerQuartile; } + double median() const { return mMedian; } + double upperQuartile() const { return mUpperQuartile; } + double maximum() const { return mMaximum; } + QVector outliers() const { return mOutliers; } + double width() const { return mWidth; } + double whiskerWidth() const { return mWhiskerWidth; } + QPen whiskerPen() const { return mWhiskerPen; } + QPen whiskerBarPen() const { return mWhiskerBarPen; } + QPen medianPen() const { return mMedianPen; } + QCPScatterStyle outlierStyle() const { return mOutlierStyle; } + + // setters: + void setKey(double key); + void setMinimum(double value); + void setLowerQuartile(double value); + void setMedian(double value); + void setUpperQuartile(double value); + void setMaximum(double value); + void setOutliers(const QVector &values); + void setData(double key, double minimum, double lowerQuartile, double median, double upperQuartile, double maximum); + void setWidth(double width); + void setWhiskerWidth(double width); + void setWhiskerPen(const QPen &pen); + void setWhiskerBarPen(const QPen &pen); + void setMedianPen(const QPen &pen); + void setOutlierStyle(const QCPScatterStyle &style); + + // non-property methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QVector mOutliers; + double mKey, mMinimum, mLowerQuartile, mMedian, mUpperQuartile, mMaximum; + double mWidth; + double mWhiskerWidth; + QPen mWhiskerPen, mWhiskerBarPen, mMedianPen; + QCPScatterStyle mOutlierStyle; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + + // introduced virtual methods: + virtual void drawQuartileBox(QCPPainter *painter, QRectF *quartileBox=0) const; + virtual void drawMedian(QCPPainter *painter) const; + virtual void drawWhiskers(QCPPainter *painter) const; + virtual void drawOutliers(QCPPainter *painter) const; + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +class QCP_LIB_DECL QCPItemStraightLine : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + /// \endcond +public: + QCPItemStraightLine(QCustomPlot *parentPlot); + virtual ~QCPItemStraightLine(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const point1; + QCPItemPosition * const point2; + +protected: + // property members: + QPen mPen, mSelectedPen; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + double distToStraightLine(const QVector2D &point1, const QVector2D &vec, const QVector2D &point) const; + QLineF getRectClippedStraightLine(const QVector2D &point1, const QVector2D &vec, const QRect &rect) const; + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemLine : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QCPLineEnding head READ head WRITE setHead) + Q_PROPERTY(QCPLineEnding tail READ tail WRITE setTail) + /// \endcond +public: + QCPItemLine(QCustomPlot *parentPlot); + virtual ~QCPItemLine(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QCPLineEnding head() const { return mHead; } + QCPLineEnding tail() const { return mTail; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setHead(const QCPLineEnding &head); + void setTail(const QCPLineEnding &tail); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const start; + QCPItemPosition * const end; + +protected: + // property members: + QPen mPen, mSelectedPen; + QCPLineEnding mHead, mTail; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + QLineF getRectClippedLine(const QVector2D &start, const QVector2D &end, const QRect &rect) const; + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemCurve : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QCPLineEnding head READ head WRITE setHead) + Q_PROPERTY(QCPLineEnding tail READ tail WRITE setTail) + /// \endcond +public: + QCPItemCurve(QCustomPlot *parentPlot); + virtual ~QCPItemCurve(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QCPLineEnding head() const { return mHead; } + QCPLineEnding tail() const { return mTail; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setHead(const QCPLineEnding &head); + void setTail(const QCPLineEnding &tail); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const start; + QCPItemPosition * const startDir; + QCPItemPosition * const endDir; + QCPItemPosition * const end; + +protected: + // property members: + QPen mPen, mSelectedPen; + QCPLineEnding mHead, mTail; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemRect : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + /// \endcond +public: + QCPItemRect(QCustomPlot *parentPlot); + virtual ~QCPItemRect(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const topLeft; + QCPItemPosition * const bottomRight; + QCPItemAnchor * const top; + QCPItemAnchor * const topRight; + QCPItemAnchor * const right; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeft; + QCPItemAnchor * const left; + +protected: + enum AnchorIndex {aiTop, aiTopRight, aiRight, aiBottom, aiBottomLeft, aiLeft}; + + // property members: + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemText : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(QColor selectedColor READ selectedColor WRITE setSelectedColor) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(Qt::Alignment positionAlignment READ positionAlignment WRITE setPositionAlignment) + Q_PROPERTY(Qt::Alignment textAlignment READ textAlignment WRITE setTextAlignment) + Q_PROPERTY(double rotation READ rotation WRITE setRotation) + Q_PROPERTY(QMargins padding READ padding WRITE setPadding) + /// \endcond +public: + QCPItemText(QCustomPlot *parentPlot); + virtual ~QCPItemText(); + + // getters: + QColor color() const { return mColor; } + QColor selectedColor() const { return mSelectedColor; } + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + QFont font() const { return mFont; } + QFont selectedFont() const { return mSelectedFont; } + QString text() const { return mText; } + Qt::Alignment positionAlignment() const { return mPositionAlignment; } + Qt::Alignment textAlignment() const { return mTextAlignment; } + double rotation() const { return mRotation; } + QMargins padding() const { return mPadding; } + + // setters; + void setColor(const QColor &color); + void setSelectedColor(const QColor &color); + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + void setFont(const QFont &font); + void setSelectedFont(const QFont &font); + void setText(const QString &text); + void setPositionAlignment(Qt::Alignment alignment); + void setTextAlignment(Qt::Alignment alignment); + void setRotation(double degrees); + void setPadding(const QMargins &padding); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const position; + QCPItemAnchor * const topLeft; + QCPItemAnchor * const top; + QCPItemAnchor * const topRight; + QCPItemAnchor * const right; + QCPItemAnchor * const bottomRight; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeft; + QCPItemAnchor * const left; + +protected: + enum AnchorIndex {aiTopLeft, aiTop, aiTopRight, aiRight, aiBottomRight, aiBottom, aiBottomLeft, aiLeft}; + + // property members: + QColor mColor, mSelectedColor; + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + QFont mFont, mSelectedFont; + QString mText; + Qt::Alignment mPositionAlignment; + Qt::Alignment mTextAlignment; + double mRotation; + QMargins mPadding; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPointF getTextDrawPoint(const QPointF &pos, const QRectF &rect, Qt::Alignment positionAlignment) const; + QFont mainFont() const; + QColor mainColor() const; + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemEllipse : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + /// \endcond +public: + QCPItemEllipse(QCustomPlot *parentPlot); + virtual ~QCPItemEllipse(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const topLeft; + QCPItemPosition * const bottomRight; + QCPItemAnchor * const topLeftRim; + QCPItemAnchor * const top; + QCPItemAnchor * const topRightRim; + QCPItemAnchor * const right; + QCPItemAnchor * const bottomRightRim; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeftRim; + QCPItemAnchor * const left; + QCPItemAnchor * const center; + +protected: + enum AnchorIndex {aiTopLeftRim, aiTop, aiTopRightRim, aiRight, aiBottomRightRim, aiBottom, aiBottomLeftRim, aiLeft, aiCenter}; + + // property members: + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemPixmap : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap) + Q_PROPERTY(bool scaled READ scaled WRITE setScaled) + Q_PROPERTY(Qt::AspectRatioMode aspectRatioMode READ aspectRatioMode) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + /// \endcond +public: + QCPItemPixmap(QCustomPlot *parentPlot); + virtual ~QCPItemPixmap(); + + // getters: + QPixmap pixmap() const { return mPixmap; } + bool scaled() const { return mScaled; } + Qt::AspectRatioMode aspectRatioMode() const { return mAspectRatioMode; } + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + + // setters; + void setPixmap(const QPixmap &pixmap); + void setScaled(bool scaled, Qt::AspectRatioMode aspectRatioMode=Qt::KeepAspectRatio); + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const topLeft; + QCPItemPosition * const bottomRight; + QCPItemAnchor * const top; + QCPItemAnchor * const topRight; + QCPItemAnchor * const right; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeft; + QCPItemAnchor * const left; + +protected: + enum AnchorIndex {aiTop, aiTopRight, aiRight, aiBottom, aiBottomLeft, aiLeft}; + + // property members: + QPixmap mPixmap; + QPixmap mScaledPixmap; + bool mScaled; + Qt::AspectRatioMode mAspectRatioMode; + QPen mPen, mSelectedPen; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + void updateScaledPixmap(QRect finalRect=QRect(), bool flipHorz=false, bool flipVert=false); + QRect getFinalRect(bool *flippedHorz=0, bool *flippedVert=0) const; + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemTracer : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(double size READ size WRITE setSize) + Q_PROPERTY(TracerStyle style READ style WRITE setStyle) + Q_PROPERTY(QCPGraph* graph READ graph WRITE setGraph) + Q_PROPERTY(double graphKey READ graphKey WRITE setGraphKey) + Q_PROPERTY(bool interpolating READ interpolating WRITE setInterpolating) + /// \endcond +public: + /*! + The different visual appearances a tracer item can have. Some styles size may be controlled with \ref setSize. + + \see setStyle + */ + enum TracerStyle { tsNone ///< The tracer is not visible + ,tsPlus ///< A plus shaped crosshair with limited size + ,tsCrosshair ///< A plus shaped crosshair which spans the complete axis rect + ,tsCircle ///< A circle + ,tsSquare ///< A square + }; + Q_ENUMS(TracerStyle) + + QCPItemTracer(QCustomPlot *parentPlot); + virtual ~QCPItemTracer(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + double size() const { return mSize; } + TracerStyle style() const { return mStyle; } + QCPGraph *graph() const { return mGraph; } + double graphKey() const { return mGraphKey; } + bool interpolating() const { return mInterpolating; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + void setSize(double size); + void setStyle(TracerStyle style); + void setGraph(QCPGraph *graph); + void setGraphKey(double key); + void setInterpolating(bool enabled); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + void updatePosition(); + + QCPItemPosition * const position; + +protected: + // property members: + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + double mSize; + TracerStyle mStyle; + QCPGraph *mGraph; + double mGraphKey; + bool mInterpolating; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemBracket : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(double length READ length WRITE setLength) + Q_PROPERTY(BracketStyle style READ style WRITE setStyle) + /// \endcond +public: + enum BracketStyle { bsSquare ///< A brace with angled edges + ,bsRound ///< A brace with round edges + ,bsCurly ///< A curly brace + ,bsCalligraphic ///< A curly brace with varying stroke width giving a calligraphic impression + }; + + QCPItemBracket(QCustomPlot *parentPlot); + virtual ~QCPItemBracket(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + double length() const { return mLength; } + BracketStyle style() const { return mStyle; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setLength(double length); + void setStyle(BracketStyle style); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const left; + QCPItemPosition * const right; + QCPItemAnchor * const center; + +protected: + // property members: + enum AnchorIndex {aiCenter}; + QPen mPen, mSelectedPen; + double mLength; + BracketStyle mStyle; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPAxisRect : public QCPLayoutElement +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPixmap background READ background WRITE setBackground) + Q_PROPERTY(bool backgroundScaled READ backgroundScaled WRITE setBackgroundScaled) + Q_PROPERTY(Qt::AspectRatioMode backgroundScaledMode READ backgroundScaledMode WRITE setBackgroundScaledMode) + Q_PROPERTY(Qt::Orientations rangeDrag READ rangeDrag WRITE setRangeDrag) + Q_PROPERTY(Qt::Orientations rangeZoom READ rangeZoom WRITE setRangeZoom) + /// \endcond +public: + explicit QCPAxisRect(QCustomPlot *parentPlot, bool setupDefaultAxes=true); + virtual ~QCPAxisRect(); + + // getters: + QPixmap background() const { return mBackgroundPixmap; } + bool backgroundScaled() const { return mBackgroundScaled; } + Qt::AspectRatioMode backgroundScaledMode() const { return mBackgroundScaledMode; } + Qt::Orientations rangeDrag() const { return mRangeDrag; } + Qt::Orientations rangeZoom() const { return mRangeZoom; } + QCPAxis *rangeDragAxis(Qt::Orientation orientation); + QCPAxis *rangeZoomAxis(Qt::Orientation orientation); + double rangeZoomFactor(Qt::Orientation orientation); + + // setters: + void setBackground(const QPixmap &pm); + void setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding); + void setBackground(const QBrush &brush); + void setBackgroundScaled(bool scaled); + void setBackgroundScaledMode(Qt::AspectRatioMode mode); + void setRangeDrag(Qt::Orientations orientations); + void setRangeZoom(Qt::Orientations orientations); + void setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical); + void setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical); + void setRangeZoomFactor(double horizontalFactor, double verticalFactor); + void setRangeZoomFactor(double factor); + + // non-property methods: + int axisCount(QCPAxis::AxisType type) const; + QCPAxis *axis(QCPAxis::AxisType type, int index=0) const; + QList axes(QCPAxis::AxisTypes types) const; + QList axes() const; + QCPAxis *addAxis(QCPAxis::AxisType type); + QList addAxes(QCPAxis::AxisTypes types); + bool removeAxis(QCPAxis *axis); + QCPLayoutInset *insetLayout() const { return mInsetLayout; } + + void setupFullAxesBox(bool connectRanges=false); + QList plottables() const; + QList graphs() const; + QList items() const; + + // read-only interface imitating a QRect: + int left() const { return mRect.left(); } + int right() const { return mRect.right(); } + int top() const { return mRect.top(); } + int bottom() const { return mRect.bottom(); } + int width() const { return mRect.width(); } + int height() const { return mRect.height(); } + QSize size() const { return mRect.size(); } + QPoint topLeft() const { return mRect.topLeft(); } + QPoint topRight() const { return mRect.topRight(); } + QPoint bottomLeft() const { return mRect.bottomLeft(); } + QPoint bottomRight() const { return mRect.bottomRight(); } + QPoint center() const { return mRect.center(); } + + // reimplemented virtual methods: + virtual void update(); + virtual QList elements(bool recursive) const; + +protected: + // property members: + QBrush mBackgroundBrush; + QPixmap mBackgroundPixmap; + QPixmap mScaledBackgroundPixmap; + bool mBackgroundScaled; + Qt::AspectRatioMode mBackgroundScaledMode; + QCPLayoutInset *mInsetLayout; + Qt::Orientations mRangeDrag, mRangeZoom; + QWeakPointer mRangeDragHorzAxis, mRangeDragVertAxis, mRangeZoomHorzAxis, mRangeZoomVertAxis; + double mRangeZoomFactorHorz, mRangeZoomFactorVert; + // non-property members: + QCPRange mDragStartHorzRange, mDragStartVertRange; + QCP::AntialiasedElements mAADragBackup, mNotAADragBackup; + QPoint mDragStart; + bool mDragging; + QHash > mAxes; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + virtual int calculateAutoMargin(QCP::MarginSide side); + // events: + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void wheelEvent(QWheelEvent *event); + + // non-property methods: + void drawBackground(QCPPainter *painter); + void updateAxesOffset(QCPAxis::AxisType type); + +private: + Q_DISABLE_COPY(QCPAxisRect) + + friend class QCustomPlot; +}; + + +class QCP_LIB_DECL QCPAbstractLegendItem : public QCPLayoutElement +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCPLegend* parentLegend READ parentLegend) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + explicit QCPAbstractLegendItem(QCPLegend *parent); + + // getters: + QCPLegend *parentLegend() const { return mParentLegend; } + QFont font() const { return mFont; } + QColor textColor() const { return mTextColor; } + QFont selectedFont() const { return mSelectedFont; } + QColor selectedTextColor() const { return mSelectedTextColor; } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setFont(const QFont &font); + void setTextColor(const QColor &color); + void setSelectedFont(const QFont &font); + void setSelectedTextColor(const QColor &color); + void setSelectable(bool selectable); + void setSelected(bool selected); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +signals: + void selectionChanged(bool selected); + +protected: + // property members: + QCPLegend *mParentLegend; + QFont mFont; + QColor mTextColor; + QFont mSelectedFont; + QColor mSelectedTextColor; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual QCP::Interaction selectionCategory() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual QRect clipRect() const; + virtual void draw(QCPPainter *painter) = 0; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + +private: + Q_DISABLE_COPY(QCPAbstractLegendItem) + + friend class QCPLegend; +}; + + +class QCP_LIB_DECL QCPPlottableLegendItem : public QCPAbstractLegendItem +{ + Q_OBJECT +public: + QCPPlottableLegendItem(QCPLegend *parent, QCPAbstractPlottable *plottable); + + // getters: + QCPAbstractPlottable *plottable() { return mPlottable; } + +protected: + // property members: + QCPAbstractPlottable *mPlottable; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QSize minimumSizeHint() const; + + // non-virtual methods: + QPen getIconBorderPen() const; + QColor getTextColor() const; + QFont getFont() const; +}; + + +class QCP_LIB_DECL QCPLegend : public QCPLayoutGrid +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen borderPen READ borderPen WRITE setBorderPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) + Q_PROPERTY(int iconTextPadding READ iconTextPadding WRITE setIconTextPadding) + Q_PROPERTY(QPen iconBorderPen READ iconBorderPen WRITE setIconBorderPen) + Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts) + Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts) + Q_PROPERTY(QPen selectedBorderPen READ selectedBorderPen WRITE setSelectedBorderPen) + Q_PROPERTY(QPen selectedIconBorderPen READ selectedIconBorderPen WRITE setSelectedIconBorderPen) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor) + /// \endcond +public: + /*! + Defines the selectable parts of a legend + + \see setSelectedParts, setSelectableParts + */ + enum SelectablePart { spNone = 0x000 ///< 0x000 None + ,spLegendBox = 0x001 ///< 0x001 The legend box (frame) + ,spItems = 0x002 ///< 0x002 Legend items individually (see \ref selectedItems) + }; + Q_FLAGS(SelectablePart SelectableParts) + Q_DECLARE_FLAGS(SelectableParts, SelectablePart) + + explicit QCPLegend(); + virtual ~QCPLegend(); + + // getters: + QPen borderPen() const { return mBorderPen; } + QBrush brush() const { return mBrush; } + QFont font() const { return mFont; } + QColor textColor() const { return mTextColor; } + QSize iconSize() const { return mIconSize; } + int iconTextPadding() const { return mIconTextPadding; } + QPen iconBorderPen() const { return mIconBorderPen; } + SelectableParts selectableParts() const { return mSelectableParts; } + SelectableParts selectedParts() const; + QPen selectedBorderPen() const { return mSelectedBorderPen; } + QPen selectedIconBorderPen() const { return mSelectedIconBorderPen; } + QBrush selectedBrush() const { return mSelectedBrush; } + QFont selectedFont() const { return mSelectedFont; } + QColor selectedTextColor() const { return mSelectedTextColor; } + + // setters: + void setBorderPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setFont(const QFont &font); + void setTextColor(const QColor &color); + void setIconSize(const QSize &size); + void setIconSize(int width, int height); + void setIconTextPadding(int padding); + void setIconBorderPen(const QPen &pen); + void setSelectableParts(const SelectableParts &selectableParts); + void setSelectedParts(const SelectableParts &selectedParts); + void setSelectedBorderPen(const QPen &pen); + void setSelectedIconBorderPen(const QPen &pen); + void setSelectedBrush(const QBrush &brush); + void setSelectedFont(const QFont &font); + void setSelectedTextColor(const QColor &color); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + QCPAbstractLegendItem *item(int index) const; + QCPPlottableLegendItem *itemWithPlottable(const QCPAbstractPlottable *plottable) const; + int itemCount() const; + bool hasItem(QCPAbstractLegendItem *item) const; + bool hasItemWithPlottable(const QCPAbstractPlottable *plottable) const; + bool addItem(QCPAbstractLegendItem *item); + bool removeItem(int index); + bool removeItem(QCPAbstractLegendItem *item); + void clearItems(); + QList selectedItems() const; + +signals: + void selectionChanged(QCPLegend::SelectableParts selection); + +protected: + // property members: + QPen mBorderPen, mIconBorderPen; + QBrush mBrush; + QFont mFont; + QColor mTextColor; + QSize mIconSize; + int mIconTextPadding; + SelectableParts mSelectedParts, mSelectableParts; + QPen mSelectedBorderPen, mSelectedIconBorderPen; + QBrush mSelectedBrush; + QFont mSelectedFont; + QColor mSelectedTextColor; + + // reimplemented virtual methods: + virtual void parentPlotInitialized(QCustomPlot *parentPlot); + virtual QCP::Interaction selectionCategory() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-virtual methods: + QPen getBorderPen() const; + QBrush getBrush() const; + +private: + Q_DISABLE_COPY(QCPLegend) + + friend class QCustomPlot; + friend class QCPAbstractLegendItem; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPLegend::SelectableParts) +Q_DECLARE_METATYPE(QCPLegend::SelectablePart) + + +class QCP_LIB_DECL QCPPlotTitle : public QCPLayoutElement +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + explicit QCPPlotTitle(QCustomPlot *parentPlot); + explicit QCPPlotTitle(QCustomPlot *parentPlot, const QString &text); + + // getters: + QString text() const { return mText; } + QFont font() const { return mFont; } + QColor textColor() const { return mTextColor; } + QFont selectedFont() const { return mSelectedFont; } + QColor selectedTextColor() const { return mSelectedTextColor; } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setText(const QString &text); + void setFont(const QFont &font); + void setTextColor(const QColor &color); + void setSelectedFont(const QFont &font); + void setSelectedTextColor(const QColor &color); + void setSelectable(bool selectable); + void setSelected(bool selected); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +signals: + void selectionChanged(bool selected); + +protected: + // property members: + QString mText; + QFont mFont; + QColor mTextColor; + QFont mSelectedFont; + QColor mSelectedTextColor; + QRect mTextBoundingRect; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + virtual QSize minimumSizeHint() const; + virtual QSize maximumSizeHint() const; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-virtual methods: + QFont mainFont() const; + QColor mainTextColor() const; + +private: + Q_DISABLE_COPY(QCPPlotTitle) +}; + +#endif // QCUSTOMPLOT_H + diff --git a/DEC_GUI/Kolch_Shind/solver.cpp b/DEC_GUI/Kolch_Shind/solver.cpp new file mode 100644 index 0000000..7c43930 --- /dev/null +++ b/DEC_GUI/Kolch_Shind/solver.cpp @@ -0,0 +1,352 @@ +#include "solver.h" +#include "iostream" +#include + +Solver::Solver(QObject *parent) : + QObject(parent) +{ + +} + +Solver::~Solver() +{ + +} + + +//calculates function values and puts it into vectors(predatorSolveVal, preySolveVal) +void Solver::solveModel(float c1, float c2, float c3, float c4, float c5, float sigC1, float sigC2, float sigC3, float sigC4, float sigC5, + float e, float sigE, float sigX0, float delX0, float sigX, float Xopt, int popSize, int maxSteps, int N, int flag, int iter, int modelCount){ + + itersFlag = flag; + newIters = iter; + modCount = modelCount; + int k = 0; + + if (itersFlag == 0) + { + popVect.clear(); + singleModelHistory.clear(); + for (int i = 0; i < modelCount; i++) + { + k++; + + withFeedbackVect.clear(); + withoutFeedbackVect.clear(); + firstXVect.clear(); + maxWithFeedVal = 0; + maxWithoutFeedVal = 0; + //firstXVect.clear(); + + meanE.clear(); + meanF.clear(); + meanC2.clear(); + individ.clear(); + individFeedback.clear(); + + int POP_SIZE = popSize; + int MAX_STEPS = maxSteps; + addSteps = maxSteps; + //float DELTA_Xopt = 0.0f; + float DELTA_Xopt = delX0; + //float DELTA_Xopt = 0.4f; + //float DELTA_Xopt = 0.5f; + //float DELTA_Xopt = 1.0f; + N_forFeedback = N; + population.resize(POP_SIZE); + popVect.push_back(population); + //Individ::initConstants(); + Individ::initConstantsFromGUI(c1, c2, c3, c4, c5, Xopt, sigX, sigE, sigC1, sigC2, sigC3, sigC4, sigC5); + initialization(popVect[i], N_forFeedback); + + // + for(int steps = 0; steps < MAX_STEPS; steps++) { + //mutationSimple(population); // 1) + mutationComplex(popVect[i]); + selection(popVect[i], 0.02f); // 2) + printStatistics(popVect[i], i, 0, steps); + firstXVect.push_back(steps); + maxWithFeedVal = qMax(withFeedbackVect[steps], maxWithFeedVal); + maxWithoutFeedVal = qMax(withoutFeedbackVect[steps], maxWithoutFeedVal); + Individ::Xopt += DELTA_Xopt; + } // (END) + + lastXopt = Individ::Xopt; + + vectors.withFeedbackVect = withFeedbackVect; + vectors.withoutFeedbackVect = withoutFeedbackVect; + vectors.individ = individ; + vectors.individFeedback = individFeedback; + vectors.meanE = meanE; + vectors.meanC2 = meanC2; + vectors.meanF = meanF; + vectors.xRange = firstXVect; + vectors.maxWithFeedVal = maxWithFeedVal; + vectors.maxWithoutFeedVal = maxWithoutFeedVal; + + singleModelHistory.push_back(vectors); + + emit sendItersForProgressBar(i); + + } + if (k == modelCount) + { + for (int m = 0; m < withFeedbackVectAvg.size(); m++) + { + withFeedbackVectAvg[m] /= modCount; + withoutFeedbackVectAvg[m] /= modCount; + individAvg[m] /= modCount; + individFeedbackAvg[m] /= modCount; + meanC2Avg[m] /= modCount; + meanEAvg[m] /= modCount; + meanFAvg[m] /= modCount; + + } + vectors.withFeedbackVect = withFeedbackVectAvg; + vectors.withoutFeedbackVect = withoutFeedbackVectAvg; + vectors.individ = individAvg; + vectors.individFeedback = individFeedbackAvg; + vectors.meanE = meanEAvg; + vectors.meanC2 = meanC2Avg; + vectors.meanF = meanFAvg; + singleModelHistory.push_back(vectors); + + emit sendItersForProgressBar(modCount); + + } + + emit sendHistory(singleModelHistory, addSteps); + } + if (itersFlag == 1) + { + int n = 0; + float DELTA_Xopt = delX0; + for (int i = 0; i < modelCount; i++) + { + n++; + Individ::Xopt = lastXopt; + //std::cout << Individ::Xopt << std::endl; + N_forFeedback = N; + + // + for(int steps = addSteps; steps < addSteps + newIters; steps++) { + //mutationSimple(population); // 1) + mutationComplex(popVect[i]); + selection(popVect[i], 0.02f); // 2) + printStatistics(popVect[i], i, 1, steps); + if (i == 0) + { + firstXVect.push_back(steps); + } + Individ::Xopt += DELTA_Xopt; + maxWithFeedVal = qMax(withFeedbackVect[steps], maxWithFeedVal); + maxWithoutFeedVal = qMax(withoutFeedbackVect[steps], maxWithoutFeedVal); + + } // (END) + + singleModelHistory[i].xRange = firstXVect; + singleModelHistory[i].maxWithFeedVal = maxWithFeedVal; + singleModelHistory[i].maxWithoutFeedVal = maxWithoutFeedVal; + emit sendItersForProgressBar(i); + + } + if (n == modCount) // index n - for last struct in history for averages + { + for (int m = addSteps; m < addSteps + newIters; m++) + { + singleModelHistory[modCount].withFeedbackVect[m] /= modCount; + singleModelHistory[modCount].withoutFeedbackVect[m] /= modCount; + singleModelHistory[modCount].individ[m] /= modCount; + singleModelHistory[modCount].individFeedback[m] /= modCount; + singleModelHistory[modCount].meanC2[m] /= modCount; + singleModelHistory[modCount].meanE[m] /= modCount; + singleModelHistory[modCount].meanF[m] /= modCount; + } + + singleModelHistory[modCount].xRange = firstXVect; + } + lastXopt = Individ::Xopt; + addSteps += newIters; + emit sendItersForProgressBar(modCount); + emit sendHistory(singleModelHistory, addSteps); + + } +} + +void Solver::mutationSimple(std::vector& population){ + boost::normal_distribution<> norm(0.0, Individ::sigmaE); + boost::mt19937 rng; + boost::variate_generator > + generator(rng, norm); // glues randomness with mapping + + for(int i = 0; i < population.size(); i++){ + float deltaE = generator(); + //std::cout<mutate(deltaE); + } +} + +void Solver::mutationComplex(std::vector& population){ + boost::normal_distribution<> normE(0.0, Individ::sigmaE); + boost::normal_distribution<> normC2(0.0, Individ::sigmaC2); + boost::mt19937 rng; + boost::variate_generator > + generatorE(rng, normE); + boost::variate_generator > + generatorC2(rng, normC2); + + for(int i = 0; i < population.size(); i++){ + float flag = generatorE(); + if(flag >= 0.0f){ + float deltaE = generatorE(); + population.at(i)->mutate(deltaE); + } + else{ + float deltaC2 = generatorC2(); + population.at(i)->mutateC2(deltaC2); + } + } +} + +void Solver::selection(std::vector& population, float renewRate){ + std::sort(population.begin(),population.end(), compareOnFitness); + int inds = population.size(); + float deathRate = renewRate; + float birthRate = renewRate; //Settings::BirthRate;//0.02f; + int toDie = int (inds* deathRate); + std::vector::iterator start = population.begin(); + std::vector::iterator end = population.begin()+toDie; + + for(std::vector::iterator it = start; it != end; it++){ + delete *it; + } + population.erase(start, end); + + // + int toBorn = int (inds * birthRate); + inds = population.size(); + srand((unsigned int)time(NULL)); + for(int i = 0; i < toBorn; i++) { + int parent = rand() % inds; + Individ* ind; + if(population.at(parent)->hasFeedBack()){ + ind = new IndividFeedBack(population.at(parent)->getE()); + ind->setC2(population.at(parent)->getC2()); + } + else{ + ind = new Individ(population.at(parent)->getE()); + } + // .. + population.push_back(ind); + } +} // (END) void selection(std::vector& population, float renewRate) + +void Solver::initialization(std::vector& population, int N_feedback){ + // + int POP_SIZE = population.size(); + float E = Individ::getOptimalE();// Xopt*Individ::c[2]/Individ::c[0] - Individ::c[3]; + + for(int i = 0; i < N_feedback; i++){ + Individ* ind = new Individ(E); + population.at(i) = ind; + } + E = IndividFeedBack::getOptimalE(); + for(int i = N_feedback; i < POP_SIZE; i++){ + Individ* ind = new IndividFeedBack(E); + population.at(i) = ind; + } + +} // (END) void initialization(std::vector& population){ + + + +void Solver::printStatistics(const std::vector& population, int i, int iters, int currentStep){ + // + + withFeedback = 0.f; + withoutFeedback = 0.f; + meanC2Feedback = 0.f; + meanEFeedBack = 0.f; + meanENonFeedBack = 0.f; + for(int i = 0; i < population.size(); i++){ + if(population.at(i)->hasFeedBack()){ + withFeedback++; + meanC2Feedback += population.at(i)->getC2(); + meanEFeedBack += population.at(i)->getE(); + } + else{ + withoutFeedback++; + meanENonFeedBack += population.at(i)->getE(); + } + } + + if (iters == 1) //count average for additional iters + { + singleModelHistory[i].withFeedbackVect.push_back(withFeedback); + singleModelHistory[i].withoutFeedbackVect.push_back(withoutFeedback); + singleModelHistory[i].individ.push_back(Individ::getOptimalE()); + singleModelHistory[i].individFeedback.push_back(IndividFeedBack::getOptimalE()); + singleModelHistory[i].meanE.push_back(meanENonFeedBack/withoutFeedback); + singleModelHistory[i].meanC2.push_back(meanC2Feedback/withFeedback); + singleModelHistory[i].meanF.push_back(meanEFeedBack/withFeedback); + + if (i == 0) + { + singleModelHistory[modCount].withFeedbackVect.push_back(withFeedback); + singleModelHistory[modCount].withoutFeedbackVect.push_back(withoutFeedback); + singleModelHistory[modCount].meanE.push_back(meanENonFeedBack/withoutFeedback); + singleModelHistory[modCount].meanF.push_back(meanEFeedBack/withFeedback); + singleModelHistory[modCount].meanC2.push_back(meanC2Feedback/withFeedback); + singleModelHistory[modCount].individ.push_back(Individ::getOptimalE()); + singleModelHistory[modCount].individFeedback.push_back(IndividFeedBack::getOptimalE()); + } + else + { + singleModelHistory[modCount].withFeedbackVect[currentStep] += withFeedback; + singleModelHistory[modCount].withoutFeedbackVect[currentStep] += withoutFeedback; + singleModelHistory[modCount].meanE[currentStep] += meanENonFeedBack/withoutFeedback; + singleModelHistory[modCount].meanF[currentStep] += meanEFeedBack/withFeedback; + singleModelHistory[modCount].meanC2[currentStep] += meanC2Feedback/withFeedback; + singleModelHistory[modCount].individ[currentStep] += Individ::getOptimalE(); + singleModelHistory[modCount].individFeedback[currentStep] += IndividFeedBack::getOptimalE(); + } + } + + if (i == 0 && iters == 0) // count average for new calc + { + withFeedbackVectAvg.push_back(withFeedback); + withoutFeedbackVectAvg.push_back(withoutFeedback); + meanEAvg.push_back(meanENonFeedBack/withoutFeedback); + meanFAvg.push_back(meanEFeedBack/withFeedback); + meanC2Avg.push_back(meanC2Feedback/withFeedback); + individAvg.push_back(Individ::getOptimalE()); + individFeedbackAvg.push_back(IndividFeedBack::getOptimalE()); + } + else if (iters == 0) + { + withFeedbackVectAvg[currentStep] += withFeedback; + withoutFeedbackVectAvg[currentStep] += withoutFeedback; + meanEAvg[currentStep] += meanENonFeedBack/withoutFeedback; + meanFAvg[currentStep] += meanEFeedBack/withFeedback; + meanC2Avg[currentStep] += meanC2Feedback/withFeedback; + individAvg[currentStep] += Individ::getOptimalE(); + individFeedbackAvg[currentStep] += IndividFeedBack::getOptimalE(); + } + //add vectors for first calc + withFeedbackVect.push_back(withFeedback); + withoutFeedbackVect.push_back(withoutFeedback); + meanE.push_back(meanENonFeedBack/withoutFeedback); + meanF.push_back(meanEFeedBack/withFeedback); + meanC2.push_back(meanC2Feedback/withFeedback); + individ.push_back(Individ::getOptimalE()); + individFeedback.push_back(IndividFeedBack::getOptimalE()); + +// std::cout<<"W/o fb\t"< +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Individ.h" +#include "history.h" + + +struct dataSet{ + + QVector withFeedbackVect; + QVector withoutFeedbackVect; + QVector xRange; + + QVector meanE; + QVector meanF; + QVector meanC2; + QVector individ; + QVector individFeedback; + //int maxIters; + double maxWithFeedVal; + double maxWithoutFeedVal; +}; + +class Solver : public QObject +{ + Q_OBJECT + + public: + Solver(QObject *parent = 0); + ~Solver(); + void solveModel(float c1, float c2, float c3, float c4, float c5, float sigC1, float sigC2, float sigC3, float sigC4, float sigC5, + float e, float sigE, float sigX0, float delX0, float sigX, float Xopt, int popSize, int maxSteps, int N, int flag, int iter, int modelCount); + double solveF(int x, int y, int a, double b); + double solveG(int x, int y, int c, double d); + void initialization(std::vector& population, int N_feedback); + void mutationSimple(std::vector& population); + void mutationComplex(std::vector& population); + void selection(std::vector& population, float renewRate); + void printStatistics(const std::vector& population, int i, int iters, int currentStep); + + + private: + QVector predatorSolveVal; + QVector preySolveVal; + + QVector withFeedbackVect; + QVector withoutFeedbackVect; + QVector firstXVect; + + + QVector meanE; + QVector meanF; + QVector meanC2; + QVector individ; + QVector individFeedback; + + + QVector withFeedbackVectAvg; + QVector withoutFeedbackVectAvg; + QVector meanEAvg; + QVector meanFAvg; + QVector meanC2Avg; + QVector individAvg; + QVector individFeedbackAvg; + + std::vector population; + QVector > popVect; + double maxWithFeedVal; + double maxWithoutFeedVal; + int withFeedback; + int withoutFeedback; + int N_forFeedback; + float meanC2Feedback; + float meanEFeedBack; + float meanENonFeedBack; + int newIters; + int addSteps; + int itersFlag; + int modCount; + dataSet vectors; + QVector singleModelHistory; + double lastXopt; + + + signals: + + void sendFeedVectors(QVector withFeed, QVector withoutFeed, QVector xValsVect ,double maxWithFeed, double maxWithoutFeed); + void sendMeanVectors(int iters, QVector meanEV, QVector meanFV, QVector meanC2V, QVector individV, QVector individFeedbackV); + void sendHistory(QVector history, int iters); + void sendItersForProgressBar(int iters); + + + public slots: + + +}; + +#endif // SOLVER_H diff --git a/DEC_GUI/breedingwindow.cpp b/DEC_GUI/breedingwindow.cpp new file mode 100644 index 0000000..27865b7 --- /dev/null +++ b/DEC_GUI/breedingwindow.cpp @@ -0,0 +1,63 @@ +#include "breedingwindow.h" +#include "ui_breedingwindow.h" +#include "DEC-0.0/processor/Settings.h" +#include "DEC-0.0/processor/Processor.h" +#include + +BreedingWindow::BreedingWindow(QWidget *parent) : + QWidget(parent), + ui(new Ui::BreedingWindow) +{ + ui->setupUi(this); + //setPopComboBoxes(); + plotFlag = 1; + connect(this, SIGNAL(drawGraph(QCustomPlot *, int)), &breedQPlot, SLOT(drawGraphics(QCustomPlot*, int))); +} + +BreedingWindow::~BreedingWindow() +{ + delete ui; +} + +void BreedingWindow::startDraw(int ind) +{ + if (plotFlag == 1) + { + emit drawGraph(ui->Plot_widget, ind); + } + if (plotFlag == 2) + { + emit drawGraph(ui->Plot_widget_2, ind); + } +} + +void BreedingWindow::setPopComboBoxes() +{ + for (int i = 0; i < Settings::geneName.size(); i++) + { + ui->pop_comboBox->addItem(QString::fromStdString(Settings::geneName[i]), QVariant(i)); + ui->pop_comboBox_2->addItem(QString::fromStdString(Settings::geneName[i]), QVariant(i)); + } + ui->time_spinBox->setRange(0, 100000); + ui->time_spinBox->setSingleStep(10); + ui->time_spinBox->setValue(10); +} + +void BreedingWindow::on_pop_comboBox_currentIndexChanged(int index) +{ + plotFlag = 1; + int ind = ui->pop_comboBox->itemData(ui->pop_comboBox->currentIndex()).toInt(); + startDraw(ind); +} + +void BreedingWindow::on_pop_comboBox_2_currentIndexChanged(int index) +{ + plotFlag = 2; + int ind = ui->pop_comboBox_2->itemData(ui->pop_comboBox_2->currentIndex()).toInt(); + startDraw(ind); +} + +void BreedingWindow::on_evol_pushButton_clicked() +{ + //Processor::evolution(ui->time_spinBox->value()); +} diff --git a/DEC_GUI/breedingwindow.h b/DEC_GUI/breedingwindow.h new file mode 100644 index 0000000..35b5e54 --- /dev/null +++ b/DEC_GUI/breedingwindow.h @@ -0,0 +1,39 @@ +#ifndef BREEDINGWINDOW_H +#define BREEDINGWINDOW_H + +#include +#include + +namespace Ui { +class BreedingWindow; +} + +class BreedingWindow : public QWidget +{ + Q_OBJECT + +public: + explicit BreedingWindow(QWidget *parent = 0); + ~BreedingWindow(); + void setPopComboBoxes(); + +public slots: + void startDraw(int ind); + +signals: + void drawGraph(QCustomPlot *cPlot, int ind); + +private slots: + void on_pop_comboBox_currentIndexChanged(int index); + + void on_pop_comboBox_2_currentIndexChanged(int index); + + void on_evol_pushButton_clicked(); + +private: + Ui::BreedingWindow *ui; + BreedQPlot breedQPlot; + int plotFlag; +}; + +#endif // BREEDINGWINDOW_H diff --git a/DEC_GUI/breedingwindow.ui b/DEC_GUI/breedingwindow.ui new file mode 100644 index 0000000..434040a --- /dev/null +++ b/DEC_GUI/breedingwindow.ui @@ -0,0 +1,86 @@ + + + BreedingWindow + + + + 0 + 0 + 733 + 402 + + + + Form + + + + + + 6 + + + QLayout::SetDefaultConstraint + + + 0 + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + Evolution + + + + + + + + + + QCustomPlot + QWidget +
qcustomplot.h
+ 1 +
+
+ + +
diff --git a/DEC_GUI/breedqplot.cpp b/DEC_GUI/breedqplot.cpp new file mode 100644 index 0000000..8bc9688 --- /dev/null +++ b/DEC_GUI/breedqplot.cpp @@ -0,0 +1,98 @@ +#include "breedqplot.h" +#include "DEC-0.0/processor/Settings.h" +#include + +static const int TOP_OFFSET = 100; +static const int LINE_THICKNESS = 2; + +BreedQPlot::BreedQPlot(QWidget *parent) : + QWidget(parent) +{ +} + +void BreedQPlot::drawGraphics(QCustomPlot *customPlot, int popInd) +{ + //std::cout << "draw " << std::endl; + customPlot->legend->clearItems(); + customPlot->clearGraphs(); + customPlot->clearPlottables(); + customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); + + QCPBars *malesGene = new QCPBars(customPlot->xAxis, customPlot->yAxis); + QCPBars *femalesGene = new QCPBars(customPlot->xAxis, customPlot->yAxis); + customPlot->addPlottable(malesGene); + customPlot->addPlottable(femalesGene); + + QPen pen; + pen.setWidthF(1.2); + femalesGene->setName("Females genes"); + pen.setColor(QColor(255, 131, 0)); + femalesGene->setPen(pen); + femalesGene->setBrush(QColor(255, 131, 0, 50)); + malesGene->setName("Males genes"); + pen.setColor(QColor(1, 92, 191)); + malesGene->setPen(pen); + malesGene->setBrush(QColor(1, 92, 191, 50)); + + // stack bars ontop of each other: + malesGene->moveAbove(femalesGene); + + + QVector ticks; + QVector labels; + QVector mVals; + QVector fVals; + for (int i = 0; i < Settings::malesGene.size(); i++) + { + ticks.push_back(i); + labels.push_back("Ind" + QString::number(i + 1)); + } + + customPlot->xAxis->setAutoTicks(false); + customPlot->xAxis->setAutoTickLabels(false); + customPlot->xAxis->setTickVector(ticks); + customPlot->xAxis->setTickVectorLabels(labels); + customPlot->xAxis->setTickLabelRotation(60); + customPlot->xAxis->setSubTickCount(0); + customPlot->xAxis->setTickLength(0, 4); + customPlot->xAxis->grid()->setVisible(true); + //customPlot->xAxis->setRange(0, Settings::malesGene[popInd].size()); + + // prepare y axis: + //customPlot->yAxis->setRange(0, 12.1); + customPlot->yAxis->setPadding(5); // a bit more space to the left border + customPlot->yAxis->setLabel("Male/Female genotype"); + customPlot->yAxis->grid()->setSubGridVisible(true); + QPen gridPen; + gridPen.setStyle(Qt::SolidLine); + gridPen.setColor(QColor(0, 0, 0, 25)); + customPlot->yAxis->grid()->setPen(gridPen); + gridPen.setStyle(Qt::DotLine); + customPlot->yAxis->grid()->setSubGridPen(gridPen); + + for (int i = 0; i < Settings::malesGene.size(); i++) + { + //std::cout << "draw " << i << std::endl; + fVals.push_back(Settings::femalesGene[i][popInd]); + mVals.push_back(Settings::malesGene[i][popInd]); + } + + femalesGene->setData(ticks, fVals); + malesGene->setData(ticks, mVals); + + + // setup legend: + customPlot->legend->setVisible(true); + customPlot->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop|Qt::AlignHCenter); + customPlot->legend->setBrush(QColor(255, 255, 255, 200)); + QPen legendPen; + legendPen.setColor(QColor(130, 130, 130, 200)); + customPlot->legend->setBorderPen(legendPen); + QFont legendFont = font(); + legendFont.setPointSize(10); + customPlot->legend->setFont(legendFont); + + + customPlot->rescaleAxes(); + customPlot->replot(); +} diff --git a/DEC_GUI/breedqplot.h b/DEC_GUI/breedqplot.h new file mode 100644 index 0000000..471154a --- /dev/null +++ b/DEC_GUI/breedqplot.h @@ -0,0 +1,24 @@ +#ifndef BREEDQPLOT_H +#define BREEDQPLOT_H + +#include +#include +#include +#include +#include +#include +#include +#include "Kolch_Shind/qcustomplot.h" +#include + +class BreedQPlot : public QWidget +{ + Q_OBJECT +public: + explicit BreedQPlot(QWidget *parent = 0); + + +public slots: + void drawGraphics(QCustomPlot *customPlot, int popInd); +}; +#endif // BREEDQPLOT_H diff --git a/DEC_GUI/createdialogs.cpp b/DEC_GUI/createdialogs.cpp new file mode 100644 index 0000000..17e7798 --- /dev/null +++ b/DEC_GUI/createdialogs.cpp @@ -0,0 +1,487 @@ +#include "createdialogs.h" +#include "limits.h" +#include +#include +#include +#include +#include +#include +#include "DEC-0.0/processor/Settings.h" +#include "DEC-0.0/DerevyankoReport2014.h" +#include "DEC-0.0/DerevyankoReport.h" +#include +#include + + +CreateDialogs::CreateDialogs(QWidget *parent, int flag, QString winLabel) : + QDialog(parent) +{ + locisNum = 0; + winFlag = 0; + if (flag == 1) + { + createChooseModelDialog(); + } + if (flag == 2) + { + winFlag = 2; + createDerReport2014SettingDialog(winLabel); + } + if (flag == 3) + { + winFlag = 3; + createDerReport2014SettingDialog(winLabel); + } + if (flag == 4) + { + winFlag = 4; + createDerReport2014SettingDialog(winLabel); + } + if (flag == 5) + { + winFlag = 5; + createDerReport2014SettingDialog(winLabel); + } + if (flag == 6) + { + createDerReportSettingDialog(); + } + if (flag == 7) + { + createBreedSettingsDialog(); + } + +} + +void CreateDialogs::createChooseModelDialog() +{ + QGridLayout *layout = new QGridLayout(this); + QGroupBox *modelGBox = new QGroupBox("Models"); + layout->addWidget(modelGBox, 0, 0); + + derevyankoReport2014_button = new QRadioButton("DerevyankoReport2014_01"); + derevyankoReportRFBR2013_01_button = new QRadioButton("DerevyankoReportRFBR2013_01"); + KolchShindyalov_button = new QRadioButton("KolchShindyalov"); + inOutBreeding01_button = new QRadioButton("InOutBreeding01"); + agressor_button = new QRadioButton("Agressor-Protector"); + + QVBoxLayout *groupLayout = new QVBoxLayout; + modelGBox->setLayout(groupLayout); + groupLayout->addWidget(derevyankoReport2014_button, 0, 0); + groupLayout->addWidget(derevyankoReportRFBR2013_01_button, 1, 0); + groupLayout->addWidget(KolchShindyalov_button, 2, 0); + groupLayout->addWidget(inOutBreeding01_button, 3, 0); + groupLayout->addWidget(agressor_button, 4, 0); + + QHBoxLayout *buttonLayout = new QHBoxLayout; + layout->addLayout(buttonLayout, 1, 0, 1, 1); + buttonLayout->addStretch(); + + QPushButton *cancelButton = new QPushButton(tr("Cancel")); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->addWidget(cancelButton); + QPushButton *okButton = new QPushButton(tr("OK")); + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addWidget(okButton); + + okButton->setDefault(true); + +} + +void CreateDialogs::createBreedSettingsDialog() +{ + QGridLayout *layout = new QGridLayout(this); + layout->addWidget(new QLabel(tr("Max Generations:")), 0, 0); + maxGen_Spin = new QSpinBox(); + maxGen_Spin->setRange(0, 1000000); + maxGen_Spin->setSingleStep(100); + maxGen_Spin->setValue(10); + layout->addWidget(maxGen_Spin, 0, 1); + layout->addWidget(new QLabel(tr("Init Pop Size:")), 1, 0); + initPopSize_Spin = new QSpinBox(); + initPopSize_Spin->setRange(0, 1000000); + initPopSize_Spin->setSingleStep(100); + initPopSize_Spin->setValue(10); + layout->addWidget(initPopSize_Spin, 1, 1); + layout->addWidget(new QLabel(tr("RatioBetweenPops:")), 2, 0); + ratioBetweenPops_doubleSpin = new QDoubleSpinBox(); + ratioBetweenPops_doubleSpin->setRange(0, 100); + ratioBetweenPops_doubleSpin->setSingleStep(1.0); + ratioBetweenPops_doubleSpin->setValue(1.0); + layout->addWidget(ratioBetweenPops_doubleSpin, 2, 1); + layout->addWidget(new QLabel(tr("MaxIndivids:")), 3, 0); + maxIndivid_Spin = new QSpinBox(); + maxIndivid_Spin->setRange(0, 10000000); + maxIndivid_Spin->setSingleStep(1000); + maxIndivid_Spin->setValue(10000); + layout->addWidget(maxIndivid_Spin, 3, 1); + layout->addWidget(new QLabel(tr("Range:")), 4, 0); + range_Spin = new QSpinBox(); + range_Spin->setRange(0, 10000000); + range_Spin->setSingleStep(100); + range_Spin->setValue(1000); + layout->addWidget(range_Spin, 4, 1); + layout->addWidget(new QLabel(tr("Precision:")), 5, 0); + precision_Spin = new QSpinBox(); + precision_Spin->setRange(0, 10000000); + precision_Spin->setSingleStep(10); + precision_Spin->setValue(10); + layout->addWidget(precision_Spin, 5, 1); + + QHBoxLayout *buttonLayout = new QHBoxLayout; + layout->addLayout(buttonLayout, 6, 1, 1, 1); + buttonLayout->addStretch(); + + QPushButton *cancelButton = new QPushButton(tr("Cancel")); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->addWidget(cancelButton); + QPushButton *okButton = new QPushButton(tr("OK")); + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addWidget(okButton); + + okButton->setDefault(true); + + + +} + +void CreateDialogs::createDerReportSettingDialog() +{ + QGridLayout *layout = new QGridLayout(this); + layout->addWidget(new QLabel(tr("Pop_name:")), 1, 0); + popNameEditLine = new QLineEdit(); + layout->addWidget(popNameEditLine, 1, 1); + layout->addWidget(new QLabel(tr("Pop_founder:")), 2, 0); + founderSpinBox = new QDoubleSpinBox(); + founderSpinBox->setRange(0, 100); + founderSpinBox->setSingleStep(0.1); + founderSpinBox->setValue(0.1); + layout->addWidget(founderSpinBox, 2, 1); + layout->addWidget(new QLabel(tr("Separate from:")), 3, 0); + popNames = new QComboBox(); + for (int i = 0; i < DerevyankoReport::populNames.size(); i++) + { + popNames->addItem(DerevyankoReport::populNames.at(i), QVariant(i)); + } + layout->addWidget(popNames, 3, 1); +// layout->addWidget(new QLabel(tr("Evolution_time:")), 4, 0); +// evol_time = new QSpinBox(); +// evol_time->setRange(0, 1000000); +// evol_time->setSingleStep(100); +// evol_time->setValue(1000); +// layout->addWidget(evol_time, 4, 1); + + QHBoxLayout *buttonLayout = new QHBoxLayout; + layout->addLayout(buttonLayout, 4, 1, 1, 1); + buttonLayout->addStretch(); + + QPushButton *cancelButton = new QPushButton(tr("Cancel")); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->addWidget(cancelButton); + QPushButton *okButton = new QPushButton(tr("OK")); + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addWidget(okButton); + + okButton->setDefault(true); + + +} + +void CreateDialogs::createDerReport2014SettingDialog(QString winLabel) +{ + QGridLayout *layout = new QGridLayout(this); + QLabel *winLb = new QLabel(); + winLb->setText(winLabel); + layout->addWidget(new QLabel(tr("Initial parameters for - ")), 0, 0); + layout->addWidget(winLb, 0, 1); + layout->addWidget(new QLabel(tr("Num Loci:")), 1, 0); + numLociSpin = new QSpinBox(); + numLociSpin->setRange(1, 100); + numLociSpin->setSingleStep(1); + numLociSpin->setValue(1); + layout->addWidget(numLociSpin, 1, 1); + layout->addWidget(new QLabel(tr("Male/Female pop size:")), 2, 0); + sexNumSpin = new QSpinBox(); + sexNumSpin->setRange(0, 1000000); + sexNumSpin->setSingleStep(1000); + sexNumSpin->setValue(5000); + layout->addWidget(sexNumSpin, 2, 1); + layout->addWidget(new QLabel(tr("Use default init sequence:")), 3, 0); + QPushButton *defaultButton = new QPushButton(tr("Default")); + connect(defaultButton, SIGNAL(clicked()), this, SLOT(preprocessScript())); + layout->addWidget(defaultButton, 3, 1); + layout->addWidget(new QLabel(tr("percentDiffLoci:")), 4, 0); + perDiffLociSpin = new QDoubleSpinBox(); + layout->addWidget(perDiffLociSpin, 4, 1); + perDiffLociSpin->setRange(0, 100); + perDiffLociSpin->setSingleStep(0.1); + perDiffLociSpin->setValue(0.1); + + layout->addWidget(new QLabel(tr("Locis:")), 5, 0); + locisLinesArea = new QScrollArea(); + gBoxLayout = new QVBoxLayout(); + layout->addWidget(locisLinesArea, 5, 1); + + geneSeqEditLine = new QLineEdit(); + gBoxLayout->addWidget(geneSeqEditLine, 0, 0); + geneSeqEditLine->setMinimumWidth(450); + + QWidget *containerWidget=new QWidget; + containerWidget->setLayout(gBoxLayout); + locisLinesArea->setWidgetResizable(true); + locisLinesArea->setWidget(containerWidget); + + connect(numLociSpin, SIGNAL(valueChanged(int)), this, SLOT(addLociLine())); + + QHBoxLayout *buttonLayout = new QHBoxLayout; + layout->addLayout(buttonLayout, 6, 1, 1, 1); + buttonLayout->addStretch(); + + QPushButton *cancelButton = new QPushButton(tr("Cancel")); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->addWidget(cancelButton); + QPushButton *okButton = new QPushButton(tr("OK")); + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addWidget(okButton); + + okButton->setDefault(true); + + +} + +void CreateDialogs::addLociLine() +{ + locisNum = numLociSpin->text().toInt(); + locisEditLines.clear(); + clearLayout(gBoxLayout); + for (int i = 0; i < locisNum; i++) + { + locisEditLines.push_back(new QLineEdit()); + gBoxLayout->addWidget(locisEditLines[i], 0, 0); + + } +} + +void CreateDialogs::preprocessScript() +{ + + if (winFlag == 2) + { + Settings::calcScript = DerevyankoReport2014::parseScript("script.txt"); + + int numLoci = Settings::numLoci; + Settings::initMtDNA.resize(numLoci); + Settings::initMtDNA_ancient.resize(numLoci); + for(unsigned int i = 0; i < Settings::initMtDNA.size(); i++){ + Settings::initMtDNA.at(i) = DerevyankoReport2014::getInitGene(0,i); + + if(i<= numLoci*Settings::percentDiffLoci){ + std::string seq = Settings::initMtDNA.at(i); + for(int j = 0; j < 5; j++){ + int pos = (int)(j/5.*Settings::locusLength); + if(seq.at(pos)=='T') + seq.replace(pos,1,"G"); + else + seq.replace(pos,1,"T"); + } + Settings::initMtDNA_ancient.at(i) = seq; + } + else{ + Settings::initMtDNA_ancient.at(i) = Settings::initMtDNA.at(i); + } + } + numLociSpin->setValue(Settings::numLoci); + sexNumSpin->setValue(Settings::PopulationHomoInitSize); + perDiffLociSpin->setValue(Settings::percentDiffLoci); + for (int i = 0; i < Settings::numLoci; i++) + { + locisEditLines[i]->setText(QString::fromStdString(Settings::initMtDNA.at(i))); + } + } + else if (winFlag == 3) + { + numLociSpin->setValue(Settings::numLoci); + sexNumSpin->setValue(Settings::PopulationAncientInitSize); + perDiffLociSpin->setValue(Settings::percentDiffLoci); + for (int i = 0; i < Settings::numLoci; i++) + { + locisEditLines[i]->setText(QString::fromStdString(Settings::initMtDNA_ancient.at(i))); + } + } + else if (winFlag == 4) + { + DerevyankoReport::initMtDNA = "TTCTTTCATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACC"; + DerevyankoReport::initMtDNA += "GCTATGTATTTCGTACATTACTGCCAGCCACCATGAATATTGTACGGTACCATAAATACT"; + DerevyankoReport::initMtDNA += "TGACCACCTGTAGTACATAAAAACCCAATCCACATCAAAACCCCCCCCTCATGCTTACAA"; + DerevyankoReport::initMtDNA += "GCAAGTACAGCAATCAACCTTCAACTATCACACATCAACTGCAACTCCAAAGCCACCCCT"; + DerevyankoReport::initMtDNA += "CACCCACTAGGATATCAACAAACCTACCCATCCTTAACAGTACATGGTACATAAAGCCAT"; + DerevyankoReport::initMtDNA += "TTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCCTCA"; + + // ( G) + DerevyankoReport::initMtDNA_G = DerevyankoReport::initMtDNA; + DerevyankoReport::initMtDNA_G.replace(60,1,"T"); + DerevyankoReport::initMtDNA_G.replace(120,1,"A"); + DerevyankoReport::initMtDNA_G.replace(180,1,"C"); + DerevyankoReport::initMtDNA_G.replace(240,1,"G"); + + // + // + DerevyankoReport::basePopSize = 5000; + DerevyankoReport::initBirthRate = 0.25f; + DerevyankoReport::deltaBirthRate = 0.0002f; + numLociSpin->setValue(6); + sexNumSpin->setValue(DerevyankoReport::basePopSize); + for (int i = 0; i < 6; i++) + { + locisEditLines[i]->setText(QString::fromStdString(DerevyankoReport::initMtDNA.substr(60 * i, 60))); + } + } + else if (winFlag == 5) + { + DerevyankoReport::basePopSize = 5000; + DerevyankoReport::initBirthRate = 0.25f; + DerevyankoReport::deltaBirthRate = 0.0002f; + numLociSpin->setValue(6); + sexNumSpin->setValue(DerevyankoReport::basePopSize); + for (int i = 0; i < 6; i++) + { + locisEditLines[i]->setText(QString::fromStdString(DerevyankoReport::initMtDNA_G.substr(60 * i, 60))); + } + } + +} + + + +void CreateDialogs::clearLayout(QLayout *layout) +{ + if (layout != NULL) + { + QLayoutItem* item; + while ((item = layout->takeAt(0)) != NULL) + { + delete item->widget(); + delete item; + } + } +} + +int CreateDialogs::getMaxGen() +{ + return maxGen_Spin->value(); +} + +int CreateDialogs::getInitPopSize() +{ + return initPopSize_Spin->value(); +} + +double CreateDialogs::getBetweenRatio() +{ + return ratioBetweenPops_doubleSpin->value(); +} + +int CreateDialogs::getMaxIndivids() +{ + return maxIndivid_Spin->value(); +} + +int CreateDialogs::getRange() +{ + return range_Spin->value(); +} + +int CreateDialogs::getPrecision() +{ + return precision_Spin->value(); +} + +QString CreateDialogs::getPopName() +{ + return popNameEditLine->text(); +} + +double CreateDialogs::getFounderVal() +{ + return founderSpinBox->value(); +} + +int CreateDialogs::getSepPopInd() +{ + return popNames->itemData(popNames->currentIndex()).toInt(); +} + +int CreateDialogs::getEvolTime() +{ + return evol_time->value(); +} + +bool CreateDialogs::checkPopName() +{ + return popNameEditLine->text().isEmpty(); +} + +bool CreateDialogs::checkLoci() //ToDo: add more conditions +{ + return (locisEditLines.size() == 0); +} + +int CreateDialogs::getNumLociVal() +{ + return numLociSpin->value(); +} + +int CreateDialogs::getSizeNum() +{ + return sexNumSpin->value(); +} + +double CreateDialogs::getPerDiffLoci() +{ + return perDiffLociSpin->value(); +} + +std::vector CreateDialogs::getInitHomoGen() +{ + std::vector genVect; + for (int i = 0; i < Settings::numLoci; i++) + { + genVect.push_back(locisEditLines[i]->text().toLocal8Bit().constData()); + } + return genVect; +} + +std::vector CreateDialogs::getInitAncientGen() +{ + std::vector genVect; + for (int i = 0; i < Settings::numLoci; i++) + { + genVect.push_back(locisEditLines[i]->text().toLocal8Bit().constData()); + } + return genVect; +} + +bool CreateDialogs::checkDerRep2014_button() +{ + return derevyankoReport2014_button->isChecked(); +} + +bool CreateDialogs::checkDerRepRFBR_button() +{ + return derevyankoReportRFBR2013_01_button->isChecked(); +} + +bool CreateDialogs::checkKolch_button() +{ + return KolchShindyalov_button->isChecked(); +} + +bool CreateDialogs::checkInOutBreed_bitton() +{ + return inOutBreeding01_button->isChecked(); +} + +bool CreateDialogs::checkAgressor_button() +{ + return agressor_button->isChecked(); +} diff --git a/DEC_GUI/createdialogs.h b/DEC_GUI/createdialogs.h new file mode 100644 index 0000000..24c95e2 --- /dev/null +++ b/DEC_GUI/createdialogs.h @@ -0,0 +1,86 @@ +#ifndef CREATEDIALOGS_H +#define CREATEDIALOGS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class CreateDialogs : public QDialog +{ + Q_OBJECT +public: + CreateDialogs(QWidget *parent, int flag, QString winLabel); + void createChooseModelDialog(); + void clearLayout(QLayout *layout); + bool checkDerRep2014_button(); + bool checkDerRepRFBR_button(); + bool checkKolch_button(); + bool checkInOutBreed_bitton(); + bool checkAgressor_button(); + void createDerReport2014SettingDialog(QString winLabel); + void createDerReportSettingDialog(); + void createBreedSettingsDialog(); + int getNumLociVal(); + int getSizeNum(); + QString getPopName(); + double getFounderVal(); + int getSepPopInd(); + int getEvolTime(); + double getPerDiffLoci(); + bool checkLoci(); + bool checkPopName(); + std::vector getInitHomoGen(); + std::vector getInitAncientGen(); + int getInitPopSize(); + int getMaxGen(); + double getBetweenRatio(); + int getMaxIndivids(); + int getRange(); + int getPrecision(); + +signals: + +public slots: + void addLociLine(); + void preprocessScript(); + + +private: + QRadioButton *derevyankoReport2014_button; + QRadioButton *inOutBreeding01_button; + QRadioButton *derevyankoReportRFBR2013_01_button; + QRadioButton *KolchShindyalov_button; + QRadioButton *agressor_button; + QLineEdit *geneSeqEditLine; + QLineEdit *popNameEditLine; + QDoubleSpinBox *founderSpinBox; + QComboBox *popNames; + QSpinBox *evol_time; + int locisNum; + QVector locisEditLines; + QVBoxLayout *gBoxLayout; + QGroupBox *seqEditLineBox; + QSpinBox *numLociSpin; + QSpinBox *sexNumSpin; + QDoubleSpinBox *perDiffLociSpin; + QScrollArea *locisLinesArea; + int winFlag; + QSpinBox *maxGen_Spin; + QSpinBox *initPopSize_Spin; + QDoubleSpinBox *ratioBetweenPops_doubleSpin; + QSpinBox *maxIndivid_Spin; + QSpinBox *range_Spin; + QSpinBox *precision_Spin; + //QDoubleSpinBox *percentDiffLociSpin; + +}; + +#endif // CREATEDIALOGS_H diff --git a/DEC_GUI/derrep2013qplot.cpp b/DEC_GUI/derrep2013qplot.cpp new file mode 100644 index 0000000..b2c5876 --- /dev/null +++ b/DEC_GUI/derrep2013qplot.cpp @@ -0,0 +1,95 @@ +#include "derrep2013qplot.h" +#include "DEC-0.0/DerevyankoReport.h" + +static const int TOP_OFFSET = 100; +static const int LINE_THICKNESS = 2; + +DerRep2013QPlot::DerRep2013QPlot(QWidget *parent) : + QWidget(parent) +{ +} + +void DerRep2013QPlot::setGraphics(QCustomPlot *customPlot, int popNum, QString name, QColor &color) +{ + customPlot->addGraph(); + customPlot->graph(popNum)->setData(DerevyankoReport::generations[popNum], DerevyankoReport::popSizes[popNum]); + customPlot->graph(popNum)->setPen(QPen(color, LINE_THICKNESS)); + customPlot->graph(popNum)->setName(name); +} + +int DerRep2013QPlot::randInt(int low, int high) +{ + // Random number between low and high + return qrand() % ((high + 1) - low) + low; +} + +void DerRep2013QPlot::drawGraphics(QCustomPlot *customPlot) +{ + + QColor colours[10] = {QColor("cyan"), QColor("magenta"), QColor("red"), + QColor("darkRed"), QColor("darkCyan"), QColor("darkMagenta"), + QColor("green"), QColor("darkGreen"), QColor("yellow"), + QColor("blue")}; + QColor color; + customPlot->legend->clearItems(); + customPlot->clearGraphs(); + customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); + int start = 0; + for (int i = 0; i < DerevyankoReport::pops.size(); i++) + { +// QTime time = QTime::currentTime(); +// qsrand((uint)time.msec()); +// int r = randInt(0, 255); +// int g = randInt(0, 255); +// int b = randInt(0, 255); + color = colours[start]; + start++; + if(start == sizeof(colours)) + { + start = 0; + } + + setGraphics(customPlot, i, DerevyankoReport::populNames[i], color); + } + +// setGraphics(customPlot, 0, "pop_f", Qt::blue); +// setGraphics(customPlot, 1, "pop_G", Qt::red); +// setGraphics(customPlot, 2, "pop_e", Qt::yellow); +// setGraphics(customPlot, 3, "pop_F", Qt::magenta); +// setGraphics(customPlot, 4, "pop_d", Qt::black); +// setGraphics(customPlot, 5, "pop_c", Qt::green); +// setGraphics(customPlot, 6, "pop_E", Qt::darkBlue); +// setGraphics(customPlot, 7, "pop_b", Qt::darkRed); +// setGraphics(customPlot, 8, "pop_D", Qt::cyan); +// setGraphics(customPlot, 9, "pop_a", Qt::darkCyan); +// setGraphics(customPlot, 10, "pop_C", Qt::darkMagenta); +// setGraphics(customPlot, 11, "pop_A", Qt::darkYellow); +// setGraphics(customPlot, 12, "pop_B", Qt::gray); + + customPlot->legend->setVisible(true); + QFont legendFont = font(); + legendFont.setPointSize(8); + customPlot->legend->setFont(legendFont); + customPlot->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop | Qt::AlignRight); + + int maxX = 0; + int maxY = 0; + for (int i = 0; i < DerevyankoReport::pops.size(); i++) + { + if (DerevyankoReport::globalGenerations > maxX) + { + maxX = DerevyankoReport::globalGenerations; + } + + if (DerevyankoReport::maxYval[i] > maxY) + { + maxY = DerevyankoReport::maxYval[i]; + } + } + + customPlot->xAxis->setRange(0, maxX + TOP_OFFSET); + customPlot->yAxis->setRange(0, maxY + TOP_OFFSET); + customPlot->xAxis->setLabel("Generations"); + customPlot->yAxis->setLabel("popSize"); + customPlot->replot(); +} diff --git a/DEC_GUI/derrep2013qplot.h b/DEC_GUI/derrep2013qplot.h new file mode 100644 index 0000000..53eb6ae --- /dev/null +++ b/DEC_GUI/derrep2013qplot.h @@ -0,0 +1,26 @@ +#ifndef DERREP2013QPLOT_H +#define DERREP2013QPLOT_H + +#include +#include +#include +#include +#include +#include +#include +#include "Kolch_Shind/qcustomplot.h" +#include + +class DerRep2013QPlot : public QWidget +{ + Q_OBJECT +public: + explicit DerRep2013QPlot(QWidget *parent = 0); + void setGraphics(QCustomPlot *customPlot, int popNum, QString name, QColor &color); + int randInt(int low, int high); + +public slots: + void drawGraphics(QCustomPlot *customPlot); +}; + +#endif // DERREP2013QPLOT_H diff --git a/DEC_GUI/derrep2014qplot.cpp b/DEC_GUI/derrep2014qplot.cpp new file mode 100644 index 0000000..5a8c1a1 --- /dev/null +++ b/DEC_GUI/derrep2014qplot.cpp @@ -0,0 +1,69 @@ +#include "derrep2014qplot.h" +#include "DEC-0.0/processor/Settings.h" + +static const int TOP_OFFSET = 100; +static const int LINE_THICKNESS = 2; + + +DerRep2014QPlot::DerRep2014QPlot(QWidget *parent) : + QWidget(parent) +{ +} + +void DerRep2014QPlot::drawGraphics(QCustomPlot *customPlot) +{ + customPlot->legend->clearItems(); + customPlot->clearGraphs(); + customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); + customPlot->addGraph(); + customPlot->addGraph(); + customPlot->graph(0)->setData(Settings::generations, Settings::ancientCommonSize); + customPlot->graph(0)->setPen(QPen(Qt::blue, LINE_THICKNESS)); + customPlot->graph(0)->setName("AncientCommonPopSize"); + customPlot->graph(1)->setData(Settings::generations, Settings::homoCommonSize); + customPlot->graph(1)->setPen(QPen(Qt::red, LINE_THICKNESS)); + customPlot->graph(1)->setName("HomoCommonPopSize"); + customPlot->legend->setVisible(true); + QFont legendFont = font(); + legendFont.setPointSize(8); + customPlot->legend->setFont(legendFont); + customPlot->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop | Qt::AlignRight); + + + customPlot->xAxis->setRange(0, Settings::globalGenerations + TOP_OFFSET); + customPlot->yAxis->setRange(0, Settings::maxYval + TOP_OFFSET); + customPlot->xAxis->setLabel("Generations"); + customPlot->yAxis->setLabel("popSize"); + customPlot->replot(); +} + +void DerRep2014QPlot::drawSepGenderGraphics(QCustomPlot *customPlot) +{ + customPlot->legend->clearItems(); + customPlot->clearGraphs(); + customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); + customPlot->addGraph(); + customPlot->addGraph(); + customPlot->addGraph(); + customPlot->addGraph(); + customPlot->graph(0)->setData(Settings::generations, Settings::ancientMaleSize); + customPlot->graph(0)->setPen(QPen(Qt::blue, LINE_THICKNESS)); + + customPlot->graph(0)->setName("AncientMalePopSize"); + customPlot->graph(1)->setData(Settings::generations, Settings::ancientFemaleSize); + customPlot->graph(1)->setPen(QPen(Qt::magenta, LINE_THICKNESS)); + customPlot->graph(1)->setName("AncientFemalePopSize"); + customPlot->graph(2)->setData(Settings::generations, Settings::homoMaleSize); + customPlot->graph(2)->setPen(QPen(Qt::red, LINE_THICKNESS)); + customPlot->graph(2)->setName("HomoMalePopSize"); + customPlot->graph(3)->setData(Settings::generations, Settings::homoFemaleSize); + customPlot->graph(3)->setPen(QPen(Qt::yellow, LINE_THICKNESS)); + customPlot->graph(3)->setName("HomoFemalePopSize"); + + //customPlot->xAxis->setRange(0, Settings::globalGenerations + TOP_OFFSET); + //customPlot->yAxis->setRange(0, Settings::maxYval + TOP_OFFSET); + customPlot->rescaleAxes(); + customPlot->xAxis->setLabel("Generations"); + customPlot->yAxis->setLabel("popSize"); + customPlot->replot(); +} diff --git a/DEC_GUI/derrep2014qplot.h b/DEC_GUI/derrep2014qplot.h new file mode 100644 index 0000000..9826872 --- /dev/null +++ b/DEC_GUI/derrep2014qplot.h @@ -0,0 +1,31 @@ +#ifndef DERREP2014QPLOT_H +#define DERREP2014QPLOT_H + +#include +#include +#include +#include +#include +#include +#include +#include "Kolch_Shind/qcustomplot.h" + +class DerRep2014QPlot : public QWidget +{ + Q_OBJECT +public: + explicit DerRep2014QPlot(QWidget *parent = 0); + +signals: + + +public slots: + void drawGraphics(QCustomPlot *customPlot); + void drawSepGenderGraphics(QCustomPlot *customPlot); + +private: + + +}; + +#endif // DERREP2014QPLOT_H diff --git a/DEC_GUI/derrep2014window.cpp b/DEC_GUI/derrep2014window.cpp new file mode 100644 index 0000000..4614f38 --- /dev/null +++ b/DEC_GUI/derrep2014window.cpp @@ -0,0 +1,216 @@ +#include "derrep2014window.h" +#include "ui_derrep2014window.h" +#include "DEC-0.0/processor/Settings.h" +#include "DEC-0.0/DerevyankoReport2014.h" +#include +#include +#include +#include + +DerRep2014Window::DerRep2014Window(QWidget *parent) : + QWidget(parent), + ui(new Ui::DerRep2014Window) +{ + ui->setupUi(this); + graphFlag = true; + //setParametersSettings(); + //ui->calcProgress_progressBar->setValue(0); + //ui->calcProgress_progressBar->setMinimum(0); + connect(this, SIGNAL(drawDefault(QCustomPlot *)), &derRep2014Qplot, SLOT(drawGraphics(QCustomPlot*))); + connect(this, SIGNAL(drawDefaultSeparate(QCustomPlot*)), &derRep2014Qplot, SLOT(drawSepGenderGraphics(QCustomPlot*))); + emit drawDefault(ui->Plot_widget); + + +} + +DerRep2014Window::~DerRep2014Window() +{ + delete ui; +} + +void DerRep2014Window::setParametersSettings() +{ + ui->popHInSize_spinBox->setRange(0, 1000000); + ui->popHInSize_spinBox->setSingleStep(100); + ui->popHInSize_spinBox->setValue(Settings::PopulationHomoInitSize); + ui->popAnInitSize_spinBox->setRange(0, 1000000); + ui->popAnInitSize_spinBox->setSingleStep(100); + ui->popAnInitSize_spinBox->setValue(Settings::PopulationAncientInitSize); + ui->birthRate_doubleSpinBox->setRange(0, 100); + ui->birthRate_doubleSpinBox->setSingleStep(0.01); + ui->birthRate_doubleSpinBox->setValue(Settings::BirthRate); + ui->deathRate_doubleSpinBox->setRange(0, 10000); + ui->deathRate_doubleSpinBox->setSingleStep(0.01); + ui->deathRate_doubleSpinBox->setValue(Settings::NaturalDeathRate); + ui->gensPerMigr_spinBox->setRange(0, 10000); + ui->gensPerMigr_spinBox->setSingleStep(10); + ui->gensPerMigr_spinBox->setValue(Settings::generationsPerMigration); + ui->migrA_to_H_doubleSpinBox->setRange(0, 10000); + ui->migrA_to_H_doubleSpinBox->setSingleStep(0.1); + ui->migrA_to_H_doubleSpinBox->setValue(Settings::migrationPartAncientToHomo); + ui->migrH_to_A_doubleSpinBox->setRange(0, 10000); + ui->migrH_to_A_doubleSpinBox->setSingleStep(0.1); + ui->migrH_to_A_doubleSpinBox->setValue(Settings::migrationPartHomoToAncient); + ui->evolTime_spinBox->setRange(0, 1000000); + ui->evolTime_spinBox->setSingleStep(100); + ui->evolTime_spinBox->setValue(100); + ui->evol_migr_spinBox->setRange(0, 1000000); + ui->evol_migr_spinBox->setSingleStep(100); + ui->evol_migr_spinBox->setValue(100); + ui->pop_comboBox->addItem("Pop_Homo", QVariant(0)); + ui->pop_comboBox->addItem("Pop_Ancient", QVariant(1)); + //ui->Gene_textEdit->addScrollBarWidget(); + +} + +void DerRep2014Window::startDefault() +{ + emit drawDefault(ui->Plot_widget); +} + +void DerRep2014Window::on_showGender_pushButton_clicked() +{ + if (graphFlag) + { + emit drawDefaultSeparate(ui->Plot_widget); + graphFlag = false; + } + else + { + emit drawDefault(ui->Plot_widget); + graphFlag = true; + } +} + +void DerRep2014Window::on_evolution_pushButton_clicked() +{ + int iter = ui->evolTime_spinBox->value(); + //ui->calcProgress_progressBar->setValue(0); + //ui->calcProgress_progressBar->setMaximum(iter); + Settings::BirthRate = ui->birthRate_doubleSpinBox->value(); + Settings::NaturalDeathRate = ui->deathRate_doubleSpinBox->value(); + DerevyankoReport2014::evolution(iter); + + + if (!graphFlag) + { + emit drawDefaultSeparate(ui->Plot_widget); + } + else + { + emit drawDefault(ui->Plot_widget); + } +} + +void DerRep2014Window::on_migration_pushButton_clicked() +{ + Settings::migrationPartAncientToHomo = ui->migrA_to_H_doubleSpinBox->value(); + Settings::migrationPartHomoToAncient = ui->migrH_to_A_doubleSpinBox->value(); + DerevyankoReport2014::migration(); + if (!graphFlag) + { + emit drawDefaultSeparate(ui->Plot_widget); + } + else + { + emit drawDefault(ui->Plot_widget); + } +} + +void DerRep2014Window::on_evol_migr_pushButton_clicked() +{ + int iter = ui->evol_migr_spinBox->value(); + //ui->calcProgress_progressBar->setValue(0); + //ui->calcProgress_progressBar->setMaximum(iter); + Settings::generationsPerMigration = ui->gensPerMigr_spinBox->value(); + Settings::BirthRate = ui->birthRate_doubleSpinBox->value(); + Settings::NaturalDeathRate = ui->deathRate_doubleSpinBox->value(); + Settings::migrationPartAncientToHomo = ui->migrA_to_H_doubleSpinBox->value(); + Settings::migrationPartHomoToAncient = ui->migrH_to_A_doubleSpinBox->value(); + DerevyankoReport2014::evolution_migr(iter); + if (!graphFlag) + { + emit drawDefaultSeparate(ui->Plot_widget); + } + else + { + emit drawDefault(ui->Plot_widget); + } +} + +void DerRep2014Window::changeProgrBarVal(int iter) +{ + //ui->calcProgress_progressBar->setValue(iter); +} + +void DerRep2014Window::on_pop_comboBox_currentIndexChanged(int index) //maybe need to call it every elov action? +{ + int ind = ui->pop_comboBox->itemData(ui->pop_comboBox->currentIndex()).toInt(); + if (ind == 0) + { + ui->Gene_textEdit->clear(); + ui->Gene_textEdit->setTextBackgroundColor(Qt::cyan); + ui->Gene_textEdit->setText("Males"); + int i = 0; + for (std::list::iterator it = DerevyankoReport2014::pop_Sapiens->males.begin(); it != DerevyankoReport2014::pop_Sapiens->males.end(); it++) + { + i++; + if (i < 10) + { + ui->Gene_textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); + } + } + ui->Gene_textEdit->setTextBackgroundColor(Qt::magenta); + ui->Gene_textEdit->append("Females"); + int j = 0; + for (std::list::iterator it = DerevyankoReport2014::pop_Sapiens->females.begin(); it != DerevyankoReport2014::pop_Sapiens->females.end(); it++) + { + j++; + if (j < 10) + { + ui->Gene_textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); + } + } + + } + if (ind == 1) + { + ui->Gene_textEdit->clear(); + ui->Gene_textEdit->setTextBackgroundColor(Qt::cyan); + ui->Gene_textEdit->setText("Males"); + int i = 0; + for (std::list::iterator it = DerevyankoReport2014::pop_Ancient->males.begin(); it != DerevyankoReport2014::pop_Ancient->males.end(); it++) + { + i++; + //std::string str = (*it)->getGenotype().toSimpleFasta(); + //QString lol = QString::fromStdString(str.substr(i * 200)); + if (i < 10) + { + ui->Gene_textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); + } + + //std::cout << lol << std::endl; + } + ui->Gene_textEdit->setTextBackgroundColor(Qt::magenta); + ui->Gene_textEdit->append("Females"); + int j = 0; + for (std::list::iterator it = DerevyankoReport2014::pop_Ancient->females.begin(); it != DerevyankoReport2014::pop_Ancient->females.end(); it++) + { + j++; + if (j < 10) + { + ui->Gene_textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); + } + } + } +} + +void DerRep2014Window::on_saveStat_pushButton_clicked() +{ + std::ofstream file("GenStatistics.pop_Sapiens.fasta"); + DerevyankoReport2014::pop_Sapiens->putGeneticStatisticsToStream(file); + file.close(); + std::ofstream file1("GenStatistics.pop_Ancient.fasta"); + DerevyankoReport2014::pop_Ancient->putGeneticStatisticsToStream(file1); + file1.close(); +} diff --git a/DEC_GUI/derrep2014window.h b/DEC_GUI/derrep2014window.h new file mode 100644 index 0000000..ad9427b --- /dev/null +++ b/DEC_GUI/derrep2014window.h @@ -0,0 +1,50 @@ +#ifndef DERREP2014WINDOW_H +#define DERREP2014WINDOW_H + +#include +#include "derrep2014qplot.h" +#include "Kolch_Shind/qcustomplot.h" +#include "DEC-0.0/DerevyankoReport2014.h" + +namespace Ui { +class DerRep2014Window; +} + +class DerRep2014Window : public QWidget +{ + Q_OBJECT + +public: + explicit DerRep2014Window(QWidget *parent = 0); + ~DerRep2014Window(); + void setParametersSettings(); + +public slots: + void startDefault(); + void changeProgrBarVal(int iter); + +signals: + void drawDefault(QCustomPlot *cPlot); + void drawDefaultSeparate(QCustomPlot *cPlot); + +private slots: + void on_showGender_pushButton_clicked(); + + void on_evolution_pushButton_clicked(); + + void on_migration_pushButton_clicked(); + + void on_evol_migr_pushButton_clicked(); + + void on_pop_comboBox_currentIndexChanged(int index); + + void on_saveStat_pushButton_clicked(); + +private: + Ui::DerRep2014Window *ui; + DerRep2014QPlot derRep2014Qplot; + bool graphFlag; + +}; + +#endif // DERREP2014WINDOW_H diff --git a/DEC_GUI/derrep2014window.ui b/DEC_GUI/derrep2014window.ui new file mode 100644 index 0000000..d6861ce --- /dev/null +++ b/DEC_GUI/derrep2014window.ui @@ -0,0 +1,270 @@ + + + DerRep2014Window + + + + 0 + 0 + 777 + 460 + + + + Form + + + + + + + 0 + 0 + + + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + + + + 0 + 0 + + + + Parameters: + + + + + + + + PopASize: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + PopHSize: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + BirthRate: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + DeathRate: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + gensPerMigr: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + MigrH_to_A: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + MigrA_to_H: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + EvolTime: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + MigrTime: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Evol_MigrTime: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + 0 + 0 + + + + Controls: + + + + + + Sep.Genders + + + + + + + Evolution + + + + + + + Migration + + + + + + + Evolution_Migration + + + + + + + Save Stat to File + + + + + + + + + + + + + QCustomPlot + QWidget +
qcustomplot.h
+ 1 +
+
+ + +
diff --git a/DEC_GUI/derreprfbr2013window.cpp b/DEC_GUI/derreprfbr2013window.cpp new file mode 100644 index 0000000..3ecc455 --- /dev/null +++ b/DEC_GUI/derreprfbr2013window.cpp @@ -0,0 +1,146 @@ +#include "derreprfbr2013window.h" +#include "ui_derreprfbr2013window.h" +#include "createdialogs.h" +#include "DEC-0.0/DerevyankoReport.h" +#include + +DerRepRFBR2013window::DerRepRFBR2013window(QWidget *parent) : + QWidget(parent), + ui(new Ui::DerRepRFBR2013window) +{ + ui->setupUi(this); + setParametersSettings(); + editText_flag = 0; + connect(this, SIGNAL(drawGraph(QCustomPlot *)), &derRep2013Qplot, SLOT(drawGraphics(QCustomPlot*))); +} + +DerRepRFBR2013window::~DerRepRFBR2013window() +{ + delete ui; +} + +void DerRepRFBR2013window::startDraw() +{ + emit drawGraph(ui->Plot_widget); +} + +void DerRepRFBR2013window::setParametersSettings() +{ + ui->birthRate_doubleSpinBox->setRange(0, 100); + ui->birthRate_doubleSpinBox->setSingleStep(0.1); + ui->birthRate_doubleSpinBox->setValue(0.25f); + ui->deltaBirth_doubleSpinBox->setRange(0, 100); + ui->deltaBirth_doubleSpinBox->setSingleStep(0.01); + ui->deltaBirth_doubleSpinBox->setValue(0.0002f); + ui->migr_f_G_spinBox->setRange(0, 10000); + ui->migr_f_G_spinBox->setSingleStep(50); + ui->migr_f_G_spinBox->setValue(100); + ui->migr_A_B_spinBox->setRange(0, 10000); + ui->migr_A_B_spinBox->setSingleStep(50); + ui->migr_A_B_spinBox->setValue(100); + ui->migr_A_C_spinBox->setRange(0, 10000); + ui->migr_A_C_spinBox->setSingleStep(50); + ui->migr_A_C_spinBox->setValue(150); + ui->migr_A_D_spinBox->setRange(0, 10000); + ui->migr_A_D_spinBox->setSingleStep(50); + ui->migr_A_D_spinBox->setValue(200); + ui->migr_A_E_spinBox->setRange(0, 10000); + ui->migr_A_E_spinBox->setSingleStep(50); + ui->migr_A_E_spinBox->setValue(250); + ui->migr_A_F_spinBox->setRange(0, 10000); + ui->migr_A_F_spinBox->setSingleStep(50); + ui->migr_A_F_spinBox->setValue(300); + ui->part_f_G_doubleSpinBox->setRange(0, 100); + ui->part_f_G_doubleSpinBox->setSingleStep(0.01); + ui->part_f_G_doubleSpinBox->setValue(0.01f); + ui->part_G_f_doubleSpinBox->setRange(0, 100); + ui->part_G_f_doubleSpinBox->setSingleStep(0.01); + ui->part_G_f_doubleSpinBox->setValue(0.01f); + ui->part_A_B_doubleSpinBox->setRange(0, 100); + ui->part_A_B_doubleSpinBox->setSingleStep(0.01); + ui->part_A_B_doubleSpinBox->setValue(0.01f); + ui->part_B_A_doubleSpinBox->setRange(0, 100); + ui->part_B_A_doubleSpinBox->setSingleStep(0.01); + ui->part_B_A_doubleSpinBox->setValue(0.01f); + ui->part_A_C_doubleSpinBox->setRange(0, 100); + ui->part_A_C_doubleSpinBox->setSingleStep(0.01); + ui->part_A_C_doubleSpinBox->setValue(0.01f); + ui->part_A_D_doubleSpinBox->setRange(0, 100); + ui->part_A_D_doubleSpinBox->setSingleStep(0.01); + ui->part_A_D_doubleSpinBox->setValue(0.01f); + ui->part_A_E_doubleSpinBox->setRange(0, 100); + ui->part_A_E_doubleSpinBox->setSingleStep(0.01); + ui->part_A_E_doubleSpinBox->setValue(0.01f); + ui->part_A_F_doubleSpinBox->setRange(0, 100); + ui->part_A_F_doubleSpinBox->setSingleStep(0.01); + ui->part_A_F_doubleSpinBox->setValue(0.01f); + ui->pop_comboBox->addItem("Pop_f", QVariant(0)); + ui->pop_comboBox->addItem("Pop_G", QVariant(1)); + ui->evolTime_spinBox->setRange(0, 100000); + ui->evolTime_spinBox->setSingleStep(100); + ui->evolTime_spinBox->setValue(10); + + +} + +void DerRepRFBR2013window::on_pop_comboBox_currentIndexChanged(int index) +{ + if (editText_flag == 0) + { + int ind = ui->pop_comboBox->itemData(ui->pop_comboBox->currentIndex()).toInt(); + + ui->textEdit->clear(); + ui->textEdit->setTextBackgroundColor(Qt::cyan); + ui->textEdit->setText("Males"); + int i = 0; + std::cout << ind << std::endl; + for (std::list::iterator it = DerevyankoReport::pops[ind]->males.begin(); it != DerevyankoReport::pops[ind]->males.end(); it++) + { + + i++; + if (i < 10) + { + ui->textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); + } + } + ui->textEdit->setTextBackgroundColor(Qt::magenta); + ui->textEdit->append("Females"); + int j = 0; + for (std::list::iterator it = DerevyankoReport::pops[ind]->females.begin(); it != DerevyankoReport::pops[ind]->females.end(); it++) + { + j++; + if (j < 10) + { + ui->textEdit->append(QString::fromStdString((*it)->getGenotype().toSimpleFasta())); + } + } + } + +} + +void DerRepRFBR2013window::on_split_pushButton_clicked() +{ + CreateDialogs dialog(this, 6, "report2013"); + int ret = dialog.exec(); + if (ret == QDialog::Rejected) + { + return; + } + if (dialog.checkPopName()) + { + QMessageBox::information(this, "Information", "Enter pop name!", QMessageBox::Ok, 0); + return; + } + + DerevyankoReport::separatePop(dialog.getPopName(), dialog.getFounderVal(), dialog.getSepPopInd()); + //DerevyankoReport::evolution(dialog.getEvolTime()); + ui->pop_comboBox->addItem(DerevyankoReport::populNames[DerevyankoReport::populNames.size() - 1]); + ui->pop_comboBox->addItem(DerevyankoReport::populNames[DerevyankoReport::populNames.size() - 2]); + emit drawGraph(ui->Plot_widget); +} + +void DerRepRFBR2013window::on_evol_pushButton_clicked() +{ + DerevyankoReport::evolution(ui->evolTime_spinBox->value()); + emit drawGraph(ui->Plot_widget); +} diff --git a/DEC_GUI/derreprfbr2013window.h b/DEC_GUI/derreprfbr2013window.h new file mode 100644 index 0000000..bde66e4 --- /dev/null +++ b/DEC_GUI/derreprfbr2013window.h @@ -0,0 +1,39 @@ +#ifndef DERREPRFBR2013WINDOW_H +#define DERREPRFBR2013WINDOW_H + +#include +#include "derrep2013qplot.h" + +namespace Ui { +class DerRepRFBR2013window; +} + +class DerRepRFBR2013window : public QWidget +{ + Q_OBJECT + +public: + explicit DerRepRFBR2013window(QWidget *parent = 0); + ~DerRepRFBR2013window(); + void setParametersSettings(); + +public slots: + void startDraw(); + +signals: + void drawGraph(QCustomPlot *cPlot); + +private slots: + void on_pop_comboBox_currentIndexChanged(int index); + + void on_split_pushButton_clicked(); + + void on_evol_pushButton_clicked(); + +private: + Ui::DerRepRFBR2013window *ui; + DerRep2013QPlot derRep2013Qplot; + int editText_flag; +}; + +#endif // DERREPRFBR2013WINDOW_H diff --git a/DEC_GUI/derreprfbr2013window.ui b/DEC_GUI/derreprfbr2013window.ui new file mode 100644 index 0000000..412ebfc --- /dev/null +++ b/DEC_GUI/derreprfbr2013window.ui @@ -0,0 +1,348 @@ + + + DerRepRFBR2013window + + + + 0 + 0 + 1048 + 521 + + + + Form + + + + + + + 0 + 0 + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + Parameters: + + + + + + + + BirthRate: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + deltaBirthRate: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Migr_f_G: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Migr_A_B: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Migr_A_C: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Migr_A_D: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + Migr_A_E: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Migr_A_F: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + part_f_G: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + part_G_f: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + part_A_B: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + part_B_A: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + part_A_C: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + part_A_D: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + part_A_E: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + QFrame::NoFrame + + + part_A_F: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + 0 + 0 + + + + Controls: + + + + + + SplitPop + + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Evolution + + + + + + + + + Save Stat + + + + + + + + + + + + + QCustomPlot + QWidget +
qcustomplot.h
+ 1 +
+
+ + +
diff --git a/DEC_GUI/kolchshindwindow.cpp b/DEC_GUI/kolchshindwindow.cpp new file mode 100644 index 0000000..e74cb2d --- /dev/null +++ b/DEC_GUI/kolchshindwindow.cpp @@ -0,0 +1,318 @@ +#include "kolchshindwindow.h" +#include "ui_kolchshindwindow.h" +#include "Kolch_Shind/constants.h" +#include "Kolch_Shind/qcustomplot.h" +#include "Kolch_Shind/createrangedialog.h" +#include +#include +#include +#include + +KolchShindWindow::KolchShindWindow(QWidget *parent) : + QWidget(parent), + ui(new Ui::KolchShindWindow) +{ + ui->setupUi(this); + ui->lineEdit_c1->setText("10.0"); + ui->lineEdit_c2->setText("100.0"); + ui->lineEdit_c3->setText("1.0"); + ui->lineEdit_c4->setText("1.0"); + ui->lineEdit_c5->setText("21.0"); + ui->lineEdit_sigC2->setText("1.0"); + ui->lineEdit_delX0->setText("0.3"); + ui->lineEdit_sigX->setText("1.0"); + ui->lineEdit_sigE->setText("0.1"); + ui->lineEdit_Xopt->setText("110.0"); + ui->lineEdit_popSize->setText("1000"); + ui->lineEdit_maxSteps->setText("1000"); + ui->lineEdit_N->setText("500"); + ui->lineEdit_iters->setText("500"); + + + ui->spinBox_modelCount->setMaximum(1000); + ui->spinBox_modelCount->setMinimum(1); + + ui->progressBar_modelBar->setValue(0); + ui->progressBar_modelBar->setMinimum(0); + + newIterFlag = 0; + newModelFlag = 0; + firstStart = 0; + ui->comboBox_modelNum->setEnabled(false); + + QPalette *palette = new QPalette(); + palette->setColor(QPalette::Base, Qt::gray); + ui->lineEdit_sigC1->setPalette(*palette); + ui->lineEdit_sigC3->setPalette(*palette); + ui->lineEdit_sigC4->setPalette(*palette); + ui->lineEdit_sigC5->setPalette(*palette); + ui->lineEdit_E->setPalette(*palette); + ui->lineEdit_sigX0->setPalette(*palette); + + ui->widget_XT->legend->setVisible(true); + QFont legendFont = font(); + legendFont.setPointSize(8); + ui->widget_XT->legend->setFont(legendFont); + ui->widget_XT->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop | Qt::AlignRight); + ui->widget_XT->addGraph(); + ui->widget_XT->addGraph(); + ui->widget_XY->legend->setVisible(true); + ui->widget_XY->legend->setFont(legendFont); + ui->widget_XY->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop | Qt::AlignRight); + ui->widget_XY->addGraph(); + ui->widget_XY->addGraph(); + ui->widget_XY->addGraph(); + ui->widget_XY->addGraph(); + ui->widget_XY->addGraph(); + + + connect(this, SIGNAL(sendNewIter(int,int)), &paintWgt, SLOT(setIters(int,int))); + + connect(this, SIGNAL(startDrawParam(float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,int,int,int,int,QCustomPlot*, int, int, int)), + &paintWgt, SLOT(drawAll(float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,int,int,int,int,QCustomPlot*, int, int, int))); + connect(this, SIGNAL(drawModel(int,QCustomPlot*,int)), &paintWgt, SLOT(drawSelectedModel(int,QCustomPlot*,int))); + + connect(&paintWgt, SIGNAL(resentItersToProgressBar(int)), this, SLOT(changeProgressBarVal(int))); + + emit startDraw(ui->widget_XT); +} + +KolchShindWindow::~KolchShindWindow() +{ + delete ui; +} + +void KolchShindWindow::on_pushButton_clicked() +{ + newIterFlag = 0; + int iter = 0; + bool check; + int cnt = 0; + ui->progressBar_modelBar->setValue(0); + ui->comboBox_modelNum->clear(); + ui->comboBox_modelNum->setEnabled(true); + ui->progressBar_modelBar->setMaximum(ui->spinBox_modelCount->value()); + for(int i = 0; i < ui->spinBox_modelCount->value(); i++) + { + QString comboString = "Model "; + comboString += QString::number(i + 1); + ui->comboBox_modelNum->addItem(comboString); + } + if (ui->spinBox_modelCount->value() > 1) + { + ui->comboBox_modelNum->addItem("Average for all models"); + } + newModelFlag++; + ui->lineEdit_c1->text().toFloat(&check); + ui->lineEdit_c2->text().toFloat(&check); + ui->lineEdit_c3->text().toFloat(&check); + ui->lineEdit_c4->text().toFloat(&check); + ui->lineEdit_c5->text().toFloat(&check); + ui->lineEdit_sigC1->text().toFloat(&check); + ui->lineEdit_sigC2->text().toFloat(&check); + ui->lineEdit_sigC3->text().toFloat(&check); + ui->lineEdit_sigC4->text().toFloat(&check); + ui->lineEdit_sigC5->text().toFloat(&check); + ui->lineEdit_E->text().toFloat(&check); + ui->lineEdit_sigE->text().toFloat(&check); + ui->lineEdit_sigX0->text().toFloat(&check); + ui->lineEdit_delX0->text().toFloat(&check); + ui->lineEdit_sigX->text().toFloat(&check); + ui->lineEdit_Xopt->text().toFloat(&check); + ui->lineEdit_popSize->text().toInt(&check); + ui->lineEdit_maxSteps->text().toInt(&check); + ui->lineEdit_N->text().toInt(&check); + + if(!check) + { + QMessageBox::information(this, "Information", "Incorrect data!\nPlease check it again!", QMessageBox::Ok, 0); + return; + } + + emit sendNewIter(newIterFlag, iter); + emit startDrawParam(ui->lineEdit_c1->text().toFloat(), ui->lineEdit_c2->text().toFloat(), ui->lineEdit_c3->text().toFloat(), + ui->lineEdit_c4->text().toFloat(), ui->lineEdit_c5->text().toFloat(), ui->lineEdit_sigC1->text().toFloat(), + ui->lineEdit_sigC2->text().toFloat(), ui->lineEdit_sigC3->text().toFloat(), ui->lineEdit_sigC4->text().toFloat(), + ui->lineEdit_sigC5->text().toFloat(), ui->lineEdit_E->text().toFloat(), ui->lineEdit_sigE->text().toFloat(), + ui->lineEdit_sigX0->text().toFloat(), ui->lineEdit_delX0->text().toFloat(), + ui->lineEdit_sigX->text().toFloat(), ui->lineEdit_Xopt->text().toFloat(), ui->lineEdit_popSize->text().toInt(), + ui->lineEdit_maxSteps->text().toInt(), ui->lineEdit_N->text().toInt(), WIDGET_XT, ui->widget_XT, cnt, ui->spinBox_modelCount->value(), ui->comboBox_modelNum->count() - 1/*ui->comboBox_modelNum->currentIndex()*/); + cnt++; + emit startDrawParam(ui->lineEdit_c1->text().toFloat(), ui->lineEdit_c2->text().toFloat(), ui->lineEdit_c3->text().toFloat(), + ui->lineEdit_c4->text().toFloat(), ui->lineEdit_c5->text().toFloat(), ui->lineEdit_sigC1->text().toFloat(), + ui->lineEdit_sigC2->text().toFloat(), ui->lineEdit_sigC3->text().toFloat(), ui->lineEdit_sigC4->text().toFloat(), + ui->lineEdit_sigC5->text().toFloat(), ui->lineEdit_E->text().toFloat(), ui->lineEdit_sigE->text().toFloat(), + ui->lineEdit_sigX0->text().toFloat(), ui->lineEdit_delX0->text().toFloat(), + ui->lineEdit_sigX->text().toFloat(), ui->lineEdit_Xopt->text().toFloat(), ui->lineEdit_popSize->text().toInt(), + ui->lineEdit_maxSteps->text().toInt(), ui->lineEdit_N->text().toInt(), WIDGET_XY, ui->widget_XY, cnt, ui->spinBox_modelCount->value(), ui->comboBox_modelNum->count() - 1/*ui->comboBox_modelNum->currentIndex()*/); + + ui->comboBox_modelNum->setCurrentText("Average for all models"); +} + +void KolchShindWindow::on_pushButton_cont_clicked() +{ + if (newModelFlag == 0) + { + QMessageBox::information(this, "Information", "Launch new calculate before!", QMessageBox::Ok, 0); + return; + } +// CreateRangeDialog dialog(this, 1); +// int ret = dialog.exec(); +// if (ret == QDialog::Rejected) +// { +// return; +// } + ui->progressBar_modelBar->setValue(0); + newIterFlag = 1; + + bool check; + int cnt = 0; + ui->lineEdit_c1->text().toFloat(&check); + ui->lineEdit_c2->text().toFloat(&check); + ui->lineEdit_c3->text().toFloat(&check); + ui->lineEdit_c4->text().toFloat(&check); + ui->lineEdit_c5->text().toFloat(&check); + ui->lineEdit_sigC1->text().toFloat(&check); + ui->lineEdit_sigC2->text().toFloat(&check); + ui->lineEdit_sigC3->text().toFloat(&check); + ui->lineEdit_sigC4->text().toFloat(&check); + ui->lineEdit_sigC5->text().toFloat(&check); + ui->lineEdit_E->text().toFloat(&check); + ui->lineEdit_sigE->text().toFloat(&check); + ui->lineEdit_sigX0->text().toFloat(&check); + ui->lineEdit_delX0->text().toFloat(&check); + ui->lineEdit_sigX->text().toFloat(&check); + ui->lineEdit_Xopt->text().toFloat(&check); + ui->lineEdit_popSize->text().toInt(&check); + ui->lineEdit_maxSteps->text().toInt(&check); + ui->lineEdit_N->text().toInt(&check); + ui->lineEdit_iters->text().toInt(&check); + + if(!check) + { + QMessageBox::information(this, "Information", "Incorrect data!\nPlease check it again!", QMessageBox::Ok, 0); + return; + } + int iter = ui->lineEdit_iters->text().toInt(); + + emit sendNewIter(newIterFlag, iter); + emit startDrawParam(ui->lineEdit_c1->text().toFloat(), ui->lineEdit_c2->text().toFloat(), ui->lineEdit_c3->text().toFloat(), + ui->lineEdit_c4->text().toFloat(), ui->lineEdit_c5->text().toFloat(), ui->lineEdit_sigC1->text().toFloat(), + ui->lineEdit_sigC2->text().toFloat(), ui->lineEdit_sigC3->text().toFloat(), ui->lineEdit_sigC4->text().toFloat(), + ui->lineEdit_sigC5->text().toFloat(), ui->lineEdit_E->text().toFloat(), ui->lineEdit_sigE->text().toFloat(), + ui->lineEdit_sigX0->text().toFloat(), ui->lineEdit_delX0->text().toFloat(), + ui->lineEdit_sigX->text().toFloat(), ui->lineEdit_Xopt->text().toFloat(), ui->lineEdit_popSize->text().toInt(), + ui->lineEdit_maxSteps->text().toInt(), ui->lineEdit_N->text().toInt(), WIDGET_XT, ui->widget_XT, cnt, ui->spinBox_modelCount->value(), ui->comboBox_modelNum->currentIndex()); + cnt++; + emit startDrawParam(ui->lineEdit_c1->text().toFloat(), ui->lineEdit_c2->text().toFloat(), ui->lineEdit_c3->text().toFloat(), + ui->lineEdit_c4->text().toFloat(), ui->lineEdit_c5->text().toFloat(), ui->lineEdit_sigC1->text().toFloat(), + ui->lineEdit_sigC2->text().toFloat(), ui->lineEdit_sigC3->text().toFloat(), ui->lineEdit_sigC4->text().toFloat(), + ui->lineEdit_sigC5->text().toFloat(), ui->lineEdit_E->text().toFloat(), ui->lineEdit_sigE->text().toFloat(), + ui->lineEdit_sigX0->text().toFloat(), ui->lineEdit_delX0->text().toFloat(), + ui->lineEdit_sigX->text().toFloat(), ui->lineEdit_Xopt->text().toFloat(), ui->lineEdit_popSize->text().toInt(), + ui->lineEdit_maxSteps->text().toInt(), ui->lineEdit_N->text().toInt(), WIDGET_XY, ui->widget_XY, cnt, ui->spinBox_modelCount->value(), ui->comboBox_modelNum->currentIndex()); +} + +void KolchShindWindow::on_pushButton_Log_clicked() +{ + QVector vect = paintWgt.hist; + + + + for (int n = 0; n < vect.size() - 1; n++) + { + QString directoryName("Output_for_model_"); + directoryName += QString::number(n + 1); + QDir directory(directoryName); + if (!directory.exists()){ + directory.mkpath("."); + } + std::stringstream fileName; + fileName << "./Output_for_model_" << n + 1 << "/Model_" << n + 1 << ".txt"; + std::ofstream modelOutput(fileName.str().c_str()); + + for(int i = 0; i < vect[n].withFeedbackVect.size(); i++) + { + modelOutput << "W/o fb\t" << vect[n].withFeedbackVect[i] << "\tW/fb\t"<< vect[n].withoutFeedbackVect[i]; + modelOutput << "\tOptE(w/o/fb)\t" << vect[n].individ[i]; + modelOutput << "\tmE(w/o/fb)\t" << vect[n].meanE[i] / vect[n].withoutFeedbackVect[i]; + modelOutput << "\tOptE(w/fb)\t" << vect[n].individFeedback[i]; + modelOutput << "\tmE(w/fb)\t" << vect[n].meanE[i] / vect[n].withFeedbackVect[i]; + modelOutput << "\tmC2(w/fb)\t" << vect[n].meanC2[i] / vect[n].withFeedbackVect[i]; + modelOutput << "\n"; + } + modelOutput.close(); + } + + QString directoryName("Output_for_AVGmodel"); + //directoryName += QString::number(n + 1); + QDir directory(directoryName); + if (!directory.exists()){ + directory.mkpath("."); + } + std::stringstream fileName; + fileName << "./Output_for_AVGmodel" << "/AVG_Model" << ".txt"; + std::ofstream modelOutput(fileName.str().c_str()); + + for(int i = 0; i < vect[vect.size() - 1].withFeedbackVect.size(); i++) + { + modelOutput << "W/o fb\t" << vect[vect.size() - 1].withFeedbackVect[i] << "\tW/fb\t"<< vect[vect.size() - 1].withoutFeedbackVect[i]; + modelOutput << "\tOptE(w/o/fb)\t" << vect[vect.size() - 1].individ[i]; + modelOutput << "\tmE(w/o/fb)\t" << vect[vect.size() - 1].meanE[i] / vect[vect.size() - 1].withoutFeedbackVect[i]; + modelOutput << "\tOptE(w/fb)\t" << vect[vect.size() - 1].individFeedback[i]; + modelOutput << "\tmE(w/fb)\t" << vect[vect.size() - 1].meanE[i] / vect[vect.size() - 1].withFeedbackVect[i]; + modelOutput << "\tmC2(w/fb)\t" << vect[vect.size() - 1].meanC2[i] / vect[vect.size() - 1].withFeedbackVect[i]; + modelOutput << "\n"; + } + modelOutput.close(); + +// QString fileName = QFileDialog::getSaveFileName(this, +// tr("Save Statistics"), "", +// tr("Text document (*.txt);;All Files (*)")); +// QFile file(fileName); +// if (fileName.isEmpty()) +// { +// return; +// } +// else +// { +// if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) +// { +// QMessageBox::information(this, tr("Unable to open file"), +// file.errorString()); +// return; +// } +// } + +// QTextStream out(&file); + +// for (int i = 0; i < withFeed.size(); i++) +// { +// out << "W/o fb\t" << withoutFeed[i] << "\tW/fb\t"<< withFeed[i]; +// out << "\tOptE(w/o/fb)\t" << individ[i]; +// out << "\tmE(w/o/fb)\t" << eMeans[i] / withoutFeed[i]; +// out << "\tOptE(w/fb)\t" << individFeed[i]; +// out << "\tmE(w/fb)\t" << eMeans[i] / withFeed[i]; +// out << "\tmC2(w/fb)\t" << c2Means[i] / withFeed[i]; +// out << "\n"; +// } +// file.close(); + +} + +void KolchShindWindow::on_comboBox_modelNum_currentIndexChanged(int index) +{ + if (firstStart != 0) + { + emit drawModel(WIDGET_XT, ui->widget_XT, index); + emit drawModel(WIDGET_XY, ui->widget_XY, index); + } + + firstStart++; +} + +void KolchShindWindow::changeProgressBarVal(int iter) +{ + ui->progressBar_modelBar->setValue(iter); + //std::cout << ui->progressBar_modelBar->value() << std::endl; +} diff --git a/DEC_GUI/kolchshindwindow.h b/DEC_GUI/kolchshindwindow.h new file mode 100644 index 0000000..77f6587 --- /dev/null +++ b/DEC_GUI/kolchshindwindow.h @@ -0,0 +1,57 @@ +#ifndef KOLCHSHINDWINDOW_H +#define KOLCHSHINDWINDOW_H + +#include +#include +#include +#include "Kolch_Shind/solver.h" +#include "Kolch_Shind/paintqwidget.h" +#include + +namespace Ui { +class KolchShindWindow; +} + +class KolchShindWindow : public QWidget +{ + Q_OBJECT + +public: + explicit KolchShindWindow(QWidget *parent = 0); + ~KolchShindWindow(); + +private slots: + void on_pushButton_clicked(); + void on_pushButton_cont_clicked(); + void on_pushButton_Log_clicked(); + void on_comboBox_modelNum_currentIndexChanged(int index); + void changeProgressBarVal(int iter); + +signals: + + void startDrawAll(int wgt_type, QCustomPlot* pPlot); + void startDraw(QCustomPlot* pPlot); + void startDrawParam(float c1, float c2, float c3, float c4, float c5, float sigC1, float sigC2, float sigC3, float sigC4, float sigC5, + float e, float sigE, float sigX0, float delX0, float sigX, float Xopt, int popSize, int maxSteps, int N, + int wgt_type, QCustomPlot* pPlot, int cnt, int modelsCount, int model_num); + void sendNewIter(int iterFlag, int iters); + void drawModel(int wgt_type, QCustomPlot* pPlot, int model_num); + +private: + Ui::KolchShindWindow *ui; + PaintQWidget paintWgt; + Solver solver; + int newIterFlag; + int newModelFlag; + int firstStart; + QVector withFeed; + QVector withoutFeed; + + QVector eMeans; + QVector fMeans; + QVector c2Means; + QVector individ; + QVector individFeed; +}; + +#endif // KOLCHSHINDWINDOW_H diff --git a/DEC_GUI/kolchshindwindow.ui b/DEC_GUI/kolchshindwindow.ui new file mode 100644 index 0000000..4594997 --- /dev/null +++ b/DEC_GUI/kolchshindwindow.ui @@ -0,0 +1,537 @@ + + + KolchShindWindow + + + + 0 + 0 + 1302 + 602 + + + + Form + + + + + + + + + + Equations: + + + + + + + + + + dy/dt = -C * Predator + D * Prey * Predator + + + + + + + dx/dt = A * Prey - B * Prey * Predator + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + Parameters: + + + + + + true + + + + + + + false + + + true + + + + + + + true + + + + + + + sigC5: + + + + + + + Xopt(X0): + + + + + + + + 0 + 0 + + + + с1: + + + + + + + + 0 + 0 + + + + с4: + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + с3: + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + с5: + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + с2: + + + + + + + + 0 + 0 + + + + sigC3: + + + + + + + + 0 + 0 + + + + + + + + sigE: + + + + + + + + 0 + 0 + + + + sigC1: + + + + + + + true + + + + + + + + 0 + 0 + + + + sigC2: + + + + + + + sigC4: + + + + + + + N_wofeedback: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + PopSize: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + true + + + + + + + E: + + + + + + + + 0 + 0 + + + + true + + + + + + + sigX0: + + + + + + + sigX: + + + + + + + + + + + + + dX0: + + + + + + + + + + MaxSteps: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + Controls + + + + + + 1 + + + + + + + + 0 + 0 + + + + + + + + Models Number: + + + + + + + + 0 + 0 + + + + New Calculate + + + + + + + + 0 + 0 + + + + Save statistics to file... + + + + + + + Continue Iterate + + + + + + + Calc Process: + + + + + + + + 0 + 0 + + + + 24 + + + + + + + + + + + 0 + 0 + + + + Graphics controls: + + + + + + + 0 + 0 + + + + Model Number: + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + QCustomPlot + QWidget +
qcustomplot.h
+ 1 +
+
+ + +
diff --git a/DEC_GUI/main.cpp b/DEC_GUI/main.cpp new file mode 100644 index 0000000..c02ca27 --- /dev/null +++ b/DEC_GUI/main.cpp @@ -0,0 +1,36 @@ +#include "mainwindow.h" +#include +#include +#include +#include "DEC-0.0/processor/KolchShindyalov.h" +#include "DEC-0.0/processor/Processor.h" +#include "DEC-0.0/processor/Settings.h" +//#include "DEC-0.0/DerevyankoReport.h" +#include "DEC-0.0/DerevyankoReport2014.h" + + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + static const char WINDOW_TITLE[] = "DEC_GUI"; + time_t rawtime; + time ( &rawtime ); + std::cout<<"*** Starting\tDEC v0.0 ***\t"< +#include +#include +#include +#include +#include "DEC-0.0/processor/KolchShindyalov.h" +#include "DEC-0.0/processor/Processor.h" +#include "DEC-0.0/processor/Settings.h" +#include "DEC-0.0/DerevyankoReport.h" +#include "DEC-0.0/DerevyankoReport2014.h" +#include "DEC-0.0/processor/Settings.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + createActions(); + createMenus(); + + connect(this, SIGNAL(drawDefaultGraphs()), &derrep2014window, SLOT(startDefault())); + connect(this, SIGNAL(drawRep2013()), &derrep2013window, SLOT(startDraw())); + connect(this, SIGNAL(drawBreed(int)), &breedWindow, SLOT(startDraw(int))); + +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::createActions() +{ + openAct = new QAction(tr("&Open..."), this); + openAct->setShortcuts(QKeySequence::Open); + openAct->setStatusTip(tr("Open an existing file")); + connect(openAct, SIGNAL(triggered()), this, SLOT(openFile())); + chooseModel = new QAction(tr("&Choose model.."), this); + connect(chooseModel, SIGNAL(triggered()), this, SLOT(showChooseModelDialog())); +} + +void MainWindow::createMenus() +{ + fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(openAct); + fileMenu->addSeparator(); + controlMenu = menuBar()->addMenu(tr("&Control")); + controlMenu->addAction(chooseModel); + + helpMenu = menuBar()->addMenu(tr("&Help")); + //helpMenu->addAction(aboutAct); +} + +void MainWindow::openFile() +{ + QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", + tr("Text Files (*.txt);;C++ Files (*.cpp *.h)")); + + if (fileName != "") + { + /*QFile file(fileName); + if (!file.open(QIODevice::ReadOnly)) + { + QMessageBox::critical(this, tr("Error"), tr("Could not open file")); + return; + }*/ + + } +} + +void MainWindow::showChooseModelDialog() +{ + CreateDialogs dialog(this, 1, "lol"); //choose model dialog + int ret = dialog.exec(); + if (ret == QDialog::Rejected) + { + return; + } + if (dialog.checkDerRep2014_button()) + { + CreateDialogs dialogDerRep2014(this, 2, "Homo"); + int ret = dialogDerRep2014.exec(); + if (ret == QDialog::Rejected) + { + return; + } + if (dialogDerRep2014.checkLoci()) + { + QMessageBox::information(this, "Information", "Press 'Default' button or enter locis", QMessageBox::Ok, 0); + return; + } + Settings::numLoci = dialogDerRep2014.getNumLociVal(); + Settings::PopulationHomoInitSize = dialogDerRep2014.getSizeNum(); + Settings::percentDiffLoci = dialogDerRep2014.getPerDiffLoci(); + Settings::initMtDNA = dialogDerRep2014.getInitHomoGen(); + + CreateDialogs dialogDerRep2014_2(this, 3, "Ancient"); + int rets = dialogDerRep2014_2.exec(); + if (rets == QDialog::Rejected) + { + return; + } + if (dialogDerRep2014_2.checkLoci()) + { + QMessageBox::information(this, "Information", "Press 'Default' button or enter locis", QMessageBox::Ok, 0); + return; + } + Settings::PopulationAncientInitSize = dialogDerRep2014.getSizeNum(); + Settings::initMtDNA_ancient = dialogDerRep2014.getInitAncientGen(); + + + DerevyankoReport2014::report2014_01(/*argc,argv*/); + derrep2014window.setWindowTitle("DerevyankoReport2014"); + derrep2014window.setParametersSettings(); + derrep2014window.show(); + derrep2014window.raise(); + derrep2014window.setFocus(); + derrep2014window.activateWindow(); + emit drawDefaultGraphs(); + //std::cout << Settings::ancientCommonSize.size() << std::endl; + } + if (dialog.checkDerRepRFBR_button()) + { + CreateDialogs dialogDerRep2013(this, 4, "Pop_f"); + int ret = dialogDerRep2013.exec(); + if (ret == QDialog::Rejected) + { + return; + } + if (dialogDerRep2013.checkLoci()) + { + QMessageBox::information(this, "Information", "Press 'Default' button or enter locis", QMessageBox::Ok, 0); + return; + } + + CreateDialogs dialogDerRep2013_2(this, 5, "Pop_G"); + int rets = dialogDerRep2013_2.exec(); + if (rets == QDialog::Rejected) + { + return; + } + if (dialogDerRep2013_2.checkLoci()) + { + QMessageBox::information(this, "Information", "Press 'Default' button or enter locis", QMessageBox::Ok, 0); + return; + } + DerevyankoReport::reportRFBR2013_01(); + derrep2013window.setWindowTitle("DerevyankoReport2013"); + derrep2013window.show(); + derrep2013window.raise(); + derrep2013window.setFocus(); + derrep2013window.activateWindow(); + emit drawRep2013(); + } + if (dialog.checkKolch_button()) + { + kolchshindwindow.setWindowTitle("Kolch_Shind"); + kolchshindwindow.show(); + kolchshindwindow.raise(); + kolchshindwindow.setFocus(); + kolchshindwindow.activateWindow(); + + //KolchShindyalov::test01(); + } + if (dialog.checkInOutBreed_bitton()) + { + CreateDialogs dialog(this, 7, "Breed"); + int ret = dialog.exec(); + if (ret == QDialog::Rejected) + { + return; + } + Settings::Iterations = dialog.getMaxGen(); + Settings::InitPopSize = dialog.getInitPopSize(); + Settings::InitRatioBetweenPops = dialog.getBetweenRatio(); + Settings::KMaxParameter = dialog.getMaxIndivids(); + Processor::testInOutBreeding02(); + breedWindow.setWindowTitle("InOutBreeding"); + breedWindow.setPopComboBoxes(); + breedWindow.show(); + breedWindow.raise(); + breedWindow.setFocus(); + breedWindow.activateWindow(); + emit drawBreed(0); + } + if (dialog.checkAgressor_button()) + { + Manager *man = new Manager(); + } +} diff --git a/DEC_GUI/mainwindow.h b/DEC_GUI/mainwindow.h new file mode 100644 index 0000000..65808de --- /dev/null +++ b/DEC_GUI/mainwindow.h @@ -0,0 +1,51 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include + + + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + + +public slots: + void showChooseModelDialog(); + void openFile(); + +signals: + void drawDefaultGraphs(); + void drawRep2013(); + void drawBreed(int ind); + +private: + Ui::MainWindow *ui; + KolchShindWindow kolchshindwindow; + DerRep2014Window derrep2014window; + DerRepRFBR2013window derrep2013window; + BreedingWindow breedWindow; + QMenu *fileMenu; + QMenu *controlMenu; + QMenu *helpMenu; + QAction *openAct; + QAction *aboutAct; + QAction *chooseModel; + + void createMenus(); + void createActions(); +}; + +#endif // MAINWINDOW_H diff --git a/DEC_GUI/mainwindow.ui b/DEC_GUI/mainwindow.ui new file mode 100644 index 0000000..4216a26 --- /dev/null +++ b/DEC_GUI/mainwindow.ui @@ -0,0 +1,29 @@ + + + MainWindow + + + + 0 + 0 + 745 + 471 + + + + MainWindow + + + + + + + + + + + + + + + diff --git a/DEC_GUI/qcustomplot.cpp b/DEC_GUI/qcustomplot.cpp new file mode 100644 index 0000000..66bc19c --- /dev/null +++ b/DEC_GUI/qcustomplot.cpp @@ -0,0 +1,18671 @@ +/*************************************************************************** +** ** +** QCustomPlot, an easy to use, modern plotting widget for Qt ** +** Copyright (C) 2011, 2012, 2013 Emanuel Eichhammer ** +** ** +** This program is free software: you can redistribute it and/or modify ** +** it under the terms of the GNU General Public License as published by ** +** the Free Software Foundation, either version 3 of the License, or ** +** (at your option) any later version. ** +** ** +** This program is distributed in the hope that it will be useful, ** +** but WITHOUT ANY WARRANTY; without even the implied warranty of ** +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** +** GNU General Public License for more details. ** +** ** +** You should have received a copy of the GNU General Public License ** +** along with this program. If not, see http://www.gnu.org/licenses/. ** +** ** +**************************************************************************** +** Author: Emanuel Eichhammer ** +** Website/Contact: http://www.qcustomplot.com/ ** +** Date: 05.09.13 ** +** Version: 1.0.1 ** +****************************************************************************/ + +#include "qcustomplot.h" + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPPainter +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPPainter + \brief QPainter subclass used internally + + This internal class is used to provide some extended functionality e.g. for tweaking position + consistency between antialiased and non-antialiased painting. Further it provides workarounds + for QPainter quirks. + + \warning This class intentionally hides non-virtual functions of QPainter, e.g. setPen, save and + restore. So while it is possible to pass a QCPPainter instance to a function that expects a + QPainter pointer, some of the workarounds and tweaks will be unavailable to the function (because + it will call the base class implementations of the functions actually hidden by QCPPainter). +*/ + +/*! + Creates a new QCPPainter instance and sets default values +*/ +QCPPainter::QCPPainter() : + QPainter(), + mModes(pmDefault), + mIsAntialiasing(false) +{ + // don't setRenderHint(QPainter::NonCosmeticDefautPen) here, because painter isn't active yet and + // a call to begin() will follow +} + +/*! + Creates a new QCPPainter instance on the specified paint \a device and sets default values. Just + like the analogous QPainter constructor, begins painting on \a device immediately. + + Like \ref begin, this method sets QPainter::NonCosmeticDefaultPen in Qt versions before Qt5. +*/ +QCPPainter::QCPPainter(QPaintDevice *device) : + QPainter(device), + mModes(pmDefault), + mIsAntialiasing(false) +{ +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) // before Qt5, default pens used to be cosmetic if NonCosmeticDefaultPen flag isn't set. So we set it to get consistency across Qt versions. + if (isActive()) + setRenderHint(QPainter::NonCosmeticDefaultPen); +#endif +} + +QCPPainter::~QCPPainter() +{ +} + +/*! + Sets the pen of the painter and applies certain fixes to it, depending on the mode of this + QCPPainter. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::setPen(const QPen &pen) +{ + QPainter::setPen(pen); + if (mModes.testFlag(pmNonCosmetic)) + makeNonCosmetic(); +} + +/*! \overload + + Sets the pen (by color) of the painter and applies certain fixes to it, depending on the mode of + this QCPPainter. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::setPen(const QColor &color) +{ + QPainter::setPen(color); + if (mModes.testFlag(pmNonCosmetic)) + makeNonCosmetic(); +} + +/*! \overload + + Sets the pen (by style) of the painter and applies certain fixes to it, depending on the mode of + this QCPPainter. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::setPen(Qt::PenStyle penStyle) +{ + QPainter::setPen(penStyle); + if (mModes.testFlag(pmNonCosmetic)) + makeNonCosmetic(); +} + +/*! \overload + + Works around a Qt bug introduced with Qt 4.8 which makes drawing QLineF unpredictable when + antialiasing is disabled. Thus when antialiasing is disabled, it rounds the \a line to + integer coordinates and then passes it to the original drawLine. + + \note this function hides the non-virtual base class implementation. +*/ +void QCPPainter::drawLine(const QLineF &line) +{ + if (mIsAntialiasing || mModes.testFlag(pmVectorized)) + QPainter::drawLine(line); + else + QPainter::drawLine(line.toLine()); +} + +/*! + Sets whether painting uses antialiasing or not. Use this method instead of using setRenderHint + with QPainter::Antialiasing directly, as it allows QCPPainter to regain pixel exactness between + antialiased and non-antialiased painting (Since Qt < 5.0 uses slightly different coordinate systems for + AA/Non-AA painting). +*/ +void QCPPainter::setAntialiasing(bool enabled) +{ + setRenderHint(QPainter::Antialiasing, enabled); + if (mIsAntialiasing != enabled) + { + mIsAntialiasing = enabled; + if (!mModes.testFlag(pmVectorized)) // antialiasing half-pixel shift only needed for rasterized outputs + { + if (mIsAntialiasing) + translate(0.5, 0.5); + else + translate(-0.5, -0.5); + } + } +} + +/*! + Sets the mode of the painter. This controls whether the painter shall adjust its + fixes/workarounds optimized for certain output devices. +*/ +void QCPPainter::setModes(QCPPainter::PainterModes modes) +{ + mModes = modes; +} + +/*! + Sets the QPainter::NonCosmeticDefaultPen in Qt versions before Qt5 after beginning painting on \a + device. This is necessary to get cosmetic pen consistency across Qt versions, because since Qt5, + all pens are non-cosmetic by default, and in Qt4 this render hint must be set to get that + behaviour. + + The Constructor \ref QCPPainter(QPaintDevice *device) which directly starts painting also sets + the render hint as appropriate. + + \note this function hides the non-virtual base class implementation. +*/ +bool QCPPainter::begin(QPaintDevice *device) +{ + bool result = QPainter::begin(device); +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) // before Qt5, default pens used to be cosmetic if NonCosmeticDefaultPen flag isn't set. So we set it to get consistency across Qt versions. + if (result) + setRenderHint(QPainter::NonCosmeticDefaultPen); +#endif + return result; +} + +/*! \overload + + Sets the mode of the painter. This controls whether the painter shall adjust its + fixes/workarounds optimized for certain output devices. +*/ +void QCPPainter::setMode(QCPPainter::PainterMode mode, bool enabled) +{ + if (!enabled && mModes.testFlag(mode)) + mModes &= ~mode; + else if (enabled && !mModes.testFlag(mode)) + mModes |= mode; +} + +/*! + Saves the painter (see QPainter::save). Since QCPPainter adds some new internal state to + QPainter, the save/restore functions are reimplemented to also save/restore those members. + + \note this function hides the non-virtual base class implementation. + + \see restore +*/ +void QCPPainter::save() +{ + mAntialiasingStack.push(mIsAntialiasing); + QPainter::save(); +} + +/*! + Restores the painter (see QPainter::restore). Since QCPPainter adds some new internal state to + QPainter, the save/restore functions are reimplemented to also save/restore those members. + + \note this function hides the non-virtual base class implementation. + + \see save +*/ +void QCPPainter::restore() +{ + if (!mAntialiasingStack.isEmpty()) + mIsAntialiasing = mAntialiasingStack.pop(); + else + qDebug() << Q_FUNC_INFO << "Unbalanced save/restore"; + QPainter::restore(); +} + +/*! + Changes the pen width to 1 if it currently is 0. This function is called in the \ref setPen + overrides when the \ref pmNonCosmetic mode is set. +*/ +void QCPPainter::makeNonCosmetic() +{ + if (qFuzzyIsNull(pen().widthF())) + { + QPen p = pen(); + p.setWidth(1); + QPainter::setPen(p); + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPScatterStyle +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPScatterStyle + \brief Represents the visual appearance of scatter points + + This class holds information about shape, color and size of scatter points. In plottables like + QCPGraph it is used to store how scatter points shall be drawn. For example, \ref + QCPGraph::setScatterStyle takes a QCPScatterStyle instance. + + A scatter style consists of a shape (\ref setShape), a line color (\ref setPen) and possibly a + fill (\ref setBrush), if the shape provides a fillable area. Further, the size of the shape can + be controlled with \ref setSize. + + \section QCPScatterStyle-defining Specifying a scatter style + + You can set all these configurations either by calling the respective functions on an instance: + \code + QCPScatterStyle myScatter; + myScatter.setShape(QCPScatterStyle::ssCircle); + myScatter.setPen(Qt::blue); + myScatter.setBrush(Qt::white); + myScatter.setSize(5); + customPlot->graph(0)->setScatterStyle(myScatter); + \endcode + + Or you can use one of the various constructors that take different parameter combinations, making + it easy to specify a scatter style in a single call, like so: + \code + customPlot->graph(0)->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, Qt::white, 5)); + \endcode + + \section QCPScatterStyle-undefinedpen Leaving the color/pen up to the plottable + + There are two constructors which leave the pen undefined: \ref QCPScatterStyle() and \ref + QCPScatterStyle(ScatterShape shape, double size). If those constructors are used, a call to \ref + isPenDefined will return false. It leads to scatter points that inherit the pen from the + plottable that uses the scatter style. Thus, if such a scatter style is passed to QCPGraph, the line + color of the graph (\ref QCPGraph::setPen) will be used by the scatter points. This makes + it very convenient to set up typical scatter settings: + + \code + customPlot->graph(0)->setScatterStyle(QCPScatterStyle::ssPlus); + \endcode + + Notice that it wasn't even necessary to explicitly call a QCPScatterStyle constructor. This works + because QCPScatterStyle provides a constructor that can transform a \ref ScatterShape directly + into a QCPScatterStyle instance (that's the \ref QCPScatterStyle(ScatterShape shape, double size) + constructor with a default for \a size). In those cases, C++ allows directly supplying a \ref + ScatterShape, where actually a QCPScatterStyle is expected. + + \section QCPScatterStyle-custompath-and-pixmap Custom shapes and pixmaps + + QCPScatterStyle supports drawing custom shapes and arbitrary pixmaps as scatter points. + + For custom shapes, you can provide a QPainterPath with the desired shape to the \ref + setCustomPath function or call the constructor that takes a painter path. The scatter shape will + automatically be set to \ref ssCustom. + + For pixmaps, you call \ref setPixmap with the desired QPixmap. Alternatively you can use the + constructor that takes a QPixmap. The scatter shape will automatically be set to \ref ssPixmap. + Note that \ref setSize does not influence the appearance of the pixmap. +*/ + +/* start documentation of inline functions */ + +/*! \fn bool QCPScatterStyle::isNone() const + + Returns whether the scatter shape is \ref ssNone. + + \see setShape +*/ + +/*! \fn bool QCPScatterStyle::isPenDefined() const + + Returns whether a pen has been defined for this scatter style. + + The pen is undefined if a constructor is called that does not carry \a pen as parameter. Those are + \ref QCPScatterStyle() and \ref QCPScatterStyle(ScatterShape shape, double size). If the pen is + left undefined, the scatter color will be inherited from the plottable that uses this scatter + style. + + \see setPen +*/ + +/* end documentation of inline functions */ + +/*! + Creates a new QCPScatterStyle instance with size set to 6. No shape, pen or brush is defined. + + Since the pen is undefined (\ref isPenDefined returns false), the scatter color will be inherited + from the plottable that uses this scatter style. +*/ +QCPScatterStyle::QCPScatterStyle() : + mSize(6), + mShape(ssNone), + mPen(Qt::NoPen), + mBrush(Qt::NoBrush), + mPenDefined(false) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape and size to \a size. No pen or + brush is defined. + + Since the pen is undefined (\ref isPenDefined returns false), the scatter color will be inherited + from the plottable that uses this scatter style. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, double size) : + mSize(size), + mShape(shape), + mPen(Qt::NoPen), + mBrush(Qt::NoBrush), + mPenDefined(false) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape, the pen color set to \a color, + and size to \a size. No brush is defined, i.e. the scatter point will not be filled. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, const QColor &color, double size) : + mSize(size), + mShape(shape), + mPen(QPen(color)), + mBrush(Qt::NoBrush), + mPenDefined(true) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape, the pen color set to \a color, + the brush color to \a fill (with a solid pattern), and size to \a size. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill, double size) : + mSize(size), + mShape(shape), + mPen(QPen(color)), + mBrush(QBrush(fill)), + mPenDefined(true) +{ +} + +/*! + Creates a new QCPScatterStyle instance with shape set to \a shape, the pen set to \a pen, the + brush to \a brush, and size to \a size. + + \warning In some cases it might be tempting to directly use a pen style like Qt::NoPen as \a pen + and a color like Qt::blue as \a brush. Notice however, that the corresponding call\n + QCPScatterStyle(QCPScatterShape::ssCircle, Qt::NoPen, Qt::blue, 5)\n + doesn't necessarily lead C++ to use this constructor in some cases, but might mistake + Qt::NoPen for a QColor and use the + \ref QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill, double size) + constructor instead (which will lead to an unexpected look of the scatter points). To prevent + this, be more explicit with the parameter types. For example, use QBrush(Qt::blue) + instead of just Qt::blue, to clearly point out to the compiler that this constructor is + wanted. +*/ +QCPScatterStyle::QCPScatterStyle(ScatterShape shape, const QPen &pen, const QBrush &brush, double size) : + mSize(size), + mShape(shape), + mPen(pen), + mBrush(brush), + mPenDefined(pen.style() != Qt::NoPen) +{ +} + +/*! + Creates a new QCPScatterStyle instance which will show the specified \a pixmap. The scatter shape + is set to \ref ssPixmap. +*/ +QCPScatterStyle::QCPScatterStyle(const QPixmap &pixmap) : + mSize(5), + mShape(ssPixmap), + mPen(Qt::NoPen), + mBrush(Qt::NoBrush), + mPixmap(pixmap), + mPenDefined(false) +{ +} + +/*! + Creates a new QCPScatterStyle instance with a custom shape that is defined via \a customPath. The + scatter shape is set to \ref ssCustom. + + The custom shape line will be drawn with \a pen and filled with \a brush. The size has a slightly + different meaning than for built-in scatter points: The custom path will be drawn scaled by a + factor of \a size/6.0. Since the default \a size is 6, the custom path will appear at a its + natural size by default. To double the size of the path for example, set \a size to 12. +*/ +QCPScatterStyle::QCPScatterStyle(const QPainterPath &customPath, const QPen &pen, const QBrush &brush, double size) : + mSize(size), + mShape(ssCustom), + mPen(pen), + mBrush(brush), + mCustomPath(customPath), + mPenDefined(false) +{ +} + +/*! + Sets the size (pixel diameter) of the drawn scatter points to \a size. + + \see setShape +*/ +void QCPScatterStyle::setSize(double size) +{ + mSize = size; +} + +/*! + Sets the shape to \a shape. + + Note that the calls \ref setPixmap and \ref setCustomPath automatically set the shape to \ref + ssPixmap and \ref ssCustom, respectively. + + \see setSize +*/ +void QCPScatterStyle::setShape(QCPScatterStyle::ScatterShape shape) +{ + mShape = shape; +} + +/*! + Sets the pen that will be used to draw scatter points to \a pen. + + If the pen was previously undefined (see \ref isPenDefined), the pen is considered defined after + a call to this function, even if \a pen is Qt::NoPen. + + \see setBrush +*/ +void QCPScatterStyle::setPen(const QPen &pen) +{ + mPenDefined = true; + mPen = pen; +} + +/*! + Sets the brush that will be used to fill scatter points to \a brush. Note that not all scatter + shapes have fillable areas. For example, \ref ssPlus does not while \ref ssCircle does. + + \see setPen +*/ +void QCPScatterStyle::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the pixmap that will be drawn as scatter point to \a pixmap. + + Note that \ref setSize does not influence the appearance of the pixmap. + + The scatter shape is automatically set to \ref ssPixmap. +*/ +void QCPScatterStyle::setPixmap(const QPixmap &pixmap) +{ + setShape(ssPixmap); + mPixmap = pixmap; +} + +/*! + Sets the custom shape that will be drawn as scatter point to \a customPath. + + The scatter shape is automatically set to \ref ssCustom. +*/ +void QCPScatterStyle::setCustomPath(const QPainterPath &customPath) +{ + setShape(ssCustom); + mCustomPath = customPath; +} + +/*! + Applies the pen and the brush of this scatter style to \a painter. If this scatter style has an + undefined pen (\ref isPenDefined), sets the pen of \a painter to \a defaultPen instead. + + This function is used by plottables (or any class that wants to draw scatters) just before a + number of scatters with this style shall be drawn with the \a painter. + + \see drawShape +*/ +void QCPScatterStyle::applyTo(QCPPainter *painter, const QPen &defaultPen) const +{ + painter->setPen(mPenDefined ? mPen : defaultPen); + painter->setBrush(mBrush); +} + +/*! + Draws the scatter shape with \a painter at position \a pos. + + This function does not modify the pen or the brush on the painter, as \ref applyTo is meant to be + called before scatter points are drawn with \ref drawShape. + + \see applyTo +*/ +void QCPScatterStyle::drawShape(QCPPainter *painter, QPointF pos) const +{ + drawShape(painter, pos.x(), pos.y()); +} + +/*! \overload + Draws the scatter shape with \a painter at position \a x and \a y. +*/ +void QCPScatterStyle::drawShape(QCPPainter *painter, double x, double y) const +{ + double w = mSize/2.0; + switch (mShape) + { + case ssNone: break; + case ssDot: + { + painter->drawLine(QPointF(x, y), QPointF(x+0.0001, y)); + break; + } + case ssCross: + { + painter->drawLine(QLineF(x-w, y-w, x+w, y+w)); + painter->drawLine(QLineF(x-w, y+w, x+w, y-w)); + break; + } + case ssPlus: + { + painter->drawLine(QLineF(x-w, y, x+w, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + break; + } + case ssCircle: + { + painter->drawEllipse(QPointF(x , y), w, w); + break; + } + case ssDisc: + { + QBrush b = painter->brush(); + painter->setBrush(painter->pen().color()); + painter->drawEllipse(QPointF(x , y), w, w); + painter->setBrush(b); + break; + } + case ssSquare: + { + painter->drawRect(QRectF(x-w, y-w, mSize, mSize)); + break; + } + case ssDiamond: + { + painter->drawLine(QLineF(x-w, y, x, y-w)); + painter->drawLine(QLineF( x, y-w, x+w, y)); + painter->drawLine(QLineF(x+w, y, x, y+w)); + painter->drawLine(QLineF( x, y+w, x-w, y)); + break; + } + case ssStar: + { + painter->drawLine(QLineF(x-w, y, x+w, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + painter->drawLine(QLineF(x-w*0.707, y-w*0.707, x+w*0.707, y+w*0.707)); + painter->drawLine(QLineF(x-w*0.707, y+w*0.707, x+w*0.707, y-w*0.707)); + break; + } + case ssTriangle: + { + painter->drawLine(QLineF(x-w, y+0.755*w, x+w, y+0.755*w)); + painter->drawLine(QLineF(x+w, y+0.755*w, x, y-0.977*w)); + painter->drawLine(QLineF( x, y-0.977*w, x-w, y+0.755*w)); + break; + } + case ssTriangleInverted: + { + painter->drawLine(QLineF(x-w, y-0.755*w, x+w, y-0.755*w)); + painter->drawLine(QLineF(x+w, y-0.755*w, x, y+0.977*w)); + painter->drawLine(QLineF( x, y+0.977*w, x-w, y-0.755*w)); + break; + } + case ssCrossSquare: + { + painter->drawLine(QLineF(x-w, y-w, x+w*0.95, y+w*0.95)); + painter->drawLine(QLineF(x-w, y+w*0.95, x+w*0.95, y-w)); + painter->drawRect(QRectF(x-w, y-w, mSize, mSize)); + break; + } + case ssPlusSquare: + { + painter->drawLine(QLineF(x-w, y, x+w*0.95, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + painter->drawRect(QRectF(x-w, y-w, mSize, mSize)); + break; + } + case ssCrossCircle: + { + painter->drawLine(QLineF(x-w*0.707, y-w*0.707, x+w*0.670, y+w*0.670)); + painter->drawLine(QLineF(x-w*0.707, y+w*0.670, x+w*0.670, y-w*0.707)); + painter->drawEllipse(QPointF(x, y), w, w); + break; + } + case ssPlusCircle: + { + painter->drawLine(QLineF(x-w, y, x+w, y)); + painter->drawLine(QLineF( x, y+w, x, y-w)); + painter->drawEllipse(QPointF(x, y), w, w); + break; + } + case ssPeace: + { + painter->drawLine(QLineF(x, y-w, x, y+w)); + painter->drawLine(QLineF(x, y, x-w*0.707, y+w*0.707)); + painter->drawLine(QLineF(x, y, x+w*0.707, y+w*0.707)); + painter->drawEllipse(QPointF(x, y), w, w); + break; + } + case ssPixmap: + { + painter->drawPixmap(x-mPixmap.width()*0.5, y-mPixmap.height()*0.5, mPixmap); + break; + } + case ssCustom: + { + QTransform oldTransform = painter->transform(); + painter->translate(x, y); + painter->scale(mSize/6.0, mSize/6.0); + painter->drawPath(mCustomPath); + painter->setTransform(oldTransform); + break; + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayer +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayer + \brief A layer that may contain objects, to control the rendering order + + The Layering system of QCustomPlot is the mechanism to control the rendering order of the + elements inside the plot. + + It is based on the two classes QCPLayer and QCPLayerable. QCustomPlot holds an ordered list of + one or more instances of QCPLayer (see QCustomPlot::addLayer, QCustomPlot::layer, + QCustomPlot::moveLayer, etc.). When replotting, QCustomPlot goes through the list of layers + bottom to top and successively draws the layerables of the layers. + + A QCPLayer contains an ordered list of QCPLayerable instances. QCPLayerable is an abstract base + class from which almost all visible objects derive, like axes, grids, graphs, items, etc. + + Initially, QCustomPlot has five layers: "background", "grid", "main", "axes" and "legend" (in + that order). The top two layers "axes" and "legend" contain the default axes and legend, so they + will be drawn on top. In the middle, there is the "main" layer. It is initially empty and set as + the current layer (see QCustomPlot::setCurrentLayer). This means, all new plottables, items etc. + are created on this layer by default. Then comes the "grid" layer which contains the QCPGrid + instances (which belong tightly to QCPAxis, see \ref QCPAxis::grid). The Axis rect background + shall be drawn behind everything else, thus the default QCPAxisRect instance is placed on the + "background" layer. Of course, the layer affiliation of the individual objects can be changed as + required (\ref QCPLayerable::setLayer). + + Controlling the ordering of objects is easy: Create a new layer in the position you want it to + be, e.g. above "main", with QCustomPlot::addLayer. Then set the current layer with + QCustomPlot::setCurrentLayer to that new layer and finally create the objects normally. They will + be placed on the new layer automatically, due to the current layer setting. Alternatively you + could have also ignored the current layer setting and just moved the objects with + QCPLayerable::setLayer to the desired layer after creating them. + + It is also possible to move whole layers. For example, If you want the grid to be shown in front + of all plottables/items on the "main" layer, just move it above "main" with + QCustomPlot::moveLayer. + + The rendering order within one layer is simply by order of creation or insertion. The item + created last (or added last to the layer), is drawn on top of all other objects on that layer. + + When a layer is deleted, the objects on it are not deleted with it, but fall on the layer below + the deleted layer, see QCustomPlot::removeLayer. +*/ + +/* start documentation of inline functions */ + +/*! \fn QList QCPLayer::children() const + + Returns a list of all layerables on this layer. The order corresponds to the rendering order: + layerables with higher indices are drawn above layerables with lower indices. +*/ + +/*! \fn int QCPLayer::index() const + + Returns the index this layer has in the QCustomPlot. The index is the integer number by which this layer can be + accessed via \ref QCustomPlot::layer. + + Layers with higher indices will be drawn above layers with lower indices. +*/ + +/* end documentation of inline functions */ + +/*! + Creates a new QCPLayer instance. + + Normally you shouldn't directly instantiate layers, use \ref QCustomPlot::addLayer instead. + + \warning It is not checked that \a layerName is actually a unique layer name in \a parentPlot. + This check is only performed by \ref QCustomPlot::addLayer. +*/ +QCPLayer::QCPLayer(QCustomPlot *parentPlot, const QString &layerName) : + QObject(parentPlot), + mParentPlot(parentPlot), + mName(layerName), + mIndex(-1) // will be set to a proper value by the QCustomPlot layer creation function +{ + // Note: no need to make sure layerName is unique, because layer + // management is done with QCustomPlot functions. +} + +QCPLayer::~QCPLayer() +{ + // If child layerables are still on this layer, detach them, so they don't try to reach back to this + // then invalid layer once they get deleted/moved themselves. This only happens when layers are deleted + // directly, like in the QCustomPlot destructor. (The regular layer removal procedure for the user is to + // call QCustomPlot::removeLayer, which moves all layerables off this layer before deleting it.) + + while (!mChildren.isEmpty()) + mChildren.last()->setLayer(0); // removes itself from mChildren via removeChild() + + if (mParentPlot->currentLayer() == this) + qDebug() << Q_FUNC_INFO << "The parent plot's mCurrentLayer will be a dangling pointer. Should have been set to a valid layer or 0 beforehand."; +} + +/*! \internal + + Adds the \a layerable to the list of this layer. If \a prepend is set to true, the layerable will + be prepended to the list, i.e. be drawn beneath the other layerables already in the list. + + This function does not change the \a mLayer member of \a layerable to this layer. (Use + QCPLayerable::setLayer to change the layer of an object, not this function.) + + \see removeChild +*/ +void QCPLayer::addChild(QCPLayerable *layerable, bool prepend) +{ + if (!mChildren.contains(layerable)) + { + if (prepend) + mChildren.prepend(layerable); + else + mChildren.append(layerable); + } else + qDebug() << Q_FUNC_INFO << "layerable is already child of this layer" << reinterpret_cast(layerable); +} + +/*! \internal + + Removes the \a layerable from the list of this layer. + + This function does not change the \a mLayer member of \a layerable. (Use QCPLayerable::setLayer + to change the layer of an object, not this function.) + + \see addChild +*/ +void QCPLayer::removeChild(QCPLayerable *layerable) +{ + if (!mChildren.removeOne(layerable)) + qDebug() << Q_FUNC_INFO << "layerable is not child of this layer" << reinterpret_cast(layerable); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayerable +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayerable + \brief Base class for all drawable objects + + This is the abstract base class most visible objects derive from, e.g. plottables, axes, grid + etc. + + Every layerable is on a layer (QCPLayer) which allows controlling the rendering order by stacking + the layers accordingly. + + For details about the layering mechanism, see the QCPLayer documentation. +*/ + +/* start documentation of inline functions */ + +/*! \fn QCPLayerable *QCPLayerable::parentLayerable() const + + Returns the parent layerable of this layerable. The parent layerable is used to provide + visibility hierarchies in conjunction with the method \ref realVisibility. This way, layerables + only get drawn if their parent layerables are visible, too. + + Note that a parent layerable is not necessarily also the QObject parent for memory management. + Further, a layerable doesn't always have a parent layerable, so this function may return 0. + + A parent layerable is set implicitly with when placed inside layout elements and doesn't need to be + set manually by the user. +*/ + +/* end documentation of inline functions */ +/* start documentation of pure virtual functions */ + +/*! \fn virtual void QCPLayerable::applyDefaultAntialiasingHint(QCPPainter *painter) const = 0 + \internal + + This function applies the default antialiasing setting to the specified \a painter, using the + function \ref applyAntialiasingHint. It is the antialiasing state the painter is put in, when + \ref draw is called on the layerable. If the layerable has multiple entities whose antialiasing + setting may be specified individually, this function should set the antialiasing state of the + most prominent entity. In this case however, the \ref draw function usually calls the specialized + versions of this function before drawing each entity, effectively overriding the setting of the + default antialiasing hint. + + First example: QCPGraph has multiple entities that have an antialiasing setting: The graph + line, fills, scatters and error bars. Those can be configured via QCPGraph::setAntialiased, + QCPGraph::setAntialiasedFill, QCPGraph::setAntialiasedScatters etc. Consequently, there isn't + only the QCPGraph::applyDefaultAntialiasingHint function (which corresponds to the graph line's + antialiasing), but specialized ones like QCPGraph::applyFillAntialiasingHint and + QCPGraph::applyScattersAntialiasingHint. So before drawing one of those entities, QCPGraph::draw + calls the respective specialized applyAntialiasingHint function. + + Second example: QCPItemLine consists only of a line so there is only one antialiasing + setting which can be controlled with QCPItemLine::setAntialiased. (This function is inherited by + all layerables. The specialized functions, as seen on QCPGraph, must be added explicitly to the + respective layerable subclass.) Consequently it only has the normal + QCPItemLine::applyDefaultAntialiasingHint. The \ref QCPItemLine::draw function doesn't need to + care about setting any antialiasing states, because the default antialiasing hint is already set + on the painter when the \ref draw function is called, and that's the state it wants to draw the + line with. +*/ + +/*! \fn virtual void QCPLayerable::draw(QCPPainter *painter) const = 0 + \internal + + This function draws the layerable with the specified \a painter. It is only called by + QCustomPlot, if the layerable is visible (\ref setVisible). + + Before this function is called, the painter's antialiasing state is set via \ref + applyDefaultAntialiasingHint, see the documentation there. Further, the clipping rectangle was + set to \ref clipRect. +*/ + +/* end documentation of pure virtual functions */ + +/*! + Creates a new QCPLayerable instance. + + Since QCPLayerable is an abstract base class, it can't be instantiated directly. Use one of the + derived classes. + + If \a plot is provided, it automatically places itself on the layer named \a targetLayer. If \a + targetLayer is an empty string, it places itself on the current layer of the plot (see \ref + QCustomPlot::setCurrentLayer). + + It is possible to provide 0 as \a plot. In that case, you should assign a parent plot at a later + time with \ref initializeParentPlot. + + The layerable's parent layerable is set to \a parentLayerable, if provided. Direct layerable parents + are mainly used to control visibility in a hierarchy of layerables. This means a layerable is + only drawn, if all its ancestor layerables are also visible. Note that \a parentLayerable does + not become the QObject-parent (for memory management) of this layerable, \a plot does. +*/ +QCPLayerable::QCPLayerable(QCustomPlot *plot, QString targetLayer, QCPLayerable *parentLayerable) : + QObject(plot), + mVisible(true), + mParentPlot(plot), + mParentLayerable(parentLayerable), + mLayer(0), + mAntialiased(true) +{ + if (mParentPlot) + { + if (targetLayer.isEmpty()) + setLayer(mParentPlot->currentLayer()); + else if (!setLayer(targetLayer)) + qDebug() << Q_FUNC_INFO << "setting QCPlayerable initial layer to" << targetLayer << "failed."; + } +} + +QCPLayerable::~QCPLayerable() +{ + if (mLayer) + { + mLayer->removeChild(this); + mLayer = 0; + } +} + +/*! + Sets the visibility of this layerable object. If an object is not visible, it will not be drawn + on the QCustomPlot surface, and user interaction with it (e.g. click and selection) is not + possible. +*/ +void QCPLayerable::setVisible(bool on) +{ + mVisible = on; +} + +/*! + Sets the \a layer of this layerable object. The object will be placed on top of the other objects + already on \a layer. + + Returns true on success, i.e. if \a layer is a valid layer. +*/ +bool QCPLayerable::setLayer(QCPLayer *layer) +{ + return moveToLayer(layer, false); +} + +/*! \overload + Sets the layer of this layerable object by name + + Returns true on success, i.e. if \a layerName is a valid layer name. +*/ +bool QCPLayerable::setLayer(const QString &layerName) +{ + if (!mParentPlot) + { + qDebug() << Q_FUNC_INFO << "no parent QCustomPlot set"; + return false; + } + if (QCPLayer *layer = mParentPlot->layer(layerName)) + { + return setLayer(layer); + } else + { + qDebug() << Q_FUNC_INFO << "there is no layer with name" << layerName; + return false; + } +} + +/*! + Sets whether this object will be drawn antialiased or not. + + Note that antialiasing settings may be overridden by QCustomPlot::setAntialiasedElements and + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPLayerable::setAntialiased(bool enabled) +{ + mAntialiased = enabled; +} + +/*! + Returns whether this layerable is visible, taking possible direct layerable parent visibility + into account. This is the method that is consulted to decide whether a layerable shall be drawn + or not. + + If this layerable has a direct layerable parent (usually set via hierarchies implemented in + subclasses, like in the case of QCPLayoutElement), this function returns true only if this + layerable has its visibility set to true and the parent layerable's \ref realVisibility returns + true. + + If this layerable doesn't have a direct layerable parent, returns the state of this layerable's + visibility. +*/ +bool QCPLayerable::realVisibility() const +{ + return mVisible && (!mParentLayerable || mParentLayerable.data()->realVisibility()); +} + +/*! + This function is used to decide whether a click hits a layerable object or not. + + \a pos is a point in pixel coordinates on the QCustomPlot surface. This function returns the + shortest pixel distance of this point to the object. If the object is either invisible or the + distance couldn't be determined, -1.0 is returned. Further, if \a onlySelectable is true and the + object is not selectable, -1.0 is returned, too. + + If the item is represented not by single lines but by an area like QCPItemRect or QCPItemText, a + click inside the area returns a constant value greater zero (typically the selectionTolerance of + the parent QCustomPlot multiplied by 0.99). If the click lies outside the area, this function + returns -1.0. + + Providing a constant value for area objects allows selecting line objects even when they are + obscured by such area objects, by clicking close to the lines (i.e. closer than + 0.99*selectionTolerance). + + The actual setting of the selection state is not done by this function. This is handled by the + parent QCustomPlot when the mouseReleaseEvent occurs, and the finally selected object is notified + via the selectEvent/deselectEvent methods. + + \a details is an optional output parameter. Every layerable subclass may place any information + in \a details. This information will be passed to \ref selectEvent when the parent QCustomPlot + decides on the basis of this selectTest call, that the object was successfully selected. The + subsequent call to \ref selectEvent will carry the \a details. This is useful for multi-part + objects (like QCPAxis). This way, a possibly complex calculation to decide which part was clicked + is only done once in \ref selectTest. The result (i.e. the actually clicked part) can then be + placed in \a details. So in the subsequent \ref selectEvent, the decision which part was + selected doesn't have to be done a second time for a single selection operation. + + You may pass 0 as \a details to indicate that you are not interested in those selection details. + + \see selectEvent, deselectEvent, QCustomPlot::setInteractions +*/ +double QCPLayerable::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(pos) + Q_UNUSED(onlySelectable) + Q_UNUSED(details) + return -1.0; +} + +/*! \internal + + Sets the parent plot of this layerable. Use this function once to set the parent plot if you have + passed 0 in the constructor. It can not be used to move a layerable from one QCustomPlot to + another one. + + Note that, unlike when passing a non-null parent plot in the constructor, this function does not + make \a parentPlot the QObject-parent of this layerable. If you want this, call + QObject::setParent(\a parentPlot) in addition to this function. + + Further, you will probably want to set a layer (\ref setLayer) after calling this function, to + make the layerable appear on the QCustomPlot. + + The parent plot change will be propagated to subclasses via a call to \ref parentPlotInitialized + so they can react accordingly (e.g. also initialize the parent plot of child layerables, like + QCPLayout does). +*/ +void QCPLayerable::initializeParentPlot(QCustomPlot *parentPlot) +{ + if (mParentPlot) + { + qDebug() << Q_FUNC_INFO << "called with mParentPlot already initialized"; + return; + } + + if (!parentPlot) + qDebug() << Q_FUNC_INFO << "called with parentPlot zero"; + + mParentPlot = parentPlot; + parentPlotInitialized(mParentPlot); +} + +/*! \internal + + Sets the parent layerable of this layerable to \a parentLayerable. Note that \a parentLayerable does not + become the QObject-parent (for memory management) of this layerable. + + The parent layerable has influence on the return value of the \ref realVisibility method. Only + layerables with a fully visible parent tree will return true for \ref realVisibility, and thus be + drawn. + + \see realVisibility +*/ +void QCPLayerable::setParentLayerable(QCPLayerable *parentLayerable) +{ + mParentLayerable = parentLayerable; +} + +/*! \internal + + Moves this layerable object to \a layer. If \a prepend is true, this object will be prepended to + the new layer's list, i.e. it will be drawn below the objects already on the layer. If it is + false, the object will be appended. + + Returns true on success, i.e. if \a layer is a valid layer. +*/ +bool QCPLayerable::moveToLayer(QCPLayer *layer, bool prepend) +{ + if (layer && !mParentPlot) + { + qDebug() << Q_FUNC_INFO << "no parent QCustomPlot set"; + return false; + } + if (layer && layer->parentPlot() != mParentPlot) + { + qDebug() << Q_FUNC_INFO << "layer" << layer->name() << "is not in same QCustomPlot as this layerable"; + return false; + } + + if (mLayer) + mLayer->removeChild(this); + mLayer = layer; + if (mLayer) + mLayer->addChild(this, prepend); + return true; +} + +/*! \internal + + Sets the QCPainter::setAntialiasing state on the provided \a painter, depending on the \a + localAntialiased value as well as the overrides \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. Which override enum this function takes into account is + controlled via \a overrideElement. +*/ +void QCPLayerable::applyAntialiasingHint(QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const +{ + if (mParentPlot && mParentPlot->notAntialiasedElements().testFlag(overrideElement)) + painter->setAntialiasing(false); + else if (mParentPlot && mParentPlot->antialiasedElements().testFlag(overrideElement)) + painter->setAntialiasing(true); + else + painter->setAntialiasing(localAntialiased); +} + +/*! \internal + + This function is called by \ref initializeParentPlot, to allow subclasses to react on the setting + of a parent plot. This is the case when 0 was passed as parent plot in the constructor, and the + parent plot is set at a later time. + + For example, QCPLayoutElement/QCPLayout hierarchies may be created independently of any + QCustomPlot at first. When they are then added to a layout inside the QCustomPlot, the top level + element of the hierarchy gets its parent plot initialized with \ref initializeParentPlot. To + propagate the parent plot to all the children of the hierarchy, the top level element then uses + this function to pass the parent plot on to its child elements. + + The default implementation does nothing. + + \see initializeParentPlot +*/ +void QCPLayerable::parentPlotInitialized(QCustomPlot *parentPlot) +{ + Q_UNUSED(parentPlot) +} + +/*! \internal + + Returns the selection category this layerable shall belong to. The selection category is used in + conjunction with \ref QCustomPlot::setInteractions to control which objects are selectable and + which aren't. + + Subclasses that don't fit any of the normal \ref QCP::Interaction values can use \ref + QCP::iSelectOther. This is what the default implementation returns. + + \see QCustomPlot::setInteractions +*/ +QCP::Interaction QCPLayerable::selectionCategory() const +{ + return QCP::iSelectOther; +} + +/*! \internal + + Returns the clipping rectangle of this layerable object. By default, this is the viewport of the + parent QCustomPlot. Specific subclasses may reimplement this function to provide different + clipping rects. + + The returned clipping rect is set on the painter before the draw function of the respective + object is called. +*/ +QRect QCPLayerable::clipRect() const +{ + if (mParentPlot) + return mParentPlot->viewport(); + else + return QRect(); +} + +/*! \internal + + This event is called when the layerable shall be selected, as a consequence of a click by the + user. Subclasses should react to it by setting their selection state appropriately. The default + implementation does nothing. + + \a event is the mouse event that caused the selection. \a additive indicates, whether the user + was holding the multi-select-modifier while performing the selection (see \ref + QCustomPlot::setMultiSelectModifier). if \a additive is true, the selection state must be toggled + (i.e. become selected when unselected and unselected when selected). + + Every selectEvent is preceded by a call to \ref selectTest, which has returned positively (i.e. + returned a value greater than 0 and less than the selection tolerance of the parent QCustomPlot). + The \a details data you output from \ref selectTest is feeded back via \a details here. You may + use it to transport any kind of information from the selectTest to the possibly subsequent + selectEvent. Usually \a details is used to transfer which part was clicked, if it is a layerable + that has multiple individually selectable parts (like QCPAxis). This way selectEvent doesn't need + to do the calculation again to find out which part was actually clicked. + + \a selectionStateChanged is an output parameter. If the pointer is non-null, this function must + set the value either to true or false, depending on whether the selection state of this layerable + was actually changed. For layerables that only are selectable as a whole and not in parts, this + is simple: if \a additive is true, \a selectionStateChanged must also be set to true, because the + selection toggles. If \a additive is false, \a selectionStateChanged is only set to true, if the + layerable was previously unselected and now is switched to the selected state. + + \see selectTest, deselectEvent +*/ +void QCPLayerable::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(additive) + Q_UNUSED(details) + Q_UNUSED(selectionStateChanged) +} + +/*! \internal + + This event is called when the layerable shall be deselected, either as consequence of a user + interaction or a call to \ref QCustomPlot::deselectAll. Subclasses should react to it by + unsetting their selection appropriately. + + just as in \ref selectEvent, the output parameter \a selectionStateChanged (if non-null), must + return true or false when the selection state of this layerable has changed or not changed, + respectively. + + \see selectTest, selectEvent +*/ +void QCPLayerable::deselectEvent(bool *selectionStateChanged) +{ + Q_UNUSED(selectionStateChanged) +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPRange +//////////////////////////////////////////////////////////////////////////////////////////////////// +/*! \class QCPRange + \brief Represents the range an axis is encompassing. + + contains a \a lower and \a upper double value and provides convenience input, output and + modification functions. + + \see QCPAxis::setRange +*/ + +/*! + Minimum range size (\a upper - \a lower) the range changing functions will accept. Smaller + intervals would cause errors due to the 11-bit exponent of double precision numbers, + corresponding to a minimum magnitude of roughly 1e-308. + \see validRange, maxRange +*/ +const double QCPRange::minRange = 1e-280; + +/*! + Maximum values (negative and positive) the range will accept in range-changing functions. + Larger absolute values would cause errors due to the 11-bit exponent of double precision numbers, + corresponding to a maximum magnitude of roughly 1e308. + Since the number of planck-volumes in the entire visible universe is only ~1e183, this should + be enough. + \see validRange, minRange +*/ +const double QCPRange::maxRange = 1e250; + +/*! + Constructs a range with \a lower and \a upper set to zero. +*/ +QCPRange::QCPRange() : + lower(0), + upper(0) +{ +} + +/*! \overload + Constructs a range with the specified \a lower and \a upper values. +*/ +QCPRange::QCPRange(double lower, double upper) : + lower(lower), + upper(upper) +{ + normalize(); +} + +/*! + Returns the size of the range, i.e. \a upper-\a lower +*/ +double QCPRange::size() const +{ + return upper-lower; +} + +/*! + Returns the center of the range, i.e. (\a upper+\a lower)*0.5 +*/ +double QCPRange::center() const +{ + return (upper+lower)*0.5; +} + +/*! + Makes sure \a lower is numerically smaller than \a upper. If this is not the case, the values + are swapped. +*/ +void QCPRange::normalize() +{ + if (lower > upper) + qSwap(lower, upper); +} + +/*! + Returns a sanitized version of the range. Sanitized means for logarithmic scales, that + the range won't span the positive and negative sign domain, i.e. contain zero. Further + \a lower will always be numerically smaller (or equal) to \a upper. + + If the original range does span positive and negative sign domains or contains zero, + the returned range will try to approximate the original range as good as possible. + If the positive interval of the original range is wider than the negative interval, the + returned range will only contain the positive interval, with lower bound set to \a rangeFac or + \a rangeFac *\a upper, whichever is closer to zero. Same procedure is used if the negative interval + is wider than the positive interval, this time by changing the \a upper bound. +*/ +QCPRange QCPRange::sanitizedForLogScale() const +{ + double rangeFac = 1e-3; + QCPRange sanitizedRange(lower, upper); + sanitizedRange.normalize(); + // can't have range spanning negative and positive values in log plot, so change range to fix it + //if (qFuzzyCompare(sanitizedRange.lower+1, 1) && !qFuzzyCompare(sanitizedRange.upper+1, 1)) + if (sanitizedRange.lower == 0.0 && sanitizedRange.upper != 0.0) + { + // case lower is 0 + if (rangeFac < sanitizedRange.upper*rangeFac) + sanitizedRange.lower = rangeFac; + else + sanitizedRange.lower = sanitizedRange.upper*rangeFac; + } //else if (!qFuzzyCompare(lower+1, 1) && qFuzzyCompare(upper+1, 1)) + else if (sanitizedRange.lower != 0.0 && sanitizedRange.upper == 0.0) + { + // case upper is 0 + if (-rangeFac > sanitizedRange.lower*rangeFac) + sanitizedRange.upper = -rangeFac; + else + sanitizedRange.upper = sanitizedRange.lower*rangeFac; + } else if (sanitizedRange.lower < 0 && sanitizedRange.upper > 0) + { + // find out whether negative or positive interval is wider to decide which sign domain will be chosen + if (-sanitizedRange.lower > sanitizedRange.upper) + { + // negative is wider, do same as in case upper is 0 + if (-rangeFac > sanitizedRange.lower*rangeFac) + sanitizedRange.upper = -rangeFac; + else + sanitizedRange.upper = sanitizedRange.lower*rangeFac; + } else + { + // positive is wider, do same as in case lower is 0 + if (rangeFac < sanitizedRange.upper*rangeFac) + sanitizedRange.lower = rangeFac; + else + sanitizedRange.lower = sanitizedRange.upper*rangeFac; + } + } + // due to normalization, case lower>0 && upper<0 should never occur, because that implies upper= lower && value <= upper; +} + +/*! + Checks, whether the specified range is within valid bounds, which are defined + as QCPRange::maxRange and QCPRange::minRange. + A valid range means: + \li range bounds within -maxRange and maxRange + \li range size above minRange + \li range size below maxRange +*/ +bool QCPRange::validRange(double lower, double upper) +{ + /* + return (lower > -maxRange && + upper < maxRange && + qAbs(lower-upper) > minRange && + (lower < -minRange || lower > minRange) && + (upper < -minRange || upper > minRange)); + */ + return (lower > -maxRange && + upper < maxRange && + qAbs(lower-upper) > minRange && + qAbs(lower-upper) < maxRange); +} + +/*! + \overload + Checks, whether the specified range is within valid bounds, which are defined + as QCPRange::maxRange and QCPRange::minRange. + A valid range means: + \li range bounds within -maxRange and maxRange + \li range size above minRange + \li range size below maxRange +*/ +bool QCPRange::validRange(const QCPRange &range) +{ + /* + return (range.lower > -maxRange && + range.upper < maxRange && + qAbs(range.lower-range.upper) > minRange && + qAbs(range.lower-range.upper) < maxRange && + (range.lower < -minRange || range.lower > minRange) && + (range.upper < -minRange || range.upper > minRange)); + */ + return (range.lower > -maxRange && + range.upper < maxRange && + qAbs(range.lower-range.upper) > minRange && + qAbs(range.lower-range.upper) < maxRange); +} + + +/*! \page thelayoutsystem The Layout System + + The layout system is responsible for positioning and scaling layout elements such as axis rects, + legends and plot titles in a QCustomPlot. + + \section layoutsystem-classesandmechanisms Classes and mechanisms + + The layout system is based on the abstract base class \ref QCPLayoutElement. All objects that + take part in the layout system derive from this class, either directly or indirectly. + + Since QCPLayoutElement itself derives from \ref QCPLayerable, a layout element may draw its own + content. However, it is perfectly possible for a layout element to only serve as a structuring + and/or positioning element, not drawing anything on its own. + + \subsection layoutsystem-rects Rects of a layout element + + A layout element is a rectangular object described by two rects: the inner rect (\ref + QCPLayoutElement::rect) and the outer rect (\ref QCPLayoutElement::setOuterRect). The inner rect + is calculated automatically by applying the margin (\ref QCPLayoutElement::setMargins) inward + from the outer rect. The inner rect is meant for main content while the margin area may either be + left blank or serve for displaying peripheral graphics. For example, \ref QCPAxisRect positions + the four main axes at the sides of the inner rect, so graphs end up inside it and the axis labels + and tick labels are in the margin area. + + \subsection layoutsystem-margins Margins + + Each layout element may provide a mechanism to automatically determine its margins. Internally, + this is realized with the \ref QCPLayoutElement::calculateAutoMargin function which takes a \ref + QCP::MarginSide and returns an integer value which represents the ideal margin for the specified + side. The automatic margin will be used on the sides specified in \ref + QCPLayoutElement::setAutoMargins. By default, it is set to \ref QCP::msAll meaning automatic + margin calculation is enabled for all four sides. In this case, a minimum margin may be set with + \ref QCPLayoutElement::setMinimumMargins, to prevent the automatic margin mechanism from setting + margins smaller than desired for a specific situation. If automatic margin calculation is unset + for a specific side, the margin of that side can be controlled directy via \ref + QCPLayoutElement::setMargins. + + If multiple layout ements are arranged next to or beneath each other, it may be desirable to + align their inner rects on certain sides. Since they all might have different automatic margins, + this usually isn't the case. The class \ref QCPMarginGroup and \ref + QCPLayoutElement::setMarginGroup fix this by allowing to synchronize multiple margins. See the + documentation there for details. + + \subsection layoutsystem-layout Layouts + + As mentioned, a QCPLayoutElement may have an arbitrary number of child layout elements and in + princple can have the only purpose to manage/arrange those child elements. This is what the + subclass \ref QCPLayout specializes on. It is a QCPLayoutElement itself but has no visual + representation. It defines an interface to add, remove and manage child layout elements. + QCPLayout isn't a usable layout though, it's an abstract base class that concrete layouts derive + from, like \ref QCPLayoutGrid which arranges its child elements in a grid and \ref QCPLayoutInset + which allows placing child elements freely inside its rect. + + Since a QCPLayout is a layout element itself, it may be placed inside other layouts. This way, + complex hierarchies may be created, offering very flexible arrangements. + +
+
\image html LayoutsystemSketch0.png ""
+
\image html LayoutsystemSketch1.png ""
+
+
+ Sketch of the default QCPLayoutGrid accessible via \ref QCustomPlot::plotLayout. The left image + shows the outer and inner rect of the grid layout itself while the right image shows how two + child layout elements are placed inside the grid layout next to each other in cells (0, 0) and + (0, 1). +
+
+ + \subsection layoutsystem-plotlayout The top level plot layout + + Every QCustomPlot has one top level layout of type \ref QCPLayoutGrid. It is accessible via \ref + QCustomPlot::plotLayout and contains (directly or indirectly via other sub-layouts) all layout + elements in the QCustomPlot. By default, this top level grid layout contains a single cell which + holds the main axis rect. + + \subsection layoutsystem-examples Examples + + Adding a plot title is a typical and simple case to demonstrate basic workings of the layout system. + \code + // first we create and prepare a plot title layout element: + QCPPlotTitle *title = new QCPPlotTitle(customPlot); + title->setText("Plot Title Example"); + title->setFont(QFont("sans", 12, QFont::Bold)); + // then we add it to the main plot layout: + customPlot->plotLayout()->insertRow(0); // insert an empty row above the axis rect + customPlot->plotLayout()->addElement(0, 0, title); // insert the title in the empty cell we just created + \endcode + \image html layoutsystem-addingplottitle.png + + Arranging multiple axis rects actually is the central purpose of the layout system. + \code + customPlot->plotLayout()->clear(); // let's start from scratch and remove the default axis rect + // add the first axis rect in second row (row index 1): + customPlot->plotLayout()->addElement(1, 0, new QCPAxisRect(customPlot)); + // create a sub layout that we'll place in first row: + QCPLayoutGrid *subLayout = new QCPLayoutGrid; + customPlot->plotLayout()->addElement(0, 0, subLayout); + // add two axis rects in the sub layout next to eachother: + subLayout->addElement(0, 0, new QCPAxisRect(customPlot)); + subLayout->addElement(0, 1, new QCPAxisRect(customPlot)); + subLayout->setColumnStretchFactor(0, 3); // left axis rect shall have 60% of width + subLayout->setColumnStretchFactor(1, 2); // right one only 40% (3:2 = 60:40) + \endcode + \image html layoutsystem-multipleaxisrects.png + +*/ + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPMarginGroup +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPMarginGroup + \brief A margin group allows synchronization of margin sides if working with multiple layout elements. + + QCPMarginGroup allows you to tie a margin side of two or more layout elements together, such that + they will all have the same size, based on the largest required margin in the group. + + \n + \image html QCPMarginGroup.png "Demonstration of QCPMarginGroup" + \n + + In certain situations it is desirable that margins at specific sides are synchronized across + layout elements. For example, if one QCPAxisRect is below another one in a grid layout, it will + provide a cleaner look to the user if the left and right margins of the two axis rects are of the + same size. The left axis of the top axis rect will then be at the same horizontal position as the + left axis of the lower axis rect, making them appear aligned. The same applies for the right + axes. This is what QCPMarginGroup makes possible. + + To add/remove a specific side of a layout element to/from a margin group, use the \ref + QCPLayoutElement::setMarginGroup method. To completely break apart the margin group, either call + \ref clear, or just delete the margin group. + + \section QCPMarginGroup-example Example + + First create a margin group: + \code + QCPMarginGroup *group = new QCPMarginGroup(customPlot); + \endcode + Then set this group on the layout element sides: + \code + customPlot->axisRect(0)->setMarginGroup(QCP::msLeft|QCP::msRight, group); + customPlot->axisRect(1)->setMarginGroup(QCP::msLeft|QCP::msRight, group); + \endcode + Here, we've used the first two axis rects of the plot and synchronized their left margins with + each other and their right margins with each other. +*/ + +/* start documentation of inline functions */ + +/*! \fn QList QCPMarginGroup::elements(QCP::MarginSide side) const + + Returns a list of all layout elements that have their margin \a side associated with this margin + group. +*/ + +/* end documentation of inline functions */ + +/*! + Creates a new QCPMarginGroup instance in \a parentPlot. +*/ +QCPMarginGroup::QCPMarginGroup(QCustomPlot *parentPlot) : + QObject(parentPlot), + mParentPlot(parentPlot) +{ + mChildren.insert(QCP::msLeft, QList()); + mChildren.insert(QCP::msRight, QList()); + mChildren.insert(QCP::msTop, QList()); + mChildren.insert(QCP::msBottom, QList()); +} + +QCPMarginGroup::~QCPMarginGroup() +{ + clear(); +} + +/*! + Returns whether this margin group is empty. If this function returns true, no layout elements use + this margin group to synchronize margin sides. +*/ +bool QCPMarginGroup::isEmpty() const +{ + QHashIterator > it(mChildren); + while (it.hasNext()) + { + it.next(); + if (!it.value().isEmpty()) + return false; + } + return true; +} + +/*! + Clears this margin group. The synchronization of the margin sides that use this margin group is + lifted and they will use their individual margin sizes again. +*/ +void QCPMarginGroup::clear() +{ + // make all children remove themselves from this margin group: + QHashIterator > it(mChildren); + while (it.hasNext()) + { + it.next(); + const QList elements = it.value(); + for (int i=elements.size()-1; i>=0; --i) + elements.at(i)->setMarginGroup(it.key(), 0); // removes itself from mChildren via removeChild + } +} + +/*! \internal + + Returns the synchronized common margin for \a side. This is the margin value that will be used by + the layout element on the respective side, if it is part of this margin group. + + The common margin is calculated by requesting the automatic margin (\ref + QCPLayoutElement::calculateAutoMargin) of each element associated with \a side in this margin + group, and choosing the largest returned value. (QCPLayoutElement::minimumMargins is taken into + account, too.) +*/ +int QCPMarginGroup::commonMargin(QCP::MarginSide side) const +{ + // query all automatic margins of the layout elements in this margin group side and find maximum: + int result = 0; + const QList elements = mChildren.value(side); + for (int i=0; iautoMargins().testFlag(side)) + continue; + int m = qMax(elements.at(i)->calculateAutoMargin(side), QCP::getMarginValue(elements.at(i)->minimumMargins(), side)); + if (m > result) + result = m; + } + return result; +} + +/*! \internal + + Adds \a element to the internal list of child elements, for the margin \a side. + + This function does not modify the margin group property of \a element. +*/ +void QCPMarginGroup::addChild(QCP::MarginSide side, QCPLayoutElement *element) +{ + if (!mChildren[side].contains(element)) + mChildren[side].append(element); + else + qDebug() << Q_FUNC_INFO << "element is already child of this margin group side" << reinterpret_cast(element); +} + +/*! \internal + + Removes \a element from the internal list of child elements, for the margin \a side. + + This function does not modify the margin group property of \a element. +*/ +void QCPMarginGroup::removeChild(QCP::MarginSide side, QCPLayoutElement *element) +{ + if (!mChildren[side].removeOne(element)) + qDebug() << Q_FUNC_INFO << "element is not child of this margin group side" << reinterpret_cast(element); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayoutElement +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayoutElement + \brief The abstract base class for all objects that form \ref thelayoutsystem "the layout system". + + This is an abstract base class. As such, it can't be instantiated directly, rather use one of its subclasses. + + A Layout element is a rectangular object which can be placed in layouts. It has an outer rect + (QCPLayoutElement::outerRect) and an inner rect (\ref QCPLayoutElement::rect). The difference + between outer and inner rect is called its margin. The margin can either be set to automatic or + manual (\ref setAutoMargins) on a per-side basis. If a side is set to manual, that margin can be + set explicitly with \ref setMargins and will stay fixed at that value. If it's set to automatic, + the layout element subclass will control the value itself (via \ref calculateAutoMargin). + + Layout elements can be placed in layouts (base class QCPLayout) like QCPLayoutGrid. The top level + layout is reachable via \ref QCustomPlot::plotLayout, and is a \ref QCPLayoutGrid. Since \ref + QCPLayout itself derives from \ref QCPLayoutElement, layouts can be nested. + + Thus in QCustomPlot one can divide layout elements into two categories: The ones that are + invisible by themselves, because they don't draw anything. Their only purpose is to manage the + position and size of other layout elements. This category of layout elements usually use + QCPLayout as base class. Then there is the category of layout elements which actually draw + something. For example, QCPAxisRect, QCPLegend and QCPPlotTitle are of this category. This does + not necessarily mean that the latter category can't have child layout elements. QCPLegend for + instance, actually derives from QCPLayoutGrid and the individual legend items are child layout + elements in the grid layout. +*/ + +/* start documentation of inline functions */ + +/*! \fn QCPLayout *QCPLayoutElement::layout() const + + Returns the parent layout of this layout element. +*/ + +/*! \fn QRect QCPLayoutElement::rect() const + + Returns the inner rect of this layout element. The inner rect is the outer rect (\ref + setOuterRect) shrinked by the margins (\ref setMargins, \ref setAutoMargins). + + In some cases, the area between outer and inner rect is left blank. In other cases the margin + area is used to display peripheral graphics while the main content is in the inner rect. This is + where automatic margin calculation becomes interesting because it allows the layout element to + adapt the margins to the peripheral graphics it wants to draw. For example, \ref QCPAxisRect + draws the axis labels and tick labels in the margin area, thus needs to adjust the margins (if + \ref setAutoMargins is enabled) according to the space required by the labels of the axes. +*/ + +/*! \fn virtual void QCPLayoutElement::mousePressEvent(QMouseEvent *event) + + This event is called, if the mouse was pressed while being inside the outer rect of this layout + element. +*/ + +/*! \fn virtual void QCPLayoutElement::mouseMoveEvent(QMouseEvent *event) + + This event is called, if the mouse is moved inside the outer rect of this layout element. +*/ + +/*! \fn virtual void QCPLayoutElement::mouseReleaseEvent(QMouseEvent *event) + + This event is called, if the mouse was previously pressed inside the outer rect of this layout + element and is now released. +*/ + +/*! \fn virtual void QCPLayoutElement::mouseDoubleClickEvent(QMouseEvent *event) + + This event is called, if the mouse is double-clicked inside the outer rect of this layout + element. +*/ + +/*! \fn virtual void QCPLayoutElement::wheelEvent(QWheelEvent *event) + + This event is called, if the mouse wheel is scrolled while the cursor is inside the rect of this + layout element. +*/ + +/* end documentation of inline functions */ + +/*! + Creates an instance of QCPLayoutElement and sets default values. +*/ +QCPLayoutElement::QCPLayoutElement(QCustomPlot *parentPlot) : + QCPLayerable(parentPlot), // parenthood is changed as soon as layout element gets inserted into a layout (except for top level layout) + mParentLayout(0), + mMinimumSize(), + mMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX), + mRect(0, 0, 0, 0), + mOuterRect(0, 0, 0, 0), + mMargins(0, 0, 0, 0), + mMinimumMargins(0, 0, 0, 0), + mAutoMargins(QCP::msAll) +{ +} + +QCPLayoutElement::~QCPLayoutElement() +{ + setMarginGroup(QCP::msAll, 0); // unregister at margin groups, if there are any + // unregister at layout: + if (qobject_cast(mParentLayout)) // the qobject_cast is just a safeguard in case the layout forgets to call clear() in its dtor and this dtor is called by QObject dtor + mParentLayout->take(this); +} + +/*! + Sets the outer rect of this layout element. If the layout element is inside a layout, the layout + sets the position and size of this layout element using this function. + + Calling this function externally has no effect, since the layout will overwrite any changes to + the outer rect upon the next replot. + + The layout element will adapt its inner \ref rect by applying the margins inward to the outer rect. + + \see rect +*/ +void QCPLayoutElement::setOuterRect(const QRect &rect) +{ + if (mOuterRect != rect) + { + mOuterRect = rect; + mRect = mOuterRect.adjusted(mMargins.left(), mMargins.top(), -mMargins.right(), -mMargins.bottom()); + } +} + +/*! + Sets the margins of this layout element. If \ref setAutoMargins is disabled for some or all + sides, this function is used to manually set the margin on those sides. Sides that are still set + to be handled automatically are ignored and may have any value in \a margins. + + The margin is the distance between the outer rect (controlled by the parent layout via \ref + setOuterRect) and the inner \ref rect (which usually contains the main content of this layout + element). + + \see setAutoMargins +*/ +void QCPLayoutElement::setMargins(const QMargins &margins) +{ + if (mMargins != margins) + { + mMargins = margins; + mRect = mOuterRect.adjusted(mMargins.left(), mMargins.top(), -mMargins.right(), -mMargins.bottom()); + } +} + +/*! + If \ref setAutoMargins is enabled on some or all margins, this function is used to provide + minimum values for those margins. + + The minimum values are not enforced on margin sides that were set to be under manual control via + \ref setAutoMargins. + + \see setAutoMargins +*/ +void QCPLayoutElement::setMinimumMargins(const QMargins &margins) +{ + if (mMinimumMargins != margins) + { + mMinimumMargins = margins; + } +} + +/*! + Sets on which sides the margin shall be calculated automatically. If a side is calculated + automatically, a minimum margin value may be provided with \ref setMinimumMargins. If a side is + set to be controlled manually, the value may be specified with \ref setMargins. + + Margin sides that are under automatic control may participate in a \ref QCPMarginGroup (see \ref + setMarginGroup), to synchronize (align) it with other layout elements in the plot. + + \see setMinimumMargins, setMargins +*/ +void QCPLayoutElement::setAutoMargins(QCP::MarginSides sides) +{ + mAutoMargins = sides; +} + +/*! + Sets the minimum size for the inner \ref rect of this layout element. A parent layout tries to + respect the \a size here by changing row/column sizes in the layout accordingly. + + If the parent layout size is not sufficient to satisfy all minimum size constraints of its child + layout elements, the layout may set a size that is actually smaller than \a size. QCustomPlot + propagates the layout's size constraints to the outside by setting its own minimum QWidget size + accordingly, so violations of \a size should be exceptions. +*/ +void QCPLayoutElement::setMinimumSize(const QSize &size) +{ + if (mMinimumSize != size) + { + mMinimumSize = size; + if (mParentLayout) + mParentLayout->sizeConstraintsChanged(); + } +} + +/*! \overload + + Sets the minimum size for the inner \ref rect of this layout element. +*/ +void QCPLayoutElement::setMinimumSize(int width, int height) +{ + setMinimumSize(QSize(width, height)); +} + +/*! + Sets the maximum size for the inner \ref rect of this layout element. A parent layout tries to + respect the \a size here by changing row/column sizes in the layout accordingly. +*/ +void QCPLayoutElement::setMaximumSize(const QSize &size) +{ + if (mMaximumSize != size) + { + mMaximumSize = size; + if (mParentLayout) + mParentLayout->sizeConstraintsChanged(); + } +} + +/*! \overload + + Sets the maximum size for the inner \ref rect of this layout element. +*/ +void QCPLayoutElement::setMaximumSize(int width, int height) +{ + setMaximumSize(QSize(width, height)); +} + +/*! + Sets the margin \a group of the specified margin \a sides. + + Margin groups allow synchronizing specified margins across layout elements, see the documentation + of \ref QCPMarginGroup. + + To unset the margin group of \a sides, set \a group to 0. + + Note that margin groups only work for margin sides that are set to automatic (\ref + setAutoMargins). +*/ +void QCPLayoutElement::setMarginGroup(QCP::MarginSides sides, QCPMarginGroup *group) +{ + QVector sideVector; + if (sides.testFlag(QCP::msLeft)) sideVector.append(QCP::msLeft); + if (sides.testFlag(QCP::msRight)) sideVector.append(QCP::msRight); + if (sides.testFlag(QCP::msTop)) sideVector.append(QCP::msTop); + if (sides.testFlag(QCP::msBottom)) sideVector.append(QCP::msBottom); + + for (int i=0; iremoveChild(side, this); + + if (!group) // if setting to 0, remove hash entry. Else set hash entry to new group and register there + { + mMarginGroups.remove(side); + } else // setting to a new group + { + mMarginGroups[side] = group; + group->addChild(side, this); + } + } + } +} + +/*! + Updates the layout element and sub-elements. This function is automatically called upon replot by + the parent layout element. + + Layout elements that have child elements should call the \ref update method of their child + elements. + + The default implementation executes the automatic margin mechanism, so subclasses should make + sure to call the base class implementation. +*/ +void QCPLayoutElement::update() +{ + if (mAutoMargins != QCP::msNone) + { + // set the margins of this layout element according to automatic margin calculation, either directly or via a margin group: + QMargins newMargins = mMargins; + QVector marginSides = QVector() << QCP::msLeft << QCP::msRight << QCP::msTop << QCP::msBottom; + for (int i=0; icommonMargin(side)); // this side is part of a margin group, so get the margin value from that group + else + QCP::setMarginValue(newMargins, side, calculateAutoMargin(side)); // this side is not part of a group, so calculate the value directly + // apply minimum margin restrictions: + if (QCP::getMarginValue(newMargins, side) < QCP::getMarginValue(mMinimumMargins, side)) + QCP::setMarginValue(newMargins, side, QCP::getMarginValue(mMinimumMargins, side)); + } + } + setMargins(newMargins); + } +} + +/*! + Returns the minimum size this layout element (the inner \ref rect) may be compressed to. + + if a minimum size (\ref setMinimumSize) was not set manually, parent layouts consult this + function to determine the minimum allowed size of this layout element. (A manual minimum size is + considered set if it is non-zero.) +*/ +QSize QCPLayoutElement::minimumSizeHint() const +{ + return mMinimumSize; +} + +/*! + Returns the maximum size this layout element (the inner \ref rect) may be expanded to. + + if a maximum size (\ref setMaximumSize) was not set manually, parent layouts consult this + function to determine the maximum allowed size of this layout element. (A manual maximum size is + considered set if it is smaller than Qt's QWIDGETSIZE_MAX.) +*/ +QSize QCPLayoutElement::maximumSizeHint() const +{ + return mMaximumSize; +} + +/*! + Returns a list of all child elements in this layout element. If \a recursive is true, all + sub-child elements are included in the list, too. + + Note that there may be entries with value 0 in the returned list. (For example, QCPLayoutGrid may have + empty cells which yield 0 at the respective index.) +*/ +QList QCPLayoutElement::elements(bool recursive) const +{ + Q_UNUSED(recursive) + return QList(); +} + +/*! + Layout elements are sensitive to events inside their outer rect. If \a pos is within the outer + rect, this method returns a value corresponding to 0.99 times the parent plot's selection + tolerance. However, layout elements are not selectable by default. So if \a onlySelectable is + true, -1.0 is returned. + + See \ref QCPLayerable::selectTest for a general explanation of this virtual method. + + QCPLayoutElement subclasses may reimplement this method to provide more specific selection test + behaviour. +*/ +double QCPLayoutElement::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + + if (onlySelectable) + return -1; + + if (QRectF(mOuterRect).contains(pos)) + { + if (mParentPlot) + return mParentPlot->selectionTolerance()*0.99; + else + { + qDebug() << Q_FUNC_INFO << "parent plot not defined"; + return -1; + } + } else + return -1; +} + +/*! \internal + + propagates the parent plot initialization to all child elements, by calling \ref + QCPLayerable::initializeParentPlot on them. +*/ +void QCPLayoutElement::parentPlotInitialized(QCustomPlot *parentPlot) +{ + QList els = elements(false); + for (int i=0; iparentPlot()) + els.at(i)->initializeParentPlot(parentPlot); + } +} + +/*! \internal + + Returns the margin size for this \a side. It is used if automatic margins is enabled for this \a + side (see \ref setAutoMargins). If a minimum margin was set with \ref setMinimumMargins, the + returned value will not be smaller than the specified minimum margin. + + The default implementation just returns the respective manual margin (\ref setMargins) or the + minimum margin, whichever is larger. +*/ +int QCPLayoutElement::calculateAutoMargin(QCP::MarginSide side) +{ + return qMax(QCP::getMarginValue(mMargins, side), QCP::getMarginValue(mMinimumMargins, side)); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayout +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLayout + \brief The abstract base class for layouts + + This is an abstract base class for layout elements whose main purpose is to define the position + and size of other child layout elements. In most cases, layouts don't draw anything themselves + (but there are exceptions to this, e.g. QCPLegend). + + QCPLayout derives from QCPLayoutElement, and thus can itself be nested in other layouts. + + QCPLayout introduces a common interface for accessing and manipulating the child elements. Those + functions are most notably \ref elementCount, \ref elementAt, \ref takeAt, \ref take, \ref + simplify, \ref removeAt, \ref remove and \ref clear. Individual subclasses may add more functions + to this interface which are more specialized to the form of the layout. For example, \ref + QCPLayoutGrid adds functions that take row and column indices to access cells of the layout grid + more conveniently. + + Since this is an abstract base class, you can't instantiate it directly. Rather use one of its + subclasses like QCPLayoutGrid or QCPLayoutInset. + + For a general introduction to the layout system, see the dedicated documentation page \ref + thelayoutsystem "The Layout System". +*/ + +/* start documentation of pure virtual functions */ + +/*! \fn virtual int QCPLayout::elementCount() const = 0 + + Returns the number of elements/cells in the layout. + + \see elements, elementAt +*/ + +/*! \fn virtual QCPLayoutElement* QCPLayout::elementAt(int index) const = 0 + + Returns the element in the cell with the given \a index. If \a index is invalid, returns 0. + + Note that even if \a index is valid, the respective cell may be empty in some layouts (e.g. + QCPLayoutGrid), so this function may return 0 in those cases. You may use this function to check + whether a cell is empty or not. + + \see elements, elementCount, takeAt +*/ + +/*! \fn virtual QCPLayoutElement* QCPLayout::takeAt(int index) = 0 + + Removes the element with the given \a index from the layout and returns it. + + If the \a index is invalid or the cell with that index is empty, returns 0. + + Note that some layouts don't remove the respective cell right away but leave an empty cell after + successful removal of the layout element. To collapse empty cells, use \ref simplify. + + \see elementAt, take +*/ + +/*! \fn virtual bool QCPLayout::take(QCPLayoutElement* element) = 0 + + Removes the specified \a element from the layout and returns true on success. + + If the \a element isn't in this layout, returns false. + + Note that some layouts don't remove the respective cell right away but leave an empty cell after + successful removal of the layout element. To collapse empty cells, use \ref simplify. + + \see takeAt +*/ + +/* end documentation of pure virtual functions */ + +/*! + Creates an instance of QCPLayoutElement and sets default values. Note that since QCPLayoutElement + is an abstract base class, it can't be instantiated directly. +*/ +QCPLayout::QCPLayout() +{ +} + +/*! + First calls the QCPLayoutElement::update base class implementation to update the margins on this + layout. + + Then calls \ref updateLayout which subclasses reimplement to reposition and resize their cells. + + Finally, \ref update is called on all child elements. +*/ +void QCPLayout::update() +{ + QCPLayoutElement::update(); // recalculates (auto-)margins + + // set child element rects according to layout: + updateLayout(); + + // propagate update call to child elements: + for (int i=0; iupdate(); + } +} + +/* inherits documentation from base class */ +QList QCPLayout::elements(bool recursive) const +{ + int c = elementCount(); + QList result; +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + result.reserve(c); +#endif + for (int i=0; ielements(recursive); + } + } + return result; +} + +/*! + Simplifies the layout by collapsing empty cells. The exact behavior depends on subclasses, the + default implementation does nothing. + + Not all layouts need simplification. For example, QCPLayoutInset doesn't use explicit + simplification while QCPLayoutGrid does. +*/ +void QCPLayout::simplify() +{ +} + +/*! + Removes and deletes the element at the provided \a index. Returns true on success. If \a index is + invalid or points to an empty cell, returns false. + + This function internally uses \ref takeAt to remove the element from the layout and then deletes + the returned element. + + \see remove, takeAt +*/ +bool QCPLayout::removeAt(int index) +{ + if (QCPLayoutElement *el = takeAt(index)) + { + delete el; + return true; + } else + return false; +} + +/*! + Removes and deletes the provided \a element. Returns true on success. If \a element is not in the + layout, returns false. + + This function internally uses \ref takeAt to remove the element from the layout and then deletes + the element. + + \see removeAt, take +*/ +bool QCPLayout::remove(QCPLayoutElement *element) +{ + if (take(element)) + { + delete element; + return true; + } else + return false; +} + +/*! + Removes and deletes all layout elements in this layout. + + \see remove, removeAt +*/ +void QCPLayout::clear() +{ + for (int i=elementCount()-1; i>=0; --i) + { + if (elementAt(i)) + removeAt(i); + } + simplify(); +} + +/*! + Subclasses call this method to report changed (minimum/maximum) size constraints. + + If the parent of this layout is again a QCPLayout, forwards the call to the parent's \ref + sizeConstraintsChanged. If the parent is a QWidget (i.e. is the \ref QCustomPlot::plotLayout of + QCustomPlot), calls QWidget::updateGeometry, so if the QCustomPlot widget is inside a Qt QLayout, + it may update itself and resize cells accordingly. +*/ +void QCPLayout::sizeConstraintsChanged() const +{ + if (QWidget *w = qobject_cast(parent())) + w->updateGeometry(); + else if (QCPLayout *l = qobject_cast(parent())) + l->sizeConstraintsChanged(); +} + +/*! \internal + + Subclasses reimplement this method to update the position and sizes of the child elements/cells + via calling their \ref QCPLayoutElement::setOuterRect. The default implementation does nothing. + + The geometry used as a reference is the inner \ref rect of this layout. Child elements should stay + within that rect. + + \ref getSectionSizes may help with the reimplementation of this function. + + \see update +*/ +void QCPLayout::updateLayout() +{ +} + + +/*! \internal + + Associates \a el with this layout. This is done by setting the \ref QCPLayoutElement::layout, the + \ref QCPLayerable::parentLayerable and the QObject parent to this layout. + + Further, if \a el didn't previously have a parent plot, calls \ref + QCPLayerable::initializeParentPlot on \a el to set the paret plot. + + This method is used by subclass specific methods that add elements to the layout. Note that this + method only changes properties in \a el. The removal from the old layout and the insertion into + the new layout must be done additionally. +*/ +void QCPLayout::adoptElement(QCPLayoutElement *el) +{ + if (el) + { + el->mParentLayout = this; + el->setParentLayerable(this); + el->setParent(this); + if (!el->parentPlot()) + el->initializeParentPlot(mParentPlot); + } else + qDebug() << Q_FUNC_INFO << "Null element passed"; +} + +/*! \internal + + Disassociates \a el from this layout. This is done by setting the \ref QCPLayoutElement::layout + and the \ref QCPLayerable::parentLayerable to zero. The QObject parent is set to the parent + QCustomPlot. + + This method is used by subclass specific methods that remove elements from the layout (e.g. \ref + take or \ref takeAt). Note that this method only changes properties in \a el. The removal from + the old layout must be done additionally. +*/ +void QCPLayout::releaseElement(QCPLayoutElement *el) +{ + if (el) + { + el->mParentLayout = 0; + el->setParentLayerable(0); + el->setParent(mParentPlot); + // Note: Don't initializeParentPlot(0) here, because layout element will stay in same parent plot + } else + qDebug() << Q_FUNC_INFO << "Null element passed"; +} + +/*! \internal + + This is a helper function for the implementation of \ref updateLayout in subclasses. + + It calculates the sizes of one-dimensional sections with provided constraints on maximum section + sizes, minimum section sizes, relative stretch factors and the final total size of all sections. + + The QVector entries refer to the sections. Thus all QVectors must have the same size. + + \a maxSizes gives the maximum allowed size of each section. If there shall be no maximum size + imposed, set all vector values to Qt's QWIDGETSIZE_MAX. + + \a minSizes gives the minimum allowed size of each section. If there shall be no minimum size + imposed, set all vector values to zero. If the \a minSizes entries add up to a value greater than + \a totalSize, sections will be scaled smaller than the proposed minimum sizes. (In other words, + not exceeding the allowed total size is taken to be more important than not going below minimum + section sizes.) + + \a stretchFactors give the relative proportions of the sections to each other. If all sections + shall be scaled equally, set all values equal. If the first section shall be double the size of + each individual other section, set the first number of \a stretchFactors to double the value of + the other individual values (e.g. {2, 1, 1, 1}). + + \a totalSize is the value that the final section sizes will add up to. Due to rounding, the + actual sum may differ slightly. If you want the section sizes to sum up to exactly that value, + you could distribute the remaining difference on the sections. + + The return value is a QVector containing the section sizes. +*/ +QVector QCPLayout::getSectionSizes(QVector maxSizes, QVector minSizes, QVector stretchFactors, int totalSize) const +{ + if (maxSizes.size() != minSizes.size() || minSizes.size() != stretchFactors.size()) + { + qDebug() << Q_FUNC_INFO << "Passed vector sizes aren't equal:" << maxSizes << minSizes << stretchFactors; + return QVector(); + } + if (stretchFactors.isEmpty()) + return QVector(); + int sectionCount = stretchFactors.size(); + QVector sectionSizes(sectionCount); + // if provided total size is forced smaller than total minimum size, ignore minimum sizes (squeeze sections): + int minSizeSum = 0; + for (int i=0; i minimumLockedSections; + QList unfinishedSections; + for (int i=0; i result(sectionCount); + for (int i=0; i= 0 && row < mElements.size()) + { + if (column >= 0 && column < mElements.first().size()) + { + if (QCPLayoutElement *result = mElements.at(row).at(column)) + return result; + else + qDebug() << Q_FUNC_INFO << "Requested cell is empty. Row:" << row << "Column:" << column; + } else + qDebug() << Q_FUNC_INFO << "Invalid column. Row:" << row << "Column:" << column; + } else + qDebug() << Q_FUNC_INFO << "Invalid row. Row:" << row << "Column:" << column; + return 0; +} + +/*! + Returns the number of rows in the layout. + + \see columnCount +*/ +int QCPLayoutGrid::rowCount() const +{ + return mElements.size(); +} + +/*! + Returns the number of columns in the layout. + + \see rowCount +*/ +int QCPLayoutGrid::columnCount() const +{ + if (mElements.size() > 0) + return mElements.first().size(); + else + return 0; +} + +/*! + Adds the \a element to cell with \a row and \a column. If \a element is already in a layout, it + is first removed from there. If \a row or \a column don't exist yet, the layout is expanded + accordingly. + + Returns true if the element was added successfully, i.e. if the cell at \a row and \a column + didn't already have an element. + + \see element, hasElement, take, remove +*/ +bool QCPLayoutGrid::addElement(int row, int column, QCPLayoutElement *element) +{ + if (element) + { + if (!hasElement(row, column)) + { + if (element->layout()) // remove from old layout first + element->layout()->take(element); + expandTo(row+1, column+1); + mElements[row][column] = element; + adoptElement(element); + return true; + } else + qDebug() << Q_FUNC_INFO << "There is already an element in the specified row/column:" << row << column; + } else + qDebug() << Q_FUNC_INFO << "Can't add null element to row/column:" << row << column; + return false; +} + +/*! + Returns whether the cell at \a row and \a column exists and contains a valid element, i.e. isn't + empty. + + \see element +*/ +bool QCPLayoutGrid::hasElement(int row, int column) +{ + if (row >= 0 && row < rowCount() && column >= 0 && column < columnCount()) + return mElements.at(row).at(column); + else + return false; +} + +/*! + Sets the stretch \a factor of \a column. + + Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond + their minimum and maximum widths/heights (\ref QCPLayoutElement::setMinimumSize, \ref + QCPLayoutElement::setMaximumSize), regardless of the stretch factor. + + The default stretch factor of newly created rows/columns is 1. + + \see setColumnStretchFactors, setRowStretchFactor +*/ +void QCPLayoutGrid::setColumnStretchFactor(int column, double factor) +{ + if (column >= 0 && column < columnCount()) + { + if (factor > 0) + mColumnStretchFactors[column] = factor; + else + qDebug() << Q_FUNC_INFO << "Invalid stretch factor, must be positive:" << factor; + } else + qDebug() << Q_FUNC_INFO << "Invalid column:" << column; +} + +/*! + Sets the stretch \a factors of all columns. \a factors must have the size \ref columnCount. + + Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond + their minimum and maximum widths/heights (\ref QCPLayoutElement::setMinimumSize, \ref + QCPLayoutElement::setMaximumSize), regardless of the stretch factor. + + The default stretch factor of newly created rows/columns is 1. + + \see setColumnStretchFactor, setRowStretchFactors +*/ +void QCPLayoutGrid::setColumnStretchFactors(const QList &factors) +{ + if (factors.size() == mColumnStretchFactors.size()) + { + mColumnStretchFactors = factors; + for (int i=0; i= 0 && row < rowCount()) + { + if (factor > 0) + mRowStretchFactors[row] = factor; + else + qDebug() << Q_FUNC_INFO << "Invalid stretch factor, must be positive:" << factor; + } else + qDebug() << Q_FUNC_INFO << "Invalid row:" << row; +} + +/*! + Sets the stretch \a factors of all rows. \a factors must have the size \ref rowCount. + + Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond + their minimum and maximum widths/heights (\ref QCPLayoutElement::setMinimumSize, \ref + QCPLayoutElement::setMaximumSize), regardless of the stretch factor. + + The default stretch factor of newly created rows/columns is 1. + + \see setRowStretchFactor, setColumnStretchFactors +*/ +void QCPLayoutGrid::setRowStretchFactors(const QList &factors) +{ + if (factors.size() == mRowStretchFactors.size()) + { + mRowStretchFactors = factors; + for (int i=0; i()); + mRowStretchFactors.append(1); + } + // go through rows and expand columns as necessary: + int newColCount = qMax(columnCount(), newColumnCount); + for (int i=0; i rowCount()) + newIndex = rowCount(); + + mRowStretchFactors.insert(newIndex, 1); + QList newRow; + for (int col=0; col columnCount()) + newIndex = columnCount(); + + mColumnStretchFactors.insert(newIndex, 1); + for (int row=0; row minColWidths, minRowHeights, maxColWidths, maxRowHeights; + getMinimumRowColSizes(&minColWidths, &minRowHeights); + getMaximumRowColSizes(&maxColWidths, &maxRowHeights); + + int totalRowSpacing = (rowCount()-1) * mRowSpacing; + int totalColSpacing = (columnCount()-1) * mColumnSpacing; + QVector colWidths = getSectionSizes(maxColWidths, minColWidths, mColumnStretchFactors.toVector(), mRect.width()-totalColSpacing); + QVector rowHeights = getSectionSizes(maxRowHeights, minRowHeights, mRowStretchFactors.toVector(), mRect.height()-totalRowSpacing); + + // go through cells and set rects accordingly: + int yOffset = mRect.top(); + for (int row=0; row 0) + yOffset += rowHeights.at(row-1)+mRowSpacing; + int xOffset = mRect.left(); + for (int col=0; col 0) + xOffset += colWidths.at(col-1)+mColumnSpacing; + if (mElements.at(row).at(col)) + mElements.at(row).at(col)->setOuterRect(QRect(xOffset, yOffset, colWidths.at(col), rowHeights.at(row))); + } + } +} + +/* inherits documentation from base class */ +int QCPLayoutGrid::elementCount() const +{ + return rowCount()*columnCount(); +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutGrid::elementAt(int index) const +{ + if (index >= 0 && index < elementCount()) + return mElements.at(index / columnCount()).at(index % columnCount()); + else + return 0; +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutGrid::takeAt(int index) +{ + if (QCPLayoutElement *el = elementAt(index)) + { + releaseElement(el); + mElements[index / columnCount()][index % columnCount()] = 0; + return el; + } else + { + qDebug() << Q_FUNC_INFO << "Attempt to take invalid index:" << index; + return 0; + } +} + +/* inherits documentation from base class */ +bool QCPLayoutGrid::take(QCPLayoutElement *element) +{ + if (element) + { + for (int i=0; i QCPLayoutGrid::elements(bool recursive) const +{ + QList result; + int colC = columnCount(); + int rowC = rowCount(); +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + result.reserve(colC*rowC); +#endif + for (int row=0; rowelements(recursive); + } + } + return result; +} + +/*! + Simplifies the layout by collapsing rows and columns which only contain empty cells. +*/ +void QCPLayoutGrid::simplify() +{ + // remove rows with only empty cells: + for (int row=rowCount()-1; row>=0; --row) + { + bool hasElements = false; + for (int col=0; col=0; --col) + { + bool hasElements = false; + for (int row=0; row minColWidths, minRowHeights; + getMinimumRowColSizes(&minColWidths, &minRowHeights); + QSize result(0, 0); + for (int i=0; i maxColWidths, maxRowHeights; + getMaximumRowColSizes(&maxColWidths, &maxRowHeights); + + QSize result(0, 0); + for (int i=0; i *minColWidths, QVector *minRowHeights) const +{ + *minColWidths = QVector(columnCount(), 0); + *minRowHeights = QVector(rowCount(), 0); + for (int row=0; rowminimumSizeHint(); + QSize min = mElements.at(row).at(col)->minimumSize(); + QSize final(min.width() > 0 ? min.width() : minHint.width(), min.height() > 0 ? min.height() : minHint.height()); + if (minColWidths->at(col) < final.width()) + (*minColWidths)[col] = final.width(); + if (minRowHeights->at(row) < final.height()) + (*minRowHeights)[row] = final.height(); + } + } + } +} + +/*! \internal + + Places the maximum column widths and row heights into \a maxColWidths and \a maxRowHeights + respectively. + + The maximum height of a row is the smallest maximum height of any element in that row. The + maximum width of a column is the smallest maximum width of any element in that column. + + This is a helper function for \ref updateLayout. + + \see getMinimumRowColSizes +*/ +void QCPLayoutGrid::getMaximumRowColSizes(QVector *maxColWidths, QVector *maxRowHeights) const +{ + *maxColWidths = QVector(columnCount(), QWIDGETSIZE_MAX); + *maxRowHeights = QVector(rowCount(), QWIDGETSIZE_MAX); + for (int row=0; rowmaximumSizeHint(); + QSize max = mElements.at(row).at(col)->maximumSize(); + QSize final(max.width() < QWIDGETSIZE_MAX ? max.width() : maxHint.width(), max.height() < QWIDGETSIZE_MAX ? max.height() : maxHint.height()); + if (maxColWidths->at(col) > final.width()) + (*maxColWidths)[col] = final.width(); + if (maxRowHeights->at(row) > final.height()) + (*maxRowHeights)[row] = final.height(); + } + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLayoutInset +//////////////////////////////////////////////////////////////////////////////////////////////////// +/*! \class QCPLayoutInset + \brief A layout that places child elements aligned to the border or arbitrarily positioned + + Elements are placed either aligned to the border or at arbitrary position in the area of the + layout. Which placement applies is controlled with the \ref InsetPlacement (\ref + setInsetPlacement). + + Elements are added via \ref addElement(QCPLayoutElement *element, Qt::Alignment alignment) or + addElement(QCPLayoutElement *element, const QRectF &rect). If the first method is used, the inset + placement will default to \ref ipBorderAligned and the element will be aligned according to the + \a alignment parameter. The second method defaults to \ref ipFree and allows placing elements at + arbitrary position and size, defined by \a rect. + + The alignment or rect can be set via \ref setInsetAlignment or \ref setInsetRect, respectively. + + This is the layout that every QCPAxisRect has as \ref QCPAxisRect::insetLayout. +*/ + +/* start documentation of inline functions */ + +/*! \fn virtual void QCPLayoutInset::simplify() + + The QCPInsetLayout does not need simplification since it can never have empty cells due to its + linear index structure. This method does nothing. +*/ + +/* end documentation of inline functions */ + +/*! + Creates an instance of QCPLayoutInset and sets default values. +*/ +QCPLayoutInset::QCPLayoutInset() +{ +} + +QCPLayoutInset::~QCPLayoutInset() +{ + // clear all child layout elements. This is important because only the specific layouts know how + // to handle removing elements (clear calls virtual removeAt method to do that). + clear(); +} + +/*! + Returns the placement type of the element with the specified \a index. +*/ +QCPLayoutInset::InsetPlacement QCPLayoutInset::insetPlacement(int index) const +{ + if (elementAt(index)) + return mInsetPlacement.at(index); + else + { + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; + return ipFree; + } +} + +/*! + Returns the alignment of the element with the specified \a index. The alignment only has a + meaning, if the inset placement (\ref setInsetPlacement) is \ref ipBorderAligned. +*/ +Qt::Alignment QCPLayoutInset::insetAlignment(int index) const +{ + if (elementAt(index)) + return mInsetAlignment.at(index); + else + { + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; + return 0; + } +} + +/*! + Returns the rect of the element with the specified \a index. The rect only has a + meaning, if the inset placement (\ref setInsetPlacement) is \ref ipFree. +*/ +QRectF QCPLayoutInset::insetRect(int index) const +{ + if (elementAt(index)) + return mInsetRect.at(index); + else + { + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; + return QRectF(); + } +} + +/*! + Sets the inset placement type of the element with the specified \a index to \a placement. + + \see InsetPlacement +*/ +void QCPLayoutInset::setInsetPlacement(int index, QCPLayoutInset::InsetPlacement placement) +{ + if (elementAt(index)) + mInsetPlacement[index] = placement; + else + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; +} + +/*! + If the inset placement (\ref setInsetPlacement) is \ref ipBorderAligned, this function + is used to set the alignment of the element with the specified \a index to \a alignment. + + \a alignment is an or combination of the following alignment flags: Qt::AlignLeft, + Qt::AlignHCenter, Qt::AlighRight, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom. Any other + alignment flags will be ignored. +*/ +void QCPLayoutInset::setInsetAlignment(int index, Qt::Alignment alignment) +{ + if (elementAt(index)) + mInsetAlignment[index] = alignment; + else + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; +} + +/*! + If the inset placement (\ref setInsetPlacement) is \ref ipFree, this function is used to set the + position and size of the element with the specified \a index to \a rect. + + \a rect is given in fractions of the whole inset layout rect. So an inset with rect (0, 0, 1, 1) + will span the entire layout. An inset with rect (0.6, 0.1, 0.35, 0.35) will be in the top right + corner of the layout, with 35% width and height of the parent layout. + + Note that the minimum and maximum sizes of the embedded element (\ref + QCPLayoutElement::setMinimumSize, \ref QCPLayoutElement::setMaximumSize) are enforced. +*/ +void QCPLayoutInset::setInsetRect(int index, const QRectF &rect) +{ + if (elementAt(index)) + mInsetRect[index] = rect; + else + qDebug() << Q_FUNC_INFO << "Invalid element index:" << index; +} + +/* inherits documentation from base class */ +void QCPLayoutInset::updateLayout() +{ + for (int i=0; iminimumSizeHint(); + QSize maxSizeHint = mElements.at(i)->maximumSizeHint(); + finalMinSize.setWidth(mElements.at(i)->minimumSize().width() > 0 ? mElements.at(i)->minimumSize().width() : minSizeHint.width()); + finalMinSize.setHeight(mElements.at(i)->minimumSize().height() > 0 ? mElements.at(i)->minimumSize().height() : minSizeHint.height()); + finalMaxSize.setWidth(mElements.at(i)->maximumSize().width() < QWIDGETSIZE_MAX ? mElements.at(i)->maximumSize().width() : maxSizeHint.width()); + finalMaxSize.setHeight(mElements.at(i)->maximumSize().height() < QWIDGETSIZE_MAX ? mElements.at(i)->maximumSize().height() : maxSizeHint.height()); + if (mInsetPlacement.at(i) == ipFree) + { + insetRect = QRect(rect().x()+rect().width()*mInsetRect.at(i).x(), + rect().y()+rect().height()*mInsetRect.at(i).y(), + rect().width()*mInsetRect.at(i).width(), + rect().height()*mInsetRect.at(i).height()); + if (insetRect.size().width() < finalMinSize.width()) + insetRect.setWidth(finalMinSize.width()); + if (insetRect.size().height() < finalMinSize.height()) + insetRect.setHeight(finalMinSize.height()); + if (insetRect.size().width() > finalMaxSize.width()) + insetRect.setWidth(finalMaxSize.width()); + if (insetRect.size().height() > finalMaxSize.height()) + insetRect.setHeight(finalMaxSize.height()); + } else if (mInsetPlacement.at(i) == ipBorderAligned) + { + insetRect.setSize(finalMinSize); + Qt::Alignment al = mInsetAlignment.at(i); + if (al.testFlag(Qt::AlignLeft)) insetRect.moveLeft(rect().x()); + else if (al.testFlag(Qt::AlignRight)) insetRect.moveRight(rect().x()+rect().width()); + else insetRect.moveLeft(rect().x()+rect().width()*0.5-finalMinSize.width()*0.5); // default to Qt::AlignHCenter + if (al.testFlag(Qt::AlignTop)) insetRect.moveTop(rect().y()); + else if (al.testFlag(Qt::AlignBottom)) insetRect.moveBottom(rect().y()+rect().height()); + else insetRect.moveTop(rect().y()+rect().height()*0.5-finalMinSize.height()*0.5); // default to Qt::AlignVCenter + } + mElements.at(i)->setOuterRect(insetRect); + } +} + +/* inherits documentation from base class */ +int QCPLayoutInset::elementCount() const +{ + return mElements.size(); +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutInset::elementAt(int index) const +{ + if (index >= 0 && index < mElements.size()) + return mElements.at(index); + else + return 0; +} + +/* inherits documentation from base class */ +QCPLayoutElement *QCPLayoutInset::takeAt(int index) +{ + if (QCPLayoutElement *el = elementAt(index)) + { + releaseElement(el); + mElements.removeAt(index); + mInsetPlacement.removeAt(index); + mInsetAlignment.removeAt(index); + mInsetRect.removeAt(index); + return el; + } else + { + qDebug() << Q_FUNC_INFO << "Attempt to take invalid index:" << index; + return 0; + } +} + +/* inherits documentation from base class */ +bool QCPLayoutInset::take(QCPLayoutElement *element) +{ + if (element) + { + for (int i=0; iselectTest(pos, onlySelectable) >= 0) + return mParentPlot->selectionTolerance()*0.99; + } + return -1; +} + +/*! + Adds the specified \a element to the layout as an inset aligned at the border (\ref + setInsetAlignment is initialized with \ref ipBorderAligned). The alignment is set to \a + alignment. + + \a alignment is an or combination of the following alignment flags: Qt::AlignLeft, + Qt::AlignHCenter, Qt::AlighRight, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom. Any other + alignment flags will be ignored. + + \see addElement(QCPLayoutElement *element, const QRectF &rect) +*/ +void QCPLayoutInset::addElement(QCPLayoutElement *element, Qt::Alignment alignment) +{ + if (element) + { + if (element->layout()) // remove from old layout first + element->layout()->take(element); + mElements.append(element); + mInsetPlacement.append(ipBorderAligned); + mInsetAlignment.append(alignment); + mInsetRect.append(QRectF(0.6, 0.6, 0.4, 0.4)); + adoptElement(element); + } else + qDebug() << Q_FUNC_INFO << "Can't add null element"; +} + +/*! + Adds the specified \a element to the layout as an inset with free positioning/sizing (\ref + setInsetAlignment is initialized with \ref ipFree). The position and size is set to \a + rect. + + \a rect is given in fractions of the whole inset layout rect. So an inset with rect (0, 0, 1, 1) + will span the entire layout. An inset with rect (0.6, 0.1, 0.35, 0.35) will be in the top right + corner of the layout, with 35% width and height of the parent layout. + + \see addElement(QCPLayoutElement *element, Qt::Alignment alignment) +*/ +void QCPLayoutInset::addElement(QCPLayoutElement *element, const QRectF &rect) +{ + if (element) + { + if (element->layout()) // remove from old layout first + element->layout()->take(element); + mElements.append(element); + mInsetPlacement.append(ipFree); + mInsetAlignment.append(Qt::AlignRight|Qt::AlignTop); + mInsetRect.append(rect); + adoptElement(element); + } else + qDebug() << Q_FUNC_INFO << "Can't add null element"; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLineEnding +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLineEnding + \brief Handles the different ending decorations for line-like items + + \image html QCPLineEnding.png "The various ending styles currently supported" + + For every ending a line-like item has, an instance of this class exists. For example, QCPItemLine + has two endings which can be set with QCPItemLine::setHead and QCPItemLine::setTail. + + The styles themselves are defined via the enum QCPLineEnding::EndingStyle. Most decorations can + be modified regarding width and length, see \ref setWidth and \ref setLength. The direction of + the ending decoration (e.g. direction an arrow is pointing) is controlled by the line-like item. + For example, when both endings of a QCPItemLine are set to be arrows, they will point to opposite + directions, e.g. "outward". This can be changed by \ref setInverted, which would make the + respective arrow point inward. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify a + QCPLineEnding::EndingStyle where actually a QCPLineEnding is expected, e.g. \code + myItemLine->setHead(QCPLineEnding::esSpikeArrow) \endcode +*/ + +/*! + Creates a QCPLineEnding instance with default values (style \ref esNone). +*/ +QCPLineEnding::QCPLineEnding() : + mStyle(esNone), + mWidth(8), + mLength(10), + mInverted(false) +{ +} + +/*! + Creates a QCPLineEnding instance with the specified values. +*/ +QCPLineEnding::QCPLineEnding(QCPLineEnding::EndingStyle style, double width, double length, bool inverted) : + mStyle(style), + mWidth(width), + mLength(length), + mInverted(inverted) +{ +} + +/*! + Sets the style of the ending decoration. +*/ +void QCPLineEnding::setStyle(QCPLineEnding::EndingStyle style) +{ + mStyle = style; +} + +/*! + Sets the width of the ending decoration, if the style supports it. On arrows, for example, the + width defines the size perpendicular to the arrow's pointing direction. + + \see setLength +*/ +void QCPLineEnding::setWidth(double width) +{ + mWidth = width; +} + +/*! + Sets the length of the ending decoration, if the style supports it. On arrows, for example, the + length defines the size in pointing direction. + + \see setWidth +*/ +void QCPLineEnding::setLength(double length) +{ + mLength = length; +} + +/*! + Sets whether the ending decoration shall be inverted. For example, an arrow decoration will point + inward when \a inverted is set to true. + + Note that also the \a width direction is inverted. For symmetrical ending styles like arrows or + discs, this doesn't make a difference. However, asymmetric styles like \ref esHalfBar are + affected by it, which can be used to control to which side the half bar points to. +*/ +void QCPLineEnding::setInverted(bool inverted) +{ + mInverted = inverted; +} + +/*! \internal + + Returns the maximum pixel radius the ending decoration might cover, starting from the position + the decoration is drawn at (typically a line ending/\ref QCPItemPosition of an item). + + This is relevant for clipping. Only omit painting of the decoration when the position where the + decoration is supposed to be drawn is farther away from the clipping rect than the returned + distance. +*/ +double QCPLineEnding::boundingDistance() const +{ + switch (mStyle) + { + case esNone: + return 0; + + case esFlatArrow: + case esSpikeArrow: + case esLineArrow: + case esSkewedBar: + return qSqrt(mWidth*mWidth+mLength*mLength); // items that have width and length + + case esDisc: + case esSquare: + case esDiamond: + case esBar: + case esHalfBar: + return mWidth*1.42; // items that only have a width -> width*sqrt(2) + + } + return 0; +} + +/*! + Starting from the origin of this line ending (which is style specific), returns the length + covered by the line ending symbol, in backward direction. + + For example, the \ref esSpikeArrow has a shorter real length than a \ref esFlatArrow, even if + both have the same \ref setLength value, because the spike arrow has an inward curved back, which + reduces the length along its center axis (the drawing origin for arrows is at the tip). + + This function is used for precise, style specific placement of line endings, for example in + QCPAxes. +*/ +double QCPLineEnding::realLength() const +{ + switch (mStyle) + { + case esNone: + case esLineArrow: + case esSkewedBar: + case esBar: + case esHalfBar: + return 0; + + case esFlatArrow: + return mLength; + + case esDisc: + case esSquare: + case esDiamond: + return mWidth*0.5; + + case esSpikeArrow: + return mLength*0.8; + } + return 0; +} + +/*! \internal + + Draws the line ending with the specified \a painter at the position \a pos. The direction of the + line ending is controlled with \a dir. +*/ +void QCPLineEnding::draw(QCPPainter *painter, const QVector2D &pos, const QVector2D &dir) const +{ + if (mStyle == esNone) + return; + + QVector2D lengthVec(dir.normalized()); + if (lengthVec.isNull()) + lengthVec = QVector2D(1, 0); + QVector2D widthVec(-lengthVec.y(), lengthVec.x()); + lengthVec *= mLength*(mInverted ? -1 : 1); + widthVec *= mWidth*0.5*(mInverted ? -1 : 1); + + QPen penBackup = painter->pen(); + QBrush brushBackup = painter->brush(); + QPen miterPen = penBackup; + miterPen.setJoinStyle(Qt::MiterJoin); // to make arrow heads spikey + QBrush brush(painter->pen().color(), Qt::SolidPattern); + switch (mStyle) + { + case esNone: break; + case esFlatArrow: + { + QPointF points[3] = {pos.toPointF(), + (pos-lengthVec+widthVec).toPointF(), + (pos-lengthVec-widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 3); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esSpikeArrow: + { + QPointF points[4] = {pos.toPointF(), + (pos-lengthVec+widthVec).toPointF(), + (pos-lengthVec*0.8).toPointF(), + (pos-lengthVec-widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 4); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esLineArrow: + { + QPointF points[3] = {(pos-lengthVec+widthVec).toPointF(), + pos.toPointF(), + (pos-lengthVec-widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->drawPolyline(points, 3); + painter->setPen(penBackup); + break; + } + case esDisc: + { + painter->setBrush(brush); + painter->drawEllipse(pos.toPointF(), mWidth*0.5, mWidth*0.5); + painter->setBrush(brushBackup); + break; + } + case esSquare: + { + QVector2D widthVecPerp(-widthVec.y(), widthVec.x()); + QPointF points[4] = {(pos-widthVecPerp+widthVec).toPointF(), + (pos-widthVecPerp-widthVec).toPointF(), + (pos+widthVecPerp-widthVec).toPointF(), + (pos+widthVecPerp+widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 4); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esDiamond: + { + QVector2D widthVecPerp(-widthVec.y(), widthVec.x()); + QPointF points[4] = {(pos-widthVecPerp).toPointF(), + (pos-widthVec).toPointF(), + (pos+widthVecPerp).toPointF(), + (pos+widthVec).toPointF() + }; + painter->setPen(miterPen); + painter->setBrush(brush); + painter->drawConvexPolygon(points, 4); + painter->setBrush(brushBackup); + painter->setPen(penBackup); + break; + } + case esBar: + { + painter->drawLine((pos+widthVec).toPointF(), (pos-widthVec).toPointF()); + break; + } + case esHalfBar: + { + painter->drawLine((pos+widthVec).toPointF(), pos.toPointF()); + break; + } + case esSkewedBar: + { + if (qFuzzyIsNull(painter->pen().widthF()) && !painter->modes().testFlag(QCPPainter::pmNonCosmetic)) + { + // if drawing with cosmetic pen (perfectly thin stroke, happens only in vector exports), draw bar exactly on tip of line + painter->drawLine((pos+widthVec+lengthVec*0.2*(mInverted?-1:1)).toPointF(), + (pos-widthVec-lengthVec*0.2*(mInverted?-1:1)).toPointF()); + } else + { + // if drawing with thick (non-cosmetic) pen, shift bar a little in line direction to prevent line from sticking through bar slightly + painter->drawLine((pos+widthVec+lengthVec*0.2*(mInverted?-1:1)+dir.normalized()*qMax(1.0, (double)painter->pen().widthF())*0.5).toPointF(), + (pos-widthVec-lengthVec*0.2*(mInverted?-1:1)+dir.normalized()*qMax(1.0, (double)painter->pen().widthF())*0.5).toPointF()); + } + break; + } + } +} + +/*! \internal + \overload + + Draws the line ending. The direction is controlled with the \a angle parameter in radians. +*/ +void QCPLineEnding::draw(QCPPainter *painter, const QVector2D &pos, double angle) const +{ + draw(painter, pos, QVector2D(qCos(angle), qSin(angle))); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPGrid +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPGrid + \brief Responsible for drawing the grid of a QCPAxis. + + This class is tightly bound to QCPAxis. Every axis owns a grid instance and uses it to draw the + grid lines, sub grid lines and zero-line. You can interact with the grid of an axis via \ref + QCPAxis::grid. Normally, you don't need to create an instance of QCPGrid yourself. + + The axis and grid drawing was split into two classes to allow them to be placed on different + layers (both QCPAxis and QCPGrid inherit from QCPLayerable). Thus it is possible to have the grid + in the background and the axes in the foreground, and any plottables/items in between. This + described situation is the default setup, see the QCPLayer documentation. +*/ + +/*! + Creates a QCPGrid instance and sets default values. + + You shouldn't instantiate grids on their own, since every QCPAxis brings its own QCPGrid. +*/ +QCPGrid::QCPGrid(QCPAxis *parentAxis) : + QCPLayerable(parentAxis->parentPlot(), "", parentAxis), + mParentAxis(parentAxis) +{ + // warning: this is called in QCPAxis constructor, so parentAxis members should not be accessed/called + setParent(parentAxis); + setPen(QPen(QColor(200,200,200), 0, Qt::DotLine)); + setSubGridPen(QPen(QColor(220,220,220), 0, Qt::DotLine)); + setZeroLinePen(QPen(QColor(200,200,200), 0, Qt::SolidLine)); + setSubGridVisible(false); + setAntialiased(false); + setAntialiasedSubGrid(false); + setAntialiasedZeroLine(false); +} + +/*! + Sets whether grid lines at sub tick marks are drawn. + + \see setSubGridPen +*/ +void QCPGrid::setSubGridVisible(bool visible) +{ + mSubGridVisible = visible; +} + +/*! + Sets whether sub grid lines are drawn antialiased. +*/ +void QCPGrid::setAntialiasedSubGrid(bool enabled) +{ + mAntialiasedSubGrid = enabled; +} + +/*! + Sets whether zero lines are drawn antialiased. +*/ +void QCPGrid::setAntialiasedZeroLine(bool enabled) +{ + mAntialiasedZeroLine = enabled; +} + +/*! + Sets the pen with which (major) grid lines are drawn. +*/ +void QCPGrid::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen with which sub grid lines are drawn. +*/ +void QCPGrid::setSubGridPen(const QPen &pen) +{ + mSubGridPen = pen; +} + +/*! + Sets the pen with which zero lines are drawn. + + Zero lines are lines at value coordinate 0 which may be drawn with a different pen than other grid + lines. To disable zero lines and just draw normal grid lines at zero, set \a pen to Qt::NoPen. +*/ +void QCPGrid::setZeroLinePen(const QPen &pen) +{ + mZeroLinePen = pen; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing the major grid lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPGrid::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeGrid); +} + +/*! \internal + + Draws grid lines and sub grid lines at the positions of (sub) ticks of the parent axis, spanning + over the complete axis rect. Also draws the zero line, if appropriate (\ref setZeroLinePen). +*/ +void QCPGrid::draw(QCPPainter *painter) +{ + if (!mParentAxis) { qDebug() << Q_FUNC_INFO << "invalid parent axis"; return; } + + if (mSubGridVisible) + drawSubGridLines(painter); + drawGridLines(painter); +} + +/*! \internal + + Draws the main grid lines and possibly a zero line with the specified painter. + + This is a helper function called by \ref draw. +*/ +void QCPGrid::drawGridLines(QCPPainter *painter) const +{ + if (!mParentAxis) { qDebug() << Q_FUNC_INFO << "invalid parent axis"; return; } + + int lowTick = mParentAxis->mLowestVisibleTick; + int highTick = mParentAxis->mHighestVisibleTick; + double t; // helper variable, result of coordinate-to-pixel transforms + if (mParentAxis->orientation() == Qt::Horizontal) + { + // draw zeroline: + int zeroLineIndex = -1; + if (mZeroLinePen.style() != Qt::NoPen && mParentAxis->mRange.lower < 0 && mParentAxis->mRange.upper > 0) + { + applyAntialiasingHint(painter, mAntialiasedZeroLine, QCP::aeZeroLine); + painter->setPen(mZeroLinePen); + double epsilon = mParentAxis->range().size()*1E-6; // for comparing double to zero + for (int i=lowTick; i <= highTick; ++i) + { + if (qAbs(mParentAxis->mTickVector.at(i)) < epsilon) + { + zeroLineIndex = i; + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // x + painter->drawLine(QLineF(t, mParentAxis->mAxisRect->bottom(), t, mParentAxis->mAxisRect->top())); + break; + } + } + } + // draw grid lines: + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + for (int i=lowTick; i <= highTick; ++i) + { + if (i == zeroLineIndex) continue; // don't draw a gridline on top of the zeroline + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // x + painter->drawLine(QLineF(t, mParentAxis->mAxisRect->bottom(), t, mParentAxis->mAxisRect->top())); + } + } else + { + // draw zeroline: + int zeroLineIndex = -1; + if (mZeroLinePen.style() != Qt::NoPen && mParentAxis->mRange.lower < 0 && mParentAxis->mRange.upper > 0) + { + applyAntialiasingHint(painter, mAntialiasedZeroLine, QCP::aeZeroLine); + painter->setPen(mZeroLinePen); + double epsilon = mParentAxis->mRange.size()*1E-6; // for comparing double to zero + for (int i=lowTick; i <= highTick; ++i) + { + if (qAbs(mParentAxis->mTickVector.at(i)) < epsilon) + { + zeroLineIndex = i; + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // y + painter->drawLine(QLineF(mParentAxis->mAxisRect->left(), t, mParentAxis->mAxisRect->right(), t)); + break; + } + } + } + // draw grid lines: + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + for (int i=lowTick; i <= highTick; ++i) + { + if (i == zeroLineIndex) continue; // don't draw a gridline on top of the zeroline + t = mParentAxis->coordToPixel(mParentAxis->mTickVector.at(i)); // y + painter->drawLine(QLineF(mParentAxis->mAxisRect->left(), t, mParentAxis->mAxisRect->right(), t)); + } + } +} + +/*! \internal + + Draws the sub grid lines with the specified painter. + + This is a helper function called by \ref draw. +*/ +void QCPGrid::drawSubGridLines(QCPPainter *painter) const +{ + if (!mParentAxis) { qDebug() << Q_FUNC_INFO << "invalid parent axis"; return; } + + applyAntialiasingHint(painter, mAntialiasedSubGrid, QCP::aeSubGrid); + double t; // helper variable, result of coordinate-to-pixel transforms + painter->setPen(mSubGridPen); + if (mParentAxis->orientation() == Qt::Horizontal) + { + for (int i=0; imSubTickVector.size(); ++i) + { + t = mParentAxis->coordToPixel(mParentAxis->mSubTickVector.at(i)); // x + painter->drawLine(QLineF(t, mParentAxis->mAxisRect->bottom(), t, mParentAxis->mAxisRect->top())); + } + } else + { + for (int i=0; imSubTickVector.size(); ++i) + { + t = mParentAxis->coordToPixel(mParentAxis->mSubTickVector.at(i)); // y + painter->drawLine(QLineF(mParentAxis->mAxisRect->left(), t, mParentAxis->mAxisRect->right(), t)); + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAxis +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAxis + \brief Manages a single axis inside a QCustomPlot. + + Usually doesn't need to be instantiated externally. Access %QCustomPlot's default four axes via + QCustomPlot::xAxis (bottom), QCustomPlot::yAxis (left), QCustomPlot::xAxis2 (top) and + QCustomPlot::yAxis2 (right). + + Axes are always part of an axis rect, see QCPAxisRect. + \image html AxisNamesOverview.png +
Naming convention of axis parts
+ \n + + \image html AxisRectSpacingOverview.png +
Overview of the spacings and paddings that define the geometry of an axis. The dashed gray line + on the left represents the QCustomPlot widget border.
+ +*/ + +/* start of documentation of inline functions */ + +/*! \fn Qt::Orientation QCPAxis::orientation() const + + Returns the orientation of the axis. The axis orientation (horizontal or vertical) is deduced + from the axis type (left, top, right or bottom). +*/ + +/*! \fn QCPGrid *QCPAxis::grid() const + + Returns the \ref QCPGrid instance belonging to this axis. Access it to set details about the way the + grid is displayed. +*/ + +/* end of documentation of inline functions */ +/* start of documentation of signals */ + +/*! \fn void QCPAxis::ticksRequest() + + This signal is emitted when \ref setAutoTicks is false and the axis is about to generate tick + labels for a replot. + + Modifying the tick positions can be done with \ref setTickVector. If you also want to control the + tick labels, set \ref setAutoTickLabels to false and also provide the labels with \ref + setTickVectorLabels. + + If you only want static ticks you probably don't need this signal, since you can just set the + tick vector (and possibly tick label vector) once. However, if you want to provide ticks (and + maybe labels) dynamically, e.g. depending on the current axis range, connect a slot to this + signal and set the vector/vectors there. +*/ + +/*! \fn void QCPAxis::rangeChanged(const QCPRange &newRange) + + This signal is emitted when the range of this axis has changed. You can connect it to the \ref + setRange slot of another axis to communicate the new range to the other axis, in order for it to + be synchronized. +*/ + +/*! \fn void QCPAxis::selectionChanged(QCPAxis::SelectableParts selection) + + This signal is emitted when the selection state of this axis has changed, either by user interaction + or by a direct call to \ref setSelectedParts. +*/ + +/* end of documentation of signals */ + +/*! + Constructs an Axis instance of Type \a type for the axis rect \a parent. + You shouldn't instantiate axes directly, rather use \ref QCPAxisRect::addAxis. +*/ +QCPAxis::QCPAxis(QCPAxisRect *parent, AxisType type) : + QCPLayerable(parent->parentPlot(), "", parent), + // axis base: + mAxisType(type), + mAxisRect(parent), + mOffset(0), + mPadding(5), + mOrientation((type == atBottom || type == atTop) ? Qt::Horizontal : Qt::Vertical), + mSelectableParts(spAxis | spTickLabels | spAxisLabel), + mSelectedParts(spNone), + mBasePen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)), + mSelectedBasePen(QPen(Qt::blue, 2)), + mLowerEnding(QCPLineEnding::esNone), + mUpperEnding(QCPLineEnding::esNone), + // axis label: + mLabelPadding(0), + mLabel(""), + mLabelFont(mParentPlot->font()), + mSelectedLabelFont(QFont(mLabelFont.family(), mLabelFont.pointSize(), QFont::Bold)), + mLabelColor(Qt::black), + mSelectedLabelColor(Qt::blue), + // tick labels: + mTickLabelPadding(0), + mTickLabels(true), + mAutoTickLabels(true), + mTickLabelRotation(0), + mTickLabelType(ltNumber), + mTickLabelFont(mParentPlot->font()), + mSelectedTickLabelFont(QFont(mTickLabelFont.family(), mTickLabelFont.pointSize(), QFont::Bold)), + mTickLabelColor(Qt::black), + mSelectedTickLabelColor(Qt::blue), + mDateTimeFormat("hh:mm:ss\ndd.MM.yy"), + mNumberPrecision(6), + mNumberFormatChar('g'), + mNumberBeautifulPowers(true), + mNumberMultiplyCross(false), + // ticks and subticks: + mTicks(true), + mTickStep(1), + mSubTickCount(4), + mAutoTickCount(6), + mAutoTicks(true), + mAutoTickStep(true), + mAutoSubTicks(true), + mTickLengthIn(5), + mTickLengthOut(0), + mSubTickLengthIn(2), + mSubTickLengthOut(0), + mTickPen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)), + mSelectedTickPen(QPen(Qt::blue, 2)), + mSubTickPen(QPen(Qt::black, 0, Qt::SolidLine, Qt::SquareCap)), + mSelectedSubTickPen(QPen(Qt::blue, 2)), + // scale and range: + mRange(0, 5), + mRangeReversed(false), + mScaleType(stLinear), + mScaleLogBase(10), + mScaleLogBaseLogInv(1.0/qLn(mScaleLogBase)), + // internal members: + mGrid(new QCPGrid(this)), + mLabelCache(16), // cache at most 16 (tick) labels + mLowestVisibleTick(0), + mHighestVisibleTick(-1), + mExponentialChar('e'), // will be updated with locale sensitive values in setupTickVector + mPositiveSignChar('+'), // will be updated with locale sensitive values in setupTickVector + mCachedMarginValid(false), + mCachedMargin(0) +{ + mGrid->setVisible(false); + setAntialiased(false); + setLayer(mParentPlot->currentLayer()); // it's actually on that layer already, but we want it in front of the grid, so we place it on there again + + if (type == atTop) + { + setTickLabelPadding(3); + setLabelPadding(6); + } else if (type == atRight) + { + setTickLabelPadding(7); + setLabelPadding(12); + } else if (type == atBottom) + { + setTickLabelPadding(3); + setLabelPadding(3); + } else if (type == atLeft) + { + setTickLabelPadding(5); + setLabelPadding(10); + } +} + +/* No documentation as it is a property getter */ +QString QCPAxis::numberFormat() const +{ + QString result; + result.append(mNumberFormatChar); + if (mNumberBeautifulPowers) + { + result.append("b"); + if (mNumberMultiplyCross) + result.append("c"); + } + return result; +} + +/*! + Sets whether the axis uses a linear scale or a logarithmic scale. If \a type is set to \ref + stLogarithmic, the logarithm base can be set with \ref setScaleLogBase. In logarithmic axis + scaling, major tick marks appear at all powers of the logarithm base. Properties like tick step + (\ref setTickStep) don't apply in logarithmic scaling. If you wish a decimal base but less major + ticks, consider choosing a logarithm base of 100, 1000 or even higher. + + If \a type is \ref stLogarithmic and the number format (\ref setNumberFormat) uses the 'b' option + (beautifully typeset decimal powers), the display usually is "1 [multiplication sign] 10 + [superscript] n", which looks unnatural for logarithmic scaling (the "1 [multiplication sign]" + part). To only display the decimal power, set the number precision to zero with + \ref setNumberPrecision. +*/ +void QCPAxis::setScaleType(ScaleType type) +{ + if (mScaleType != type) + { + mScaleType = type; + if (mScaleType == stLogarithmic) + mRange = mRange.sanitizedForLogScale(); + mCachedMarginValid = false; + } +} + +/*! + If \ref setScaleType is set to \ref stLogarithmic, \a base will be the logarithm base of the + scaling. In logarithmic axis scaling, major tick marks appear at all powers of \a base. + + Properties like tick step (\ref setTickStep) don't apply in logarithmic scaling. If you wish a decimal base but + less major ticks, consider choosing \a base 100, 1000 or even higher. +*/ +void QCPAxis::setScaleLogBase(double base) +{ + if (base > 1) + { + mScaleLogBase = base; + mScaleLogBaseLogInv = 1.0/qLn(mScaleLogBase); // buffer for faster baseLog() calculation + mCachedMarginValid = false; + } else + qDebug() << Q_FUNC_INFO << "Invalid logarithmic scale base (must be greater 1):" << base; +} + +/*! + Sets the range of the axis. + + This slot may be connected with the \ref rangeChanged signal of another axis so this axis + is always synchronized with the other axis range, when it changes. + + To invert the direction of an axis, use \ref setRangeReversed. +*/ +void QCPAxis::setRange(const QCPRange &range) +{ + if (range.lower == mRange.lower && range.upper == mRange.upper) + return; + + if (!QCPRange::validRange(range)) return; + if (mScaleType == stLogarithmic) + { + mRange = range.sanitizedForLogScale(); + } else + { + mRange = range.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Sets whether the user can (de-)select the parts in \a selectable by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains iSelectAxes.) + + However, even when \a selectable is set to a value not allowing the selection of a specific part, + it is still possible to set the selection of this part manually, by calling \ref setSelectedParts + directly. + + \see SelectablePart, setSelectedParts +*/ +void QCPAxis::setSelectableParts(const SelectableParts &selectable) +{ + mSelectableParts = selectable; +} + +/*! + Sets the selected state of the respective axis parts described by \ref SelectablePart. When a part + is selected, it uses a different pen/font. + + The entire selection mechanism for axes is handled automatically when \ref + QCustomPlot::setInteractions contains iSelectAxes. You only need to call this function when you + wish to change the selection state manually. + + This function can change the selection state of a part, independent of the \ref setSelectableParts setting. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + \see SelectablePart, setSelectableParts, selectTest, setSelectedBasePen, setSelectedTickPen, setSelectedSubTickPen, + setSelectedTickLabelFont, setSelectedLabelFont, setSelectedTickLabelColor, setSelectedLabelColor +*/ +void QCPAxis::setSelectedParts(const SelectableParts &selected) +{ + if (mSelectedParts != selected) + { + if (mSelectedParts.testFlag(spTickLabels) != selected.testFlag(spTickLabels)) + mLabelCache.clear(); + mSelectedParts = selected; + emit selectionChanged(mSelectedParts); + } +} + +/*! + \overload + + Sets the lower and upper bound of the axis range. + + To invert the direction of an axis, use \ref setRangeReversed. + + There is also a slot to set a range, see \ref setRange(const QCPRange &range). +*/ +void QCPAxis::setRange(double lower, double upper) +{ + if (lower == mRange.lower && upper == mRange.upper) + return; + + if (!QCPRange::validRange(lower, upper)) return; + mRange.lower = lower; + mRange.upper = upper; + if (mScaleType == stLogarithmic) + { + mRange = mRange.sanitizedForLogScale(); + } else + { + mRange = mRange.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + \overload + + Sets the range of the axis. + + The \a position coordinate indicates together with the \a alignment parameter, where the new + range will be positioned. \a size defines the size of the new axis range. \a alignment may be + Qt::AlignLeft, Qt::AlignRight or Qt::AlignCenter. This will cause the left border, right border, + or center of the range to be aligned with \a position. Any other values of \a alignment will + default to Qt::AlignCenter. +*/ +void QCPAxis::setRange(double position, double size, Qt::AlignmentFlag alignment) +{ + if (alignment == Qt::AlignLeft) + setRange(position, position+size); + else if (alignment == Qt::AlignRight) + setRange(position-size, position); + else // alignment == Qt::AlignCenter + setRange(position-size/2.0, position+size/2.0); +} + +/*! + Sets the lower bound of the axis range. The upper bound is not changed. + \see setRange +*/ +void QCPAxis::setRangeLower(double lower) +{ + if (mRange.lower == lower) + return; + + mRange.lower = lower; + if (mScaleType == stLogarithmic) + { + mRange = mRange.sanitizedForLogScale(); + } else + { + mRange = mRange.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Sets the upper bound of the axis range. The lower bound is not changed. + \see setRange +*/ +void QCPAxis::setRangeUpper(double upper) +{ + if (mRange.upper == upper) + return; + + mRange.upper = upper; + if (mScaleType == stLogarithmic) + { + mRange = mRange.sanitizedForLogScale(); + } else + { + mRange = mRange.sanitizedForLinScale(); + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Sets whether the axis range (direction) is displayed reversed. Normally, the values on horizontal + axes increase left to right, on vertical axes bottom to top. When \a reversed is set to true, the + direction of increasing values is inverted. + + Note that the range and data interface stays the same for reversed axes, e.g. the \a lower part + of the \ref setRange interface will still reference the mathematically smaller number than the \a + upper part. +*/ +void QCPAxis::setRangeReversed(bool reversed) +{ + if (mRangeReversed != reversed) + { + mRangeReversed = reversed; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the tick positions should be calculated automatically (either from an automatically + generated tick step or a tick step provided manually via \ref setTickStep, see \ref setAutoTickStep). + + If \a on is set to false, you must provide the tick positions manually via \ref setTickVector. + For these manual ticks you may let QCPAxis generate the appropriate labels automatically by + leaving \ref setAutoTickLabels set to true. If you also wish to control the displayed labels + manually, set \ref setAutoTickLabels to false and provide the label strings with \ref + setTickVectorLabels. + + If you need dynamically calculated tick vectors (and possibly tick label vectors), set the + vectors in a slot connected to the \ref ticksRequest signal. +*/ +void QCPAxis::setAutoTicks(bool on) +{ + if (mAutoTicks != on) + { + mAutoTicks = on; + mCachedMarginValid = false; + } +} + +/*! + When \ref setAutoTickStep is true, \a approximateCount determines how many ticks should be + generated in the visible range, approximately. + + It's not guaranteed that this number of ticks is met exactly, but approximately within a + tolerance of about two. + + Only values greater than zero are accepted as \a approximateCount. +*/ +void QCPAxis::setAutoTickCount(int approximateCount) +{ + if (mAutoTickCount != approximateCount) + { + if (approximateCount > 0) + { + mAutoTickCount = approximateCount; + mCachedMarginValid = false; + } else + qDebug() << Q_FUNC_INFO << "approximateCount must be greater than zero:" << approximateCount; + } +} + +/*! + Sets whether the tick labels are generated automatically. Depending on the tick label type (\ref + ltNumber or \ref ltDateTime), the labels will either show the coordinate as floating point + number (\ref setNumberFormat), or a date/time formatted according to \ref setDateTimeFormat. + + If \a on is set to false, you should provide the tick labels via \ref setTickVectorLabels. This + is usually used in a combination with \ref setAutoTicks set to false for complete control over + tick positions and labels, e.g. when the ticks should be at multiples of pi and show "2pi", "3pi" + etc. as tick labels. + + If you need dynamically calculated tick vectors (and possibly tick label vectors), set the + vectors in a slot connected to the \ref ticksRequest signal. +*/ +void QCPAxis::setAutoTickLabels(bool on) +{ + if (mAutoTickLabels != on) + { + mAutoTickLabels = on; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the tick step, i.e. the interval between two (major) ticks, is calculated + automatically. If \a on is set to true, the axis finds a tick step that is reasonable for human + readable plots. + + The number of ticks the algorithm aims for within the visible range can be set with \ref + setAutoTickCount. + + If \a on is set to false, you may set the tick step manually with \ref setTickStep. +*/ +void QCPAxis::setAutoTickStep(bool on) +{ + if (mAutoTickStep != on) + { + mAutoTickStep = on; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the number of sub ticks in one tick interval is determined automatically. This + works, as long as the tick step mantissa is a multiple of 0.5. When \ref setAutoTickStep is + enabled, this is always the case. + + When \a on is set to false, you may set the sub tick count with \ref setSubTickCount manually. +*/ +void QCPAxis::setAutoSubTicks(bool on) +{ + if (mAutoSubTicks != on) + { + mAutoSubTicks = on; + mCachedMarginValid = false; + } +} + +/*! + Sets whether tick marks are displayed. + + Note that setting \a show to false does not imply that tick labels are invisible, too. To achieve + that, see \ref setTickLabels. +*/ +void QCPAxis::setTicks(bool show) +{ + if (mTicks != show) + { + mTicks = show; + mCachedMarginValid = false; + } +} + +/*! + Sets whether tick labels are displayed. Tick labels are the numbers drawn next to tick marks. +*/ +void QCPAxis::setTickLabels(bool show) +{ + if (mTickLabels != show) + { + mTickLabels = show; + mCachedMarginValid = false; + } +} + +/*! + Sets the distance between the axis base line (including any outward ticks) and the tick labels. + \see setLabelPadding, setPadding +*/ +void QCPAxis::setTickLabelPadding(int padding) +{ + if (mTickLabelPadding != padding) + { + mTickLabelPadding = padding; + mCachedMarginValid = false; + } +} + +/*! + Sets whether the tick labels display numbers or dates/times. + + If \a type is set to \ref ltNumber, the format specifications of \ref setNumberFormat apply. + + If \a type is set to \ref ltDateTime, the format specifications of \ref setDateTimeFormat apply. + + In QCustomPlot, date/time coordinates are double numbers representing the seconds since + 1970-01-01T00:00:00 UTC. This format can be retrieved from QDateTime objects with the + QDateTime::toTime_t() function. Since this only gives a resolution of one second, there is also + the QDateTime::toMSecsSinceEpoch() function which returns the timespan described above in + milliseconds. Divide its return value by 1000.0 to get a value with the format needed for + date/time plotting, with a resolution of one millisecond. + + Using the toMSecsSinceEpoch function allows dates that go back to 2nd January 4713 B.C. + (represented by a negative number), unlike the toTime_t function, which works with unsigned + integers and thus only goes back to 1st January 1970. So both for range and accuracy, use of + toMSecsSinceEpoch()/1000.0 should be preferred as key coordinate for date/time axes. + + \see setTickLabels +*/ +void QCPAxis::setTickLabelType(LabelType type) +{ + if (mTickLabelType != type) + { + mTickLabelType = type; + mCachedMarginValid = false; + } +} + +/*! + Sets the font of the tick labels. + + \see setTickLabels, setTickLabelColor +*/ +void QCPAxis::setTickLabelFont(const QFont &font) +{ + if (font != mTickLabelFont) + { + mTickLabelFont = font; + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the color of the tick labels. + + \see setTickLabels, setTickLabelFont +*/ +void QCPAxis::setTickLabelColor(const QColor &color) +{ + if (color != mTickLabelColor) + { + mTickLabelColor = color; + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the rotation of the tick labels. If \a degrees is zero, the labels are drawn normally. Else, + the tick labels are drawn rotated by \a degrees clockwise. The specified angle is bound to values + from -90 to 90 degrees. + + If \a degrees is exactly -90, 0 or 90, the tick labels are centered on the tick coordinate. For + other angles, the label is drawn with an offset such that it seems to point toward or away from + the tick mark. +*/ +void QCPAxis::setTickLabelRotation(double degrees) +{ + if (!qFuzzyIsNull(degrees-mTickLabelRotation)) + { + mTickLabelRotation = qBound(-90.0, degrees, 90.0); + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the format in which dates and times are displayed as tick labels, if \ref setTickLabelType is \ref ltDateTime. + for details about the \a format string, see the documentation of QDateTime::toString(). + + Newlines can be inserted with "\n". +*/ +void QCPAxis::setDateTimeFormat(const QString &format) +{ + if (mDateTimeFormat != format) + { + mDateTimeFormat = format; + mCachedMarginValid = false; + mLabelCache.clear(); + } +} + +/*! + Sets the number format for the numbers drawn as tick labels (if tick label type is \ref + ltNumber). This \a formatCode is an extended version of the format code used e.g. by + QString::number() and QLocale::toString(). For reference about that, see the "Argument Formats" + section in the detailed description of the QString class. \a formatCode is a string of one, two + or three characters. The first character is identical to the normal format code used by Qt. In + short, this means: 'e'/'E' scientific format, 'f' fixed format, 'g'/'G' scientific or fixed, + whichever is shorter. + + The second and third characters are optional and specific to QCustomPlot:\n + If the first char was 'e' or 'g', numbers are/might be displayed in the scientific format, e.g. + "5.5e9", which is ugly in a plot. So when the second char of \a formatCode is set to 'b' (for + "beautiful"), those exponential numbers are formatted in a more natural way, i.e. "5.5 + [multiplication sign] 10 [superscript] 9". By default, the multiplication sign is a centered dot. + If instead a cross should be shown (as is usual in the USA), the third char of \a formatCode can + be set to 'c'. The inserted multiplication signs are the UTF-8 characters 215 (0xD7) for the + cross and 183 (0xB7) for the dot. + + If the scale type (\ref setScaleType) is \ref stLogarithmic and the \a formatCode uses the 'b' + option (beautifully typeset decimal powers), the display usually is "1 [multiplication sign] 10 + [superscript] n", which looks unnatural for logarithmic scaling (the "1 [multiplication sign]" + part). To only display the decimal power, set the number precision to zero with \ref + setNumberPrecision. + + Examples for \a formatCode: + \li \c g normal format code behaviour. If number is small, fixed format is used, if number is large, + normal scientific format is used + \li \c gb If number is small, fixed format is used, if number is large, scientific format is used with + beautifully typeset decimal powers and a dot as multiplication sign + \li \c ebc All numbers are in scientific format with beautifully typeset decimal power and a cross as + multiplication sign + \li \c fb illegal format code, since fixed format doesn't support (or need) beautifully typeset decimal + powers. Format code will be reduced to 'f'. + \li \c hello illegal format code, since first char is not 'e', 'E', 'f', 'g' or 'G'. Current format + code will not be changed. +*/ +void QCPAxis::setNumberFormat(const QString &formatCode) +{ + if (formatCode.isEmpty()) + { + qDebug() << Q_FUNC_INFO << "Passed formatCode is empty"; + return; + } + mLabelCache.clear(); + mCachedMarginValid = false; + + // interpret first char as number format char: + QString allowedFormatChars = "eEfgG"; + if (allowedFormatChars.contains(formatCode.at(0))) + { + mNumberFormatChar = formatCode.at(0).toLatin1(); + } else + { + qDebug() << Q_FUNC_INFO << "Invalid number format code (first char not in 'eEfgG'):" << formatCode; + return; + } + if (formatCode.length() < 2) + { + mNumberBeautifulPowers = false; + mNumberMultiplyCross = false; + return; + } + + // interpret second char as indicator for beautiful decimal powers: + if (formatCode.at(1) == 'b' && (mNumberFormatChar == 'e' || mNumberFormatChar == 'g')) + { + mNumberBeautifulPowers = true; + } else + { + qDebug() << Q_FUNC_INFO << "Invalid number format code (second char not 'b' or first char neither 'e' nor 'g'):" << formatCode; + return; + } + if (formatCode.length() < 3) + { + mNumberMultiplyCross = false; + return; + } + + // interpret third char as indicator for dot or cross multiplication symbol: + if (formatCode.at(2) == 'c') + { + mNumberMultiplyCross = true; + } else if (formatCode.at(2) == 'd') + { + mNumberMultiplyCross = false; + } else + { + qDebug() << Q_FUNC_INFO << "Invalid number format code (third char neither 'c' nor 'd'):" << formatCode; + return; + } +} + +/*! + Sets the precision of the tick label numbers. See QLocale::toString(double i, char f, int prec) + for details. The effect of precisions are most notably for number Formats starting with 'e', see + \ref setNumberFormat + + If the scale type (\ref setScaleType) is \ref stLogarithmic and the number format (\ref + setNumberFormat) uses the 'b' format code (beautifully typeset decimal powers), the display + usually is "1 [multiplication sign] 10 [superscript] n", which looks unnatural for logarithmic + scaling (the redundant "1 [multiplication sign]" part). To only display the decimal power "10 + [superscript] n", set \a precision to zero. +*/ +void QCPAxis::setNumberPrecision(int precision) +{ + if (mNumberPrecision != precision) + { + mNumberPrecision = precision; + mCachedMarginValid = false; + } +} + +/*! + If \ref setAutoTickStep is set to false, use this function to set the tick step manually. + The tick step is the interval between (major) ticks, in plot coordinates. + \see setSubTickCount +*/ +void QCPAxis::setTickStep(double step) +{ + if (mTickStep != step) + { + mTickStep = step; + mCachedMarginValid = false; + } +} + +/*! + If you want full control over what ticks (and possibly labels) the axes show, this function is + used to set the coordinates at which ticks will appear.\ref setAutoTicks must be disabled, else + the provided tick vector will be overwritten with automatically generated tick coordinates upon + replot. The labels of the ticks can be generated automatically when \ref setAutoTickLabels is + left enabled. If it is disabled, you can set the labels manually with \ref setTickVectorLabels. + + \a vec is a vector containing the positions of the ticks, in plot coordinates. + + \warning \a vec must be sorted in ascending order, no additional checks are made to ensure this. + + \see setTickVectorLabels +*/ +void QCPAxis::setTickVector(const QVector &vec) +{ + // don't check whether mTickVector != vec here, because it takes longer than we would save + mTickVector = vec; + mCachedMarginValid = false; +} + +/*! + If you want full control over what ticks and labels the axes show, this function is used to set a + number of QStrings that will be displayed at the tick positions which you need to provide with + \ref setTickVector. These two vectors should have the same size. (Note that you need to disable + \ref setAutoTicks and \ref setAutoTickLabels first.) + + \a vec is a vector containing the labels of the ticks. The entries correspond to the respective + indices in the tick vector, passed via \ref setTickVector. + + \see setTickVector +*/ +void QCPAxis::setTickVectorLabels(const QVector &vec) +{ + // don't check whether mTickVectorLabels != vec here, because it takes longer than we would save + mTickVectorLabels = vec; + mCachedMarginValid = false; +} + +/*! + Sets the length of the ticks in pixels. \a inside is the length the ticks will reach inside the + plot and \a outside is the length they will reach outside the plot. If \a outside is greater than + zero, the tick labels and axis label will increase their distance to the axis accordingly, so + they won't collide with the ticks. + + \see setSubTickLength +*/ +void QCPAxis::setTickLength(int inside, int outside) +{ + if (mTickLengthIn != inside) + { + mTickLengthIn = inside; + } + if (mTickLengthOut != outside) + { + mTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the length of the inward ticks in pixels. \a inside is the length the ticks will reach + inside the plot. + + \see setTickLengthOut, setSubTickLength +*/ +void QCPAxis::setTickLengthIn(int inside) +{ + if (mTickLengthIn != inside) + { + mTickLengthIn = inside; + } +} + +/*! + Sets the length of the outward ticks in pixels. \a outside is the length the ticks will reach + outside the plot. If \a outside is greater than zero, the tick labels and axis label will + increase their distance to the axis accordingly, so they won't collide with the ticks. + + \see setTickLengthIn, setSubTickLength +*/ +void QCPAxis::setTickLengthOut(int outside) +{ + if (mTickLengthOut != outside) + { + mTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the number of sub ticks in one (major) tick step. A sub tick count of three for example, + divides the tick intervals in four sub intervals. + + By default, the number of sub ticks is chosen automatically in a reasonable manner as long as the + mantissa of the tick step is a multiple of 0.5. When \ref setAutoTickStep is enabled, this is + always the case. + + If you want to disable automatic sub tick count and use this function to set the count manually, + see \ref setAutoSubTicks. +*/ +void QCPAxis::setSubTickCount(int count) +{ + mSubTickCount = count; +} + +/*! + Sets the length of the subticks in pixels. \a inside is the length the subticks will reach inside + the plot and \a outside is the length they will reach outside the plot. If \a outside is greater + than zero, the tick labels and axis label will increase their distance to the axis accordingly, + so they won't collide with the ticks. +*/ +void QCPAxis::setSubTickLength(int inside, int outside) +{ + if (mSubTickLengthIn != inside) + { + mSubTickLengthIn = inside; + } + if (mSubTickLengthOut != outside) + { + mSubTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the length of the inward subticks in pixels. \a inside is the length the subticks will reach inside + the plot. + + \see setSubTickLengthOut, setTickLength +*/ +void QCPAxis::setSubTickLengthIn(int inside) +{ + if (mSubTickLengthIn != inside) + { + mSubTickLengthIn = inside; + } +} + +/*! + Sets the length of the outward subticks in pixels. \a outside is the length the subticks will reach + outside the plot. If \a outside is greater than zero, the tick labels will increase their + distance to the axis accordingly, so they won't collide with the ticks. + + \see setSubTickLengthIn, setTickLength +*/ +void QCPAxis::setSubTickLengthOut(int outside) +{ + if (mSubTickLengthOut != outside) + { + mSubTickLengthOut = outside; + mCachedMarginValid = false; // only outside tick length can change margin + } +} + +/*! + Sets the pen, the axis base line is drawn with. + + \see setTickPen, setSubTickPen +*/ +void QCPAxis::setBasePen(const QPen &pen) +{ + mBasePen = pen; +} + +/*! + Sets the pen, tick marks will be drawn with. + + \see setTickLength, setBasePen +*/ +void QCPAxis::setTickPen(const QPen &pen) +{ + mTickPen = pen; +} + +/*! + Sets the pen, subtick marks will be drawn with. + + \see setSubTickCount, setSubTickLength, setBasePen +*/ +void QCPAxis::setSubTickPen(const QPen &pen) +{ + mSubTickPen = pen; +} + +/*! + Sets the font of the axis label. + + \see setLabelColor +*/ +void QCPAxis::setLabelFont(const QFont &font) +{ + if (mLabelFont != font) + { + mLabelFont = font; + mCachedMarginValid = false; + } +} + +/*! + Sets the color of the axis label. + + \see setLabelFont +*/ +void QCPAxis::setLabelColor(const QColor &color) +{ + mLabelColor = color; +} + +/*! + Sets the text of the axis label that will be shown below/above or next to the axis, depending on + its orientation. To disable axis labels, pass an empty string as \a str. +*/ +void QCPAxis::setLabel(const QString &str) +{ + if (mLabel != str) + { + mLabel = str; + mCachedMarginValid = false; + } +} + +/*! + Sets the distance between the tick labels and the axis label. + + \see setTickLabelPadding, setPadding +*/ +void QCPAxis::setLabelPadding(int padding) +{ + if (mLabelPadding != padding) + { + mLabelPadding = padding; + mCachedMarginValid = false; + } +} + +/*! + Sets the padding of the axis. + + When \ref QCPAxisRect::setAutoMargins is enabled, the padding is the additional outer most space, + that is left blank. + + The axis padding has no meaning if \ref QCPAxisRect::setAutoMargins is disabled. + + \see setLabelPadding, setTickLabelPadding +*/ +void QCPAxis::setPadding(int padding) +{ + if (mPadding != padding) + { + mPadding = padding; + mCachedMarginValid = false; + } +} + +/*! + Sets the offset the axis has to its axis rect side. + + If an axis rect side has multiple axes, only the offset of the inner most axis has meaning. The offset of the other axes + is controlled automatically, to place the axes at appropriate positions to prevent them from overlapping. +*/ +void QCPAxis::setOffset(int offset) +{ + mOffset = offset; +} + +/*! + Sets the font that is used for tick labels when they are selected. + + \see setTickLabelFont, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedTickLabelFont(const QFont &font) +{ + if (font != mSelectedTickLabelFont) + { + mSelectedTickLabelFont = font; + mLabelCache.clear(); + // don't set mCachedMarginValid to false here because margin calculation is always done with non-selected fonts + } +} + +/*! + Sets the font that is used for the axis label when it is selected. + + \see setLabelFont, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedLabelFont(const QFont &font) +{ + mSelectedLabelFont = font; + // don't set mCachedMarginValid to false here because margin calculation is always done with non-selected fonts +} + +/*! + Sets the color that is used for tick labels when they are selected. + + \see setTickLabelColor, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedTickLabelColor(const QColor &color) +{ + if (color != mSelectedTickLabelColor) + { + mSelectedTickLabelColor = color; + mLabelCache.clear(); + } +} + +/*! + Sets the color that is used for the axis label when it is selected. + + \see setLabelColor, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedLabelColor(const QColor &color) +{ + mSelectedLabelColor = color; +} + +/*! + Sets the pen that is used to draw the axis base line when selected. + + \see setBasePen, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedBasePen(const QPen &pen) +{ + mSelectedBasePen = pen; +} + +/*! + Sets the pen that is used to draw the (major) ticks when selected. + + \see setTickPen, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedTickPen(const QPen &pen) +{ + mSelectedTickPen = pen; +} + +/*! + Sets the pen that is used to draw the subticks when selected. + + \see setSubTickPen, setSelectableParts, setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAxis::setSelectedSubTickPen(const QPen &pen) +{ + mSelectedSubTickPen = pen; +} + +/*! + Sets the style for the lower axis ending. See the documentation of QCPLineEnding for available + styles. + + For horizontal axes, this method refers to the left ending, for vertical axes the bottom ending. + Note that this meaning does not change when the axis range is reversed with \ref + setRangeReversed. + + \see setUpperEnding +*/ +void QCPAxis::setLowerEnding(const QCPLineEnding &ending) +{ + mLowerEnding = ending; +} + +/*! + Sets the style for the upper axis ending. See the documentation of QCPLineEnding for available + styles. + + For horizontal axes, this method refers to the right ending, for vertical axes the top ending. + Note that this meaning does not change when the axis range is reversed with \ref + setRangeReversed. + + \see setLowerEnding +*/ +void QCPAxis::setUpperEnding(const QCPLineEnding &ending) +{ + mUpperEnding = ending; +} + +/*! + If the scale type (\ref setScaleType) is \ref stLinear, \a diff is added to the lower and upper + bounds of the range. The range is simply moved by \a diff. + + If the scale type is \ref stLogarithmic, the range bounds are multiplied by \a diff. This + corresponds to an apparent "linear" move in logarithmic scaling by a distance of log(diff). +*/ +void QCPAxis::moveRange(double diff) +{ + if (mScaleType == stLinear) + { + mRange.lower += diff; + mRange.upper += diff; + } else // mScaleType == stLogarithmic + { + mRange.lower *= diff; + mRange.upper *= diff; + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Scales the range of this axis by \a factor around the coordinate \a center. For example, if \a + factor is 2.0, \a center is 1.0, then the axis range will double its size, and the point at + coordinate 1.0 won't have changed its position in the QCustomPlot widget (i.e. coordinates + around 1.0 will have moved symmetrically closer to 1.0). +*/ +void QCPAxis::scaleRange(double factor, double center) +{ + if (mScaleType == stLinear) + { + QCPRange newRange; + newRange.lower = (mRange.lower-center)*factor + center; + newRange.upper = (mRange.upper-center)*factor + center; + if (QCPRange::validRange(newRange)) + mRange = newRange.sanitizedForLinScale(); + } else // mScaleType == stLogarithmic + { + if ((mRange.upper < 0 && center < 0) || (mRange.upper > 0 && center > 0)) // make sure center has same sign as range + { + QCPRange newRange; + newRange.lower = pow(mRange.lower/center, factor)*center; + newRange.upper = pow(mRange.upper/center, factor)*center; + if (QCPRange::validRange(newRange)) + mRange = newRange.sanitizedForLogScale(); + } else + qDebug() << Q_FUNC_INFO << "Center of scaling operation doesn't lie in same logarithmic sign domain as range:" << center; + } + mCachedMarginValid = false; + emit rangeChanged(mRange); +} + +/*! + Scales the range of this axis to have a certain scale \a ratio to \a otherAxis. The scaling will + be done around the center of the current axis range. + + For example, if \a ratio is 1, this axis is the \a yAxis and \a otherAxis is \a xAxis, graphs + plotted with those axes will appear in a 1:1 aspect ratio, independent of the aspect ratio the + axis rect has. + + This is an operation that changes the range of this axis once, it doesn't fix the scale ratio + indefinitely. Note that calling this function in the constructor of the QCustomPlot's parent + won't have the desired effect, since the widget dimensions aren't defined yet, and a resizeEvent + will follow. +*/ +void QCPAxis::setScaleRatio(const QCPAxis *otherAxis, double ratio) +{ + int otherPixelSize, ownPixelSize; + + if (otherAxis->orientation() == Qt::Horizontal) + otherPixelSize = otherAxis->axisRect()->width(); + else + otherPixelSize = otherAxis->axisRect()->height(); + + if (orientation() == Qt::Horizontal) + ownPixelSize = axisRect()->width(); + else + ownPixelSize = axisRect()->height(); + + double newRangeSize = ratio*otherAxis->range().size()*ownPixelSize/(double)otherPixelSize; + setRange(range().center(), newRangeSize, Qt::AlignCenter); +} + +/*! + Transforms \a value, in pixel coordinates of the QCustomPlot widget, to axis coordinates. +*/ +double QCPAxis::pixelToCoord(double value) const +{ + if (orientation() == Qt::Horizontal) + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return (value-mAxisRect->left())/(double)mAxisRect->width()*mRange.size()+mRange.lower; + else + return -(value-mAxisRect->left())/(double)mAxisRect->width()*mRange.size()+mRange.upper; + } else // mScaleType == stLogarithmic + { + if (!mRangeReversed) + return pow(mRange.upper/mRange.lower, (value-mAxisRect->left())/(double)mAxisRect->width())*mRange.lower; + else + return pow(mRange.upper/mRange.lower, (mAxisRect->left()-value)/(double)mAxisRect->width())*mRange.upper; + } + } else // orientation() == Qt::Vertical + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return (mAxisRect->bottom()-value)/(double)mAxisRect->height()*mRange.size()+mRange.lower; + else + return -(mAxisRect->bottom()-value)/(double)mAxisRect->height()*mRange.size()+mRange.upper; + } else // mScaleType == stLogarithmic + { + if (!mRangeReversed) + return pow(mRange.upper/mRange.lower, (mAxisRect->bottom()-value)/(double)mAxisRect->height())*mRange.lower; + else + return pow(mRange.upper/mRange.lower, (value-mAxisRect->bottom())/(double)mAxisRect->height())*mRange.upper; + } + } +} + +/*! + Transforms \a value, in coordinates of the axis, to pixel coordinates of the QCustomPlot widget. +*/ +double QCPAxis::coordToPixel(double value) const +{ + if (orientation() == Qt::Horizontal) + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return (value-mRange.lower)/mRange.size()*mAxisRect->width()+mAxisRect->left(); + else + return (mRange.upper-value)/mRange.size()*mAxisRect->width()+mAxisRect->left(); + } else // mScaleType == stLogarithmic + { + if (value >= 0 && mRange.upper < 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->right()+200 : mAxisRect->left()-200; + else if (value <= 0 && mRange.upper > 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->left()-200 : mAxisRect->right()+200; + else + { + if (!mRangeReversed) + return baseLog(value/mRange.lower)/baseLog(mRange.upper/mRange.lower)*mAxisRect->width()+mAxisRect->left(); + else + return baseLog(mRange.upper/value)/baseLog(mRange.upper/mRange.lower)*mAxisRect->width()+mAxisRect->left(); + } + } + } else // orientation() == Qt::Vertical + { + if (mScaleType == stLinear) + { + if (!mRangeReversed) + return mAxisRect->bottom()-(value-mRange.lower)/mRange.size()*mAxisRect->height(); + else + return mAxisRect->bottom()-(mRange.upper-value)/mRange.size()*mAxisRect->height(); + } else // mScaleType == stLogarithmic + { + if (value >= 0 && mRange.upper < 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->top()-200 : mAxisRect->bottom()+200; + else if (value <= 0 && mRange.upper > 0) // invalid value for logarithmic scale, just draw it outside visible range + return !mRangeReversed ? mAxisRect->bottom()+200 : mAxisRect->top()-200; + else + { + if (!mRangeReversed) + return mAxisRect->bottom()-baseLog(value/mRange.lower)/baseLog(mRange.upper/mRange.lower)*mAxisRect->height(); + else + return mAxisRect->bottom()-baseLog(mRange.upper/value)/baseLog(mRange.upper/mRange.lower)*mAxisRect->height(); + } + } + } +} + +/*! + Returns the part of the axis that is hit by \a pos (in pixels). The return value of this function + is independent of the user-selectable parts defined with \ref setSelectableParts. Further, this + function does not change the current selection state of the axis. + + If the axis is not visible (\ref setVisible), this function always returns \ref spNone. + + \see setSelectedParts, setSelectableParts, QCustomPlot::setInteractions +*/ +QCPAxis::SelectablePart QCPAxis::getPartAt(const QPointF &pos) const +{ + if (!mVisible) + return spNone; + + if (mAxisSelectionBox.contains(pos.toPoint())) + return spAxis; + else if (mTickLabelsSelectionBox.contains(pos.toPoint())) + return spTickLabels; + else if (mLabelSelectionBox.contains(pos.toPoint())) + return spAxisLabel; + else + return spNone; +} + +/* inherits documentation from base class */ +double QCPAxis::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + if (!mParentPlot) return -1; + SelectablePart part = getPartAt(pos); + if ((onlySelectable && !mSelectableParts.testFlag(part)) || part == spNone) + return -1; + + if (details) + details->setValue(part); + return mParentPlot->selectionTolerance()*0.99; +} + +/*! + Returns a list of all the plottables that have this axis as key or value axis. + + If you are only interested in plottables of type QCPGraph, see \ref graphs. + + \see graphs, items +*/ +QList QCPAxis::plottables() const +{ + QList result; + if (!mParentPlot) return result; + + for (int i=0; imPlottables.size(); ++i) + { + if (mParentPlot->mPlottables.at(i)->keyAxis() == this ||mParentPlot->mPlottables.at(i)->valueAxis() == this) + result.append(mParentPlot->mPlottables.at(i)); + } + return result; +} + +/*! + Returns a list of all the graphs that have this axis as key or value axis. + + \see plottables, items +*/ +QList QCPAxis::graphs() const +{ + QList result; + if (!mParentPlot) return result; + + for (int i=0; imGraphs.size(); ++i) + { + if (mParentPlot->mGraphs.at(i)->keyAxis() == this || mParentPlot->mGraphs.at(i)->valueAxis() == this) + result.append(mParentPlot->mGraphs.at(i)); + } + return result; +} + +/*! + Returns a list of all the items that are associated with this axis. An item is considered + associated with an axis if at least one of its positions uses the axis as key or value axis. + + \see plottables, graphs +*/ +QList QCPAxis::items() const +{ + QList result; + if (!mParentPlot) return result; + + for (int itemId=0; itemIdmItems.size(); ++itemId) + { + QList positions = mParentPlot->mItems.at(itemId)->positions(); + for (int posId=0; posIdkeyAxis() == this || positions.at(posId)->valueAxis() == this) + { + result.append(mParentPlot->mItems.at(itemId)); + break; + } + } + } + return result; +} + +/*! + Transforms a margin side to the logically corresponding axis type. (QCP::msLeft to + QCPAxis::atLeft, QCP::msRight to QCPAxis::atRight, etc.) +*/ +QCPAxis::AxisType QCPAxis::marginSideToAxisType(QCP::MarginSide side) +{ + switch (side) + { + case QCP::msLeft: return atLeft; + case QCP::msRight: return atRight; + case QCP::msTop: return atTop; + case QCP::msBottom: return atBottom; + default: break; + } + qDebug() << Q_FUNC_INFO << "Invalid margin side passed:" << (int)side; + return atLeft; +} + +/*! \internal + + This function is called to prepare the tick vector, sub tick vector and tick label vector. If + \ref setAutoTicks is set to true, appropriate tick values are determined automatically via \ref + generateAutoTicks. If it's set to false, the signal ticksRequest is emitted, which can be used to + provide external tick positions. Then the sub tick vectors and tick label vectors are created. +*/ +void QCPAxis::setupTickVectors() +{ + if (!mParentPlot) return; + if ((!mTicks && !mTickLabels && !mGrid->visible()) || mRange.size() <= 0) return; + + // fill tick vectors, either by auto generating or by notifying user to fill the vectors himself + if (mAutoTicks) + { + generateAutoTicks(); + } else + { + emit ticksRequest(); + } + + visibleTickBounds(mLowestVisibleTick, mHighestVisibleTick); + if (mTickVector.isEmpty()) + { + mSubTickVector.clear(); + return; + } + + // generate subticks between ticks: + mSubTickVector.resize((mTickVector.size()-1)*mSubTickCount); + if (mSubTickCount > 0) + { + double subTickStep = 0; + double subTickPosition = 0; + int subTickIndex = 0; + bool done = false; + int lowTick = mLowestVisibleTick > 0 ? mLowestVisibleTick-1 : mLowestVisibleTick; + int highTick = mHighestVisibleTick < mTickVector.size()-1 ? mHighestVisibleTick+1 : mHighestVisibleTick; + for (int i=lowTick+1; i<=highTick; ++i) + { + subTickStep = (mTickVector.at(i)-mTickVector.at(i-1))/(double)(mSubTickCount+1); + for (int k=1; k<=mSubTickCount; ++k) + { + subTickPosition = mTickVector.at(i-1) + k*subTickStep; + if (subTickPosition < mRange.lower) + continue; + if (subTickPosition > mRange.upper) + { + done = true; + break; + } + mSubTickVector[subTickIndex] = subTickPosition; + subTickIndex++; + } + if (done) break; + } + mSubTickVector.resize(subTickIndex); + } + + // generate tick labels according to tick positions: + mExponentialChar = mParentPlot->locale().exponential(); // will be needed when drawing the numbers generated here, in getTickLabelData() + mPositiveSignChar = mParentPlot->locale().positiveSign(); // will be needed when drawing the numbers generated here, in getTickLabelData() + if (mAutoTickLabels) + { + int vecsize = mTickVector.size(); + mTickVectorLabels.resize(vecsize); + if (mTickLabelType == ltNumber) + { + for (int i=mLowestVisibleTick; i<=mHighestVisibleTick; ++i) + mTickVectorLabels[i] = mParentPlot->locale().toString(mTickVector.at(i), mNumberFormatChar, mNumberPrecision); + } else if (mTickLabelType == ltDateTime) + { + for (int i=mLowestVisibleTick; i<=mHighestVisibleTick; ++i) + { +#if QT_VERSION < QT_VERSION_CHECK(4, 7, 0) // use fromMSecsSinceEpoch function if available, to gain sub-second accuracy on tick labels (e.g. for format "hh:mm:ss:zzz") + mTickVectorLabels[i] = mParentPlot->locale().toString(QDateTime::fromTime_t(mTickVector.at(i)), mDateTimeFormat); +#else + mTickVectorLabels[i] = mParentPlot->locale().toString(QDateTime::fromMSecsSinceEpoch(mTickVector.at(i)*1000), mDateTimeFormat); +#endif + } + } + } else // mAutoTickLabels == false + { + if (mAutoTicks) // ticks generated automatically, but not ticklabels, so emit ticksRequest here for labels + { + emit ticksRequest(); + } + // make sure provided tick label vector has correct (minimal) length: + if (mTickVectorLabels.size() < mTickVector.size()) + mTickVectorLabels.resize(mTickVector.size()); + } +} + +/*! \internal + + If \ref setAutoTicks is set to true, this function is called by \ref setupTickVectors to + generate reasonable tick positions (and subtick count). The algorithm tries to create + approximately mAutoTickCount ticks (set via \ref setAutoTickCount). + + If the scale is logarithmic, \ref setAutoTickCount is ignored, and one tick is generated at every + power of the current logarithm base, set via \ref setScaleLogBase. +*/ +void QCPAxis::generateAutoTicks() +{ + if (mScaleType == stLinear) + { + if (mAutoTickStep) + { + // Generate tick positions according to linear scaling: + mTickStep = mRange.size()/(double)(mAutoTickCount+1e-10); // mAutoTickCount ticks on average, the small addition is to prevent jitter on exact integers + double magnitudeFactor = qPow(10.0, qFloor(qLn(mTickStep)/qLn(10.0))); // get magnitude factor e.g. 0.01, 1, 10, 1000 etc. + double tickStepMantissa = mTickStep/magnitudeFactor; + if (tickStepMantissa < 5) + { + // round digit after decimal point to 0.5 + mTickStep = (int)(tickStepMantissa*2)/2.0*magnitudeFactor; + } else + { + // round to first digit in multiples of 2 + mTickStep = (int)(tickStepMantissa/2.0)*2.0*magnitudeFactor; + } + } + if (mAutoSubTicks) + mSubTickCount = calculateAutoSubTickCount(mTickStep); + // Generate tick positions according to mTickStep: + qint64 firstStep = floor(mRange.lower/mTickStep); + qint64 lastStep = ceil(mRange.upper/mTickStep); + int tickcount = lastStep-firstStep+1; + if (tickcount < 0) tickcount = 0; + mTickVector.resize(tickcount); + for (int i=0; i 0 && mRange.upper > 0) // positive range + { + double lowerMag = basePow((int)floor(baseLog(mRange.lower))); + double currentMag = lowerMag; + mTickVector.clear(); + mTickVector.append(currentMag); + while (currentMag < mRange.upper && currentMag > 0) // currentMag might be zero for ranges ~1e-300, just cancel in that case + { + currentMag *= mScaleLogBase; + mTickVector.append(currentMag); + } + } else if (mRange.lower < 0 && mRange.upper < 0) // negative range + { + double lowerMag = -basePow((int)ceil(baseLog(-mRange.lower))); + double currentMag = lowerMag; + mTickVector.clear(); + mTickVector.append(currentMag); + while (currentMag < mRange.upper && currentMag < 0) // currentMag might be zero for ranges ~1e-300, just cancel in that case + { + currentMag /= mScaleLogBase; + mTickVector.append(currentMag); + } + } else // invalid range for logarithmic scale, because lower and upper have different sign + { + mTickVector.clear(); + qDebug() << Q_FUNC_INFO << "Invalid range for logarithmic plot: " << mRange.lower << "-" << mRange.upper; + } + } +} + +/*! \internal + + Called by generateAutoTicks when \ref setAutoSubTicks is set to true. Depending on the \a + tickStep between two major ticks on the axis, a different number of sub ticks is appropriate. For + Example taking 4 sub ticks for a \a tickStep of 1 makes more sense than taking 5 sub ticks, + because this corresponds to a sub tick step of 0.2, instead of the less intuitive 0.16667. Note + that a subtick count of 4 means dividing the major tick step into 5 sections. + + This is implemented by a hand made lookup for integer tick steps as well as fractional tick steps + with a fractional part of (approximately) 0.5. If a tick step is different (i.e. has no + fractional part close to 0.5), the currently set sub tick count (\ref setSubTickCount) is + returned. +*/ +int QCPAxis::calculateAutoSubTickCount(double tickStep) const +{ + int result = mSubTickCount; // default to current setting, if no proper value can be found + + // get mantissa of tickstep: + double magnitudeFactor = qPow(10.0, qFloor(qLn(tickStep)/qLn(10.0))); // get magnitude factor e.g. 0.01, 1, 10, 1000 etc. + double tickStepMantissa = tickStep/magnitudeFactor; + + // separate integer and fractional part of mantissa: + double epsilon = 0.01; + double intPartf; + int intPart; + double fracPart = modf(tickStepMantissa, &intPartf); + intPart = intPartf; + + // handle cases with (almost) integer mantissa: + if (fracPart < epsilon || 1.0-fracPart < epsilon) + { + if (1.0-fracPart < epsilon) + ++intPart; + switch (intPart) + { + case 1: result = 4; break; // 1.0 -> 0.2 substep + case 2: result = 3; break; // 2.0 -> 0.5 substep + case 3: result = 2; break; // 3.0 -> 1.0 substep + case 4: result = 3; break; // 4.0 -> 1.0 substep + case 5: result = 4; break; // 5.0 -> 1.0 substep + case 6: result = 2; break; // 6.0 -> 2.0 substep + case 7: result = 6; break; // 7.0 -> 1.0 substep + case 8: result = 3; break; // 8.0 -> 2.0 substep + case 9: result = 2; break; // 9.0 -> 3.0 substep + } + } else + { + // handle cases with significantly fractional mantissa: + if (qAbs(fracPart-0.5) < epsilon) // *.5 mantissa + { + switch (intPart) + { + case 1: result = 2; break; // 1.5 -> 0.5 substep + case 2: result = 4; break; // 2.5 -> 0.5 substep + case 3: result = 4; break; // 3.5 -> 0.7 substep + case 4: result = 2; break; // 4.5 -> 1.5 substep + case 5: result = 4; break; // 5.5 -> 1.1 substep (won't occur with autoTickStep from here on) + case 6: result = 4; break; // 6.5 -> 1.3 substep + case 7: result = 2; break; // 7.5 -> 2.5 substep + case 8: result = 4; break; // 8.5 -> 1.7 substep + case 9: result = 4; break; // 9.5 -> 1.9 substep + } + } + // if mantissa fraction isnt 0.0 or 0.5, don't bother finding good sub tick marks, leave default + } + + return result; +} + +/*! \internal + + Draws the axis with the specified \a painter. + + The selection boxes (mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox) are set + here, too. +*/ +void QCPAxis::draw(QCPPainter *painter) +{ + if (!mParentPlot) return; + QPoint origin; + if (mAxisType == atLeft) + origin = mAxisRect->bottomLeft()+QPoint(-mOffset, 0); + else if (mAxisType == atRight) + origin = mAxisRect->bottomRight()+QPoint(+mOffset, 0); + else if (mAxisType == atTop) + origin = mAxisRect->topLeft()+QPoint(0, -mOffset); + else if (mAxisType == atBottom) + origin = mAxisRect->bottomLeft()+QPoint(0, +mOffset); + + double xCor = 0, yCor = 0; // paint system correction, for pixel exact matches (affects baselines and ticks of top/right axes) + switch (mAxisType) + { + case atTop: yCor = -1; break; + case atRight: xCor = 1; break; + default: break; + } + + int margin = 0; + int lowTick = mLowestVisibleTick; + int highTick = mHighestVisibleTick; + double t; // helper variable, result of coordinate-to-pixel transforms + + // draw baseline: + QLineF baseLine; + painter->setPen(getBasePen()); + if (orientation() == Qt::Horizontal) + baseLine.setPoints(origin+QPointF(xCor, yCor), origin+QPointF(mAxisRect->width()+xCor, yCor)); + else + baseLine.setPoints(origin+QPointF(xCor, yCor), origin+QPointF(xCor, -mAxisRect->height()+yCor)); + if (mRangeReversed) + baseLine = QLineF(baseLine.p2(), baseLine.p1()); // won't make a difference for line itself, but for line endings later + painter->drawLine(baseLine); + + // draw ticks: + if (mTicks) + { + painter->setPen(getTickPen()); + // direction of ticks ("inward" is right for left axis and left for right axis) + int tickDir = (mAxisType == atBottom || mAxisType == atRight) ? -1 : 1; + if (orientation() == Qt::Horizontal) + { + for (int i=lowTick; i <= highTick; ++i) + { + t = coordToPixel(mTickVector.at(i)); // x + painter->drawLine(QLineF(t+xCor, origin.y()-mTickLengthOut*tickDir+yCor, t+xCor, origin.y()+mTickLengthIn*tickDir+yCor)); + } + } else + { + for (int i=lowTick; i <= highTick; ++i) + { + t = coordToPixel(mTickVector.at(i)); // y + painter->drawLine(QLineF(origin.x()-mTickLengthOut*tickDir+xCor, t+yCor, origin.x()+mTickLengthIn*tickDir+xCor, t+yCor)); + } + } + } + + // draw subticks: + if (mTicks && mSubTickCount > 0) + { + painter->setPen(getSubTickPen()); + // direction of ticks ("inward" is right for left axis and left for right axis) + int tickDir = (mAxisType == atBottom || mAxisType == atRight) ? -1 : 1; + if (orientation() == Qt::Horizontal) + { + for (int i=0; idrawLine(QLineF(t+xCor, origin.y()-mSubTickLengthOut*tickDir+yCor, t+xCor, origin.y()+mSubTickLengthIn*tickDir+yCor)); + } + } else + { + for (int i=0; idrawLine(QLineF(origin.x()-mSubTickLengthOut*tickDir+xCor, t+yCor, origin.x()+mSubTickLengthIn*tickDir+xCor, t+yCor)); + } + } + } + margin += qMax(0, qMax(mTickLengthOut, mSubTickLengthOut)); + + // draw axis base endings: + bool antialiasingBackup = painter->antialiasing(); + painter->setAntialiasing(true); // always want endings to be antialiased, even if base and ticks themselves aren't + painter->setBrush(QBrush(basePen().color())); + QVector2D baseLineVector(baseLine.dx(), baseLine.dy()); + if (mLowerEnding.style() != QCPLineEnding::esNone) + mLowerEnding.draw(painter, QVector2D(baseLine.p1())-baseLineVector.normalized()*mLowerEnding.realLength()*(mLowerEnding.inverted()?-1:1), -baseLineVector); + if (mUpperEnding.style() != QCPLineEnding::esNone) + mUpperEnding.draw(painter, QVector2D(baseLine.p2())+baseLineVector.normalized()*mUpperEnding.realLength()*(mUpperEnding.inverted()?-1:1), baseLineVector); + painter->setAntialiasing(antialiasingBackup); + + // tick labels: + QSize tickLabelsSize(0, 0); // size of largest tick label, for offset calculation of axis label + if (mTickLabels) + { + margin += mTickLabelPadding; + painter->setFont(getTickLabelFont()); + painter->setPen(QPen(getTickLabelColor())); + for (int i=lowTick; i <= highTick; ++i) + { + t = coordToPixel(mTickVector.at(i)); + placeTickLabel(painter, t, margin, mTickVectorLabels.at(i), &tickLabelsSize); + } + } + if (orientation() == Qt::Horizontal) + margin += tickLabelsSize.height(); + else + margin += tickLabelsSize.width(); + + // axis label: + QRect labelBounds; + if (!mLabel.isEmpty()) + { + margin += mLabelPadding; + painter->setFont(getLabelFont()); + painter->setPen(QPen(getLabelColor())); + labelBounds = painter->fontMetrics().boundingRect(0, 0, 0, 0, Qt::TextDontClip, mLabel); + if (mAxisType == atLeft) + { + QTransform oldTransform = painter->transform(); + painter->translate((origin.x()-margin-labelBounds.height()), origin.y()); + painter->rotate(-90); + painter->drawText(0, 0, mAxisRect->height(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + painter->setTransform(oldTransform); + } + else if (mAxisType == atRight) + { + QTransform oldTransform = painter->transform(); + painter->translate((origin.x()+margin+labelBounds.height()), origin.y()-mAxisRect->height()); + painter->rotate(90); + painter->drawText(0, 0, mAxisRect->height(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + painter->setTransform(oldTransform); + } + else if (mAxisType == atTop) + painter->drawText(origin.x(), origin.y()-margin-labelBounds.height(), mAxisRect->width(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + else if (mAxisType == atBottom) + painter->drawText(origin.x(), origin.y()+margin, mAxisRect->width(), labelBounds.height(), Qt::TextDontClip | Qt::AlignCenter, mLabel); + } + + // set selection boxes: + int selAxisOutSize = qMax(qMax(mTickLengthOut, mSubTickLengthOut), mParentPlot->selectionTolerance()); + int selAxisInSize = mParentPlot->selectionTolerance(); + int selTickLabelSize = (orientation()==Qt::Horizontal ? tickLabelsSize.height() : tickLabelsSize.width()); + int selTickLabelOffset = qMax(mTickLengthOut, mSubTickLengthOut)+mTickLabelPadding; + int selLabelSize = labelBounds.height(); + int selLabelOffset = selTickLabelOffset+selTickLabelSize+mLabelPadding; + if (mAxisType == atLeft) + { + mAxisSelectionBox.setCoords(origin.x()-selAxisOutSize, mAxisRect->top(), origin.x()+selAxisInSize, mAxisRect->bottom()); + mTickLabelsSelectionBox.setCoords(origin.x()-selTickLabelOffset-selTickLabelSize, mAxisRect->top(), origin.x()-selTickLabelOffset, mAxisRect->bottom()); + mLabelSelectionBox.setCoords(origin.x()-selLabelOffset-selLabelSize, mAxisRect->top(), origin.x()-selLabelOffset, mAxisRect->bottom()); + } else if (mAxisType == atRight) + { + mAxisSelectionBox.setCoords(origin.x()-selAxisInSize, mAxisRect->top(), origin.x()+selAxisOutSize, mAxisRect->bottom()); + mTickLabelsSelectionBox.setCoords(origin.x()+selTickLabelOffset+selTickLabelSize, mAxisRect->top(), origin.x()+selTickLabelOffset, mAxisRect->bottom()); + mLabelSelectionBox.setCoords(origin.x()+selLabelOffset+selLabelSize, mAxisRect->top(), origin.x()+selLabelOffset, mAxisRect->bottom()); + } else if (mAxisType == atTop) + { + mAxisSelectionBox.setCoords(mAxisRect->left(), origin.y()-selAxisOutSize, mAxisRect->right(), origin.y()+selAxisInSize); + mTickLabelsSelectionBox.setCoords(mAxisRect->left(), origin.y()-selTickLabelOffset-selTickLabelSize, mAxisRect->right(), origin.y()-selTickLabelOffset); + mLabelSelectionBox.setCoords(mAxisRect->left(), origin.y()-selLabelOffset-selLabelSize, mAxisRect->right(), origin.y()-selLabelOffset); + } else if (mAxisType == atBottom) + { + mAxisSelectionBox.setCoords(mAxisRect->left(), origin.y()-selAxisInSize, mAxisRect->right(), origin.y()+selAxisOutSize); + mTickLabelsSelectionBox.setCoords(mAxisRect->left(), origin.y()+selTickLabelOffset+selTickLabelSize, mAxisRect->right(), origin.y()+selTickLabelOffset); + mLabelSelectionBox.setCoords(mAxisRect->left(), origin.y()+selLabelOffset+selLabelSize, mAxisRect->right(), origin.y()+selLabelOffset); + } + // draw hitboxes for debug purposes: + //painter->setBrush(Qt::NoBrush); + //painter->drawRects(QVector() << mAxisSelectionBox << mTickLabelsSelectionBox << mLabelSelectionBox); +} + +/*! \internal + + Draws a single tick label with the provided \a painter, utilizing the internal label cache to + significantly speed up drawing of labels that were drawn in previous calls. The tick label is + always bound to an axis, the distance to the axis is controllable via \a distanceToAxis in + pixels. The pixel position in the axis direction is passed in the \a position parameter. Hence + for the bottom axis, \a position would indicate the horizontal pixel position (not coordinate), + at which the label should be drawn. + + In order to later draw the axis label in a place that doesn't overlap with the tick labels, the + largest tick label size is needed. This is acquired by passing a \a tickLabelsSize to the \ref + drawTickLabel calls during the process of drawing all tick labels of one axis. In every call, \a + tickLabelsSize is expanded, if the drawn label exceeds the value \a tickLabelsSize currently + holds. + + The label is drawn with the font and pen that are currently set on the \a painter. To draw + superscripted powers, the font is temporarily made smaller by a fixed factor (see \ref + getTickLabelData). +*/ +void QCPAxis::placeTickLabel(QCPPainter *painter, double position, int distanceToAxis, const QString &text, QSize *tickLabelsSize) +{ + // warning: if you change anything here, also adapt getMaxTickLabelSize() accordingly! + if (!mParentPlot) return; + if (text.isEmpty()) return; + QSize finalSize; + QPointF labelAnchor; + switch (mAxisType) + { + case atLeft: labelAnchor = QPointF(mAxisRect->left()-distanceToAxis-mOffset, position); break; + case atRight: labelAnchor = QPointF(mAxisRect->right()+distanceToAxis+mOffset, position); break; + case atTop: labelAnchor = QPointF(position, mAxisRect->top()-distanceToAxis-mOffset); break; + case atBottom: labelAnchor = QPointF(position, mAxisRect->bottom()+distanceToAxis+mOffset); break; + } + if (parentPlot()->plottingHints().testFlag(QCP::phCacheLabels) && !painter->modes().testFlag(QCPPainter::pmNoCaching)) // label caching enabled + { + if (!mLabelCache.contains(text)) // no cached label exists, create it + { + CachedLabel *newCachedLabel = new CachedLabel; + TickLabelData labelData = getTickLabelData(painter->font(), text); + QPointF drawOffset = getTickLabelDrawOffset(labelData); + newCachedLabel->offset = drawOffset+labelData.rotatedTotalBounds.topLeft(); + newCachedLabel->pixmap = QPixmap(labelData.rotatedTotalBounds.size()); + newCachedLabel->pixmap.fill(Qt::transparent); + QCPPainter cachePainter(&newCachedLabel->pixmap); + cachePainter.setPen(painter->pen()); + drawTickLabel(&cachePainter, -labelData.rotatedTotalBounds.topLeft().x(), -labelData.rotatedTotalBounds.topLeft().y(), labelData); + mLabelCache.insert(text, newCachedLabel, 1); + } + // draw cached label: + const CachedLabel *cachedLabel = mLabelCache.object(text); + // if label would be partly clipped by widget border on sides, don't draw it: + if (orientation() == Qt::Horizontal) + { + if (labelAnchor.x()+cachedLabel->offset.x()+cachedLabel->pixmap.width() > mParentPlot->viewport().right() || + labelAnchor.x()+cachedLabel->offset.x() < mParentPlot->viewport().left()) + return; + } else + { + if (labelAnchor.y()+cachedLabel->offset.y()+cachedLabel->pixmap.height() > mParentPlot->viewport().bottom() || + labelAnchor.y()+cachedLabel->offset.y() < mParentPlot->viewport().top()) + return; + } + painter->drawPixmap(labelAnchor+cachedLabel->offset, cachedLabel->pixmap); + finalSize = cachedLabel->pixmap.size(); + } else // label caching disabled, draw text directly on surface: + { + TickLabelData labelData = getTickLabelData(painter->font(), text); + QPointF finalPosition = labelAnchor + getTickLabelDrawOffset(labelData); + // if label would be partly clipped by widget border on sides, don't draw it: + if (orientation() == Qt::Horizontal) + { + if (finalPosition.x()+(labelData.rotatedTotalBounds.width()+labelData.rotatedTotalBounds.left()) > mParentPlot->viewport().right() || + finalPosition.x()+labelData.rotatedTotalBounds.left() < mParentPlot->viewport().left()) + return; + } else + { + if (finalPosition.y()+(labelData.rotatedTotalBounds.height()+labelData.rotatedTotalBounds.top()) > mParentPlot->viewport().bottom() || + finalPosition.y()+labelData.rotatedTotalBounds.top() < mParentPlot->viewport().top()) + return; + } + drawTickLabel(painter, finalPosition.x(), finalPosition.y(), labelData); + finalSize = labelData.rotatedTotalBounds.size(); + } + + // expand passed tickLabelsSize if current tick label is larger: + if (finalSize.width() > tickLabelsSize->width()) + tickLabelsSize->setWidth(finalSize.width()); + if (finalSize.height() > tickLabelsSize->height()) + tickLabelsSize->setHeight(finalSize.height()); +} + +/*! \internal + + This is a \ref placeTickLabel helper function. + + Draws the tick label specified in \a labelData with \a painter at the pixel positions \a x and \a + y. This function is used by \ref placeTickLabel to create new tick labels for the cache, or to + directly draw the labels on the QCustomPlot surface when label caching is disabled, i.e. when + QCP::phCacheLabels plotting hint is not set. +*/ +void QCPAxis::drawTickLabel(QCPPainter *painter, double x, double y, const QCPAxis::TickLabelData &labelData) const +{ + // backup painter settings that we're about to change: + QTransform oldTransform = painter->transform(); + QFont oldFont = painter->font(); + + // transform painter to position/rotation: + painter->translate(x, y); + if (!qFuzzyIsNull(mTickLabelRotation)) + painter->rotate(mTickLabelRotation); + + // draw text: + if (!labelData.expPart.isEmpty()) // indicator that beautiful powers must be used + { + painter->setFont(labelData.baseFont); + painter->drawText(0, 0, 0, 0, Qt::TextDontClip, labelData.basePart); + painter->setFont(labelData.expFont); + painter->drawText(labelData.baseBounds.width()+1, 0, labelData.expBounds.width(), labelData.expBounds.height(), Qt::TextDontClip, labelData.expPart); + } else + { + painter->setFont(labelData.baseFont); + painter->drawText(0, 0, labelData.totalBounds.width(), labelData.totalBounds.height(), Qt::TextDontClip | Qt::AlignHCenter, labelData.basePart); + } + + // reset painter settings to what it was before: + painter->setTransform(oldTransform); + painter->setFont(oldFont); +} + +/*! \internal + + This is a \ref placeTickLabel helper function. + + Transforms the passed \a text and \a font to a tickLabelData structure that can then be further + processed by \ref getTickLabelDrawOffset and \ref drawTickLabel. It splits the text into base and + exponent if necessary (see \ref setNumberFormat) and calculates appropriate bounding boxes. +*/ +QCPAxis::TickLabelData QCPAxis::getTickLabelData(const QFont &font, const QString &text) const +{ + TickLabelData result; + + // determine whether beautiful decimal powers should be used + bool useBeautifulPowers = false; + int ePos = -1; + if (mAutoTickLabels && mNumberBeautifulPowers && mTickLabelType == ltNumber) + { + ePos = text.indexOf('e'); + if (ePos > -1) + useBeautifulPowers = true; + } + + // calculate text bounding rects and do string preparation for beautiful decimal powers: + result.baseFont = font; + result.baseFont.setPointSizeF(result.baseFont.pointSizeF()+0.05); // QFontMetrics.boundingRect has a bug for exact point sizes that make the results oscillate due to internal rounding + if (useBeautifulPowers) + { + // split text into parts of number/symbol that will be drawn normally and part that will be drawn as exponent: + result.basePart = text.left(ePos); + // in log scaling, we want to turn "1*10^n" into "10^n", else add multiplication sign and decimal base: + if (mScaleType == stLogarithmic && result.basePart == "1") + result.basePart = "10"; + else + result.basePart += (mNumberMultiplyCross ? QString(QChar(215)) : QString(QChar(183))) + "10"; + result.expPart = text.mid(ePos+1); + // clip "+" and leading zeros off expPart: + while (result.expPart.at(1) == '0' && result.expPart.length() > 2) // length > 2 so we leave one zero when numberFormatChar is 'e' + result.expPart.remove(1, 1); + if (result.expPart.at(0) == mPositiveSignChar) + result.expPart.remove(0, 1); + // prepare smaller font for exponent: + result.expFont = font; + result.expFont.setPointSize(result.expFont.pointSize()*0.75); + // calculate bounding rects of base part, exponent part and total one: + result.baseBounds = QFontMetrics(result.baseFont).boundingRect(0, 0, 0, 0, Qt::TextDontClip, result.basePart); + result.expBounds = QFontMetrics(result.expFont).boundingRect(0, 0, 0, 0, Qt::TextDontClip, result.expPart); + result.totalBounds = result.baseBounds.adjusted(0, 0, result.expBounds.width()+2, 0); // +2 consists of the 1 pixel spacing between base and exponent (see drawTickLabel) and an extra pixel to include AA + } else // useBeautifulPowers == false + { + result.basePart = text; + result.totalBounds = QFontMetrics(result.baseFont).boundingRect(0, 0, 0, 0, Qt::TextDontClip | Qt::AlignHCenter, result.basePart); + } + result.totalBounds.moveTopLeft(QPoint(0, 0)); // want bounding box aligned top left at origin, independent of how it was created, to make further processing simpler + + // calculate possibly different bounding rect after rotation: + result.rotatedTotalBounds = result.totalBounds; + if (!qFuzzyIsNull(mTickLabelRotation)) + { + QTransform transform; + transform.rotate(mTickLabelRotation); + result.rotatedTotalBounds = transform.mapRect(result.rotatedTotalBounds); + } + + return result; +} + +/*! \internal + + This is a \ref placeTickLabel helper function. + + Calculates the offset at which the top left corner of the specified tick label shall be drawn. + The offset is relative to a point right next to the tick the label belongs to. + + This function is thus responsible for e.g. centering tick labels under ticks and positioning them + appropriately when they are rotated. +*/ +QPointF QCPAxis::getTickLabelDrawOffset(const QCPAxis::TickLabelData &labelData) const +{ + /* + calculate label offset from base point at tick (non-trivial, for best visual appearance): short + explanation for bottom axis: The anchor, i.e. the point in the label that is placed + horizontally under the corresponding tick is always on the label side that is closer to the + axis (e.g. the left side of the text when we're rotating clockwise). On that side, the height + is halved and the resulting point is defined the anchor. This way, a 90 degree rotated text + will be centered under the tick (i.e. displaced horizontally by half its height). At the same + time, a 45 degree rotated text will "point toward" its tick, as is typical for rotated tick + labels. + */ + bool doRotation = !qFuzzyIsNull(mTickLabelRotation); + bool flip = qFuzzyCompare(qAbs(mTickLabelRotation), 90.0); // perfect +/-90 degree flip. Indicates vertical label centering on vertical axes. + double radians = mTickLabelRotation/180.0*M_PI; + int x=0, y=0; + if (mAxisType == atLeft) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = -qCos(radians)*labelData.totalBounds.width(); + y = flip ? -labelData.totalBounds.width()/2.0 : -qSin(radians)*labelData.totalBounds.width()-qCos(radians)*labelData.totalBounds.height()/2.0; + } else + { + x = -qCos(-radians)*labelData.totalBounds.width()-qSin(-radians)*labelData.totalBounds.height(); + y = flip ? +labelData.totalBounds.width()/2.0 : +qSin(-radians)*labelData.totalBounds.width()-qCos(-radians)*labelData.totalBounds.height()/2.0; + } + } else + { + x = -labelData.totalBounds.width(); + y = -labelData.totalBounds.height()/2.0; + } + } else if (mAxisType == atRight) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = +qSin(radians)*labelData.totalBounds.height(); + y = flip ? -labelData.totalBounds.width()/2.0 : -qCos(radians)*labelData.totalBounds.height()/2.0; + } else + { + x = 0; + y = flip ? +labelData.totalBounds.width()/2.0 : -qCos(-radians)*labelData.totalBounds.height()/2.0; + } + } else + { + x = 0; + y = -labelData.totalBounds.height()/2.0; + } + } else if (mAxisType == atTop) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = -qCos(radians)*labelData.totalBounds.width()+qSin(radians)*labelData.totalBounds.height()/2.0; + y = -qSin(radians)*labelData.totalBounds.width()-qCos(radians)*labelData.totalBounds.height(); + } else + { + x = -qSin(-radians)*labelData.totalBounds.height()/2.0; + y = -qCos(-radians)*labelData.totalBounds.height(); + } + } else + { + x = -labelData.totalBounds.width()/2.0; + y = -labelData.totalBounds.height(); + } + } else if (mAxisType == atBottom) + { + if (doRotation) + { + if (mTickLabelRotation > 0) + { + x = +qSin(radians)*labelData.totalBounds.height()/2.0; + y = 0; + } else + { + x = -qCos(-radians)*labelData.totalBounds.width()-qSin(-radians)*labelData.totalBounds.height()/2.0; + y = +qSin(-radians)*labelData.totalBounds.width(); + } + } else + { + x = -labelData.totalBounds.width()/2.0; + y = 0; + } + } + + return QPointF(x, y); +} + +/*! \internal + + Simulates the steps done by \ref placeTickLabel by calculating bounding boxes of the text label + to be drawn, depending on number format etc. Since only the largest tick label is wanted for the + margin calculation, the passed \a tickLabelsSize is only expanded, if it's currently set to a + smaller width/height. +*/ +void QCPAxis::getMaxTickLabelSize(const QFont &font, const QString &text, QSize *tickLabelsSize) const +{ + // note: this function must return the same tick label sizes as the placeTickLabel function. + QSize finalSize; + if (parentPlot()->plottingHints().testFlag(QCP::phCacheLabels) && mLabelCache.contains(text)) // label caching enabled and have cached label + { + const CachedLabel *cachedLabel = mLabelCache.object(text); + finalSize = cachedLabel->pixmap.size(); + } else // label caching disabled or no label with this text cached: + { + TickLabelData labelData = getTickLabelData(font, text); + finalSize = labelData.rotatedTotalBounds.size(); + } + + // expand passed tickLabelsSize if current tick label is larger: + if (finalSize.width() > tickLabelsSize->width()) + tickLabelsSize->setWidth(finalSize.width()); + if (finalSize.height() > tickLabelsSize->height()) + tickLabelsSize->setHeight(finalSize.height()); +} + +/* inherits documentation from base class */ +void QCPAxis::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + SelectablePart part = details.value(); + if (mSelectableParts.testFlag(part)) + { + SelectableParts selBefore = mSelectedParts; + setSelectedParts(additive ? mSelectedParts^part : part); + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAxis::deselectEvent(bool *selectionStateChanged) +{ + SelectableParts selBefore = mSelectedParts; + setSelectedParts(mSelectedParts & ~mSelectableParts); + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing axis lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPAxis::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeAxes); +} + +/*! \internal + + Returns via \a lowIndex and \a highIndex, which ticks in the current tick vector are visible in + the current range. The return values are indices of the tick vector, not the positions of the + ticks themselves. + + The actual use of this function is when an external tick vector is provided, since it might + exceed far beyond the currently displayed range, and would cause unnecessary calculations e.g. of + subticks. + + If all ticks are outside the axis range, an inverted range is returned, i.e. highIndex will be + smaller than lowIndex. There is one case, where this function returns indices that are not really + visible in the current axis range: When the tick spacing is larger than the axis range size and + one tick is below the axis range and the next tick is already above the axis range. Because in + such cases it is usually desirable to know the tick pair, to draw proper subticks. +*/ +void QCPAxis::visibleTickBounds(int &lowIndex, int &highIndex) const +{ + bool lowFound = false; + bool highFound = false; + lowIndex = 0; + highIndex = -1; + + for (int i=0; i < mTickVector.size(); ++i) + { + if (mTickVector.at(i) >= mRange.lower) + { + lowFound = true; + lowIndex = i; + break; + } + } + for (int i=mTickVector.size()-1; i >= 0; --i) + { + if (mTickVector.at(i) <= mRange.upper) + { + highFound = true; + highIndex = i; + break; + } + } + + if (!lowFound && highFound) + lowIndex = highIndex+1; + else if (lowFound && !highFound) + highIndex = lowIndex-1; +} + +/*! \internal + + A log function with the base mScaleLogBase, used mostly for coordinate transforms in logarithmic + scales with arbitrary log base. Uses the buffered mScaleLogBaseLogInv for faster calculation. + This is set to 1.0/qLn(mScaleLogBase) in \ref setScaleLogBase. + + \see basePow, setScaleLogBase, setScaleType +*/ +double QCPAxis::baseLog(double value) const +{ + return qLn(value)*mScaleLogBaseLogInv; +} + +/*! \internal + + A power function with the base mScaleLogBase, used mostly for coordinate transforms in + logarithmic scales with arbitrary log base. + + \see baseLog, setScaleLogBase, setScaleType +*/ +double QCPAxis::basePow(double value) const +{ + return qPow(mScaleLogBase, value); +} + +/*! \internal + + Returns the pen that is used to draw the axis base line. Depending on the selection state, this + is either mSelectedBasePen or mBasePen. +*/ +QPen QCPAxis::getBasePen() const +{ + return mSelectedParts.testFlag(spAxis) ? mSelectedBasePen : mBasePen; +} + +/*! \internal + + Returns the pen that is used to draw the (major) ticks. Depending on the selection state, this + is either mSelectedTickPen or mTickPen. +*/ +QPen QCPAxis::getTickPen() const +{ + return mSelectedParts.testFlag(spAxis) ? mSelectedTickPen : mTickPen; +} + +/*! \internal + + Returns the pen that is used to draw the subticks. Depending on the selection state, this + is either mSelectedSubTickPen or mSubTickPen. +*/ +QPen QCPAxis::getSubTickPen() const +{ + return mSelectedParts.testFlag(spAxis) ? mSelectedSubTickPen : mSubTickPen; +} + +/*! \internal + + Returns the font that is used to draw the tick labels. Depending on the selection state, this + is either mSelectedTickLabelFont or mTickLabelFont. +*/ +QFont QCPAxis::getTickLabelFont() const +{ + return mSelectedParts.testFlag(spTickLabels) ? mSelectedTickLabelFont : mTickLabelFont; +} + +/*! \internal + + Returns the font that is used to draw the axis label. Depending on the selection state, this + is either mSelectedLabelFont or mLabelFont. +*/ +QFont QCPAxis::getLabelFont() const +{ + return mSelectedParts.testFlag(spAxisLabel) ? mSelectedLabelFont : mLabelFont; +} + +/*! \internal + + Returns the color that is used to draw the tick labels. Depending on the selection state, this + is either mSelectedTickLabelColor or mTickLabelColor. +*/ +QColor QCPAxis::getTickLabelColor() const +{ + return mSelectedParts.testFlag(spTickLabels) ? mSelectedTickLabelColor : mTickLabelColor; +} + +/*! \internal + + Returns the color that is used to draw the axis label. Depending on the selection state, this + is either mSelectedLabelColor or mLabelColor. +*/ +QColor QCPAxis::getLabelColor() const +{ + return mSelectedParts.testFlag(spAxisLabel) ? mSelectedLabelColor : mLabelColor; +} + +/*! \internal + + Returns the appropriate outward margin for this axis. It is needed if \ref + QCPAxisRect::setAutoMargins is set to true on the parent axis rect. An axis with axis type \ref + atLeft will return an appropriate left margin, \ref atBottom will return an appropriate bottom + margin and so forth. For the calculation, this function goes through similar steps as \ref draw, + so changing one function likely requires the modification of the other one as well. + + The margin consists of the outward tick length, tick label padding, tick label size, label + padding, label size, and padding. + + The margin is cached internally, so repeated calls while leaving the axis range, fonts, etc. + unchanged are very fast. +*/ +int QCPAxis::calculateMargin() +{ + if (mCachedMarginValid) + return mCachedMargin; + + // run through similar steps as QCPAxis::draw, and caluclate margin needed to fit axis and its labels + int margin = 0; + + if (mVisible) + { + int lowTick, highTick; + visibleTickBounds(lowTick, highTick); + // get length of tick marks pointing outwards: + if (mTicks) + margin += qMax(0, qMax(mTickLengthOut, mSubTickLengthOut)); + // calculate size of tick labels: + QSize tickLabelsSize(0, 0); + if (mTickLabels) + { + for (int i=lowTick; i<=highTick; ++i) + getMaxTickLabelSize(mTickLabelFont, mTickVectorLabels.at(i), &tickLabelsSize); // don't use getTickLabelFont() because we don't want margin to possibly change on selection + margin += orientation() == Qt::Horizontal ? tickLabelsSize.height() : tickLabelsSize.width(); + margin += mTickLabelPadding; + } + // calculate size of axis label (only height needed, because left/right labels are rotated by 90 degrees): + if (!mLabel.isEmpty()) + { + QFontMetrics fontMetrics(mLabelFont); // don't use getLabelFont() because we don't want margin to possibly change on selection + QRect bounds; + bounds = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip | Qt::AlignHCenter | Qt::AlignVCenter, mLabel); + margin += bounds.height() + mLabelPadding; + } + } + margin += mPadding; + + mCachedMargin = margin; + mCachedMarginValid = true; + return margin; +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAxis::selectionCategory() const +{ + return QCP::iSelectAxes; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAbstractPlottable +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAbstractPlottable + \brief The abstract base class for all data representing objects in a plot. + + It defines a very basic interface like name, pen, brush, visibility etc. Since this class is + abstract, it can't be instantiated. Use one of the subclasses or create a subclass yourself to + create new ways of displaying data (see "Creating own plottables" below). + + All further specifics are in the subclasses, for example: + \li A normal graph with possibly a line, scatter points and error bars is displayed by \ref QCPGraph + (typically created with \ref QCustomPlot::addGraph). + \li A parametric curve can be displayed with \ref QCPCurve. + \li A stackable bar chart can be achieved with \ref QCPBars. + \li A box of a statistical box plot is created with \ref QCPStatisticalBox. + + \section plottables-subclassing Creating own plottables + + To create an own plottable, you implement a subclass of QCPAbstractPlottable. These are the pure + virtual functions, you must implement: + \li \ref clearData + \li \ref selectTest + \li \ref draw + \li \ref drawLegendIcon + \li \ref getKeyRange + \li \ref getValueRange + + See the documentation of those functions for what they need to do. + + For drawing your plot, you can use the \ref coordsToPixels functions to translate a point in plot + coordinates to pixel coordinates. This function is quite convenient, because it takes the + orientation of the key and value axes into account for you (x and y are swapped when the key axis + is vertical and the value axis horizontal). If you are worried about performance (i.e. you need + to translate many points in a loop like QCPGraph), you can directly use \ref + QCPAxis::coordToPixel. However, you must then take care about the orientation of the axis + yourself. + + Here are some important members you inherit from QCPAbstractPlottable: + + + + + + + + + + + + + + + + + + + + + + + + + + +
QCustomPlot *\b mParentPlotA pointer to the parent QCustomPlot instance. The parent plot is inferred from the axes that are passed in the constructor.
QString \b mNameThe name of the plottable.
QPen \b mPenThe generic pen of the plottable. You should use this pen for the most prominent data representing lines in the plottable (e.g QCPGraph uses this pen for its graph lines and scatters)
QPen \b mSelectedPenThe generic pen that should be used when the plottable is selected (hint: \ref mainPen gives you the right pen, depending on selection state).
QBrush \b mBrushThe generic brush of the plottable. You should use this brush for the most prominent fillable structures in the plottable (e.g. QCPGraph uses this brush to control filling under the graph)
QBrush \b mSelectedBrushThe generic brush that should be used when the plottable is selected (hint: \ref mainBrush gives you the right brush, depending on selection state).
QWeakPointer\b mKeyAxis, \b mValueAxisThe key and value axes this plottable is attached to. Call their QCPAxis::coordToPixel functions to translate coordinates to pixels in either the key or value dimension. + Make sure to check whether the weak pointer is null before using it. If one of the axes is null, don't draw the plottable.
bool \b mSelectedindicates whether the plottable is selected or not.
+*/ + +/* start of documentation of pure virtual functions */ + +/*! \fn void QCPAbstractPlottable::clearData() = 0 + Clears all data in the plottable. +*/ + +/*! \fn void QCPAbstractPlottable::drawLegendIcon(QCPPainter *painter, const QRect &rect) const = 0 + \internal + + called by QCPLegend::draw (via QCPPlottableLegendItem::draw) to create a graphical representation + of this plottable inside \a rect, next to the plottable name. +*/ + +/*! \fn QCPRange QCPAbstractPlottable::getKeyRange(bool &validRange, SignDomain inSignDomain) const = 0 + \internal + + called by rescaleAxes functions to get the full data key bounds. For logarithmic plots, one can + set \a inSignDomain to either \ref sdNegative or \ref sdPositive in order to restrict the + returned range to that sign domain. E.g. when only negative range is wanted, set \a inSignDomain + to \ref sdNegative and all positive points will be ignored for range calculation. For no + restriction, just set \a inSignDomain to \ref sdBoth (default). \a validRange is an output + parameter that indicates whether a proper range could be found or not. If this is false, you + shouldn't use the returned range (e.g. no points in data). + + \see rescaleAxes, getValueRange +*/ + +/*! \fn QCPRange QCPAbstractPlottable::getValueRange(bool &validRange, SignDomain inSignDomain) const = 0 + \internal + + called by rescaleAxes functions to get the full data value bounds. For logarithmic plots, one can + set \a inSignDomain to either \ref sdNegative or \ref sdPositive in order to restrict the + returned range to that sign domain. E.g. when only negative range is wanted, set \a inSignDomain + to \ref sdNegative and all positive points will be ignored for range calculation. For no + restriction, just set \a inSignDomain to \ref sdBoth (default). \a validRange is an output + parameter that indicates whether a proper range could be found or not. If this is false, you + shouldn't use the returned range (e.g. no points in data). + + \see rescaleAxes, getKeyRange +*/ + +/* end of documentation of pure virtual functions */ +/* start of documentation of signals */ + +/*! \fn void QCPAbstractPlottable::selectionChanged(bool selected) + + This signal is emitted when the selection state of this plottable has changed to \a selected, + either by user interaction or by a direct call to \ref setSelected. +*/ + +/* end of documentation of signals */ + +/*! + Constructs an abstract plottable which uses \a keyAxis as its key axis ("x") and \a valueAxis as + its value axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance + and have perpendicular orientations. If either of these restrictions is violated, a corresponding + message is printed to the debug output (qDebug), the construction is not aborted, though. + + Since QCPAbstractPlottable is an abstract class that defines the basic interface to plottables, + it can't be directly instantiated. + + You probably want one of the subclasses like \ref QCPGraph or \ref QCPCurve instead. +*/ +QCPAbstractPlottable::QCPAbstractPlottable(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPLayerable(keyAxis->parentPlot(), "", keyAxis->axisRect()), + mName(""), + mAntialiasedFill(true), + mAntialiasedScatters(true), + mAntialiasedErrorBars(false), + mPen(Qt::black), + mSelectedPen(Qt::black), + mBrush(Qt::NoBrush), + mSelectedBrush(Qt::NoBrush), + mKeyAxis(keyAxis), + mValueAxis(valueAxis), + mSelectable(true), + mSelected(false) +{ + if (keyAxis->parentPlot() != valueAxis->parentPlot()) + qDebug() << Q_FUNC_INFO << "Parent plot of keyAxis is not the same as that of valueAxis."; + if (keyAxis->orientation() == valueAxis->orientation()) + qDebug() << Q_FUNC_INFO << "keyAxis and valueAxis must be orthogonal to each other."; +} + +/*! + The name is the textual representation of this plottable as it is displayed in the legend + (\ref QCPLegend). It may contain any UTF-8 characters, including newlines. +*/ +void QCPAbstractPlottable::setName(const QString &name) +{ + mName = name; +} + +/*! + Sets whether fills of this plottable is drawn antialiased or not. + + Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPAbstractPlottable::setAntialiasedFill(bool enabled) +{ + mAntialiasedFill = enabled; +} + +/*! + Sets whether the scatter symbols of this plottable are drawn antialiased or not. + + Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPAbstractPlottable::setAntialiasedScatters(bool enabled) +{ + mAntialiasedScatters = enabled; +} + +/*! + Sets whether the error bars of this plottable are drawn antialiased or not. + + Note that this setting may be overridden by \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. +*/ +void QCPAbstractPlottable::setAntialiasedErrorBars(bool enabled) +{ + mAntialiasedErrorBars = enabled; +} + + +/*! + The pen is used to draw basic lines that make up the plottable representation in the + plot. + + For example, the \ref QCPGraph subclass draws its graph lines and scatter points + with this pen. + + \see setBrush +*/ +void QCPAbstractPlottable::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + When the plottable is selected, this pen is used to draw basic lines instead of the normal + pen set via \ref setPen. + + \see setSelected, setSelectable, setSelectedBrush, selectTest +*/ +void QCPAbstractPlottable::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + The brush is used to draw basic fills of the plottable representation in the + plot. The Fill can be a color, gradient or texture, see the usage of QBrush. + + For example, the \ref QCPGraph subclass draws the fill under the graph with this brush, when + it's not set to Qt::NoBrush. + + \see setPen +*/ +void QCPAbstractPlottable::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + When the plottable is selected, this brush is used to draw fills instead of the normal + brush set via \ref setBrush. + + \see setSelected, setSelectable, setSelectedPen, selectTest +*/ +void QCPAbstractPlottable::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + The key axis of a plottable can be set to any axis of a QCustomPlot, as long as it is orthogonal + to the plottable's value axis. This function performs no checks to make sure this is the case. + The typical mathematical choice is to use the x-axis (QCustomPlot::xAxis) as key axis and the + y-axis (QCustomPlot::yAxis) as value axis. + + Normally, the key and value axes are set in the constructor of the plottable (or \ref + QCustomPlot::addGraph when working with QCPGraphs through the dedicated graph interface). + + \see setValueAxis +*/ +void QCPAbstractPlottable::setKeyAxis(QCPAxis *axis) +{ + mKeyAxis = axis; +} + +/*! + The value axis of a plottable can be set to any axis of a QCustomPlot, as long as it is + orthogonal to the plottable's key axis. This function performs no checks to make sure this is the + case. The typical mathematical choice is to use the x-axis (QCustomPlot::xAxis) as key axis and + the y-axis (QCustomPlot::yAxis) as value axis. + + Normally, the key and value axes are set in the constructor of the plottable (or \ref + QCustomPlot::addGraph when working with QCPGraphs through the dedicated graph interface). + + \see setKeyAxis +*/ +void QCPAbstractPlottable::setValueAxis(QCPAxis *axis) +{ + mValueAxis = axis; +} + +/*! + Sets whether the user can (de-)select this plottable by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains iSelectPlottables.) + + However, even when \a selectable was set to false, it is possible to set the selection manually, + by calling \ref setSelected directly. + + \see setSelected +*/ +void QCPAbstractPlottable::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets whether this plottable is selected or not. When selected, it uses a different pen and brush + to draw its lines and fills, see \ref setSelectedPen and \ref setSelectedBrush. + + The entire selection mechanism for plottables is handled automatically when \ref + QCustomPlot::setInteractions contains iSelectPlottables. You only need to call this function when + you wish to change the selection state manually. + + This function can change the selection state even when \ref setSelectable was set to false. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + \see setSelectable, selectTest +*/ +void QCPAbstractPlottable::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/*! + Rescales the key and value axes associated with this plottable to contain all displayed data, so + the whole plottable is visible. If the scaling of an axis is logarithmic, rescaleAxes will make + sure not to rescale to an illegal range i.e. a range containing different signs and/or zero. + Instead it will stay in the current sign domain and ignore all parts of the plottable that lie + outside of that domain. + + \a onlyEnlarge makes sure the ranges are only expanded, never reduced. So it's possible to show + multiple plottables in their entirety by multiple calls to rescaleAxes where the first call has + \a onlyEnlarge set to false (the default), and all subsequent set to true. + + \see rescaleKeyAxis, rescaleValueAxis, QCustomPlot::rescaleAxes +*/ +void QCPAbstractPlottable::rescaleAxes(bool onlyEnlarge) const +{ + rescaleKeyAxis(onlyEnlarge); + rescaleValueAxis(onlyEnlarge); +} + +/*! + Rescales the key axis of the plottable so the whole plottable is visible. + + See \ref rescaleAxes for detailed behaviour. +*/ +void QCPAbstractPlottable::rescaleKeyAxis(bool onlyEnlarge) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + if (!keyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + SignDomain signDomain = sdBoth; + if (keyAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (keyAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getKeyRange(validRange, signDomain); + if (validRange) + { + if (onlyEnlarge) + { + if (keyAxis->range().lower < newRange.lower) + newRange.lower = keyAxis->range().lower; + if (keyAxis->range().upper > newRange.upper) + newRange.upper = keyAxis->range().upper; + } + keyAxis->setRange(newRange); + } +} + +/*! + Rescales the value axis of the plottable so the whole plottable is visible. + + See \ref rescaleAxes for detailed behaviour. +*/ +void QCPAbstractPlottable::rescaleValueAxis(bool onlyEnlarge) const +{ + QCPAxis *valueAxis = mValueAxis.data(); + if (!valueAxis) { qDebug() << Q_FUNC_INFO << "invalid value axis"; return; } + + SignDomain signDomain = sdBoth; + if (valueAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (valueAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getValueRange(validRange, signDomain); + + if (validRange) + { + if (onlyEnlarge) + { + if (valueAxis->range().lower < newRange.lower) + newRange.lower = valueAxis->range().lower; + if (valueAxis->range().upper > newRange.upper) + newRange.upper = valueAxis->range().upper; + } + valueAxis->setRange(newRange); + } +} + +/*! + Adds this plottable to the legend of the parent QCustomPlot (QCustomPlot::legend). + + Normally, a QCPPlottableLegendItem is created and inserted into the legend. If the plottable + needs a more specialized representation in the legend, this function will take this into account + and instead create the specialized subclass of QCPAbstractLegendItem. + + Returns true on success, i.e. when the legend exists and a legend item associated with this plottable isn't already in + the legend. + + \see removeFromLegend, QCPLegend::addItem +*/ +bool QCPAbstractPlottable::addToLegend() +{ + if (!mParentPlot || !mParentPlot->legend) + return false; + + if (!mParentPlot->legend->hasItemWithPlottable(this)) + { + mParentPlot->legend->addItem(new QCPPlottableLegendItem(mParentPlot->legend, this)); + return true; + } else + return false; +} + +/*! + Removes the plottable from the legend of the parent QCustomPlot. This means the + QCPAbstractLegendItem (usually a QCPPlottableLegendItem) that is associated with this plottable + is removed. + + Returns true on success, i.e. if the legend exists and a legend item associated with this + plottable was found and removed. + + \see addToLegend, QCPLegend::removeItem +*/ +bool QCPAbstractPlottable::removeFromLegend() const +{ + if (!mParentPlot->legend) + return false; + + if (QCPPlottableLegendItem *lip = mParentPlot->legend->itemWithPlottable(this)) + return mParentPlot->legend->removeItem(lip); + else + return false; +} + +/* inherits documentation from base class */ +QRect QCPAbstractPlottable::clipRect() const +{ + if (mKeyAxis && mValueAxis) + return mKeyAxis.data()->axisRect()->rect() & mValueAxis.data()->axisRect()->rect(); + else + return QRect(); +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAbstractPlottable::selectionCategory() const +{ + return QCP::iSelectPlottables; +} + +/*! \internal + + Convenience function for transforming a key/value pair to pixels on the QCustomPlot surface, + taking the orientations of the axes associated with this plottable into account (e.g. whether key + represents x or y). + + \a key and \a value are transformed to the coodinates in pixels and are written to \a x and \a y. + + \see pixelsToCoords, QCPAxis::coordToPixel +*/ +void QCPAbstractPlottable::coordsToPixels(double key, double value, double &x, double &y) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + if (keyAxis->orientation() == Qt::Horizontal) + { + x = keyAxis->coordToPixel(key); + y = valueAxis->coordToPixel(value); + } else + { + y = keyAxis->coordToPixel(key); + x = valueAxis->coordToPixel(value); + } +} + +/*! \internal + \overload + + Returns the input as pixel coordinates in a QPointF. +*/ +const QPointF QCPAbstractPlottable::coordsToPixels(double key, double value) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPointF(); } + + if (keyAxis->orientation() == Qt::Horizontal) + return QPointF(keyAxis->coordToPixel(key), valueAxis->coordToPixel(value)); + else + return QPointF(valueAxis->coordToPixel(value), keyAxis->coordToPixel(key)); +} + +/*! \internal + + Convenience function for transforming a x/y pixel pair on the QCustomPlot surface to plot coordinates, + taking the orientations of the axes associated with this plottable into account (e.g. whether key + represents x or y). + + \a x and \a y are transformed to the plot coodinates and are written to \a key and \a value. + + \see coordsToPixels, QCPAxis::coordToPixel +*/ +void QCPAbstractPlottable::pixelsToCoords(double x, double y, double &key, double &value) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + if (keyAxis->orientation() == Qt::Horizontal) + { + key = keyAxis->pixelToCoord(x); + value = valueAxis->pixelToCoord(y); + } else + { + key = keyAxis->pixelToCoord(y); + value = valueAxis->pixelToCoord(x); + } +} + +/*! \internal + \overload + + Returns the pixel input \a pixelPos as plot coordinates \a key and \a value. +*/ +void QCPAbstractPlottable::pixelsToCoords(const QPointF &pixelPos, double &key, double &value) const +{ + pixelsToCoords(pixelPos.x(), pixelPos.y(), key, value); +} + +/*! \internal + + Returns the pen that should be used for drawing lines of the plottable. Returns mPen when the + graph is not selected and mSelectedPen when it is. +*/ +QPen QCPAbstractPlottable::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the plottable. Returns mBrush when the + graph is not selected and mSelectedBrush when it is. +*/ +QBrush QCPAbstractPlottable::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyFillAntialiasingHint, applyScattersAntialiasingHint, applyErrorBarsAntialiasingHint +*/ +void QCPAbstractPlottable::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aePlottables); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable fills. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyDefaultAntialiasingHint, applyScattersAntialiasingHint, applyErrorBarsAntialiasingHint +*/ +void QCPAbstractPlottable::applyFillAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiasedFill, QCP::aeFills); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable scatter points. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyFillAntialiasingHint, applyDefaultAntialiasingHint, applyErrorBarsAntialiasingHint +*/ +void QCPAbstractPlottable::applyScattersAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiasedScatters, QCP::aeScatters); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing plottable error bars. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased, applyFillAntialiasingHint, applyScattersAntialiasingHint, applyDefaultAntialiasingHint +*/ +void QCPAbstractPlottable::applyErrorBarsAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiasedErrorBars, QCP::aeErrorBars); +} + +/*! \internal + + Finds the shortest squared distance of \a point to the line segment defined by \a start and \a + end. + + This function may be used to help with the implementation of the \ref selectTest function for + specific plottables. + + \note This function is identical to QCPAbstractItem::distSqrToLine +*/ +double QCPAbstractPlottable::distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const +{ + QVector2D a(start); + QVector2D b(end); + QVector2D p(point); + QVector2D v(b-a); + + double vLengthSqr = v.lengthSquared(); + if (!qFuzzyIsNull(vLengthSqr)) + { + double mu = QVector2D::dotProduct(p-a, v)/vLengthSqr; + if (mu < 0) + return (a-p).lengthSquared(); + else if (mu > 1) + return (b-p).lengthSquared(); + else + return ((a + mu*v)-p).lengthSquared(); + } else + return (a-p).lengthSquared(); +} + +/* inherits documentation from base class */ +void QCPAbstractPlottable::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAbstractPlottable::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemAnchor +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemAnchor + \brief An anchor of an item to which positions can be attached to. + + An item (QCPAbstractItem) may have one or more anchors. Unlike QCPItemPosition, an anchor doesn't + control anything on its item, but provides a way to tie other items via their positions to the + anchor. + + For example, a QCPItemRect is defined by its positions \a topLeft and \a bottomRight. + Additionally it has various anchors like \a top, \a topRight or \a bottomLeft etc. So you can + attach the \a start (which is a QCPItemPosition) of a QCPItemLine to one of the anchors by + calling QCPItemPosition::setParentAnchor on \a start, passing the wanted anchor of the + QCPItemRect. This way the start of the line will now always follow the respective anchor location + on the rect item. + + Note that QCPItemPosition derives from QCPItemAnchor, so every position can also serve as an + anchor to other positions. + + To learn how to provide anchors in your own item subclasses, see the subclassing section of the + QCPAbstractItem documentation. +*/ + +/*! + Creates a new QCPItemAnchor. You shouldn't create QCPItemAnchor instances directly, even if + you want to make a new item subclass. Use \ref QCPAbstractItem::createAnchor instead, as + explained in the subclassing section of the QCPAbstractItem documentation. +*/ +QCPItemAnchor::QCPItemAnchor(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name, int anchorId) : + mName(name), + mParentPlot(parentPlot), + mParentItem(parentItem), + mAnchorId(anchorId) +{ +} + +QCPItemAnchor::~QCPItemAnchor() +{ + // unregister as parent at children: + QList currentChildren(mChildren.toList()); + for (int i=0; isetParentAnchor(0); // this acts back on this anchor and child removes itself from mChildren +} + +/*! + Returns the final absolute pixel position of the QCPItemAnchor on the QCustomPlot surface. + + The pixel information is internally retrieved via QCPAbstractItem::anchorPixelPosition of the + parent item, QCPItemAnchor is just an intermediary. +*/ +QPointF QCPItemAnchor::pixelPoint() const +{ + if (mParentItem) + { + if (mAnchorId > -1) + { + return mParentItem->anchorPixelPoint(mAnchorId); + } else + { + qDebug() << Q_FUNC_INFO << "no valid anchor id set:" << mAnchorId; + return QPointF(); + } + } else + { + qDebug() << Q_FUNC_INFO << "no parent item set"; + return QPointF(); + } +} + +/*! \internal + + Adds \a pos to the child list of this anchor. This is necessary to notify the children prior to + destruction of the anchor. + + Note that this function does not change the parent setting in \a pos. +*/ +void QCPItemAnchor::addChild(QCPItemPosition *pos) +{ + if (!mChildren.contains(pos)) + mChildren.insert(pos); + else + qDebug() << Q_FUNC_INFO << "provided pos is child already" << reinterpret_cast(pos); +} + +/*! \internal + + Removes \a pos from the child list of this anchor. + + Note that this function does not change the parent setting in \a pos. +*/ +void QCPItemAnchor::removeChild(QCPItemPosition *pos) +{ + if (!mChildren.remove(pos)) + qDebug() << Q_FUNC_INFO << "provided pos isn't child" << reinterpret_cast(pos); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemPosition +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemPosition + \brief Manages the position of an item. + + Every item has at least one public QCPItemPosition member pointer which provides ways to position the + item on the QCustomPlot surface. Some items have multiple positions, for example QCPItemRect has two: + \a topLeft and \a bottomRight. + + QCPItemPosition has a type (\ref PositionType) that can be set with \ref setType. This type defines + how coordinates passed to \ref setCoords are to be interpreted, e.g. as absolute pixel coordinates, as + plot coordinates of certain axes, etc. + + Further, QCPItemPosition may have a parent QCPItemAnchor, see \ref setParentAnchor. (Note that every + QCPItemPosition inherits from QCPItemAnchor and thus can itself be used as parent anchor for other + positions.) This way you can tie multiple items together. If the QCPItemPosition has a parent, the + coordinates set with \ref setCoords are considered to be absolute values in the reference frame of the + parent anchor, where (0, 0) means directly ontop of the parent anchor. For example, You could attach + the \a start position of a QCPItemLine to the \a bottom anchor of a QCPItemText to make the starting + point of the line always be centered under the text label, no matter where the text is moved to, or is + itself tied to. + + To set the apparent pixel position on the QCustomPlot surface directly, use \ref setPixelPoint. This + works no matter what type this QCPItemPosition is or what parent-child situation it is in, as \ref + setPixelPoint transforms the coordinates appropriately, to make the position appear at the specified + pixel values. +*/ + +/*! + Creates a new QCPItemPosition. You shouldn't create QCPItemPosition instances directly, even if + you want to make a new item subclass. Use \ref QCPAbstractItem::createPosition instead, as + explained in the subclassing section of the QCPAbstractItem documentation. +*/ +QCPItemPosition::QCPItemPosition(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name) : + QCPItemAnchor(parentPlot, parentItem, name), + mPositionType(ptAbsolute), + mKey(0), + mValue(0), + mParentAnchor(0) +{ +} + +QCPItemPosition::~QCPItemPosition() +{ + // unregister as parent at children: + // Note: this is done in ~QCPItemAnchor again, but it's important QCPItemPosition does it itself, because only then + // the setParentAnchor(0) call the correct QCPItemPosition::pixelPoint function instead of QCPItemAnchor::pixelPoint + QList currentChildren(mChildren.toList()); + for (int i=0; isetParentAnchor(0); // this acts back on this anchor and child removes itself from mChildren + // unregister as child in parent: + if (mParentAnchor) + mParentAnchor->removeChild(this); +} + +/*! + Sets the type of the position. The type defines how the coordinates passed to \ref setCoords + should be handled and how the QCPItemPosition should behave in the plot. + + The possible values for \a type can be separated in two main categories: + + \li The position is regarded as a point in plot coordinates. This corresponds to \ref ptPlotCoords + and requires two axes that define the plot coordinate system. They can be specified with \ref setAxes. + By default, the QCustomPlot's x- and yAxis are used. + + \li The position is fixed on the QCustomPlot surface, i.e. independent of axis ranges. This + corresponds to all other types, i.e. \ref ptAbsolute, \ref ptViewportRatio and \ref + ptAxisRectRatio. They differ only in the way the absolute position is described, see the + documentation of PositionType for details. For \ref ptAxisRectRatio, note that you can specify + the axis rect with \ref setAxisRect. By default this is set to the main axis rect. + + Note that the position type \ref ptPlotCoords is only available (and sensible) when the position + has no parent anchor (\ref setParentAnchor). + + If the type is changed, the apparent pixel position on the plot is preserved. This means + the coordinates as retrieved with coords() and set with \ref setCoords may change in the process. +*/ +void QCPItemPosition::setType(QCPItemPosition::PositionType type) +{ + if (mPositionType != type) + { + // if switching from or to coordinate type that isn't valid (e.g. because axes or axis rect + // were deleted), don't try to recover the pixelPoint() because it would output a qDebug warning. + bool recoverPixelPosition = true; + if ((mPositionType == ptPlotCoords || type == ptPlotCoords) && (!mKeyAxis || !mValueAxis)) + recoverPixelPosition = false; + if ((mPositionType == ptAxisRectRatio || type == ptAxisRectRatio) && (!mAxisRect)) + recoverPixelPosition = false; + + QPointF pixelP; + if (recoverPixelPosition) + pixelP = pixelPoint(); + + mPositionType = type; + + if (recoverPixelPosition) + setPixelPoint(pixelP); + } +} + +/*! + Sets the parent of this QCPItemPosition to \a parentAnchor. This means the position will now + follow any position changes of the anchor. The local coordinate system of positions with a parent + anchor always is absolute with (0, 0) being exactly on top of the parent anchor. (Hence the type + shouldn't be \ref ptPlotCoords for positions with parent anchors.) + + if \a keepPixelPosition is true, the current pixel position of the QCPItemPosition is preserved + during reparenting. If it's set to false, the coordinates are set to (0, 0), i.e. the position + will be exactly on top of the parent anchor. + + To remove this QCPItemPosition from any parent anchor, set \a parentAnchor to 0. + + If the QCPItemPosition previously had no parent and the type is \ref ptPlotCoords, the type is + set to \ref ptAbsolute, to keep the position in a valid state. +*/ +bool QCPItemPosition::setParentAnchor(QCPItemAnchor *parentAnchor, bool keepPixelPosition) +{ + // make sure self is not assigned as parent: + if (parentAnchor == this) + { + qDebug() << Q_FUNC_INFO << "can't set self as parent anchor" << reinterpret_cast(parentAnchor); + return false; + } + // make sure no recursive parent-child-relationships are created: + QCPItemAnchor *currentParent = parentAnchor; + while (currentParent) + { + if (QCPItemPosition *currentParentPos = currentParent->toQCPItemPosition()) + { + // is a QCPItemPosition, might have further parent, so keep iterating + if (currentParentPos == this) + { + qDebug() << Q_FUNC_INFO << "can't create recursive parent-child-relationship" << reinterpret_cast(parentAnchor); + return false; + } + currentParent = currentParentPos->mParentAnchor; + } else + { + // is a QCPItemAnchor, can't have further parent. Now make sure the parent items aren't the + // same, to prevent a position being child of an anchor which itself depends on the position, + // because they're both on the same item: + if (currentParent->mParentItem == mParentItem) + { + qDebug() << Q_FUNC_INFO << "can't set parent to be an anchor which itself depends on this position" << reinterpret_cast(parentAnchor); + return false; + } + break; + } + } + + // if previously no parent set and PosType is still ptPlotCoords, set to ptAbsolute: + if (!mParentAnchor && mPositionType == ptPlotCoords) + setType(ptAbsolute); + + // save pixel position: + QPointF pixelP; + if (keepPixelPosition) + pixelP = pixelPoint(); + // unregister at current parent anchor: + if (mParentAnchor) + mParentAnchor->removeChild(this); + // register at new parent anchor: + if (parentAnchor) + parentAnchor->addChild(this); + mParentAnchor = parentAnchor; + // restore pixel position under new parent: + if (keepPixelPosition) + setPixelPoint(pixelP); + else + setCoords(0, 0); + return true; +} + +/*! + Sets the coordinates of this QCPItemPosition. What the coordinates mean, is defined by the type + (\ref setType). + + For example, if the type is \ref ptAbsolute, \a key and \a value mean the x and y pixel position + on the QCustomPlot surface. In that case the origin (0, 0) is in the top left corner of the + QCustomPlot viewport. If the type is \ref ptPlotCoords, \a key and \a value mean a point in the + plot coordinate system defined by the axes set by \ref setAxes. By default those are the + QCustomPlot's xAxis and yAxis. See the documentation of \ref setType for other available + coordinate types and their meaning. + + \see setPixelPoint +*/ +void QCPItemPosition::setCoords(double key, double value) +{ + mKey = key; + mValue = value; +} + +/*! \overload + + Sets the coordinates as a QPointF \a pos where pos.x has the meaning of \a key and pos.y the + meaning of \a value of the \ref setCoords(double key, double value) method. +*/ +void QCPItemPosition::setCoords(const QPointF &pos) +{ + setCoords(pos.x(), pos.y()); +} + +/*! + Returns the final absolute pixel position of the QCPItemPosition on the QCustomPlot surface. It + includes all effects of type (\ref setType) and possible parent anchors (\ref setParentAnchor). + + \see setPixelPoint +*/ +QPointF QCPItemPosition::pixelPoint() const +{ + switch (mPositionType) + { + case ptAbsolute: + { + if (mParentAnchor) + return QPointF(mKey, mValue) + mParentAnchor->pixelPoint(); + else + return QPointF(mKey, mValue); + } + + case ptViewportRatio: + { + if (mParentAnchor) + { + return QPointF(mKey*mParentPlot->viewport().width(), + mValue*mParentPlot->viewport().height()) + mParentAnchor->pixelPoint(); + } else + { + return QPointF(mKey*mParentPlot->viewport().width(), + mValue*mParentPlot->viewport().height()) + mParentPlot->viewport().topLeft(); + } + } + + case ptAxisRectRatio: + { + if (mAxisRect) + { + if (mParentAnchor) + { + return QPointF(mKey*mAxisRect.data()->width(), + mValue*mAxisRect.data()->height()) + mParentAnchor->pixelPoint(); + } else + { + return QPointF(mKey*mAxisRect.data()->width(), + mValue*mAxisRect.data()->height()) + mAxisRect.data()->topLeft(); + } + } else + { + qDebug() << Q_FUNC_INFO << "No axis rect defined"; + return QPointF(mKey, mValue); + } + } + + case ptPlotCoords: + { + double x, y; + if (mKeyAxis && mValueAxis) + { + // both key and value axis are given, translate key/value to x/y coordinates: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + x = mKeyAxis.data()->coordToPixel(mKey); + y = mValueAxis.data()->coordToPixel(mValue); + } else + { + y = mKeyAxis.data()->coordToPixel(mKey); + x = mValueAxis.data()->coordToPixel(mValue); + } + } else if (mKeyAxis) + { + // only key axis is given, depending on orientation only transform x or y to key coordinate, other stays pixel: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + x = mKeyAxis.data()->coordToPixel(mKey); + y = mValue; + } else + { + y = mKeyAxis.data()->coordToPixel(mKey); + x = mValue; + } + } else if (mValueAxis) + { + // only value axis is given, depending on orientation only transform x or y to value coordinate, other stays pixel: + if (mValueAxis.data()->orientation() == Qt::Horizontal) + { + x = mValueAxis.data()->coordToPixel(mValue); + y = mKey; + } else + { + y = mValueAxis.data()->coordToPixel(mValue); + x = mKey; + } + } else + { + // no axis given, basically the same as if mPositionType were ptAbsolute + qDebug() << Q_FUNC_INFO << "No axes defined"; + x = mKey; + y = mValue; + } + return QPointF(x, y); + } + } + return QPointF(); +} + +/*! + When \ref setType is \ref ptPlotCoords, this function may be used to specify the axes the + coordinates set with \ref setCoords relate to. By default they are set to the initial xAxis and + yAxis of the QCustomPlot. +*/ +void QCPItemPosition::setAxes(QCPAxis *keyAxis, QCPAxis *valueAxis) +{ + mKeyAxis = keyAxis; + mValueAxis = valueAxis; +} + +/*! + When \ref setType is \ref ptAxisRectRatio, this function may be used to specify the axis rect the + coordinates set with \ref setCoords relate to. By default this is set to the main axis rect of + the QCustomPlot. +*/ +void QCPItemPosition::setAxisRect(QCPAxisRect *axisRect) +{ + mAxisRect = axisRect; +} + +/*! + Sets the apparent pixel position. This works no matter what type (\ref setType) this + QCPItemPosition is or what parent-child situation it is in, as coordinates are transformed + appropriately, to make the position finally appear at the specified pixel values. + + Only if the type is \ref ptAbsolute and no parent anchor is set, this function's effect is + identical to that of \ref setCoords. + + \see pixelPoint, setCoords +*/ +void QCPItemPosition::setPixelPoint(const QPointF &pixelPoint) +{ + switch (mPositionType) + { + case ptAbsolute: + { + if (mParentAnchor) + setCoords(pixelPoint-mParentAnchor->pixelPoint()); + else + setCoords(pixelPoint); + break; + } + + case ptViewportRatio: + { + if (mParentAnchor) + { + QPointF p(pixelPoint-mParentAnchor->pixelPoint()); + p.rx() /= (double)mParentPlot->viewport().width(); + p.ry() /= (double)mParentPlot->viewport().height(); + setCoords(p); + } else + { + QPointF p(pixelPoint-mParentPlot->viewport().topLeft()); + p.rx() /= (double)mParentPlot->viewport().width(); + p.ry() /= (double)mParentPlot->viewport().height(); + setCoords(p); + } + break; + } + + case ptAxisRectRatio: + { + if (mAxisRect) + { + if (mParentAnchor) + { + QPointF p(pixelPoint-mParentAnchor->pixelPoint()); + p.rx() /= (double)mAxisRect.data()->width(); + p.ry() /= (double)mAxisRect.data()->height(); + setCoords(p); + } else + { + QPointF p(pixelPoint-mAxisRect.data()->topLeft()); + p.rx() /= (double)mAxisRect.data()->width(); + p.ry() /= (double)mAxisRect.data()->height(); + setCoords(p); + } + } else + { + qDebug() << Q_FUNC_INFO << "No axis rect defined"; + setCoords(pixelPoint); + } + break; + } + + case ptPlotCoords: + { + double newKey, newValue; + if (mKeyAxis && mValueAxis) + { + // both key and value axis are given, translate point to key/value coordinates: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.x()); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.y()); + } else + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.y()); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.x()); + } + } else if (mKeyAxis) + { + // only key axis is given, depending on orientation only transform x or y to key coordinate, other stays pixel: + if (mKeyAxis.data()->orientation() == Qt::Horizontal) + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.x()); + newValue = pixelPoint.y(); + } else + { + newKey = mKeyAxis.data()->pixelToCoord(pixelPoint.y()); + newValue = pixelPoint.x(); + } + } else if (mValueAxis) + { + // only value axis is given, depending on orientation only transform x or y to value coordinate, other stays pixel: + if (mValueAxis.data()->orientation() == Qt::Horizontal) + { + newKey = pixelPoint.y(); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.x()); + } else + { + newKey = pixelPoint.x(); + newValue = mValueAxis.data()->pixelToCoord(pixelPoint.y()); + } + } else + { + // no axis given, basically the same as if mPositionType were ptAbsolute + qDebug() << Q_FUNC_INFO << "No axes defined"; + newKey = pixelPoint.x(); + newValue = pixelPoint.y(); + } + setCoords(newKey, newValue); + break; + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAbstractItem +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAbstractItem + \brief The abstract base class for all items in a plot. + + In QCustomPlot, items are supplemental graphical elements that are neither plottables + (QCPAbstractPlottable) nor axes (QCPAxis). While plottables are always tied to two axes and thus + plot coordinates, items can also be placed in absolute coordinates independent of any axes. Each + specific item has at least one QCPItemPosition member which controls the positioning. Some items + are defined by more than one coordinate and thus have two or more QCPItemPosition members (For + example, QCPItemRect has \a topLeft and \a bottomRight). + + This abstract base class defines a very basic interface like visibility and clipping. Since this + class is abstract, it can't be instantiated. Use one of the subclasses or create a subclass + yourself to create new items. + + The built-in items are: + + + + + + + + + + +
QCPItemLineA line defined by a start and an end point. May have different ending styles on each side (e.g. arrows).
QCPItemStraightLineA straight line defined by a start and a direction point. Unlike QCPItemLine, the straight line is infinitely long and has no endings.
QCPItemCurveA curve defined by start, end and two intermediate control points. May have different ending styles on each side (e.g. arrows).
QCPItemRectA rectangle
QCPItemEllipseAn ellipse
QCPItemPixmapAn arbitrary pixmap
QCPItemTextA text label
QCPItemBracketA bracket which may be used to reference/highlight certain parts in the plot.
QCPItemTracerAn item that can be attached to a QCPGraph and sticks to its data points, given a key coordinate.
+ + Items are by default clipped to the main axis rect. To make an item visible outside that axis + rect, disable clipping via \ref setClipToAxisRect. + + \section items-using Using items + + First you instantiate the item you want to use and add it to the plot: + \code + QCPItemLine *line = new QCPItemLine(customPlot); + customPlot->addItem(line); + \endcode + by default, the positions of the item are bound to the x- and y-Axis of the plot. So we can just + set the plot coordinates where the line should start/end: + \code + line->start->setCoords(-0.1, 0.8); + line->end->setCoords(1.1, 0.2); + \endcode + If we don't want the line to be positioned in plot coordinates but a different coordinate system, + e.g. absolute pixel positions on the QCustomPlot surface, we need to change the position type like this: + \code + line->start->setType(QCPItemPosition::ptAbsolute); + line->end->setType(QCPItemPosition::ptAbsolute); + \endcode + Then we can set the coordinates, this time in pixels: + \code + line->start->setCoords(100, 200); + line->end->setCoords(450, 320); + \endcode + + \section items-subclassing Creating own items + + To create an own item, you implement a subclass of QCPAbstractItem. These are the pure + virtual functions, you must implement: + \li \ref selectTest + \li \ref draw + + See the documentation of those functions for what they need to do. + + \subsection items-positioning Allowing the item to be positioned + + As mentioned, item positions are represented by QCPItemPosition members. Let's assume the new item shall + have only one point as its position (as opposed to two like a rect or multiple like a polygon). You then add + a public member of type QCPItemPosition like so: + + \code QCPItemPosition * const myPosition;\endcode + + the const makes sure the pointer itself can't be modified from the user of your new item (the QCPItemPosition + instance it points to, can be modified, of course). + The initialization of this pointer is made easy with the \ref createPosition function. Just assign + the return value of this function to each QCPItemPosition in the constructor of your item. \ref createPosition + takes a string which is the name of the position, typically this is identical to the variable name. + For example, the constructor of QCPItemExample could look like this: + + \code + QCPItemExample::QCPItemExample(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + myPosition(createPosition("myPosition")) + { + // other constructor code + } + \endcode + + \subsection items-drawing The draw function + + To give your item a visual representation, reimplement the \ref draw function and use the passed + QCPPainter to draw the item. You can retrieve the item position in pixel coordinates from the + position member(s) via \ref QCPItemPosition::pixelPoint. + + To optimize performance you should calculate a bounding rect first (don't forget to take the pen + width into account), check whether it intersects the \ref clipRect, and only draw the item at all + if this is the case. + + \subsection items-selection The selectTest function + + Your implementation of the \ref selectTest function may use the helpers \ref distSqrToLine and + \ref rectSelectTest. With these, the implementation of the selection test becomes significantly + simpler for most items. See the documentation of \ref selectTest for what the function parameters + mean and what the function should return. + + \subsection anchors Providing anchors + + Providing anchors (QCPItemAnchor) starts off like adding a position. First you create a public + member, e.g. + + \code QCPItemAnchor * const bottom;\endcode + + and create it in the constructor with the \ref createAnchor function, assigning it a name and an + anchor id (an integer enumerating all anchors on the item, you may create an own enum for this). + Since anchors can be placed anywhere, relative to the item's position(s), your item needs to + provide the position of every anchor with the reimplementation of the \ref anchorPixelPoint(int + anchorId) function. + + In essence the QCPItemAnchor is merely an intermediary that itself asks your item for the pixel + position when anything attached to the anchor needs to know the coordinates. +*/ + +/* start of documentation of inline functions */ + +/*! \fn QList QCPAbstractItem::positions() const + + Returns all positions of the item in a list. + + \see anchors, position +*/ + +/*! \fn QList QCPAbstractItem::anchors() const + + Returns all anchors of the item in a list. Note that since a position (QCPItemPosition) is always + also an anchor, the list will also contain the positions of this item. + + \see positions, anchor +*/ + +/* end of documentation of inline functions */ +/* start documentation of pure virtual functions */ + +/*! \fn void QCPAbstractItem::draw(QCPPainter *painter) = 0 + \internal + + Draws this item with the provided \a painter. + + The cliprect of the provided painter is set to the rect returned by \ref clipRect before this + function is called. The clipRect depends on the clipping settings defined by \ref + setClipToAxisRect and \ref setClipAxisRect. +*/ + +/* end documentation of pure virtual functions */ +/* start documentation of signals */ + +/*! \fn void QCPAbstractItem::selectionChanged(bool selected) + This signal is emitted when the selection state of this item has changed, either by user interaction + or by a direct call to \ref setSelected. +*/ + +/* end documentation of signals */ + +/*! + Base class constructor which initializes base class members. +*/ +QCPAbstractItem::QCPAbstractItem(QCustomPlot *parentPlot) : + QCPLayerable(parentPlot), + mClipToAxisRect(false), + mSelectable(true), + mSelected(false) +{ + QList rects = parentPlot->axisRects(); + if (rects.size() > 0) + { + setClipToAxisRect(true); + setClipAxisRect(rects.first()); + } +} + +QCPAbstractItem::~QCPAbstractItem() +{ + // don't delete mPositions because every position is also an anchor and thus in mAnchors + qDeleteAll(mAnchors); +} + +/*! + Sets whether the item shall be clipped to an axis rect or whether it shall be visible on the + entire QCustomPlot. The axis rect can be set with \ref setClipAxisRect. + + \see setClipAxisRect +*/ +void QCPAbstractItem::setClipToAxisRect(bool clip) +{ + mClipToAxisRect = clip; + if (mClipToAxisRect) + setParentLayerable(mClipAxisRect.data()); +} + +/*! + Sets the clip axis rect. It defines the rect that will be used to clip the item when \ref + setClipToAxisRect is set to true. + + \see setClipToAxisRect +*/ +void QCPAbstractItem::setClipAxisRect(QCPAxisRect *rect) +{ + mClipAxisRect = rect; + if (mClipToAxisRect) + setParentLayerable(mClipAxisRect.data()); +} + +/*! + Sets whether the user can (de-)select this item by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains QCustomPlot::iSelectItems.) + + However, even when \a selectable was set to false, it is possible to set the selection manually, + by calling \ref setSelected. + + \see QCustomPlot::setInteractions, setSelected +*/ +void QCPAbstractItem::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets whether this item is selected or not. When selected, it might use a different visual + appearance (e.g. pen and brush), this depends on the specific item though. + + The entire selection mechanism for items is handled automatically when \ref + QCustomPlot::setInteractions contains QCustomPlot::iSelectItems. You only need to call this + function when you wish to change the selection state manually. + + This function can change the selection state even when \ref setSelectable was set to false. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + \see setSelectable, selectTest +*/ +void QCPAbstractItem::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/*! + Returns the QCPItemPosition with the specified \a name. If this item doesn't have a position by + that name, returns 0. + + This function provides an alternative way to access item positions. Normally, you access + positions direcly by their member pointers (which typically have the same variable name as \a + name). + + \see positions, anchor +*/ +QCPItemPosition *QCPAbstractItem::position(const QString &name) const +{ + for (int i=0; iname() == name) + return mPositions.at(i); + } + qDebug() << Q_FUNC_INFO << "position with name not found:" << name; + return 0; +} + +/*! + Returns the QCPItemAnchor with the specified \a name. If this item doesn't have an anchor by + that name, returns 0. + + This function provides an alternative way to access item anchors. Normally, you access + anchors direcly by their member pointers (which typically have the same variable name as \a + name). + + \see anchors, position +*/ +QCPItemAnchor *QCPAbstractItem::anchor(const QString &name) const +{ + for (int i=0; iname() == name) + return mAnchors.at(i); + } + qDebug() << Q_FUNC_INFO << "anchor with name not found:" << name; + return 0; +} + +/*! + Returns whether this item has an anchor with the specified \a name. + + Note that you can check for positions with this function, too. This is because every position is + also an anchor (QCPItemPosition inherits from QCPItemAnchor). + + \see anchor, position +*/ +bool QCPAbstractItem::hasAnchor(const QString &name) const +{ + for (int i=0; iname() == name) + return true; + } + return false; +} + +/*! \internal + + Returns the rect the visual representation of this item is clipped to. This depends on the + current setting of \ref setClipToAxisRect as well as the axis rect set with \ref setClipAxisRect. + + If the item is not clipped to an axis rect, the \ref QCustomPlot::viewport rect is returned. + + \see draw +*/ +QRect QCPAbstractItem::clipRect() const +{ + if (mClipToAxisRect && mClipAxisRect) + return mClipAxisRect.data()->rect(); + else + return mParentPlot->viewport(); +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing item lines. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPAbstractItem::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeItems); +} + +/*! \internal + + Finds the shortest squared distance of \a point to the line segment defined by \a start and \a + end. + + This function may be used to help with the implementation of the \ref selectTest function for + specific items. + + \note This function is identical to QCPAbstractPlottable::distSqrToLine + + \see rectSelectTest +*/ +double QCPAbstractItem::distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const +{ + QVector2D a(start); + QVector2D b(end); + QVector2D p(point); + QVector2D v(b-a); + + double vLengthSqr = v.lengthSquared(); + if (!qFuzzyIsNull(vLengthSqr)) + { + double mu = QVector2D::dotProduct(p-a, v)/vLengthSqr; + if (mu < 0) + return (a-p).lengthSquared(); + else if (mu > 1) + return (b-p).lengthSquared(); + else + return ((a + mu*v)-p).lengthSquared(); + } else + return (a-p).lengthSquared(); +} + +/*! \internal + + A convenience function which returns the selectTest value for a specified \a rect and a specified + click position \a pos. \a filledRect defines whether a click inside the rect should also be + considered a hit or whether only the rect border is sensitive to hits. + + This function may be used to help with the implementation of the \ref selectTest function for + specific items. + + For example, if your item consists of four rects, call this function four times, once for each + rect, in your \ref selectTest reimplementation. Finally, return the minimum of all four returned + values which were greater or equal to zero. (Because this function may return -1.0 when \a pos + doesn't hit \a rect at all). If all calls returned -1.0, return -1.0, too, because your item + wasn't hit. + + \see distSqrToLine +*/ +double QCPAbstractItem::rectSelectTest(const QRectF &rect, const QPointF &pos, bool filledRect) const +{ + double result = -1; + + // distance to border: + QList lines; + lines << QLineF(rect.topLeft(), rect.topRight()) << QLineF(rect.bottomLeft(), rect.bottomRight()) + << QLineF(rect.topLeft(), rect.bottomLeft()) << QLineF(rect.topRight(), rect.bottomRight()); + double minDistSqr = std::numeric_limits::max(); + for (int i=0; i mParentPlot->selectionTolerance()*0.99) + { + if (rect.contains(pos)) + result = mParentPlot->selectionTolerance()*0.99; + } + return result; +} + +/*! \internal + + Returns the pixel position of the anchor with Id \a anchorId. This function must be reimplemented in + item subclasses if they want to provide anchors (QCPItemAnchor). + + For example, if the item has two anchors with id 0 and 1, this function takes one of these anchor + ids and returns the respective pixel points of the specified anchor. + + \see createAnchor +*/ +QPointF QCPAbstractItem::anchorPixelPoint(int anchorId) const +{ + qDebug() << Q_FUNC_INFO << "called on item which shouldn't have any anchors (this method not reimplemented). anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Creates a QCPItemPosition, registers it with this item and returns a pointer to it. The specified + \a name must be a unique string that is usually identical to the variable name of the position + member (This is needed to provide the name-based \ref position access to positions). + + Don't delete positions created by this function manually, as the item will take care of it. + + Use this function in the constructor (initialization list) of the specific item subclass to + create each position member. Don't create QCPItemPositions with \b new yourself, because they + won't be registered with the item properly. + + \see createAnchor +*/ +QCPItemPosition *QCPAbstractItem::createPosition(const QString &name) +{ + if (hasAnchor(name)) + qDebug() << Q_FUNC_INFO << "anchor/position with name exists already:" << name; + QCPItemPosition *newPosition = new QCPItemPosition(mParentPlot, this, name); + mPositions.append(newPosition); + mAnchors.append(newPosition); // every position is also an anchor + newPosition->setAxes(mParentPlot->xAxis, mParentPlot->yAxis); + newPosition->setType(QCPItemPosition::ptPlotCoords); + if (mParentPlot->axisRect()) + newPosition->setAxisRect(mParentPlot->axisRect()); + newPosition->setCoords(0, 0); + return newPosition; +} + +/*! \internal + + Creates a QCPItemAnchor, registers it with this item and returns a pointer to it. The specified + \a name must be a unique string that is usually identical to the variable name of the anchor + member (This is needed to provide the name based \ref anchor access to anchors). + + The \a anchorId must be a number identifying the created anchor. It is recommended to create an + enum (e.g. "AnchorIndex") for this on each item that uses anchors. This id is used by the anchor + to identify itself when it calls QCPAbstractItem::anchorPixelPoint. That function then returns + the correct pixel coordinates for the passed anchor id. + + Don't delete anchors created by this function manually, as the item will take care of it. + + Use this function in the constructor (initialization list) of the specific item subclass to + create each anchor member. Don't create QCPItemAnchors with \b new yourself, because then they + won't be registered with the item properly. + + \see createPosition +*/ +QCPItemAnchor *QCPAbstractItem::createAnchor(const QString &name, int anchorId) +{ + if (hasAnchor(name)) + qDebug() << Q_FUNC_INFO << "anchor/position with name exists already:" << name; + QCPItemAnchor *newAnchor = new QCPItemAnchor(mParentPlot, this, name, anchorId); + mAnchors.append(newAnchor); + return newAnchor; +} + +/* inherits documentation from base class */ +void QCPAbstractItem::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAbstractItem::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAbstractItem::selectionCategory() const +{ + return QCP::iSelectItems; +} + + +/*! \file */ + + + +/*! \mainpage %QCustomPlot 1.0.1 Documentation + + \image html qcp-doc-logo.png + + Below is a brief overview of and guide to the classes and their relations. If you are new to + QCustomPlot and just want to start using it, it's recommended to look at the tutorials and + examples at + + http://www.qcustomplot.com/ + + This documentation is especially helpful as a reference, when you're familiar with the basic + concept of how to use %QCustomPlot and you wish to learn more about specific functionality. + See the \ref classoverview "class overview" for diagrams explaining the relationships between + the most important classes of the QCustomPlot library. + + The central widget which displays the plottables and axes on its surface is QCustomPlot. Every + QCustomPlot contains four axes by default. They can be accessed via the members xAxis, yAxis, + xAxis2 and yAxis2, and are of type QCPAxis. QCustomPlot supports an arbitrary number of axes and + axis rects, see the documentation of QCPAxisRect for details. + + \section mainpage-plottables Plottables + + \a Plottables are classes that display any kind of data inside the QCustomPlot. They all derive + from QCPAbstractPlottable. For example, the QCPGraph class is a plottable that displays a graph + inside the plot with different line styles, scatter styles, filling etc. + + Since plotting graphs is such a dominant use case, QCustomPlot has a special interface for working + with QCPGraph plottables, that makes it very easy to handle them:\n + You create a new graph with QCustomPlot::addGraph and access them with QCustomPlot::graph. + + For all other plottables, you need to use the normal plottable interface:\n + First, you create an instance of the plottable you want, e.g. + \code + QCPCurve *newCurve = new QCPCurve(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot: + \code + customPlot->addPlottable(newCurve);\endcode + and then modify the properties of the newly created plottable via the newCurve pointer. + + Plottables (including graphs) can be retrieved via QCustomPlot::plottable. Since the return type + of that function is the abstract base class of all plottables, QCPAbstractPlottable, you will + probably want to qobject_cast the returned pointer to the respective plottable subclass. (As + usual, if the cast returns zero, the plottable wasn't of that specific subclass.) + + All further interfacing with plottables (e.g how to set data) is specific to the plottable type. + See the documentations of the subclasses: QCPGraph, QCPCurve, QCPBars, QCPStatisticalBox. + + \section mainpage-axes Controlling the Axes + + As mentioned, QCustomPlot has four axes by default: \a xAxis (bottom), \a yAxis (left), \a xAxis2 + (top), \a yAxis2 (right). + + Their range is handled by the simple QCPRange class. You can set the range with the + QCPAxis::setRange function. By default, the axes represent a linear scale. To set a logarithmic + scale, set \ref QCPAxis::setScaleType to \ref QCPAxis::stLogarithmic. The logarithm base can be set freely + with \ref QCPAxis::setScaleLogBase. + + By default, an axis automatically creates and labels ticks in a sensible manner. See the + following functions for tick manipulation:\n QCPAxis::setTicks, QCPAxis::setAutoTicks, + QCPAxis::setAutoTickCount, QCPAxis::setAutoTickStep, QCPAxis::setTickLabels, + QCPAxis::setTickLabelType, QCPAxis::setTickLabelRotation, QCPAxis::setTickStep, + QCPAxis::setTickLength,... + + Each axis can be given an axis label (e.g. "Voltage (mV)") with QCPAxis::setLabel. + + The distance of an axis backbone to the respective viewport border is called its margin. + Normally, the margins are calculated automatically. To change this, set + \ref QCPAxisRect::setAutoMargins to exclude the respective margin sides, set the margins manually with + \ref QCPAxisRect::setMargins. The main axis rect can be reached with \ref QCustomPlot::axisRect(). + + \section mainpage-legend Plot Legend + + Every QCustomPlot owns one QCPLegend (as \a legend) by default. A legend is a small layout + element inside the plot which lists the plottables with an icon of the plottable line/symbol and + a description. The Description is retrieved from the plottable name + (QCPAbstractPlottable::setName). Plottables can be added and removed from the legend via \ref + QCPAbstractPlottable::addToLegend and \ref QCPAbstractPlottable::removeFromLegend. By default, + adding a plottable to QCustomPlot automatically adds it to the legend, too. This behaviour can be + modified with the QCustomPlot::setAutoAddPlottableToLegend property. + + The QCPLegend provides an interface to access, add and remove legend items directly, too. See + QCPLegend::item, QCPLegend::itemWithPlottable, QCPLegend::addItem, QCPLegend::removeItem for + example. + + Multiple legends are supported via the layout system (as a QCPLegend simply is a normal layout + element). + + \section mainpage-userinteraction User Interactions + + QCustomPlot supports dragging axis ranges with the mouse (\ref + QCPAxisRect::setRangeDrag), zooming axis ranges with the mouse wheel (\ref + QCPAxisRect::setRangeZoom) and a complete selection mechanism. + + The availability of these interactions is controlled with \ref QCustomPlot::setInteractions. For + details about the interaction system, see the documentation there. + + Further, QCustomPlot always emits corresponding signals, when objects are clicked or + doubleClicked. See \ref QCustomPlot::plottableClick, \ref QCustomPlot::plottableDoubleClick + and \ref QCustomPlot::axisClick for example. + + \section mainpage-items Items + + Apart from plottables there is another category of plot objects that are important: Items. The + base class of all items is QCPAbstractItem. An item sets itself apart from plottables in that + it's not necessarily bound to any axes. This means it may also be positioned in absolute pixel + coordinates or placed at a relative position on an axis rect. Further, it usually doesn't + represent data directly, but acts as decoration, emphasis, description etc. + + Multiple items can be arranged in a parent-child-hierarchy allowing for dynamical behaviour. For + example, you could place the head of an arrow at a fixed plot coordinate, so it always points to + some important area in the plot. The tail of the arrow can be anchored to a text item which + always resides in the top center of the axis rect, independent of where the user drags the axis + ranges. This way the arrow stretches and turns so it always points from the label to the + specified plot coordinate, without any further code necessary. + + For a more detailed introduction, see the QCPAbstractItem documentation, and from there the + documentations of the individual built-in items, to find out how to use them. + + \section mainpage-layoutelements Layout elements and layouts + + QCustomPlot uses an internal layout system to provide dynamic sizing and positioning of objects like + the axis rect(s), legends and the plot title. They are all based on \ref QCPLayoutElement and are arranged by + placing them inside a \ref QCPLayout. + + Details on this topic are given on the dedicated page about \ref thelayoutsystem "the layout system". + + \section mainpage-performancetweaks Performance Tweaks + + Although QCustomPlot is quite fast, some features like translucent fills, antialiasing and thick + lines can cause a significant slow down. If you notice this in your application, here are some + thoughts on how to increase performance. By far the most time is spent in the drawing functions, + specifically the drawing of graphs. For maximum performance, consider the following (most + recommended/effective measures first): + + \li use Qt 4.8.0 and up. Performance has doubled or tripled with respect to Qt 4.7.4. However + QPainter was broken and drawing pixel precise things, e.g. scatters, isn't possible with Qt >= + 4.8.0. So it's a performance vs. plot quality tradeoff when switching to Qt 4.8. + \li To increase responsiveness during dragging, consider setting \ref QCustomPlot::setNoAntialiasingOnDrag to true. + \li On X11 (GNU/Linux), avoid the slow native drawing system, use raster by supplying + "-graphicssystem raster" as command line argument or calling QApplication::setGraphicsSystem("raster") + before creating the QApplication object. (Only available for Qt versions before 5.0) + \li On all operating systems, use OpenGL hardware acceleration by supplying "-graphicssystem + opengl" as command line argument or calling QApplication::setGraphicsSystem("opengl") (Only + available for Qt versions before 5.0). If OpenGL is available, this will slightly decrease the + quality of antialiasing, but extremely increase performance especially with alpha + (semi-transparent) fills, much antialiasing and a large QCustomPlot drawing surface. Note + however, that the maximum frame rate might be constrained by the vertical sync frequency of your + monitor (VSync can be disabled in the graphics card driver configuration). So for simple plots + (where the potential framerate is far above 60 frames per second), OpenGL acceleration might + achieve numerically lower frame rates than the other graphics systems, because they are not + capped at the VSync frequency. + \li Avoid any kind of alpha (transparency), especially in fills + \li Avoid lines with a pen width greater than one + \li Avoid any kind of antialiasing, especially in graph lines (see \ref QCustomPlot::setNotAntialiasedElements) + \li Avoid repeatedly setting the complete data set with \ref QCPGraph::setData. Use \ref QCPGraph::addData instead, if most + data points stay unchanged, e.g. in a running measurement. + \li Set the \a copy parameter of the setData functions to false, so only pointers get + transferred. (Relevant only if preparing data maps with a large number of points, i.e. over 10000) + + \section mainpage-flags Preprocessor Define Flags + + QCustomPlot understands some preprocessor defines that are useful for debugging and compilation: +
+
\c QCUSTOMPLOT_COMPILE_LIBRARY +
Define this flag when you compile QCustomPlot as a shared library (.so/.dll) +
\c QCUSTOMPLOT_USE_LIBRARY +
Define this flag before including the header, when using QCustomPlot as a shared library +
\c QCUSTOMPLOT_CHECK_DATA +
If this flag is defined, the QCustomPlot plottables will perform data validity checks on every redraw. + This means they will give qDebug output when you plot \e inf or \e nan values, they will not + fix your data. +
+ +*/ + +/*! \page classoverview Class Overview + + The following diagrams may help to gain a deeper understanding of the relationships between classes that make up + the QCustomPlot library. The diagrams are not exhaustive, so only the classes deemed most relevant are shown. + + \section classoverview-relations Class Relationship Diagram + \image html RelationOverview.png "Overview of most important classes and their relations" + \section classoverview-inheritance Class Inheritance Tree + \image html InheritanceOverview.png "Inheritance tree of most important classes" + +*/ + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCustomPlot +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCustomPlot + + \brief The central class of the library. This is the QWidget which displays the plot and + interacts with the user. + + For tutorials on how to use QCustomPlot, see the website\n + http://www.qcustomplot.com/ +*/ + +/* start of documentation of inline functions */ + +/*! \fn QRect QCustomPlot::viewport() const + + Returns the viewport rect of this QCustomPlot instance. The viewport is the area the plot is + drawn in, all mechanisms, e.g. margin caluclation take the viewport to be the outer border of the + plot. The viewport normally is the rect() of the QCustomPlot widget, i.e. a rect with top left + (0, 0) and size of the QCustomPlot widget. + + Don't confuse the viewport with the axis rect (QCustomPlot::axisRect). An axis rect is typically + an area enclosed by four axes, where the graphs/plottables are drawn in. The viewport is larger + and contains also the axes themselves, their tick numbers, their labels, the plot title etc. + + Only when saving to a file (see \ref savePng, savePdf etc.) the viewport is temporarily modified + to allow saving plots with sizes independent of the current widget size. +*/ + +/*! \fn QCPLayoutGrid *QCustomPlot::plotLayout() const + + Returns the top level layout of this QCustomPlot instance. It is a \ref QCPLayoutGrid, initially containing just + one cell with the main QCPAxisRect inside. +*/ + +/* end of documentation of inline functions */ +/* start of documentation of signals */ + +/*! \fn void QCustomPlot::mouseDoubleClick(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse double click event. +*/ + +/*! \fn void QCustomPlot::mousePress(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse press event. + + It is emitted before QCustomPlot handles any other mechanism like range dragging. So a slot + connected to this signal can still influence the behaviour e.g. with \ref QCPAxisRect::setRangeDrag or \ref + QCPAxisRect::setRangeDragAxes. +*/ + +/*! \fn void QCustomPlot::mouseMove(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse move event. + + It is emitted before QCustomPlot handles any other mechanism like range dragging. So a slot + connected to this signal can still influence the behaviour e.g. with \ref QCPAxisRect::setRangeDrag or \ref + QCPAxisRect::setRangeDragAxes. + + \warning It is discouraged to change the drag-axes with \ref QCPAxisRect::setRangeDragAxes here, + because the dragging starting point was saved the moment the mouse was pressed. Thus it only has + a meaning for the range drag axes that were set at that moment. If you want to change the drag + axes, consider doing this in the \ref mousePress signal instead. +*/ + +/*! \fn void QCustomPlot::mouseRelease(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse release event. + + It is emitted before QCustomPlot handles any other mechanisms like object selection. So a + slot connected to this signal can still influence the behaviour e.g. with \ref setInteractions or + \ref QCPAbstractPlottable::setSelectable. +*/ + +/*! \fn void QCustomPlot::mouseWheel(QMouseEvent *event) + + This signal is emitted when the QCustomPlot receives a mouse wheel event. + + It is emitted before QCustomPlot handles any other mechanisms like range zooming. So a slot + connected to this signal can still influence the behaviour e.g. with \ref QCPAxisRect::setRangeZoom, \ref + QCPAxisRect::setRangeZoomAxes or \ref QCPAxisRect::setRangeZoomFactor. +*/ + +/*! \fn void QCustomPlot::plottableClick(QCPAbstractPlottable *plottable, QMouseEvent *event) + + This signal is emitted when a plottable is clicked. + + \a event is the mouse event that caused the click and \a plottable is the plottable that received + the click. + + \see plottableDoubleClick +*/ + +/*! \fn void QCustomPlot::plottableDoubleClick(QCPAbstractPlottable *plottable, QMouseEvent *event) + + This signal is emitted when a plottable is double clicked. + + \a event is the mouse event that caused the click and \a plottable is the plottable that received + the click. + + \see plottableClick +*/ + +/*! \fn void QCustomPlot::itemClick(QCPAbstractItem *item, QMouseEvent *event) + + This signal is emitted when an item is clicked. + + \a event is the mouse event that caused the click and \a item is the item that received the + click. + + \see itemDoubleClick +*/ + +/*! \fn void QCustomPlot::itemDoubleClick(QCPAbstractItem *item, QMouseEvent *event) + + This signal is emitted when an item is double clicked. + + \a event is the mouse event that caused the click and \a item is the item that received the + click. + + \see itemClick +*/ + +/*! \fn void QCustomPlot::axisClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event) + + This signal is emitted when an axis is clicked. + + \a event is the mouse event that caused the click, \a axis is the axis that received the click and + \a part indicates the part of the axis that was clicked. + + \see axisDoubleClick +*/ + +/*! \fn void QCustomPlot::axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event) + + This signal is emitted when an axis is double clicked. + + \a event is the mouse event that caused the click, \a axis is the axis that received the click and + \a part indicates the part of the axis that was clicked. + + \see axisClick +*/ + +/*! \fn void QCustomPlot::legendClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event) + + This signal is emitted when a legend (item) is clicked. + + \a event is the mouse event that caused the click, \a legend is the legend that received the + click and \a item is the legend item that received the click. If only the legend and no item is + clicked, \a item is 0. This happens for a click inside the legend padding or the space between + two items. + + \see legendDoubleClick +*/ + +/*! \fn void QCustomPlot::legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event) + + This signal is emitted when a legend (item) is double clicked. + + \a event is the mouse event that caused the click, \a legend is the legend that received the + click and \a item is the legend item that received the click. If only the legend and no item is + clicked, \a item is 0. This happens for a click inside the legend padding or the space between + two items. + + \see legendClick +*/ + +/*! \fn void QCustomPlot:: titleClick(QMouseEvent *event, QCPPlotTitle *title) + + This signal is emitted when a plot title is clicked. + + \a event is the mouse event that caused the click and \a title is the plot title that received + the click. + + \see titleDoubleClick +*/ + +/*! \fn void QCustomPlot::titleDoubleClick(QMouseEvent *event, QCPPlotTitle *title) + + This signal is emitted when a plot title is double clicked. + + \a event is the mouse event that caused the click and \a title is the plot title that received + the click. + + \see titleClick +*/ + +/*! \fn void QCustomPlot::selectionChangedByUser() + + This signal is emitted after the user has changed the selection in the QCustomPlot, e.g. by + clicking. It is not emitted when the selection state of an object has changed programmatically by + a direct call to setSelected() on an object or by calling \ref deselectAll. + + In addition to this signal, selectable objects also provide individual signals, for example + QCPAxis::selectionChanged or QCPAbstractPlottable::selectionChanged. Note that those signals are + emitted even if the selection state is changed programmatically. + + See the documentation of \ref setInteractions for details about the selection mechanism. + + \see selectedPlottables, selectedGraphs, selectedItems, selectedAxes, selectedLegends +*/ + +/*! \fn void QCustomPlot::beforeReplot() + + This signal is emitted immediately before a replot takes place (caused by a call to the slot \ref + replot). + + It is safe to mutually connect the replot slot with this signal on two QCustomPlots to make them + replot synchronously, it won't cause an infinite recursion. + + \see replot, afterReplot +*/ + +/*! \fn void QCustomPlot::afterReplot() + + This signal is emitted immediately after a replot has taken place (caused by a call to the slot \ref + replot). + + It is safe to mutually connect the replot slot with this signal on two QCustomPlots to make them + replot synchronously, it won't cause an infinite recursion. + + \see replot, beforeReplot +*/ + +/* end of documentation of signals */ + +/*! + Constructs a QCustomPlot and sets reasonable default values. +*/ +QCustomPlot::QCustomPlot(QWidget *parent) : + QWidget(parent), + xAxis(0), + yAxis(0), + xAxis2(0), + yAxis2(0), + legend(0), + mPlotLayout(0), + mAutoAddPlottableToLegend(true), + mAntialiasedElements(QCP::aeNone), + mNotAntialiasedElements(QCP::aeNone), + mInteractions(0), + mSelectionTolerance(8), + mNoAntialiasingOnDrag(false), + mBackgroundBrush(Qt::white, Qt::SolidPattern), + mBackgroundScaled(true), + mBackgroundScaledMode(Qt::KeepAspectRatioByExpanding), + mCurrentLayer(0), + mPlottingHints(QCP::phCacheLabels), + mMultiSelectModifier(Qt::ControlModifier), + mPaintBuffer(size()), + mMouseEventElement(0), + mReplotting(false) +{ + setAttribute(Qt::WA_NoMousePropagation); + setAttribute(Qt::WA_OpaquePaintEvent); + setMouseTracking(true); + QLocale currentLocale = locale(); + currentLocale.setNumberOptions(QLocale::OmitGroupSeparator); + setLocale(currentLocale); + + // create initial layers: + mLayers.append(new QCPLayer(this, "background")); + mLayers.append(new QCPLayer(this, "grid")); + mLayers.append(new QCPLayer(this, "main")); + mLayers.append(new QCPLayer(this, "axes")); + mLayers.append(new QCPLayer(this, "legend")); + updateLayerIndices(); + setCurrentLayer("main"); + + // create initial layout, axis rect and legend: + mPlotLayout = new QCPLayoutGrid; + mPlotLayout->initializeParentPlot(this); + mPlotLayout->setParent(this); // important because if parent is QWidget, QCPLayout::sizeConstraintsChanged will call QWidget::updateGeometry + QCPAxisRect *defaultAxisRect = new QCPAxisRect(this, true); + mPlotLayout->addElement(0, 0, defaultAxisRect); + xAxis = defaultAxisRect->axis(QCPAxis::atBottom); + yAxis = defaultAxisRect->axis(QCPAxis::atLeft); + xAxis2 = defaultAxisRect->axis(QCPAxis::atTop); + yAxis2 = defaultAxisRect->axis(QCPAxis::atRight); + legend = new QCPLegend; + legend->setVisible(false); + defaultAxisRect->insetLayout()->addElement(legend, Qt::AlignRight|Qt::AlignTop); + defaultAxisRect->insetLayout()->setMargins(QMargins(12, 12, 12, 12)); + + defaultAxisRect->setLayer("background"); + xAxis->setLayer("axes"); + yAxis->setLayer("axes"); + xAxis2->setLayer("axes"); + yAxis2->setLayer("axes"); + xAxis->grid()->setLayer("grid"); + yAxis->grid()->setLayer("grid"); + xAxis2->grid()->setLayer("grid"); + yAxis2->grid()->setLayer("grid"); + legend->setLayer("legend"); + + setViewport(rect()); // needs to be called after mPlotLayout has been created + +#ifdef Q_OS_WIN + setPlottingHint(QCP::phForceRepaint); +#endif + + replot(); +} + +QCustomPlot::~QCustomPlot() +{ + clearPlottables(); + clearItems(); + + if (mPlotLayout) + { + delete mPlotLayout; + mPlotLayout = 0; + } + + mCurrentLayer = 0; + qDeleteAll(mLayers); // don't use removeLayer, because it would prevent the last layer to be removed + mLayers.clear(); +} + +/*! + Sets which elements are forcibly drawn antialiased as an \a or combination of QCP::AntialiasedElement. + + This overrides the antialiasing settings for whole element groups, normally controlled with the + \a setAntialiasing function on the individual elements. If an element is neither specified in + \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on + each individual element instance is used. + + For example, if \a antialiasedElements contains \ref QCP::aePlottables, all plottables will be + drawn antialiased, no matter what the specific QCPAbstractPlottable::setAntialiased value was set + to. + + if an element in \a antialiasedElements is already set in \ref setNotAntialiasedElements, it is + removed from there. + + \see setNotAntialiasedElements +*/ +void QCustomPlot::setAntialiasedElements(const QCP::AntialiasedElements &antialiasedElements) +{ + mAntialiasedElements = antialiasedElements; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mNotAntialiasedElements |= ~mAntialiasedElements; +} + +/*! + Sets whether the specified \a antialiasedElement is forcibly drawn antialiased. + + See \ref setAntialiasedElements for details. + + \see setNotAntialiasedElement +*/ +void QCustomPlot::setAntialiasedElement(QCP::AntialiasedElement antialiasedElement, bool enabled) +{ + if (!enabled && mAntialiasedElements.testFlag(antialiasedElement)) + mAntialiasedElements &= ~antialiasedElement; + else if (enabled && !mAntialiasedElements.testFlag(antialiasedElement)) + mAntialiasedElements |= antialiasedElement; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mNotAntialiasedElements |= ~mAntialiasedElements; +} + +/*! + Sets which elements are forcibly drawn not antialiased as an \a or combination of + QCP::AntialiasedElement. + + This overrides the antialiasing settings for whole element groups, normally controlled with the + \a setAntialiasing function on the individual elements. If an element is neither specified in + \ref setAntialiasedElements nor in \ref setNotAntialiasedElements, the antialiasing setting on + each individual element instance is used. + + For example, if \a notAntialiasedElements contains \ref QCP::aePlottables, no plottables will be + drawn antialiased, no matter what the specific QCPAbstractPlottable::setAntialiased value was set + to. + + if an element in \a notAntialiasedElements is already set in \ref setAntialiasedElements, it is + removed from there. + + \see setAntialiasedElements +*/ +void QCustomPlot::setNotAntialiasedElements(const QCP::AntialiasedElements ¬AntialiasedElements) +{ + mNotAntialiasedElements = notAntialiasedElements; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mAntialiasedElements |= ~mNotAntialiasedElements; +} + +/*! + Sets whether the specified \a notAntialiasedElement is forcibly drawn not antialiased. + + See \ref setNotAntialiasedElements for details. + + \see setAntialiasedElement +*/ +void QCustomPlot::setNotAntialiasedElement(QCP::AntialiasedElement notAntialiasedElement, bool enabled) +{ + if (!enabled && mNotAntialiasedElements.testFlag(notAntialiasedElement)) + mNotAntialiasedElements &= ~notAntialiasedElement; + else if (enabled && !mNotAntialiasedElements.testFlag(notAntialiasedElement)) + mNotAntialiasedElements |= notAntialiasedElement; + + // make sure elements aren't in mNotAntialiasedElements and mAntialiasedElements simultaneously: + if ((mNotAntialiasedElements & mAntialiasedElements) != 0) + mAntialiasedElements |= ~mNotAntialiasedElements; +} + +/*! + If set to true, adding a plottable (e.g. a graph) to the QCustomPlot automatically also adds the + plottable to the legend (QCustomPlot::legend). + + \see addPlottable, addGraph, QCPLegend::addItem +*/ +void QCustomPlot::setAutoAddPlottableToLegend(bool on) +{ + mAutoAddPlottableToLegend = on; +} + +/*! + Sets the possible interactions of this QCustomPlot as an or-combination of \ref QCP::Interaction + enums. There are the following types of interactions: + + Axis range manipulation is controlled via \ref QCP::iRangeDrag and \ref QCP::iRangeZoom. When the + respective interaction is enabled, the user may drag axes ranges and zoom with the mouse wheel. + For details how to control which axes the user may drag/zoom and in what orientations, see \ref + QCPAxisRect::setRangeDrag, \ref QCPAxisRect::setRangeZoom, \ref QCPAxisRect::setRangeDragAxes, + \ref QCPAxisRect::setRangeZoomAxes. + + Plottable selection is controlled by \ref QCP::iSelectPlottables. If \ref QCP::iSelectPlottables is + set, the user may select plottables (graphs, curves, bars,...) by clicking on them or in their + vicinity (\ref setSelectionTolerance). Whether the user can actually select a plottable can + further be restricted with the \ref QCPAbstractPlottable::setSelectable function on the specific + plottable. To find out whether a specific plottable is selected, call + QCPAbstractPlottable::selected(). To retrieve a list of all currently selected plottables, call + \ref selectedPlottables. If you're only interested in QCPGraphs, you may use the convenience + function \ref selectedGraphs. + + Item selection is controlled by \ref QCP::iSelectItems. If \ref QCP::iSelectItems is set, the user + may select items (QCPItemLine, QCPItemText,...) by clicking on them or in their vicinity. To find + out whether a specific item is selected, call QCPAbstractItem::selected(). To retrieve a list of + all currently selected items, call \ref selectedItems. + + Axis selection is controlled with \ref QCP::iSelectAxes. If \ref QCP::iSelectAxes is set, the user + may select parts of the axes by clicking on them. What parts exactly (e.g. Axis base line, tick + labels, axis label) are selectable can be controlled via \ref QCPAxis::setSelectableParts for + each axis. To retrieve a list of all axes that currently contain selected parts, call \ref + selectedAxes. Which parts of an axis are selected, can be retrieved with QCPAxis::selectedParts(). + + Legend selection is controlled with \ref QCP::iSelectLegend. If this is set, the user may + select the legend itself or individual items by clicking on them. What parts exactly are + selectable can be controlled via \ref QCPLegend::setSelectableParts. To find out whether the + legend or any of its child items are selected, check the value of QCPLegend::selectedParts. To + find out which child items are selected, call \ref QCPLegend::selectedItems. + + All other selectable elements The selection of all other selectable objects (e.g. + QCPPlotTitle, or your own layerable subclasses) is controlled with \ref QCP::iSelectOther. If set, the + user may select those objects by clicking on them. To find out which are currently selected, you + need to check their selected state explicitly. + + If the selection state has changed by user interaction, the \ref selectionChangedByUser signal is + emitted. Each selectable object additionally emits an individual selectionChanged signal whenever + their selection state has changed, i.e. not only by user interaction. + + To allow multiple objects to be selected by holding the selection modifier (\ref + setMultiSelectModifier), set the flag \ref QCP::iMultiSelect. + + \note In addition to the selection mechanism presented here, QCustomPlot always emits + corresponding signals, when an object is clicked or double clicked. see \ref plottableClick and + \ref plottableDoubleClick for example. + + \see setInteraction, setSelectionTolerance +*/ +void QCustomPlot::setInteractions(const QCP::Interactions &interactions) +{ + mInteractions = interactions; +} + +/*! + Sets the single \a interaction of this QCustomPlot to \a enabled. + + For details about the interaction system, see \ref setInteractions. + + \see setInteractions +*/ +void QCustomPlot::setInteraction(const QCP::Interaction &interaction, bool enabled) +{ + if (!enabled && mInteractions.testFlag(interaction)) + mInteractions &= ~interaction; + else if (enabled && !mInteractions.testFlag(interaction)) + mInteractions |= interaction; +} + +/*! + Sets the tolerance that is used to decide whether a click selects an object (e.g. a plottable) or + not. + + If the user clicks in the vicinity of the line of e.g. a QCPGraph, it's only regarded as a + potential selection when the minimum distance between the click position and the graph line is + smaller than \a pixels. Objects that are defined by an area (e.g. QCPBars) only react to clicks + directly inside the area and ignore this selection tolerance. In other words, it only has meaning + for parts of objects that are too thin to exactly hit with a click and thus need such a + tolerance. + + \see setInteractions, QCPLayerable::selectTest +*/ +void QCustomPlot::setSelectionTolerance(int pixels) +{ + mSelectionTolerance = pixels; +} + +/*! + Sets whether antialiasing is disabled for this QCustomPlot while the user is dragging axes + ranges. If many objects, especially plottables, are drawn antialiased, this greatly improves + performance during dragging. Thus it creates a more responsive user experience. As soon as the + user stops dragging, the last replot is done with normal antialiasing, to restore high image + quality. + + \see setAntialiasedElements, setNotAntialiasedElements +*/ +void QCustomPlot::setNoAntialiasingOnDrag(bool enabled) +{ + mNoAntialiasingOnDrag = enabled; +} + +/*! + Sets the plotting hints for this QCustomPlot instance as an \a or combination of QCP::PlottingHint. + + \see setPlottingHint +*/ +void QCustomPlot::setPlottingHints(const QCP::PlottingHints &hints) +{ + mPlottingHints = hints; +} + +/*! + Sets the specified plotting \a hint to \a enabled. + + \see setPlottingHints +*/ +void QCustomPlot::setPlottingHint(QCP::PlottingHint hint, bool enabled) +{ + QCP::PlottingHints newHints = mPlottingHints; + if (!enabled) + newHints &= ~hint; + else + newHints |= hint; + + if (newHints != mPlottingHints) + setPlottingHints(newHints); +} + +/*! + Sets the keyboard modifier that will be recognized as multi-select-modifier. + + If \ref QCP::iMultiSelect is specified in \ref setInteractions, the user may select multiple objects + by clicking on them one after the other while holding down \a modifier. + + By default the multi-select-modifier is set to Qt::ControlModifier. + + \see setInteractions +*/ +void QCustomPlot::setMultiSelectModifier(Qt::KeyboardModifier modifier) +{ + mMultiSelectModifier = modifier; +} + +/*! + Sets the viewport of this QCustomPlot. The Viewport is the area that the top level layout + (QCustomPlot::plotLayout()) uses as its rect. Normally, the viewport is the entire widget rect. + + This function is used to allow arbitrary size exports with \ref toPixmap, \ref savePng, \ref + savePdf, etc. by temporarily changing the viewport size. +*/ +void QCustomPlot::setViewport(const QRect &rect) +{ + mViewport = rect; + if (mPlotLayout) + mPlotLayout->setOuterRect(mViewport); +} + +/*! + Sets \a pm as the viewport background pixmap (see \ref setViewport). The pixmap is always drawn + below all other objects in the plot. + + For cases where the provided pixmap doesn't have the same size as the viewport, scaling can be + enabled with \ref setBackgroundScaled and the scaling mode (whether and how the aspect ratio is + preserved) can be set with \ref setBackgroundScaledMode. To set all these options in one call, + consider using the overloaded version of this function. + + If a background brush was set with \ref setBackground(const QBrush &brush), the viewport will + first be filled with that brush, before drawing the background pixmap. This can be useful for + background pixmaps with translucent areas. + + \see setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::setBackground(const QPixmap &pm) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); +} + +/*! + Sets the background brush of the viewport (see \ref setViewport). + + Before drawing everything else, the background is filled with \a brush. If a background pixmap + was set with \ref setBackground(const QPixmap &pm), this brush will be used to fill the viewport + before the background pixmap is drawn. This can be useful for background pixmaps with translucent + areas. + + Set \a brush to Qt::NoBrush or Qt::Transparent to leave background transparent. This can be + useful for exporting to image formats which support transparency, e.g. \ref savePng. + + \see setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::setBackground(const QBrush &brush) +{ + mBackgroundBrush = brush; +} + +/*! \overload + + Allows setting the background pixmap of the viewport, whether it shall be scaled and how it + shall be scaled in one call. + + \see setBackground(const QPixmap &pm), setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); + mBackgroundScaled = scaled; + mBackgroundScaledMode = mode; +} + +/*! + Sets whether the viewport background pixmap shall be scaled to fit the viewport. If \a scaled is + set to true, control whether and how the aspect ratio of the original pixmap is preserved with + \ref setBackgroundScaledMode. + + Note that the scaled version of the original pixmap is buffered, so there is no performance + penalty on replots. (Except when the viewport dimensions are changed continuously.) + + \see setBackground, setBackgroundScaledMode +*/ +void QCustomPlot::setBackgroundScaled(bool scaled) +{ + mBackgroundScaled = scaled; +} + +/*! + If scaling of the viewport background pixmap is enabled (\ref setBackgroundScaled), use this + function to define whether and how the aspect ratio of the original pixmap is preserved. + + \see setBackground, setBackgroundScaled +*/ +void QCustomPlot::setBackgroundScaledMode(Qt::AspectRatioMode mode) +{ + mBackgroundScaledMode = mode; +} + +/*! + Returns the plottable with \a index. If the index is invalid, returns 0. + + There is an overloaded version of this function with no parameter which returns the last added + plottable, see QCustomPlot::plottable() + + \see plottableCount, addPlottable +*/ +QCPAbstractPlottable *QCustomPlot::plottable(int index) +{ + if (index >= 0 && index < mPlottables.size()) + { + return mPlottables.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! \overload + + Returns the last plottable that was added with \ref addPlottable. If there are no plottables in + the plot, returns 0. + + \see plottableCount, addPlottable +*/ +QCPAbstractPlottable *QCustomPlot::plottable() +{ + if (!mPlottables.isEmpty()) + { + return mPlottables.last(); + } else + return 0; +} + +/*! + Adds the specified plottable to the plot and, if \ref setAutoAddPlottableToLegend is enabled, to + the legend (QCustomPlot::legend). QCustomPlot takes ownership of the plottable. + + Returns true on success, i.e. when \a plottable isn't already in the plot and the parent plot of + \a plottable is this QCustomPlot (the latter is controlled by what axes were passed in the + plottable's constructor). + + \see plottable, plottableCount, removePlottable, clearPlottables +*/ +bool QCustomPlot::addPlottable(QCPAbstractPlottable *plottable) +{ + if (mPlottables.contains(plottable)) + { + qDebug() << Q_FUNC_INFO << "plottable already added to this QCustomPlot:" << reinterpret_cast(plottable); + return false; + } + if (plottable->parentPlot() != this) + { + qDebug() << Q_FUNC_INFO << "plottable not created with this QCustomPlot as parent:" << reinterpret_cast(plottable); + return false; + } + + mPlottables.append(plottable); + // possibly add plottable to legend: + if (mAutoAddPlottableToLegend) + plottable->addToLegend(); + // special handling for QCPGraphs to maintain the simple graph interface: + if (QCPGraph *graph = qobject_cast(plottable)) + mGraphs.append(graph); + if (!plottable->layer()) // usually the layer is already set in the constructor of the plottable (via QCPLayerable constructor) + plottable->setLayer(currentLayer()); + return true; +} + +/*! + Removes the specified plottable from the plot and, if necessary, from the legend (QCustomPlot::legend). + + Returns true on success. + + \see addPlottable, clearPlottables +*/ +bool QCustomPlot::removePlottable(QCPAbstractPlottable *plottable) +{ + if (!mPlottables.contains(plottable)) + { + qDebug() << Q_FUNC_INFO << "plottable not in list:" << reinterpret_cast(plottable); + return false; + } + + // remove plottable from legend: + plottable->removeFromLegend(); + // special handling for QCPGraphs to maintain the simple graph interface: + if (QCPGraph *graph = qobject_cast(plottable)) + mGraphs.removeOne(graph); + // remove plottable: + delete plottable; + mPlottables.removeOne(plottable); + return true; +} + +/*! \overload + + Removes the plottable by its \a index. +*/ +bool QCustomPlot::removePlottable(int index) +{ + if (index >= 0 && index < mPlottables.size()) + return removePlottable(mPlottables[index]); + else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return false; + } +} + +/*! + Removes all plottables from the plot (and the QCustomPlot::legend, if necessary). + + Returns the number of plottables removed. + + \see removePlottable +*/ +int QCustomPlot::clearPlottables() +{ + int c = mPlottables.size(); + for (int i=c-1; i >= 0; --i) + removePlottable(mPlottables[i]); + return c; +} + +/*! + Returns the number of currently existing plottables in the plot + + \see plottable, addPlottable +*/ +int QCustomPlot::plottableCount() const +{ + return mPlottables.size(); +} + +/*! + Returns a list of the selected plottables. If no plottables are currently selected, the list is empty. + + There is a convenience function if you're only interested in selected graphs, see \ref selectedGraphs. + + \see setInteractions, QCPAbstractPlottable::setSelectable, QCPAbstractPlottable::setSelected +*/ +QList QCustomPlot::selectedPlottables() const +{ + QList result; + for (int i=0; iselected()) + result.append(mPlottables.at(i)); + } + return result; +} + +/*! + Returns the plottable at the pixel position \a pos. Plottables that only consist of single lines + (like graphs) have a tolerance band around them, see \ref setSelectionTolerance. If multiple + plottables come into consideration, the one closest to \a pos is returned. + + If \a onlySelectable is true, only plottables that are selectable + (QCPAbstractPlottable::setSelectable) are considered. + + If there is no plottable at \a pos, the return value is 0. + + \see itemAt, layoutElementAt +*/ +QCPAbstractPlottable *QCustomPlot::plottableAt(const QPointF &pos, bool onlySelectable) const +{ + QCPAbstractPlottable *resultPlottable = 0; + double resultDistance = mSelectionTolerance; // only regard clicks with distances smaller than mSelectionTolerance as selections, so initialize with that value + + for (int i=0; iselectable()) // we could have also passed onlySelectable to the selectTest function, but checking here is faster, because we have access to QCPabstractPlottable::selectable + continue; + if ((currentPlottable->keyAxis()->axisRect()->rect() & currentPlottable->valueAxis()->axisRect()->rect()).contains(pos.toPoint())) // only consider clicks inside the rect that is spanned by the plottable's key/value axes + { + double currentDistance = currentPlottable->selectTest(pos, false); + if (currentDistance >= 0 && currentDistance < resultDistance) + { + resultPlottable = currentPlottable; + resultDistance = currentDistance; + } + } + } + + return resultPlottable; +} + +/*! + Returns whether this QCustomPlot instance contains the \a plottable. + + \see addPlottable +*/ +bool QCustomPlot::hasPlottable(QCPAbstractPlottable *plottable) const +{ + return mPlottables.contains(plottable); +} + +/*! + Returns the graph with \a index. If the index is invalid, returns 0. + + There is an overloaded version of this function with no parameter which returns the last created + graph, see QCustomPlot::graph() + + \see graphCount, addGraph +*/ +QCPGraph *QCustomPlot::graph(int index) const +{ + if (index >= 0 && index < mGraphs.size()) + { + return mGraphs.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! \overload + + Returns the last graph, that was created with \ref addGraph. If there are no graphs in the plot, + returns 0. + + \see graphCount, addGraph +*/ +QCPGraph *QCustomPlot::graph() const +{ + if (!mGraphs.isEmpty()) + { + return mGraphs.last(); + } else + return 0; +} + +/*! + Creates a new graph inside the plot. If \a keyAxis and \a valueAxis are left unspecified (0), the + bottom (xAxis) is used as key and the left (yAxis) is used as value axis. If specified, \a + keyAxis and \a valueAxis must reside in this QCustomPlot. + + \a keyAxis will be used as key axis (typically "x") and \a valueAxis as value axis (typically + "y") for the graph. + + Returns a pointer to the newly created graph, or 0 if adding the graph failed. + + \see graph, graphCount, removeGraph, clearGraphs +*/ +QCPGraph *QCustomPlot::addGraph(QCPAxis *keyAxis, QCPAxis *valueAxis) +{ + if (!keyAxis) keyAxis = xAxis; + if (!valueAxis) valueAxis = yAxis; + if (!keyAxis || !valueAxis) + { + qDebug() << Q_FUNC_INFO << "can't use default QCustomPlot xAxis or yAxis, because at least one is invalid (has been deleted)"; + return 0; + } + if (keyAxis->parentPlot() != this || valueAxis->parentPlot() != this) + { + qDebug() << Q_FUNC_INFO << "passed keyAxis or valueAxis doesn't have this QCustomPlot as parent"; + return 0; + } + + QCPGraph *newGraph = new QCPGraph(keyAxis, valueAxis); + if (addPlottable(newGraph)) + { + newGraph->setName("Graph "+QString::number(mGraphs.size())); + return newGraph; + } else + { + delete newGraph; + return 0; + } +} + +/*! + Removes the specified \a graph from the plot and, if necessary, from the QCustomPlot::legend. If + any other graphs in the plot have a channel fill set towards the removed graph, the channel fill + property of those graphs is reset to zero (no channel fill). + + Returns true on success. + + \see clearGraphs +*/ +bool QCustomPlot::removeGraph(QCPGraph *graph) +{ + return removePlottable(graph); +} + +/*! \overload + + Removes the graph by its \a index. +*/ +bool QCustomPlot::removeGraph(int index) +{ + if (index >= 0 && index < mGraphs.size()) + return removeGraph(mGraphs[index]); + else + return false; +} + +/*! + Removes all graphs from the plot (and the QCustomPlot::legend, if necessary). + + Returns the number of graphs removed. + + \see removeGraph +*/ +int QCustomPlot::clearGraphs() +{ + int c = mGraphs.size(); + for (int i=c-1; i >= 0; --i) + removeGraph(mGraphs[i]); + return c; +} + +/*! + Returns the number of currently existing graphs in the plot + + \see graph, addGraph +*/ +int QCustomPlot::graphCount() const +{ + return mGraphs.size(); +} + +/*! + Returns a list of the selected graphs. If no graphs are currently selected, the list is empty. + + If you are not only interested in selected graphs but other plottables like QCPCurve, QCPBars, + etc., use \ref selectedPlottables. + + \see setInteractions, selectedPlottables, QCPAbstractPlottable::setSelectable, QCPAbstractPlottable::setSelected +*/ +QList QCustomPlot::selectedGraphs() const +{ + QList result; + for (int i=0; iselected()) + result.append(mGraphs.at(i)); + } + return result; +} + +/*! + Returns the item with \a index. If the index is invalid, returns 0. + + There is an overloaded version of this function with no parameter which returns the last added + item, see QCustomPlot::item() + + \see itemCount, addItem +*/ +QCPAbstractItem *QCustomPlot::item(int index) const +{ + if (index >= 0 && index < mItems.size()) + { + return mItems.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! \overload + + Returns the last item, that was added with \ref addItem. If there are no items in the plot, + returns 0. + + \see itemCount, addItem +*/ +QCPAbstractItem *QCustomPlot::item() const +{ + if (!mItems.isEmpty()) + { + return mItems.last(); + } else + return 0; +} + +/*! + Adds the specified item to the plot. QCustomPlot takes ownership of the item. + + Returns true on success, i.e. when \a item wasn't already in the plot and the parent plot of \a + item is this QCustomPlot. + + \see item, itemCount, removeItem, clearItems +*/ +bool QCustomPlot::addItem(QCPAbstractItem *item) +{ + if (!mItems.contains(item) && item->parentPlot() == this) + { + mItems.append(item); + return true; + } else + { + qDebug() << Q_FUNC_INFO << "item either already in list or not created with this QCustomPlot as parent:" << reinterpret_cast(item); + return false; + } +} + +/*! + Removes the specified item from the plot. + + Returns true on success. + + \see addItem, clearItems +*/ +bool QCustomPlot::removeItem(QCPAbstractItem *item) +{ + if (mItems.contains(item)) + { + delete item; + mItems.removeOne(item); + return true; + } else + { + qDebug() << Q_FUNC_INFO << "item not in list:" << reinterpret_cast(item); + return false; + } +} + +/*! \overload + + Removes the item by its \a index. +*/ +bool QCustomPlot::removeItem(int index) +{ + if (index >= 0 && index < mItems.size()) + return removeItem(mItems[index]); + else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return false; + } +} + +/*! + Removes all items from the plot. + + Returns the number of items removed. + + \see removeItem +*/ +int QCustomPlot::clearItems() +{ + int c = mItems.size(); + for (int i=c-1; i >= 0; --i) + removeItem(mItems[i]); + return c; +} + +/*! + Returns the number of currently existing items in the plot + + \see item, addItem +*/ +int QCustomPlot::itemCount() const +{ + return mItems.size(); +} + +/*! + Returns a list of the selected items. If no items are currently selected, the list is empty. + + \see setInteractions, QCPAbstractItem::setSelectable, QCPAbstractItem::setSelected +*/ +QList QCustomPlot::selectedItems() const +{ + QList result; + for (int i=0; iselected()) + result.append(mItems.at(i)); + } + return result; +} + +/*! + Returns the item at the pixel position \a pos. Items that only consist of single lines (e.g. \ref + QCPItemLine or \ref QCPItemCurve) have a tolerance band around them, see \ref + setSelectionTolerance. If multiple items come into consideration, the one closest to \a pos is + returned. + + If \a onlySelectable is true, only items that are selectable (QCPAbstractItem::setSelectable) are + considered. + + If there is no item at \a pos, the return value is 0. + + \see plottableAt, layoutElementAt +*/ +QCPAbstractItem *QCustomPlot::itemAt(const QPointF &pos, bool onlySelectable) const +{ + QCPAbstractItem *resultItem = 0; + double resultDistance = mSelectionTolerance; // only regard clicks with distances smaller than mSelectionTolerance as selections, so initialize with that value + + for (int i=0; iselectable()) // we could have also passed onlySelectable to the selectTest function, but checking here is faster, because we have access to QCPAbstractItem::selectable + continue; + if (!currentItem->clipToAxisRect() || currentItem->clipRect().contains(pos.toPoint())) // only consider clicks inside axis cliprect of the item if actually clipped to it + { + double currentDistance = currentItem->selectTest(pos, false); + if (currentDistance >= 0 && currentDistance < resultDistance) + { + resultItem = currentItem; + resultDistance = currentDistance; + } + } + } + + return resultItem; +} + +/*! + Returns whether this QCustomPlot contains the \a item. + + \see addItem +*/ +bool QCustomPlot::hasItem(QCPAbstractItem *item) const +{ + return mItems.contains(item); +} + +/*! + Returns the layer with the specified \a name. If there is no layer with the specified name, 0 is + returned. + + Layer names are case-sensitive. + + \see addLayer, moveLayer, removeLayer +*/ +QCPLayer *QCustomPlot::layer(const QString &name) const +{ + for (int i=0; iname() == name) + return mLayers.at(i); + } + return 0; +} + +/*! \overload + + Returns the layer by \a index. If the index is invalid, 0 is returned. + + \see addLayer, moveLayer, removeLayer +*/ +QCPLayer *QCustomPlot::layer(int index) const +{ + if (index >= 0 && index < mLayers.size()) + { + return mLayers.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "index out of bounds:" << index; + return 0; + } +} + +/*! + Returns the layer that is set as current layer (see \ref setCurrentLayer). +*/ +QCPLayer *QCustomPlot::currentLayer() const +{ + return mCurrentLayer; +} + +/*! + Sets the layer with the specified \a name to be the current layer. All layerables (\ref + QCPLayerable), e.g. plottables and items, are created on the current layer. + + Returns true on success, i.e. if there is a layer with the specified \a name in the QCustomPlot. + + Layer names are case-sensitive. + + \see addLayer, moveLayer, removeLayer, QCPLayerable::setLayer +*/ +bool QCustomPlot::setCurrentLayer(const QString &name) +{ + if (QCPLayer *newCurrentLayer = layer(name)) + { + return setCurrentLayer(newCurrentLayer); + } else + { + qDebug() << Q_FUNC_INFO << "layer with name doesn't exist:" << name; + return false; + } +} + +/*! \overload + + Sets the provided \a layer to be the current layer. + + Returns true on success, i.e. when \a layer is a valid layer in the QCustomPlot. + + \see addLayer, moveLayer, removeLayer +*/ +bool QCustomPlot::setCurrentLayer(QCPLayer *layer) +{ + if (!mLayers.contains(layer)) + { + qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); + return false; + } + + mCurrentLayer = layer; + return true; +} + +/*! + Returns the number of currently existing layers in the plot + + \see layer, addLayer +*/ +int QCustomPlot::layerCount() const +{ + return mLayers.size(); +} + +/*! + Adds a new layer to this QCustomPlot instance. The new layer will have the name \a name, which + must be unique. Depending on \a insertMode, it is positioned either below or above \a otherLayer. + + Returns true on success, i.e. if there is no other layer named \a name and \a otherLayer is a + valid layer inside this QCustomPlot. + + If \a otherLayer is 0, the highest layer in the QCustomPlot will be used. + + For an explanation of what layers are in QCustomPlot, see the documentation of \ref QCPLayer. + + \see layer, moveLayer, removeLayer +*/ +bool QCustomPlot::addLayer(const QString &name, QCPLayer *otherLayer, QCustomPlot::LayerInsertMode insertMode) +{ + if (!otherLayer) + otherLayer = mLayers.last(); + if (!mLayers.contains(otherLayer)) + { + qDebug() << Q_FUNC_INFO << "otherLayer not a layer of this QCustomPlot:" << reinterpret_cast(otherLayer); + return false; + } + if (layer(name)) + { + qDebug() << Q_FUNC_INFO << "A layer exists already with the name" << name; + return false; + } + + QCPLayer *newLayer = new QCPLayer(this, name); + mLayers.insert(otherLayer->index() + (insertMode==limAbove ? 1:0), newLayer); + updateLayerIndices(); + return true; +} + +/*! + Removes the specified \a layer and returns true on success. + + All layerables (e.g. plottables and items) on the removed layer will be moved to the layer below + \a layer. If \a layer is the bottom layer, the layerables are moved to the layer above. In both + cases, the total rendering order of all layerables in the QCustomPlot is preserved. + + If \a layer is the current layer (\ref setCurrentLayer), the layer below (or above, if bottom + layer) becomes the new current layer. + + It is not possible to remove the last layer of the plot. + + \see layer, addLayer, moveLayer +*/ +bool QCustomPlot::removeLayer(QCPLayer *layer) +{ + if (!mLayers.contains(layer)) + { + qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); + return false; + } + if (mLayers.size() < 2) + { + qDebug() << Q_FUNC_INFO << "can't remove last layer"; + return false; + } + + // append all children of this layer to layer below (if this is lowest layer, prepend to layer above) + int removedIndex = layer->index(); + bool isFirstLayer = removedIndex==0; + QCPLayer *targetLayer = isFirstLayer ? mLayers.at(removedIndex+1) : mLayers.at(removedIndex-1); + QList children = layer->children(); + if (isFirstLayer) // prepend in reverse order (so order relative to each other stays the same) + { + for (int i=children.size()-1; i>=0; --i) + children.at(i)->moveToLayer(targetLayer, true); + } else // append normally + { + for (int i=0; imoveToLayer(targetLayer, false); + } + // if removed layer is current layer, change current layer to layer below/above: + if (layer == mCurrentLayer) + setCurrentLayer(targetLayer); + // remove layer: + delete layer; + mLayers.removeOne(layer); + updateLayerIndices(); + return true; +} + +/*! + Moves the specified \a layer either above or below \a otherLayer. Whether it's placed above or + below is controlled with \a insertMode. + + Returns true on success, i.e. when both \a layer and \a otherLayer are valid layers in the + QCustomPlot. + + \see layer, addLayer, moveLayer +*/ +bool QCustomPlot::moveLayer(QCPLayer *layer, QCPLayer *otherLayer, QCustomPlot::LayerInsertMode insertMode) +{ + if (!mLayers.contains(layer)) + { + qDebug() << Q_FUNC_INFO << "layer not a layer of this QCustomPlot:" << reinterpret_cast(layer); + return false; + } + if (!mLayers.contains(otherLayer)) + { + qDebug() << Q_FUNC_INFO << "otherLayer not a layer of this QCustomPlot:" << reinterpret_cast(otherLayer); + return false; + } + + mLayers.move(layer->index(), otherLayer->index() + (insertMode==limAbove ? 1:0)); + updateLayerIndices(); + return true; +} + +/*! + Returns the number of axis rects in the plot. + + All axis rects can be accessed via QCustomPlot::axisRect(). + + Initially, only one axis rect exists in the plot. + + \see axisRect, axisRects +*/ +int QCustomPlot::axisRectCount() const +{ + return axisRects().size(); +} + +/*! + Returns the axis rect with \a index. + + Initially, only one axis rect (with index 0) exists in the plot. If multiple axis rects were + added, all of them may be accessed with this function in a linear fashion (even when they are + nested in a layout hierarchy or inside other axis rects via QCPAxisRect::insetLayout). + + \see axisRectCount, axisRects +*/ +QCPAxisRect *QCustomPlot::axisRect(int index) const +{ + const QList rectList = axisRects(); + if (index >= 0 && index < rectList.size()) + { + return rectList.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "invalid axis rect index" << index; + return 0; + } +} + +/*! + Returns all axis rects in the plot. + + \see axisRectCount, axisRect +*/ +QList QCustomPlot::axisRects() const +{ + QList result; + QStack elementStack; + if (mPlotLayout) + elementStack.push(mPlotLayout); + + while (!elementStack.isEmpty()) + { + QList subElements = elementStack.pop()->elements(false); + for (int i=0; i(element)) + result.append(ar); + } + } + } + + return result; +} + +/*! + Returns the layout element at pixel position \a pos. If there is no element at that position, + returns 0. + + Only visible elements are used. If \ref QCPLayoutElement::setVisible on the element itself or on + any of its parent elements is set to false, it will not be considered. + + \see itemAt, plottableAt +*/ +QCPLayoutElement *QCustomPlot::layoutElementAt(const QPointF &pos) const +{ + QCPLayoutElement *current = mPlotLayout; + bool searchSubElements = true; + while (searchSubElements && current) + { + searchSubElements = false; + const QList elements = current->elements(false); + for (int i=0; irealVisibility() && elements.at(i)->selectTest(pos, false) >= 0) + { + current = elements.at(i); + searchSubElements = true; + break; + } + } + } + return current; +} + +/*! + Returns the axes that currently have selected parts, i.e. whose selection state is not \ref + QCPAxis::spNone. + + \see selectedPlottables, selectedLegends, setInteractions, QCPAxis::setSelectedParts, + QCPAxis::setSelectableParts +*/ +QList QCustomPlot::selectedAxes() const +{ + QList result, allAxes; + QList rects = axisRects(); + for (int i=0; iaxes(); + + for (int i=0; iselectedParts() != QCPAxis::spNone) + result.append(allAxes.at(i)); + } + + return result; +} + +/*! + Returns the legends that currently have selected parts, i.e. whose selection state is not \ref + QCPLegend::spNone. + + \see selectedPlottables, selectedAxes, setInteractions, QCPLegend::setSelectedParts, + QCPLegend::setSelectableParts, QCPLegend::selectedItems +*/ +QList QCustomPlot::selectedLegends() const +{ + QList result; + + QStack elementStack; + if (mPlotLayout) + elementStack.push(mPlotLayout); + + while (!elementStack.isEmpty()) + { + QList subElements = elementStack.pop()->elements(false); + for (int i=0; i(element)) + { + if (leg->selectedParts() != QCPLegend::spNone) + result.append(leg); + } + } + } + } + + return result; +} + +/*! + Deselects all layerables (plottables, items, axes, legends,...) of the QCustomPlot. + + Since calling this function is not a user interaction, this does not emit the \ref + selectionChangedByUser signal. The individual selectionChanged signals are emitted though, if the + objects were previously selected. + + \see setInteractions, selectedPlottables, selectedItems, selectedAxes, selectedLegends +*/ +void QCustomPlot::deselectAll() +{ + for (int i=0; i layerables = mLayers.at(i)->children(); + for (int k=0; kdeselectEvent(0); + } +} + +/*! + Causes a complete replot into the internal buffer. Finally, update() is called, to redraw the + buffer on the QCustomPlot widget surface. This is the method that must be called to make changes, + for example on the axis ranges or data points of graphs, visible. + + Under a few circumstances, QCustomPlot causes a replot by itself. Those are resize events of the + QCustomPlot widget and user interactions (object selection and range dragging/zooming). + + Before the replot happens, the signal \ref beforeReplot is emitted. After the replot, \ref + afterReplot is emitted. It is safe to mutually connect the replot slot with any of those two + signals on two QCustomPlots to make them replot synchronously, it won't cause an infinite + recursion. +*/ +void QCustomPlot::replot() +{ + if (mReplotting) // incase signals loop back to replot slot + return; + mReplotting = true; + emit beforeReplot(); + mPaintBuffer.fill(mBackgroundBrush.style() == Qt::SolidPattern ? mBackgroundBrush.color() : Qt::transparent); + QCPPainter painter; + painter.begin(&mPaintBuffer); + if (painter.isActive()) + { + painter.setRenderHint(QPainter::HighQualityAntialiasing); // to make Antialiasing look good if using the OpenGL graphicssystem + if (mBackgroundBrush.style() != Qt::SolidPattern && mBackgroundBrush.style() != Qt::NoBrush) + painter.fillRect(mViewport, mBackgroundBrush); + draw(&painter); + painter.end(); + if (mPlottingHints.testFlag(QCP::phForceRepaint)) + repaint(); + else + update(); + } else // might happen if QCustomPlot has width or height zero + qDebug() << Q_FUNC_INFO << "Couldn't activate painter on buffer"; + emit afterReplot(); + mReplotting = false; +} + +/*! + Rescales the axes such that all plottables (like graphs) in the plot are fully visible. It does + this by calling \ref QCPAbstractPlottable::rescaleAxes on all plottables. + + if \a onlyVisible is set to true, only the plottables that have their visibility set to true + (QCPLayerable::setVisible), will be used to rescale the axes. + + \see QCPAbstractPlottable::rescaleAxes +*/ +void QCustomPlot::rescaleAxes(bool onlyVisible) +{ + if (mPlottables.isEmpty()) return; + bool firstPlottable = true; + + for (int i=0; irealVisibility() || !onlyVisible) + { + mPlottables.at(i)->rescaleAxes(!firstPlottable); // onlyEnlarge disabled on first plottable + firstPlottable = false; + } + } +} + +/*! + Saves a PDF with the vectorized plot to the file \a fileName. The axis ratio as well as the scale + of texts and lines will be derived from the specified \a width and \a height. This means, the + output will look like the normal on-screen output of a QCustomPlot widget with the corresponding + pixel width and height. If either \a width or \a height is zero, the exported image will have the + same dimensions as the QCustomPlot widget currently has. + + \a noCosmeticPen disables the use of cosmetic pens when drawing to the PDF file. Cosmetic pens + are pens with numerical width 0, which are always drawn as a one pixel wide line, no matter what + zoom factor is set in the PDF-Viewer. For more information about cosmetic pens, see the QPainter + and QPen documentation. + + The objects of the plot will appear in the current selection state. If you don't want any + selected objects to be painted in their selected look, deselect everything with \ref deselectAll + before calling this function. + + Returns true on success. + + \warning + \li If you plan on editing the exported PDF file with a vector graphics editor like + Inkscape, it is advised to set \a noCosmeticPen to true to avoid losing those cosmetic lines + (which might be quite many, because cosmetic pens are the default for e.g. axes and tick marks). + \li If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + \see savePng, saveBmp, saveJpg, saveRastered +*/ +bool QCustomPlot::savePdf(const QString &fileName, bool noCosmeticPen, int width, int height) +{ + bool success = false; + int newWidth, newHeight; + if (width == 0 || height == 0) + { + newWidth = this->width(); + newHeight = this->height(); + } else + { + newWidth = width; + newHeight = height; + } + + QPrinter printer(QPrinter::ScreenResolution); + printer.setOutputFileName(fileName); + printer.setOutputFormat(QPrinter::PdfFormat); + printer.setFullPage(true); + QRect oldViewport = viewport(); + setViewport(QRect(0, 0, newWidth, newHeight)); + printer.setPaperSize(viewport().size(), QPrinter::DevicePixel); + QCPPainter printpainter; + if (printpainter.begin(&printer)) + { + printpainter.setMode(QCPPainter::pmVectorized); + printpainter.setMode(QCPPainter::pmNoCaching); + printpainter.setMode(QCPPainter::pmNonCosmetic, noCosmeticPen); + printpainter.setWindow(mViewport); + if (mBackgroundBrush.style() != Qt::NoBrush && + mBackgroundBrush.color() != Qt::white && + mBackgroundBrush.color() != Qt::transparent && + mBackgroundBrush.color().alpha() > 0) // draw pdf background color if not white/transparent + printpainter.fillRect(viewport(), mBackgroundBrush); + draw(&printpainter); + printpainter.end(); + success = true; + } + setViewport(oldViewport); + return success; +} + +/*! + Saves a PNG image file to \a fileName on disc. The output plot will have the dimensions \a width + and \a height in pixels. If either \a width or \a height is zero, the exported image will have + the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not + scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. + + For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an + image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, + texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full + 200*200 pixel resolution. + + If you use a high scaling factor, it is recommended to enable antialiasing for all elements via + temporarily setting \ref QCustomPlot::setAntialiasedElements to \ref QCP::aeAll as this allows + QCustomPlot to place objects with sub-pixel accuracy. + + \warning If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + The objects of the plot will appear in the current selection state. If you don't want any selected + objects to be painted in their selected look, deselect everything with \ref deselectAll before calling + this function. + + If you want the PNG to have a transparent background, call \ref setBackground(const QBrush + &brush) with no brush (Qt::NoBrush) or a transparent color (Qt::transparent), before saving. + + PNG compression can be controlled with the \a quality parameter which must be between 0 and 100 or + -1 to use the default setting. + + Returns true on success. If this function fails, most likely the PNG format isn't supported by + the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see savePdf, saveBmp, saveJpg, saveRastered +*/ +bool QCustomPlot::savePng(const QString &fileName, int width, int height, double scale, int quality) +{ + return saveRastered(fileName, width, height, scale, "PNG", quality); +} + +/*! + Saves a JPG image file to \a fileName on disc. The output plot will have the dimensions \a width + and \a height in pixels. If either \a width or \a height is zero, the exported image will have + the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not + scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. + + For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an + image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, + texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full + 200*200 pixel resolution. + + If you use a high scaling factor, it is recommended to enable antialiasing for all elements via + temporarily setting \ref QCustomPlot::setAntialiasedElements to \ref QCP::aeAll as this allows + QCustomPlot to place objects with sub-pixel accuracy. + + \warning If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + The objects of the plot will appear in the current selection state. If you don't want any selected + objects to be painted in their selected look, deselect everything with \ref deselectAll before calling + this function. + + JPG compression can be controlled with the \a quality parameter which must be between 0 and 100 or + -1 to use the default setting. + + Returns true on success. If this function fails, most likely the JPG format isn't supported by + the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see savePdf, savePng, saveBmp, saveRastered +*/ +bool QCustomPlot::saveJpg(const QString &fileName, int width, int height, double scale, int quality) +{ + return saveRastered(fileName, width, height, scale, "JPG", quality); +} + +/*! + Saves a BMP image file to \a fileName on disc. The output plot will have the dimensions \a width + and \a height in pixels. If either \a width or \a height is zero, the exported image will have + the same dimensions as the QCustomPlot widget currently has. Line widths and texts etc. are not + scaled up when larger widths/heights are used. If you want that effect, use the \a scale parameter. + + For example, if you set both \a width and \a height to 100 and \a scale to 2, you will end up with an + image file of size 200*200 in which all graphical elements are scaled up by factor 2 (line widths, + texts, etc.). This scaling is not done by stretching a 100*100 image, the result will have full + 200*200 pixel resolution. + + If you use a high scaling factor, it is recommended to enable antialiasing for all elements via + temporarily setting \ref QCustomPlot::setAntialiasedElements to \ref QCP::aeAll as this allows + QCustomPlot to place objects with sub-pixel accuracy. + + \warning If calling this function inside the constructor of the parent of the QCustomPlot widget + (i.e. the MainWindow constructor, if QCustomPlot is inside the MainWindow), always provide + explicit non-zero widths and heights. If you leave \a width or \a height as 0 (default), this + function uses the current width and height of the QCustomPlot widget. However, in Qt, these + aren't defined yet inside the constructor, so you would get an image that has strange + widths/heights. + + The objects of the plot will appear in the current selection state. If you don't want any selected + objects to be painted in their selected look, deselect everything with \ref deselectAll before calling + this function. + + Returns true on success. If this function fails, most likely the BMP format isn't supported by + the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see savePdf, savePng, saveJpg, saveRastered +*/ +bool QCustomPlot::saveBmp(const QString &fileName, int width, int height, double scale) +{ + return saveRastered(fileName, width, height, scale, "BMP"); +} + +/*! \internal + + Returns a minimum size hint that corresponds to the minimum size of the top level layout + (\ref plotLayout). To prevent QCustomPlot from being collapsed to size/width zero, set a minimum + size (setMinimumSize) either on the whole QCustomPlot or on any layout elements inside the plot. + This is especially important, when placed in a QLayout where other components try to take in as + much space as possible (e.g. QMdiArea). +*/ +QSize QCustomPlot::minimumSizeHint() const +{ + return mPlotLayout->minimumSizeHint(); +} + +/*! \internal + + Returns a size hint that is the same as \ref minimumSizeHint. + +*/ +QSize QCustomPlot::sizeHint() const +{ + return mPlotLayout->minimumSizeHint(); +} + +/*! \internal + + Event handler for when the QCustomPlot widget needs repainting. This does not cause a \ref replot, but + draws the internal buffer on the widget surface. +*/ +void QCustomPlot::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event); + QPainter painter(this); + painter.drawPixmap(0, 0, mPaintBuffer); +} + +/*! \internal + + Event handler for a resize of the QCustomPlot widget. Causes the internal buffer to be resized to + the new size. The viewport (which becomes the outer rect of mPlotLayout) is resized + appropriately. Finally a \ref replot is performed. +*/ +void QCustomPlot::resizeEvent(QResizeEvent *event) +{ + // resize and repaint the buffer: + mPaintBuffer = QPixmap(event->size()); + setViewport(rect()); + replot(); +} + +/*! \internal + + Event handler for when a double click occurs. Emits the \ref mouseDoubleClick signal, then emits + the specialized signals when certain objecs are clicked (e.g. \ref plottableDoubleClick, \ref + axisDoubleClick, etc.). Finally determines the affected layout element and forwards the event to + it. + + \see mousePressEvent, mouseReleaseEvent +*/ +void QCustomPlot::mouseDoubleClickEvent(QMouseEvent *event) +{ + emit mouseDoubleClick(event); + + QVariant details; + QCPLayerable *clickedLayerable = layerableAt(event->pos(), false, &details); + + // emit specialized object double click signals: + if (QCPAbstractPlottable *ap = qobject_cast(clickedLayerable)) + emit plottableDoubleClick(ap, event); + else if (QCPAxis *ax = qobject_cast(clickedLayerable)) + emit axisDoubleClick(ax, details.value(), event); + else if (QCPAbstractItem *ai = qobject_cast(clickedLayerable)) + emit itemDoubleClick(ai, event); + else if (QCPLegend *lg = qobject_cast(clickedLayerable)) + emit legendDoubleClick(lg, 0, event); + else if (QCPAbstractLegendItem *li = qobject_cast(clickedLayerable)) + emit legendDoubleClick(li->parentLegend(), li, event); + else if (QCPPlotTitle *pt = qobject_cast(clickedLayerable)) + emit titleDoubleClick(event, pt); + + // call double click event of affected layout element: + if (QCPLayoutElement *el = layoutElementAt(event->pos())) + el->mouseDoubleClickEvent(event); + + // call release event of affected layout element (as in mouseReleaseEvent, since the mouseDoubleClick replaces the second release event in double click case): + if (mMouseEventElement) + { + mMouseEventElement->mouseReleaseEvent(event); + mMouseEventElement = 0; + } + + //QWidget::mouseDoubleClickEvent(event); don't call base class implementation because it would just cause a mousePress/ReleaseEvent, which we don't want. +} + +/*! \internal + + Event handler for when a mouse button is pressed. Emits the mousePress signal. Then determines + the affected layout element and forwards the event to it. + + \see mouseMoveEvent, mouseReleaseEvent +*/ +void QCustomPlot::mousePressEvent(QMouseEvent *event) +{ + emit mousePress(event); + mMousePressPos = event->pos(); // need this to determine in releaseEvent whether it was a click (no position change between press and release) + + // call event of affected layout element: + mMouseEventElement = layoutElementAt(event->pos()); + if (mMouseEventElement) + mMouseEventElement->mousePressEvent(event); + + QWidget::mousePressEvent(event); +} + +/*! \internal + + Event handler for when the cursor is moved. Emits the \ref mouseMove signal. + + If a layout element has mouse capture focus (a mousePressEvent happened on top of the layout + element before), the mouseMoveEvent is forwarded to that element. + + \see mousePressEvent, mouseReleaseEvent +*/ +void QCustomPlot::mouseMoveEvent(QMouseEvent *event) +{ + emit mouseMove(event); + + // call event of affected layout element: + if (mMouseEventElement) + mMouseEventElement->mouseMoveEvent(event); + + QWidget::mouseMoveEvent(event); +} + +/*! \internal + + Event handler for when a mouse button is released. Emits the \ref mouseRelease signal. + + If the mouse was moved less than a certain threshold in any direction since the \ref + mousePressEvent, it is considered a click which causes the selection mechanism (if activated via + \ref setInteractions) to possibly change selection states accordingly. Further, specialized mouse + click signals are emitted (e.g. \ref plottableClick, \ref axisClick, etc.) + + If a layout element has mouse capture focus (a \ref mousePressEvent happened on top of the layout + element before), the \ref mouseReleaseEvent is forwarded to that element. + + \see mousePressEvent, mouseMoveEvent +*/ +void QCustomPlot::mouseReleaseEvent(QMouseEvent *event) +{ + emit mouseRelease(event); + bool doReplot = false; + + if ((mMousePressPos-event->pos()).manhattanLength() < 5) // determine whether it was a click operation + { + if (event->button() == Qt::LeftButton) + { + // handle selection mechanism: + QVariant details; + QCPLayerable *clickedLayerable = layerableAt(event->pos(), true, &details); + bool selectionStateChanged = false; + bool additive = mInteractions.testFlag(QCP::iMultiSelect) && event->modifiers().testFlag(mMultiSelectModifier); + if (clickedLayerable && mInteractions.testFlag(clickedLayerable->selectionCategory())) + { + // a layerable was actually clicked, call its selectEvent: + bool selChanged = false; + clickedLayerable->selectEvent(event, additive, details, &selChanged); + selectionStateChanged |= selChanged; + } + // deselect all other layerables if not additive selection: + if (!additive) + { + for (int i=0; i layerables = mLayers.at(i)->children(); + for (int k=0; kselectionCategory())) + { + bool selChanged = false; + layerables.at(k)->deselectEvent(&selChanged); + selectionStateChanged |= selChanged; + } + } + } + } + doReplot = true; + if (selectionStateChanged) + emit selectionChangedByUser(); + } + + // emit specialized object click signals: + QVariant details; + QCPLayerable *clickedLayerable = layerableAt(event->pos(), false, &details); // for these signals, selectability is ignored, that's why we call this again with onlySelectable set to false + if (QCPAbstractPlottable *ap = qobject_cast(clickedLayerable)) + emit plottableClick(ap, event); + else if (QCPAxis *ax = qobject_cast(clickedLayerable)) + emit axisClick(ax, details.value(), event); + else if (QCPAbstractItem *ai = qobject_cast(clickedLayerable)) + emit itemClick(ai, event); + else if (QCPLegend *lg = qobject_cast(clickedLayerable)) + emit legendClick(lg, 0, event); + else if (QCPAbstractLegendItem *li = qobject_cast(clickedLayerable)) + emit legendClick(li->parentLegend(), li, event); + else if (QCPPlotTitle *pt = qobject_cast(clickedLayerable)) + emit titleClick(event, pt); + } + + // call event of affected layout element: + if (mMouseEventElement) + { + mMouseEventElement->mouseReleaseEvent(event); + mMouseEventElement = 0; + } + + if (doReplot || noAntialiasingOnDrag()) + replot(); + + QWidget::mouseReleaseEvent(event); +} + +/*! \internal + + Event handler for mouse wheel events. First, the \ref mouseWheel signal is emitted. Then + determines the affected layout element and forwards the event to it. + +*/ +void QCustomPlot::wheelEvent(QWheelEvent *event) +{ + emit mouseWheel(event); + + // call event of affected layout element: + if (QCPLayoutElement *el = layoutElementAt(event->pos())) + el->wheelEvent(event); + + QWidget::wheelEvent(event); +} + +/*! \internal + + This is the main draw function. It draws the entire plot, including background pixmap, with the + specified \a painter. Note that it does not fill the background with the background brush (as the + user may specify with \ref setBackground(const QBrush &brush)), this is up to the respective + functions calling this method (e.g. \ref replot, \ref toPixmap and \ref toPainter). +*/ +void QCustomPlot::draw(QCPPainter *painter) +{ + // update all axis tick vectors: + QList rects = axisRects(); + for (int i=0; i axes = rects.at(i)->axes(); + for (int k=0; ksetupTickVectors(); + } + + // recalculate layout: + mPlotLayout->update(); + + // draw viewport background pixmap: + drawBackground(painter); + + // draw all layered objects (grid, axes, plottables, items, legend,...): + for (int layerIndex=0; layerIndex < mLayers.size(); ++layerIndex) + { + QList layerChildren = mLayers.at(layerIndex)->children(); + for (int k=0; k < layerChildren.size(); ++k) + { + QCPLayerable *child = layerChildren.at(k); + if (child->realVisibility()) + { + painter->save(); + painter->setClipRect(child->clipRect().translated(0, -1)); + child->applyDefaultAntialiasingHint(painter); + child->draw(painter); + painter->restore(); + } + } + } +} + +/*! \internal + + Draws the viewport background pixmap of the plot. + + If a pixmap was provided via \ref setBackground, this function buffers the scaled version + depending on \ref setBackgroundScaled and \ref setBackgroundScaledMode and then draws it inside + the viewport with the provided \a painter. The scaled version is buffered in + mScaledBackgroundPixmap to prevent expensive rescaling at every redraw. It is only updated, when + the axis rect has changed in a way that requires a rescale of the background pixmap (this is + dependant on the \ref setBackgroundScaledMode), or when a differend axis backgroud pixmap was + set. + + Note that this function does not draw a fill with the background brush (\ref setBackground(const + QBrush &brush)) beneath the pixmap. + + \see setBackground, setBackgroundScaled, setBackgroundScaledMode +*/ +void QCustomPlot::drawBackground(QCPPainter *painter) +{ + // Note: background color is handled in individual replot/save functions + + // draw background pixmap (on top of fill, if brush specified): + if (!mBackgroundPixmap.isNull()) + { + if (mBackgroundScaled) + { + // check whether mScaledBackground needs to be updated: + QSize scaledSize(mBackgroundPixmap.size()); + scaledSize.scale(mViewport.size(), mBackgroundScaledMode); + if (mScaledBackgroundPixmap.size() != scaledSize) + mScaledBackgroundPixmap = mBackgroundPixmap.scaled(mViewport.size(), mBackgroundScaledMode, Qt::SmoothTransformation); + painter->drawPixmap(mViewport.topLeft(), mScaledBackgroundPixmap, QRect(0, 0, mViewport.width(), mViewport.height()) & mScaledBackgroundPixmap.rect()); + } else + { + painter->drawPixmap(mViewport.topLeft(), mBackgroundPixmap, QRect(0, 0, mViewport.width(), mViewport.height())); + } + } +} + + +/*! \internal + + This method is used by \ref QCPAxisRect::removeAxis to report removed axes to the QCustomPlot + so it may clear its QCustomPlot::xAxis, yAxis, xAxis2 and yAxis2 members accordingly. +*/ +void QCustomPlot::axisRemoved(QCPAxis *axis) +{ + if (xAxis == axis) + xAxis = 0; + if (xAxis2 == axis) + xAxis2 = 0; + if (yAxis == axis) + yAxis = 0; + if (yAxis2 == axis) + yAxis2 = 0; + + // Note: No need to take care of range drag axes and range zoom axes, because they are stored in smart pointers +} + +/*! \internal + + This method is used by the QCPLegend destructor to report legend removal to the QCustomPlot so + it may clear its QCustomPlot::legend member accordingly. +*/ +void QCustomPlot::legendRemoved(QCPLegend *legend) +{ + if (this->legend == legend) + this->legend = 0; +} + +/*! \internal + + Assigns all layers their index (QCPLayer::mIndex) in the mLayers list. This method is thus called + after every operation that changes the layer indices, like layer removal, layer creation, layer + moving. +*/ +void QCustomPlot::updateLayerIndices() const +{ + for (int i=0; imIndex = i; +} + +/*! \internal + + Returns the layerable at pixel position \a pos. If \a onlySelectable is set to true, only those + layerables that are selectable will be considered. (Layerable subclasses communicate their + selectability via the QCPLayerable::selectTest method, by returning -1.) + + \a selectionDetails is an output parameter that contains selection specifics of the affected + layerable. This is useful if the respective layerable shall be given a subsequent + QCPLayerable::selectEvent (like in \ref mouseReleaseEvent). \a selectionDetails usually contains + information about which part of the layerable was hit, in multi-part layerables (e.g. + QCPAxis::SelectablePart). +*/ +QCPLayerable *QCustomPlot::layerableAt(const QPointF &pos, bool onlySelectable, QVariant *selectionDetails) const +{ + for (int layerIndex=mLayers.size()-1; layerIndex>=0; --layerIndex) + { + const QList layerables = mLayers.at(layerIndex)->children(); + double minimumDistance = selectionTolerance()*1.1; + QCPLayerable *minimumDistanceLayerable = 0; + for (int i=layerables.size()-1; i>=0; --i) + { + if (!layerables.at(i)->realVisibility()) + continue; + QVariant details; + double dist = layerables.at(i)->selectTest(pos, onlySelectable, &details); + if (dist >= 0 && dist < minimumDistance) + { + minimumDistance = dist; + minimumDistanceLayerable = layerables.at(i); + if (selectionDetails) *selectionDetails = details; + } + } + if (minimumDistance < selectionTolerance()) + return minimumDistanceLayerable; + } + return 0; +} + +/*! + Saves the plot to a rastered image file \a fileName in the image format \a format. The plot is + sized to \a width and \a height in pixels and scaled with \a scale. (width 100 and scale 2.0 lead + to a full resolution file with width 200.) If the \a format supports compression, \a quality may + be between 0 and 100 to control it. + + Returns true on success. If this function fails, most likely the given \a format isn't supported + by the system, see Qt docs about QImageWriter::supportedImageFormats(). + + \see saveBmp, saveJpg, savePng, savePdf +*/ +bool QCustomPlot::saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality) +{ + QPixmap buffer = toPixmap(width, height, scale); + if (!buffer.isNull()) + return buffer.save(fileName, format, quality); + else + return false; +} + +/*! + Renders the plot to a pixmap and returns it. + + The plot is sized to \a width and \a height in pixels and scaled with \a scale. (width 100 and + scale 2.0 lead to a full resolution pixmap with width 200.) + + \see toPainter, saveRastered, saveBmp, savePng, saveJpg, savePdf +*/ +QPixmap QCustomPlot::toPixmap(int width, int height, double scale) +{ + // this method is somewhat similar to toPainter. Change something here, and a change in toPainter might be necessary, too. + int newWidth, newHeight; + if (width == 0 || height == 0) + { + newWidth = this->width(); + newHeight = this->height(); + } else + { + newWidth = width; + newHeight = height; + } + int scaledWidth = qRound(scale*newWidth); + int scaledHeight = qRound(scale*newHeight); + + QPixmap result(scaledWidth, scaledHeight); + result.fill(mBackgroundBrush.style() == Qt::SolidPattern ? mBackgroundBrush.color() : Qt::transparent); // if using non-solid pattern, make transparent now and draw brush pattern later + QCPPainter painter; + painter.begin(&result); + if (painter.isActive()) + { + QRect oldViewport = viewport(); + setViewport(QRect(0, 0, newWidth, newHeight)); + painter.setMode(QCPPainter::pmNoCaching); + if (!qFuzzyCompare(scale, 1.0)) + { + if (scale > 1.0) // for scale < 1 we always want cosmetic pens where possible, because else lines might disappear for very small scales + painter.setMode(QCPPainter::pmNonCosmetic); + painter.scale(scale, scale); + } + if (mBackgroundBrush.style() != Qt::SolidPattern && mBackgroundBrush.style() != Qt::NoBrush) + painter.fillRect(mViewport, mBackgroundBrush); + draw(&painter); + setViewport(oldViewport); + painter.end(); + } else // might happen if pixmap has width or height zero + { + qDebug() << Q_FUNC_INFO << "Couldn't activate painter on pixmap"; + return QPixmap(); + } + return result; +} + +/*! + Renders the plot using the passed \a painter. + + The plot is sized to \a width and \a height in pixels. If the \a painter's scale is not 1.0, the resulting plot will + appear scaled accordingly. + + \note If you are restricted to using a QPainter (instead of QCPPainter), create a temporary QPicture and open a QCPPainter + on it. Then call \ref toPainter with this QCPPainter. After ending the paint operation on the picture, draw it with + the QPainter. This will reproduce the painter actions the QCPPainter took, with a QPainter. + + \see toPixmap +*/ +void QCustomPlot::toPainter(QCPPainter *painter, int width, int height) +{ + // this method is somewhat similar to toPixmap. Change something here, and a change in toPixmap might be necessary, too. + int newWidth, newHeight; + if (width == 0 || height == 0) + { + newWidth = this->width(); + newHeight = this->height(); + } else + { + newWidth = width; + newHeight = height; + } + + if (painter->isActive()) + { + QRect oldViewport = viewport(); + setViewport(QRect(0, 0, newWidth, newHeight)); + painter->setMode(QCPPainter::pmNoCaching); + // warning: the following is different in toPixmap, because a solid background color is applied there via QPixmap::fill + // here, we need to do this via QPainter::fillRect. + if (mBackgroundBrush.style() != Qt::NoBrush) + painter->fillRect(mViewport, mBackgroundBrush); + draw(painter); + setViewport(oldViewport); + } else + qDebug() << Q_FUNC_INFO << "Passed painter is not active"; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPData +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPData + \brief Holds the data of one single data point for QCPGraph. + + The container for storing multiple data points is \ref QCPDataMap. + + The stored data is: + \li \a key: coordinate on the key axis of this data point + \li \a value: coordinate on the value axis of this data point + \li \a keyErrorMinus: negative error in the key dimension (for error bars) + \li \a keyErrorPlus: positive error in the key dimension (for error bars) + \li \a valueErrorMinus: negative error in the value dimension (for error bars) + \li \a valueErrorPlus: positive error in the value dimension (for error bars) + + \see QCPDataMap +*/ + +/*! + Constructs a data point with key, value and all errors set to zero. +*/ +QCPData::QCPData() : + key(0), + value(0), + keyErrorPlus(0), + keyErrorMinus(0), + valueErrorPlus(0), + valueErrorMinus(0) +{ +} + +/*! + Constructs a data point with the specified \a key and \a value. All errors are set to zero. +*/ +QCPData::QCPData(double key, double value) : + key(key), + value(value), + keyErrorPlus(0), + keyErrorMinus(0), + valueErrorPlus(0), + valueErrorMinus(0) +{ +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPGraph +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPGraph + \brief A plottable representing a graph in a plot. + + \image html QCPGraph.png + + Usually QCustomPlot creates graphs internally via QCustomPlot::addGraph and the resulting + instance is accessed via QCustomPlot::graph. + + To plot data, assign it with the \ref setData or \ref addData functions. + + Graphs are used to display single-valued data. Single-valued means that there should only be one + data point per unique key coordinate. In other words, the graph can't have \a loops. If you do + want to plot non-single-valued curves, rather use the QCPCurve plottable. + + \section appearance Changing the appearance + + The appearance of the graph is mainly determined by the line style, scatter style, brush and pen + of the graph (\ref setLineStyle, \ref setScatterStyle, \ref setBrush, \ref setPen). + + \subsection filling Filling under or between graphs + + QCPGraph knows two types of fills: Normal graph fills towards the zero-value-line parallel to + the key axis of the graph, and fills between two graphs, called channel fills. To enable a fill, + just set a brush with \ref setBrush which is neither Qt::NoBrush nor fully transparent. + + By default, a normal fill towards the zero-value-line will be drawn. To set up a channel fill + between this graph and another one, call \ref setChannelFillGraph with the other graph as + parameter. + + \see QCustomPlot::addGraph, QCustomPlot::graph, QCPLegend::addGraph +*/ + +/*! + Constructs a graph which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value + axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have + the same orientation. If either of these restrictions is violated, a corresponding message is + printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed QCPGraph can be added to the plot with QCustomPlot::addPlottable, QCustomPlot + then takes ownership of the graph. + + To directly create a graph inside a plot, you can also use the simpler QCustomPlot::addGraph function. +*/ +QCPGraph::QCPGraph(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis) +{ + mData = new QCPDataMap; + + setPen(QPen(Qt::blue, 0)); + setErrorPen(QPen(Qt::black)); + setBrush(Qt::NoBrush); + setSelectedPen(QPen(QColor(80, 80, 255), 2.5)); + setSelectedBrush(Qt::NoBrush); + + setLineStyle(lsLine); + setErrorType(etNone); + setErrorBarSize(6); + setErrorBarSkipSymbol(true); + setChannelFillGraph(0); +} + +QCPGraph::~QCPGraph() +{ + delete mData; +} + +/*! + Replaces the current data with the provided \a data. + + If \a copy is set to true, data points in \a data will only be copied. if false, the graph + takes ownership of the passed data and replaces the internal data pointer with it. This is + significantly faster than copying for large datasets. +*/ +void QCPGraph::setData(QCPDataMap *data, bool copy) +{ + if (copy) + { + *mData = *data; + } else + { + delete mData; + mData = data; + } +} + +/*! \overload + + Replaces the current data with the provided points in \a key and \a value pairs. The provided + vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setData(const QVector &key, const QVector &value) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + QCPData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + symmetrical value error of the data points are set to the values in \a valueError. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. + + For asymmetrical errors (plus different from minus), see the overloaded version of this function. +*/ +void QCPGraph::setDataValueError(const QVector &key, const QVector &value, const QVector &valueError) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueError.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + \overload + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + negative value error of the data points are set to the values in \a valueErrorMinus, the positive + value error to \a valueErrorPlus. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setDataValueError(const QVector &key, const QVector &value, const QVector &valueErrorMinus, const QVector &valueErrorPlus) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueErrorMinus.size()); + n = qMin(n, valueErrorPlus.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + symmetrical key error of the data points are set to the values in \a keyError. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. + + For asymmetrical errors (plus different from minus), see the overloaded version of this function. +*/ +void QCPGraph::setDataKeyError(const QVector &key, const QVector &value, const QVector &keyError) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, keyError.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + \overload + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + negative key error of the data points are set to the values in \a keyErrorMinus, the positive + key error to \a keyErrorPlus. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setDataKeyError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, keyErrorMinus.size()); + n = qMin(n, keyErrorPlus.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + symmetrical key and value errors of the data points are set to the values in \a keyError and \a valueError. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. + + For asymmetrical errors (plus different from minus), see the overloaded version of this function. +*/ +void QCPGraph::setDataBothError(const QVector &key, const QVector &value, const QVector &keyError, const QVector &valueError) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueError.size()); + n = qMin(n, keyError.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + +/*! + \overload + Replaces the current data with the provided points in \a key and \a value pairs. Additionally the + negative key and value errors of the data points are set to the values in \a keyErrorMinus and \a valueErrorMinus. The positive + key and value errors are set to the values in \a keyErrorPlus \a valueErrorPlus. + For error bars to show appropriately, see \ref setErrorType. + The provided vectors should have equal length. Else, the number of added points will be the size of the + smallest vector. +*/ +void QCPGraph::setDataBothError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus, const QVector &valueErrorMinus, const QVector &valueErrorPlus) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + n = qMin(n, valueErrorMinus.size()); + n = qMin(n, valueErrorPlus.size()); + n = qMin(n, keyErrorMinus.size()); + n = qMin(n, keyErrorPlus.size()); + QCPData newData; + for (int i=0; iinsertMulti(key[i], newData); + } +} + + +/*! + Sets how the single data points are connected in the plot. For scatter-only plots, set \a ls to + \ref lsNone and \ref setScatterStyle to the desired scatter style. + + \see setScatterStyle +*/ +void QCPGraph::setLineStyle(LineStyle ls) +{ + mLineStyle = ls; +} + +/*! + Sets the visual appearance of single data points in the plot. If set to \ref QCPScatterStyle::ssNone, no scatter points + are drawn (e.g. for line-only-plots with appropriate line style). + + \see QCPScatterStyle, setLineStyle +*/ +void QCPGraph::setScatterStyle(const QCPScatterStyle &style) +{ + mScatterStyle = style; +} + +/*! + Sets which kind of error bars (Key Error, Value Error or both) should be drawn on each data + point. If you set \a errorType to something other than \ref etNone, make sure to actually pass + error data via the specific setData functions along with the data points (e.g. \ref + setDataValueError, \ref setDataKeyError, \ref setDataBothError). + + \see ErrorType +*/ +void QCPGraph::setErrorType(ErrorType errorType) +{ + mErrorType = errorType; +} + +/*! + Sets the pen with which the error bars will be drawn. + \see setErrorBarSize, setErrorType +*/ +void QCPGraph::setErrorPen(const QPen &pen) +{ + mErrorPen = pen; +} + +/*! + Sets the width of the handles at both ends of an error bar in pixels. +*/ +void QCPGraph::setErrorBarSize(double size) +{ + mErrorBarSize = size; +} + +/*! + If \a enabled is set to true, the error bar will not be drawn as a solid line under the scatter symbol but + leave some free space around the symbol. + + This feature uses the current scatter size (\ref QCPScatterStyle::setSize) to determine the size + of the area to leave blank. So when drawing Pixmaps as scatter points (\ref + QCPScatterStyle::ssPixmap), the scatter size must be set manually to a value corresponding to the + size of the Pixmap, if the error bars should leave gaps to its boundaries. + + \ref setErrorType, setErrorBarSize, setScatterStyle +*/ +void QCPGraph::setErrorBarSkipSymbol(bool enabled) +{ + mErrorBarSkipSymbol = enabled; +} + +/*! + Sets the target graph for filling the area between this graph and \a targetGraph with the current + brush (\ref setBrush). + + When \a targetGraph is set to 0, a normal graph fill to the zero-value-line will be shown. To + disable any filling, set the brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPGraph::setChannelFillGraph(QCPGraph *targetGraph) +{ + // prevent setting channel target to this graph itself: + if (targetGraph == this) + { + qDebug() << Q_FUNC_INFO << "targetGraph is this graph itself"; + mChannelFillGraph.clear(); + return; + } + // prevent setting channel target to a graph not in the plot: + if (targetGraph && targetGraph->mParentPlot != mParentPlot) + { + qDebug() << Q_FUNC_INFO << "targetGraph not in same plot"; + mChannelFillGraph.clear(); + return; + } + + mChannelFillGraph = targetGraph; +} + +/*! + Adds the provided data points in \a dataMap to the current data. + \see removeData +*/ +void QCPGraph::addData(const QCPDataMap &dataMap) +{ + mData->unite(dataMap); +} + +/*! \overload + Adds the provided single data point in \a data to the current data. + \see removeData +*/ +void QCPGraph::addData(const QCPData &data) +{ + mData->insertMulti(data.key, data); +} + +/*! \overload + Adds the provided single data point as \a key and \a value pair to the current data. + \see removeData +*/ +void QCPGraph::addData(double key, double value) +{ + QCPData newData; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.key, newData); +} + +/*! \overload + Adds the provided data points as \a key and \a value pairs to the current data. + \see removeData +*/ +void QCPGraph::addData(const QVector &keys, const QVector &values) +{ + int n = qMin(keys.size(), values.size()); + QCPData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Removes all data points with keys smaller than \a key. + \see addData, clearData +*/ +void QCPGraph::removeDataBefore(double key) +{ + QCPDataMap::iterator it = mData->begin(); + while (it != mData->end() && it.key() < key) + it = mData->erase(it); +} + +/*! + Removes all data points with keys greater than \a key. + \see addData, clearData +*/ +void QCPGraph::removeDataAfter(double key) +{ + if (mData->isEmpty()) return; + QCPDataMap::iterator it = mData->upperBound(key); + while (it != mData->end()) + it = mData->erase(it); +} + +/*! + Removes all data points with keys between \a fromKey and \a toKey. + if \a fromKey is greater or equal to \a toKey, the function does nothing. To remove + a single data point with known key, use \ref removeData(double key). + + \see addData, clearData +*/ +void QCPGraph::removeData(double fromKey, double toKey) +{ + if (fromKey >= toKey || mData->isEmpty()) return; + QCPDataMap::iterator it = mData->upperBound(fromKey); + QCPDataMap::iterator itEnd = mData->upperBound(toKey); + while (it != itEnd) + it = mData->erase(it); +} + +/*! \overload + + Removes a single data point at \a key. If the position is not known with absolute precision, + consider using \ref removeData(double fromKey, double toKey) with a small fuzziness interval around + the suspected position, depeding on the precision with which the key is known. + + \see addData, clearData +*/ +void QCPGraph::removeData(double key) +{ + mData->remove(key); +} + +/*! + Removes all data points. + \see removeData, removeDataAfter, removeDataBefore +*/ +void QCPGraph::clearData() +{ + mData->clear(); +} + +/* inherits documentation from base class */ +double QCPGraph::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if ((onlySelectable && !mSelectable) || mData->isEmpty()) + return -1; + + return pointDistance(pos); +} + +/*! \overload + + Allows to define whether error bars are taken into consideration when determining the new axis + range. + + \see rescaleKeyAxis, rescaleValueAxis, QCPAbstractPlottable::rescaleAxes, QCustomPlot::rescaleAxes +*/ +void QCPGraph::rescaleAxes(bool onlyEnlarge, bool includeErrorBars) const +{ + rescaleKeyAxis(onlyEnlarge, includeErrorBars); + rescaleValueAxis(onlyEnlarge, includeErrorBars); +} + +/*! \overload + + Allows to define whether error bars (of kind \ref QCPGraph::etKey) are taken into consideration + when determining the new axis range. + + \see rescaleAxes, QCPAbstractPlottable::rescaleKeyAxis +*/ +void QCPGraph::rescaleKeyAxis(bool onlyEnlarge, bool includeErrorBars) const +{ + // this code is a copy of QCPAbstractPlottable::rescaleKeyAxis with the only change + // that getKeyRange is passed the includeErrorBars value. + if (mData->isEmpty()) return; + + QCPAxis *keyAxis = mKeyAxis.data(); + if (!keyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + SignDomain signDomain = sdBoth; + if (keyAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (keyAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getKeyRange(validRange, signDomain, includeErrorBars); + + if (validRange) + { + if (onlyEnlarge) + { + if (keyAxis->range().lower < newRange.lower) + newRange.lower = keyAxis->range().lower; + if (keyAxis->range().upper > newRange.upper) + newRange.upper = keyAxis->range().upper; + } + keyAxis->setRange(newRange); + } +} + +/*! \overload + + Allows to define whether error bars (of kind \ref QCPGraph::etValue) are taken into consideration + when determining the new axis range. + + \see rescaleAxes, QCPAbstractPlottable::rescaleValueAxis +*/ +void QCPGraph::rescaleValueAxis(bool onlyEnlarge, bool includeErrorBars) const +{ + // this code is a copy of QCPAbstractPlottable::rescaleValueAxis with the only change + // is that getValueRange is passed the includeErrorBars value. + if (mData->isEmpty()) return; + + QCPAxis *valueAxis = mValueAxis.data(); + if (!valueAxis) { qDebug() << Q_FUNC_INFO << "invalid value axis"; return; } + + SignDomain signDomain = sdBoth; + if (valueAxis->scaleType() == QCPAxis::stLogarithmic) + signDomain = (valueAxis->range().upper < 0 ? sdNegative : sdPositive); + + bool validRange; + QCPRange newRange = getValueRange(validRange, signDomain, includeErrorBars); + + if (validRange) + { + if (onlyEnlarge) + { + if (valueAxis->range().lower < newRange.lower) + newRange.lower = valueAxis->range().lower; + if (valueAxis->range().upper > newRange.upper) + newRange.upper = valueAxis->range().upper; + } + valueAxis->setRange(newRange); + } +} + +/* inherits documentation from base class */ +void QCPGraph::draw(QCPPainter *painter) +{ + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (mKeyAxis.data()->range().size() <= 0 || mData->isEmpty()) return; + if (mLineStyle == lsNone && mScatterStyle.isNone()) return; + + // allocate line and (if necessary) point vectors: + QVector *lineData = new QVector; + QVector *pointData = 0; + if (!mScatterStyle.isNone()) + pointData = new QVector; + + // fill vectors with data appropriate to plot style: + getPlotData(lineData, pointData); + + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + QCPDataMap::const_iterator it; + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + if (QCP::isInvalidData(it.value().key, it.value().value) || + QCP::isInvalidData(it.value().keyErrorPlus, it.value().keyErrorMinus) || + QCP::isInvalidData(it.value().valueErrorPlus, it.value().valueErrorPlus)) + qDebug() << Q_FUNC_INFO << "Data point at" << it.key() << "invalid." << "Plottable name:" << name(); + } +#endif + + // draw fill of graph: + drawFill(painter, lineData); + + // draw line: + if (mLineStyle == lsImpulse) + drawImpulsePlot(painter, lineData); + else if (mLineStyle != lsNone) + drawLinePlot(painter, lineData); // also step plots can be drawn as a line plot + + // draw scatters: + if (pointData) + drawScatterPlot(painter, pointData); + + // free allocated line and point vectors: + delete lineData; + if (pointData) + delete pointData; +} + +/* inherits documentation from base class */ +void QCPGraph::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw fill: + if (mBrush.style() != Qt::NoBrush) + { + applyFillAntialiasingHint(painter); + painter->fillRect(QRectF(rect.left(), rect.top()+rect.height()/2.0, rect.width(), rect.height()/3.0), mBrush); + } + // draw line vertically centered: + if (mLineStyle != lsNone) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + painter->drawLine(QLineF(rect.left(), rect.top()+rect.height()/2.0, rect.right()+5, rect.top()+rect.height()/2.0)); // +5 on x2 else last segment is missing from dashed/dotted pens + } + // draw scatter symbol: + if (!mScatterStyle.isNone()) + { + applyScattersAntialiasingHint(painter); + // scale scatter pixmap if it's too large to fit in legend icon rect: + if (mScatterStyle.shape() == QCPScatterStyle::ssPixmap && (mScatterStyle.pixmap().size().width() > rect.width() || mScatterStyle.pixmap().size().height() > rect.height())) + { + QCPScatterStyle scaledStyle(mScatterStyle); + scaledStyle.setPixmap(scaledStyle.pixmap().scaled(rect.size().toSize(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); + scaledStyle.applyTo(painter, mPen); + scaledStyle.drawShape(painter, QRectF(rect).center()); + } else + { + mScatterStyle.applyTo(painter, mPen); + mScatterStyle.drawShape(painter, QRectF(rect).center()); + } + } +} + +/*! \internal + + This function branches out to the line style specific "get(...)PlotData" functions, according to + the line style of the graph. + + \a lineData will be filled with raw points that will be drawn with the according draw functions, + e.g. \ref drawLinePlot and \ref drawImpulsePlot. These aren't necessarily the original data + points, since for step plots for example, additional points are needed for drawing lines that + make up steps. If the line style of the graph is \ref lsNone, the \a lineData vector will be left + untouched. + + \a pointData will be filled with the original data points so \ref drawScatterPlot can draw the + scatter symbols accordingly. If no scatters need to be drawn, i.e. the scatter style's shape is + \ref QCPScatterStyle::ssNone, pass 0 as \a pointData, and this step will be skipped. + + \see getScatterPlotData, getLinePlotData, getStepLeftPlotData, getStepRightPlotData, + getStepCenterPlotData, getImpulsePlotData +*/ +void QCPGraph::getPlotData(QVector *lineData, QVector *pointData) const +{ + switch(mLineStyle) + { + case lsNone: getScatterPlotData(pointData); break; + case lsLine: getLinePlotData(lineData, pointData); break; + case lsStepLeft: getStepLeftPlotData(lineData, pointData); break; + case lsStepRight: getStepRightPlotData(lineData, pointData); break; + case lsStepCenter: getStepCenterPlotData(lineData, pointData); break; + case lsImpulse: getImpulsePlotData(lineData, pointData); break; + } +} + +/*! \internal + + If line style is \ref lsNone and the scatter style's shape is not \ref QCPScatterStyle::ssNone, + this function serves at providing the visible data points in \a pointData, so the \ref + drawScatterPlot function can draw the scatter points accordingly. + + If line style is not \ref lsNone, this function is not called and the data for the scatter points + are (if needed) calculated inside the corresponding other "get(...)PlotData" functions. + + \see drawScatterPlot +*/ +void QCPGraph::getScatterPlotData(QVector *pointData) const +{ + if (!pointData) return; + QCPAxis *keyAxis = mKeyAxis.data(); + if (!keyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + // prepare vectors: + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + while (it != upperEnd) + { + (*pointData)[i] = it.value(); + ++i; + ++it; + } + } +} + +/*! \internal + + Places the raw data points needed for a normal linearly connected graph in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getLinePlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->reserve(dataCount+2); // added 2 to reserve memory for lower/upper fill base points that might be needed for fill + lineData->resize(dataCount); + if (pointData) + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + while (it != upperEnd) + { + if (pointData) + (*pointData)[i] = it.value(); + (*lineData)[i].setX(valueAxis->coordToPixel(it.value().value)); + (*lineData)[i].setY(keyAxis->coordToPixel(it.key())); + ++i; + ++it; + } + } else // key axis is horizontal + { + while (it != upperEnd) + { + if (pointData) + (*pointData)[i] = it.value(); + (*lineData)[i].setX(keyAxis->coordToPixel(it.key())); + (*lineData)[i].setY(valueAxis->coordToPixel(it.value().value)); + ++i; + ++it; + } + } + } +} + +/*! + \internal + Places the raw data points needed for a step plot with left oriented steps in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getStepLeftPlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->reserve(dataCount*2+2); // added 2 to reserve memory for lower/upper fill base points that might be needed for fill + lineData->resize(dataCount*2); // multiplied by 2 because step plot needs two polyline points per one actual data point + if (pointData) + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++i; + ++it; + } + } else // key axis is horizontal + { + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++i; + ++it; + } + } + } +} + +/*! + \internal + Places the raw data points needed for a step plot with right oriented steps in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getStepRightPlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->reserve(dataCount*2+2); // added 2 to reserve memory for lower/upper fill base points that might be needed for fill + lineData->resize(dataCount*2); // multiplied by 2 because step plot needs two polyline points per one actual data point + if (pointData) + pointData->resize(dataCount); + + // position points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double lastKey = keyAxis->coordToPixel(it.key()); + double value; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + value = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(value); + (*lineData)[i].setY(lastKey); + ++i; + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(value); + (*lineData)[i].setY(lastKey); + ++i; + ++it; + } + } else // key axis is horizontal + { + double lastKey = keyAxis->coordToPixel(it.key()); + double value; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + value = valueAxis->coordToPixel(it.value().value); + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(value); + ++i; + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(value); + ++i; + ++it; + } + } + } +} + +/*! + \internal + Places the raw data points needed for a step plot with centered steps in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawLinePlot +*/ +void QCPGraph::getStepCenterPlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + // added 2 to reserve memory for lower/upper fill base points that might be needed for base fill + // multiplied by 2 because step plot needs two polyline points per one actual data point + lineData->reserve(dataCount*2+2); + lineData->resize(dataCount*2); + if (pointData) + pointData->resize(dataCount); + + // position points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double lastKey = keyAxis->coordToPixel(it.key()); + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(lastKey); + ++it; + ++i; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = (keyAxis->coordToPixel(it.key())-lastKey)*0.5 + lastKey; + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(key); + ++it; + ++i; + } + (*lineData)[i].setX(lastValue); + (*lineData)[i].setY(lastKey); + } else // key axis is horizontal + { + double lastKey = keyAxis->coordToPixel(it.key()); + double lastValue = valueAxis->coordToPixel(it.value().value); + double key; + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(lastValue); + ++it; + ++i; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = (keyAxis->coordToPixel(it.key())-lastKey)*0.5 + lastKey; + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++i; + lastValue = valueAxis->coordToPixel(it.value().value); + lastKey = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(key); + (*lineData)[i].setY(lastValue); + ++it; + ++i; + } + (*lineData)[i].setX(lastKey); + (*lineData)[i].setY(lastValue); + } + } +} + +/*! + \internal + Places the raw data points needed for an impulse plot in \a lineData. + + As for all plot data retrieval functions, \a pointData just contains all unaltered data (scatter) + points that are visible for drawing scatter points, if necessary. If drawing scatter points is + disabled (i.e. the scatter style's shape is \ref QCPScatterStyle::ssNone), pass 0 as \a + pointData, and the function will skip filling the vector. + + \see drawImpulsePlot +*/ +void QCPGraph::getImpulsePlotData(QVector *lineData, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (!lineData) { qDebug() << Q_FUNC_INFO << "null pointer passed as lineData"; return; } + + // get visible data range: + QCPDataMap::const_iterator lower, upper; + int dataCount = 0; + getVisibleDataBounds(lower, upper, dataCount); + if (dataCount > 0) + { + lineData->resize(dataCount*2); // no need to reserve 2 extra points, because there is no fill for impulse plot + if (pointData) + pointData->resize(dataCount); + + // position data points: + QCPDataMap::const_iterator it = lower; + QCPDataMap::const_iterator upperEnd = upper+1; + int i = 0; + int ipoint = 0; + if (keyAxis->orientation() == Qt::Vertical) + { + double zeroPointX = valueAxis->coordToPixel(0); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(zeroPointX); + (*lineData)[i].setY(key); + ++i; + (*lineData)[i].setX(valueAxis->coordToPixel(it.value().value)); + (*lineData)[i].setY(key); + ++i; + ++it; + } + } else // key axis is horizontal + { + double zeroPointY = valueAxis->coordToPixel(0); + double key; + while (it != upperEnd) + { + if (pointData) + { + (*pointData)[ipoint] = it.value(); + ++ipoint; + } + key = keyAxis->coordToPixel(it.key()); + (*lineData)[i].setX(key); + (*lineData)[i].setY(zeroPointY); + ++i; + (*lineData)[i].setX(key); + (*lineData)[i].setY(valueAxis->coordToPixel(it.value().value)); + ++i; + ++it; + } + } + } +} + +/*! \internal + + Draws the fill of the graph with the specified brush. + + If the fill is a normal fill towards the zero-value-line, only the \a lineData is required (and + two extra points at the zero-value-line, which are added by \ref addFillBasePoints and removed by + \ref removeFillBasePoints after the fill drawing is done). + + If the fill is a channel fill between this QCPGraph and another QCPGraph (mChannelFillGraph), the + more complex polygon is calculated with the \ref getChannelFillPolygon function. + + \see drawLinePlot +*/ +void QCPGraph::drawFill(QCPPainter *painter, QVector *lineData) const +{ + if (mLineStyle == lsImpulse) return; // fill doesn't make sense for impulse plot + if (mainBrush().style() == Qt::NoBrush || mainBrush().color().alpha() == 0) return; + + applyFillAntialiasingHint(painter); + if (!mChannelFillGraph) + { + // draw base fill under graph, fill goes all the way to the zero-value-line: + addFillBasePoints(lineData); + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(QPolygonF(*lineData)); + removeFillBasePoints(lineData); + } else + { + // draw channel fill between this graph and mChannelFillGraph: + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(getChannelFillPolygon(lineData)); + } +} + +/*! \internal + + Draws scatter symbols at every data point passed in \a pointData. scatter symbols are independent + of the line style and are always drawn if the scatter style's shape is not \ref + QCPScatterStyle::ssNone. Hence, the \a pointData vector is outputted by all "get(...)PlotData" + functions, together with the (line style dependent) line data. + + \see drawLinePlot, drawImpulsePlot +*/ +void QCPGraph::drawScatterPlot(QCPPainter *painter, QVector *pointData) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + // draw error bars: + if (mErrorType != etNone) + { + applyErrorBarsAntialiasingHint(painter); + painter->setPen(mErrorPen); + if (keyAxis->orientation() == Qt::Vertical) + { + for (int i=0; isize(); ++i) + drawError(painter, valueAxis->coordToPixel(pointData->at(i).value), keyAxis->coordToPixel(pointData->at(i).key), pointData->at(i)); + } else + { + for (int i=0; isize(); ++i) + drawError(painter, keyAxis->coordToPixel(pointData->at(i).key), valueAxis->coordToPixel(pointData->at(i).value), pointData->at(i)); + } + } + + // draw scatter point symbols: + applyScattersAntialiasingHint(painter); + mScatterStyle.applyTo(painter, mPen); + if (keyAxis->orientation() == Qt::Vertical) + { + for (int i=0; isize(); ++i) + mScatterStyle.drawShape(painter, valueAxis->coordToPixel(pointData->at(i).value), keyAxis->coordToPixel(pointData->at(i).key)); + } else + { + for (int i=0; isize(); ++i) + mScatterStyle.drawShape(painter, keyAxis->coordToPixel(pointData->at(i).key), valueAxis->coordToPixel(pointData->at(i).value)); + } +} + +/*! \internal + + Draws line graphs from the provided data. It connects all points in \a lineData, which was + created by one of the "get(...)PlotData" functions for line styles that require simple line + connections between the point vector they create. These are for example \ref getLinePlotData, + \ref getStepLeftPlotData, \ref getStepRightPlotData and \ref getStepCenterPlotData. + + \see drawScatterPlot, drawImpulsePlot +*/ +void QCPGraph::drawLinePlot(QCPPainter *painter, QVector *lineData) const +{ + // draw line of graph: + if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(Qt::NoBrush); + + /* Draws polyline in batches, currently not used: + int p = 0; + while (p < lineData->size()) + { + int batch = qMin(25, lineData->size()-p); + if (p != 0) + { + ++batch; + --p; // to draw the connection lines between two batches + } + painter->drawPolyline(lineData->constData()+p, batch); + p += batch; + } + */ + + // if drawing solid line and not in PDF, use much faster line drawing instead of polyline: + if (mParentPlot->plottingHints().testFlag(QCP::phFastPolylines) && + painter->pen().style() == Qt::SolidLine && + !painter->modes().testFlag(QCPPainter::pmVectorized)&& + !painter->modes().testFlag(QCPPainter::pmNoCaching)) + { + for (int i=1; isize(); ++i) + painter->drawLine(lineData->at(i-1), lineData->at(i)); + } else + { + painter->drawPolyline(QPolygonF(*lineData)); + } + } +} + +/*! \internal + + Draws impulses from the provided data, i.e. it connects all line pairs in \a lineData, which was + created by \ref getImpulsePlotData. + + \see drawScatterPlot, drawLinePlot +*/ +void QCPGraph::drawImpulsePlot(QCPPainter *painter, QVector *lineData) const +{ + // draw impulses: + if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + QPen pen = mainPen(); + pen.setCapStyle(Qt::FlatCap); // so impulse line doesn't reach beyond zero-line + painter->setPen(pen); + painter->setBrush(Qt::NoBrush); + painter->drawLines(*lineData); + } +} + +/*! \internal + + called by the scatter drawing function (\ref drawScatterPlot) to draw the error bars on one data + point. \a x and \a y pixel positions of the data point are passed since they are already known in + pixel coordinates in the drawing function, so we save some extra coordToPixel transforms here. \a + data is therefore only used for the errors, not key and value. +*/ +void QCPGraph::drawError(QCPPainter *painter, double x, double y, const QCPData &data) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + double a, b; // positions of error bar bounds in pixels + double barWidthHalf = mErrorBarSize*0.5; + double skipSymbolMargin = mScatterStyle.size(); // pixels left blank per side, when mErrorBarSkipSymbol is true + + if (keyAxis->orientation() == Qt::Vertical) + { + // draw key error vertically and value error horizontally + if (mErrorType == etKey || mErrorType == etBoth) + { + a = keyAxis->coordToPixel(data.key-data.keyErrorMinus); + b = keyAxis->coordToPixel(data.key+data.keyErrorPlus); + if (keyAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (a-y > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(x, a, x, y+skipSymbolMargin)); + if (y-b > skipSymbolMargin) + painter->drawLine(QLineF(x, y-skipSymbolMargin, x, b)); + } else + painter->drawLine(QLineF(x, a, x, b)); + // draw handles: + painter->drawLine(QLineF(x-barWidthHalf, a, x+barWidthHalf, a)); + painter->drawLine(QLineF(x-barWidthHalf, b, x+barWidthHalf, b)); + } + if (mErrorType == etValue || mErrorType == etBoth) + { + a = valueAxis->coordToPixel(data.value-data.valueErrorMinus); + b = valueAxis->coordToPixel(data.value+data.valueErrorPlus); + if (valueAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (x-a > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(a, y, x-skipSymbolMargin, y)); + if (b-x > skipSymbolMargin) + painter->drawLine(QLineF(x+skipSymbolMargin, y, b, y)); + } else + painter->drawLine(QLineF(a, y, b, y)); + // draw handles: + painter->drawLine(QLineF(a, y-barWidthHalf, a, y+barWidthHalf)); + painter->drawLine(QLineF(b, y-barWidthHalf, b, y+barWidthHalf)); + } + } else // mKeyAxis->orientation() is Qt::Horizontal + { + // draw value error vertically and key error horizontally + if (mErrorType == etKey || mErrorType == etBoth) + { + a = keyAxis->coordToPixel(data.key-data.keyErrorMinus); + b = keyAxis->coordToPixel(data.key+data.keyErrorPlus); + if (keyAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (x-a > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(a, y, x-skipSymbolMargin, y)); + if (b-x > skipSymbolMargin) + painter->drawLine(QLineF(x+skipSymbolMargin, y, b, y)); + } else + painter->drawLine(QLineF(a, y, b, y)); + // draw handles: + painter->drawLine(QLineF(a, y-barWidthHalf, a, y+barWidthHalf)); + painter->drawLine(QLineF(b, y-barWidthHalf, b, y+barWidthHalf)); + } + if (mErrorType == etValue || mErrorType == etBoth) + { + a = valueAxis->coordToPixel(data.value-data.valueErrorMinus); + b = valueAxis->coordToPixel(data.value+data.valueErrorPlus); + if (valueAxis->rangeReversed()) + qSwap(a,b); + // draw spine: + if (mErrorBarSkipSymbol) + { + if (a-y > skipSymbolMargin) // don't draw spine if error is so small it's within skipSymbolmargin + painter->drawLine(QLineF(x, a, x, y+skipSymbolMargin)); + if (y-b > skipSymbolMargin) + painter->drawLine(QLineF(x, y-skipSymbolMargin, x, b)); + } else + painter->drawLine(QLineF(x, a, x, b)); + // draw handles: + painter->drawLine(QLineF(x-barWidthHalf, a, x+barWidthHalf, a)); + painter->drawLine(QLineF(x-barWidthHalf, b, x+barWidthHalf, b)); + } + } +} + +/*! \internal + + called by the specific plot data generating functions "get(...)PlotData" to determine which data + range is visible, so only that needs to be processed. + + \a lower returns an iterator to the lowest data point that needs to be taken into account when + plotting. Note that in order to get a clean plot all the way to the edge of the axes, \a lower + may still be outside the visible range. + + \a upper returns an iterator to the highest data point. Same as before, \a upper may also lie + outside of the visible range. + + \a count number of data points that need plotting, i.e. points between \a lower and \a upper, + including them. This is useful for allocating the array of QPointFs in the specific + drawing functions. + + if the graph contains no data, \a count is zero and both \a lower and \a upper point to constEnd. +*/ +void QCPGraph::getVisibleDataBounds(QCPDataMap::const_iterator &lower, QCPDataMap::const_iterator &upper, int &count) const +{ + if (!mKeyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + if (mData->isEmpty()) + { + lower = mData->constEnd(); + upper = mData->constEnd(); + count = 0; + return; + } + + // get visible data range as QMap iterators + QCPDataMap::const_iterator lbound = mData->lowerBound(mKeyAxis.data()->range().lower); + QCPDataMap::const_iterator ubound = mData->upperBound(mKeyAxis.data()->range().upper); + bool lowoutlier = lbound != mData->constBegin(); // indicates whether there exist points below axis range + bool highoutlier = ubound != mData->constEnd(); // indicates whether there exist points above axis range + + lower = (lowoutlier ? lbound-1 : lbound); // data point range that will be actually drawn + upper = (highoutlier ? ubound : ubound-1); // data point range that will be actually drawn + + // count number of points in range lower to upper (including them), so we can allocate array for them in draw functions: + QCPDataMap::const_iterator it = lower; + count = 1; + while (it != upper) + { + ++it; + ++count; + } +} + +/*! \internal + + The line data vector generated by e.g. getLinePlotData contains only the line that connects the + data points. If the graph needs to be filled, two additional points need to be added at the + value-zero-line in the lower and upper key positions of the graph. This function calculates these + points and adds them to the end of \a lineData. Since the fill is typically drawn before the line + stroke, these added points need to be removed again after the fill is done, with the + removeFillBasePoints function. + + The expanding of \a lineData by two points will not cause unnecessary memory reallocations, + because the data vector generation functions (getLinePlotData etc.) reserve two extra points when + they allocate memory for \a lineData. + + \see removeFillBasePoints, lowerFillBasePoint, upperFillBasePoint +*/ +void QCPGraph::addFillBasePoints(QVector *lineData) const +{ + if (!mKeyAxis) { qDebug() << Q_FUNC_INFO << "invalid key axis"; return; } + + // append points that close the polygon fill at the key axis: + if (mKeyAxis.data()->orientation() == Qt::Vertical) + { + *lineData << upperFillBasePoint(lineData->last().y()); + *lineData << lowerFillBasePoint(lineData->first().y()); + } else + { + *lineData << upperFillBasePoint(lineData->last().x()); + *lineData << lowerFillBasePoint(lineData->first().x()); + } +} + +/*! \internal + + removes the two points from \a lineData that were added by \ref addFillBasePoints. + + \see addFillBasePoints, lowerFillBasePoint, upperFillBasePoint +*/ +void QCPGraph::removeFillBasePoints(QVector *lineData) const +{ + lineData->remove(lineData->size()-2, 2); +} + +/*! \internal + + called by \ref addFillBasePoints to conveniently assign the point which closes the fill polygon + on the lower side of the zero-value-line parallel to the key axis. The logarithmic axis scale + case is a bit special, since the zero-value-line in pixel coordinates is in positive or negative + infinity. So this case is handled separately by just closing the fill polygon on the axis which + lies in the direction towards the zero value. + + \a lowerKey will be the the key (in pixels) of the returned point. Depending on whether the key + axis is horizontal or vertical, \a lowerKey will end up as the x or y value of the returned + point, respectively. + + \see upperFillBasePoint, addFillBasePoints +*/ +QPointF QCPGraph::lowerFillBasePoint(double lowerKey) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPointF(); } + + QPointF point; + if (valueAxis->scaleType() == QCPAxis::stLinear) + { + if (keyAxis->axisType() == QCPAxis::atLeft) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(lowerKey); + } else if (keyAxis->axisType() == QCPAxis::atRight) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(lowerKey); + } else if (keyAxis->axisType() == QCPAxis::atTop) + { + point.setX(lowerKey); + point.setY(valueAxis->coordToPixel(0)); + } else if (keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(lowerKey); + point.setY(valueAxis->coordToPixel(0)); + } + } else // valueAxis->mScaleType == QCPAxis::stLogarithmic + { + // In logarithmic scaling we can't just draw to value zero so we just fill all the way + // to the axis which is in the direction towards zero + if (keyAxis->orientation() == Qt::Vertical) + { + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setX(keyAxis->axisRect()->right()); + else + point.setX(keyAxis->axisRect()->left()); + point.setY(lowerKey); + } else if (keyAxis->axisType() == QCPAxis::atTop || keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(lowerKey); + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setY(keyAxis->axisRect()->top()); + else + point.setY(keyAxis->axisRect()->bottom()); + } + } + return point; +} + +/*! \internal + + called by \ref addFillBasePoints to conveniently assign the point which closes the fill + polygon on the upper side of the zero-value-line parallel to the key axis. The logarithmic axis + scale case is a bit special, since the zero-value-line in pixel coordinates is in positive or + negative infinity. So this case is handled separately by just closing the fill polygon on the + axis which lies in the direction towards the zero value. + + \a upperKey will be the the key (in pixels) of the returned point. Depending on whether the key + axis is horizontal or vertical, \a upperKey will end up as the x or y value of the returned + point, respectively. + + \see lowerFillBasePoint, addFillBasePoints +*/ +QPointF QCPGraph::upperFillBasePoint(double upperKey) const +{ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPointF(); } + + QPointF point; + if (valueAxis->scaleType() == QCPAxis::stLinear) + { + if (keyAxis->axisType() == QCPAxis::atLeft) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(upperKey); + } else if (keyAxis->axisType() == QCPAxis::atRight) + { + point.setX(valueAxis->coordToPixel(0)); + point.setY(upperKey); + } else if (keyAxis->axisType() == QCPAxis::atTop) + { + point.setX(upperKey); + point.setY(valueAxis->coordToPixel(0)); + } else if (keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(upperKey); + point.setY(valueAxis->coordToPixel(0)); + } + } else // valueAxis->mScaleType == QCPAxis::stLogarithmic + { + // In logarithmic scaling we can't just draw to value 0 so we just fill all the way + // to the axis which is in the direction towards 0 + if (keyAxis->orientation() == Qt::Vertical) + { + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setX(keyAxis->axisRect()->right()); + else + point.setX(keyAxis->axisRect()->left()); + point.setY(upperKey); + } else if (keyAxis->axisType() == QCPAxis::atTop || keyAxis->axisType() == QCPAxis::atBottom) + { + point.setX(upperKey); + if ((valueAxis->range().upper < 0 && !valueAxis->rangeReversed()) || + (valueAxis->range().upper > 0 && valueAxis->rangeReversed())) // if range is negative, zero is on opposite side of key axis + point.setY(keyAxis->axisRect()->top()); + else + point.setY(keyAxis->axisRect()->bottom()); + } + } + return point; +} + +/*! \internal + + Generates the polygon needed for drawing channel fills between this graph (data passed via \a + lineData) and the graph specified by mChannelFillGraph (data generated by calling its \ref + getPlotData function). May return an empty polygon if the key ranges have no overlap or fill + target graph and this graph don't have same orientation (i.e. both key axes horizontal or both + key axes vertical). For increased performance (due to implicit sharing), keep the returned + QPolygonF const. +*/ +const QPolygonF QCPGraph::getChannelFillPolygon(const QVector *lineData) const +{ + if (!mChannelFillGraph) + return QPolygonF(); + + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return QPolygonF(); } + if (!mChannelFillGraph.data()->mKeyAxis) { qDebug() << Q_FUNC_INFO << "channel fill target key axis invalid"; return QPolygonF(); } + + if (mChannelFillGraph.data()->mKeyAxis.data()->orientation() != keyAxis->orientation()) + return QPolygonF(); // don't have same axis orientation, can't fill that (Note: if keyAxis fits, valueAxis will fit too, because it's always orthogonal to keyAxis) + + if (lineData->isEmpty()) return QPolygonF(); + QVector otherData; + mChannelFillGraph.data()->getPlotData(&otherData, 0); + if (otherData.isEmpty()) return QPolygonF(); + QVector thisData; + thisData.reserve(lineData->size()+otherData.size()); // because we will join both vectors at end of this function + for (int i=0; isize(); ++i) // don't use the vector<<(vector), it squeezes internally, which ruins the performance tuning with reserve() + thisData << lineData->at(i); + + // pointers to be able to swap them, depending which data range needs cropping: + QVector *staticData = &thisData; + QVector *croppedData = &otherData; + + // crop both vectors to ranges in which the keys overlap (which coord is key, depends on axisType): + if (keyAxis->orientation() == Qt::Horizontal) + { + // x is key + // if an axis range is reversed, the data point keys will be descending. Reverse them, since following algorithm assumes ascending keys: + if (staticData->first().x() > staticData->last().x()) + { + int size = staticData->size(); + for (int i=0; ifirst().x() > croppedData->last().x()) + { + int size = croppedData->size(); + for (int i=0; ifirst().x() < croppedData->first().x()) // other one must be cropped + qSwap(staticData, croppedData); + int lowBound = findIndexBelowX(croppedData, staticData->first().x()); + if (lowBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(0, lowBound); + // set lowest point of cropped data to fit exactly key position of first static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + double slope; + if (croppedData->at(1).x()-croppedData->at(0).x() != 0) + slope = (croppedData->at(1).y()-croppedData->at(0).y())/(croppedData->at(1).x()-croppedData->at(0).x()); + else + slope = 0; + (*croppedData)[0].setY(croppedData->at(0).y()+slope*(staticData->first().x()-croppedData->at(0).x())); + (*croppedData)[0].setX(staticData->first().x()); + + // crop upper bound: + if (staticData->last().x() > croppedData->last().x()) // other one must be cropped + qSwap(staticData, croppedData); + int highBound = findIndexAboveX(croppedData, staticData->last().x()); + if (highBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(highBound+1, croppedData->size()-(highBound+1)); + // set highest point of cropped data to fit exactly key position of last static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + int li = croppedData->size()-1; // last index + if (croppedData->at(li).x()-croppedData->at(li-1).x() != 0) + slope = (croppedData->at(li).y()-croppedData->at(li-1).y())/(croppedData->at(li).x()-croppedData->at(li-1).x()); + else + slope = 0; + (*croppedData)[li].setY(croppedData->at(li-1).y()+slope*(staticData->last().x()-croppedData->at(li-1).x())); + (*croppedData)[li].setX(staticData->last().x()); + } else // mKeyAxis->orientation() == Qt::Vertical + { + // y is key + // similar to "x is key" but switched x,y. Further, lower/upper meaning is inverted compared to x, + // because in pixel coordinates, y increases from top to bottom, not bottom to top like data coordinate. + // if an axis range is reversed, the data point keys will be descending. Reverse them, since following algorithm assumes ascending keys: + if (staticData->first().y() < staticData->last().y()) + { + int size = staticData->size(); + for (int i=0; ifirst().y() < croppedData->last().y()) + { + int size = croppedData->size(); + for (int i=0; ifirst().y() > croppedData->first().y()) // other one must be cropped + qSwap(staticData, croppedData); + int lowBound = findIndexAboveY(croppedData, staticData->first().y()); + if (lowBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(0, lowBound); + // set lowest point of cropped data to fit exactly key position of first static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + double slope; + if (croppedData->at(1).y()-croppedData->at(0).y() != 0) // avoid division by zero in step plots + slope = (croppedData->at(1).x()-croppedData->at(0).x())/(croppedData->at(1).y()-croppedData->at(0).y()); + else + slope = 0; + (*croppedData)[0].setX(croppedData->at(0).x()+slope*(staticData->first().y()-croppedData->at(0).y())); + (*croppedData)[0].setY(staticData->first().y()); + + // crop upper bound: + if (staticData->last().y() < croppedData->last().y()) // other one must be cropped + qSwap(staticData, croppedData); + int highBound = findIndexBelowY(croppedData, staticData->last().y()); + if (highBound == -1) return QPolygonF(); // key ranges have no overlap + croppedData->remove(highBound+1, croppedData->size()-(highBound+1)); + // set highest point of cropped data to fit exactly key position of last static data + // point via linear interpolation: + if (croppedData->size() < 2) return QPolygonF(); // need at least two points for interpolation + int li = croppedData->size()-1; // last index + if (croppedData->at(li).y()-croppedData->at(li-1).y() != 0) // avoid division by zero in step plots + slope = (croppedData->at(li).x()-croppedData->at(li-1).x())/(croppedData->at(li).y()-croppedData->at(li-1).y()); + else + slope = 0; + (*croppedData)[li].setX(croppedData->at(li-1).x()+slope*(staticData->last().y()-croppedData->at(li-1).y())); + (*croppedData)[li].setY(staticData->last().y()); + } + + // return joined: + for (int i=otherData.size()-1; i>=0; --i) // insert reversed, otherwise the polygon will be twisted + thisData << otherData.at(i); + return QPolygonF(thisData); +} + +/*! \internal + + Finds the smallest index of \a data, whose points x value is just above \a x. Assumes x values in + \a data points are ordered ascending, as is the case when plotting with horizontal key axis. + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexAboveX(const QVector *data, double x) const +{ + for (int i=data->size()-1; i>=0; --i) + { + if (data->at(i).x() < x) + { + if (isize()-1) + return i+1; + else + return data->size()-1; + } + } + return -1; +} + +/*! \internal + + Finds the highest index of \a data, whose points x value is just below \a x. Assumes x values in + \a data points are ordered ascending, as is the case when plotting with horizontal key axis. + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexBelowX(const QVector *data, double x) const +{ + for (int i=0; isize(); ++i) + { + if (data->at(i).x() > x) + { + if (i>0) + return i-1; + else + return 0; + } + } + return -1; +} + +/*! \internal + + Finds the smallest index of \a data, whose points y value is just above \a y. Assumes y values in + \a data points are ordered descending, as is the case when plotting with vertical key axis. + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexAboveY(const QVector *data, double y) const +{ + for (int i=0; isize(); ++i) + { + if (data->at(i).y() < y) + { + if (i>0) + return i-1; + else + return 0; + } + } + return -1; +} + +/*! \internal + + Calculates the (minimum) distance (in pixels) the graph's representation has from the given \a + pixelPoint in pixels. This is used to determine whether the graph was clicked or not, e.g. in + \ref selectTest. + + If either the graph has no data or if the line style is \ref lsNone and the scatter style's shape + is \ref QCPScatterStyle::ssNone (i.e. there is no visual representation of the graph), returns + 500. +*/ +double QCPGraph::pointDistance(const QPointF &pixelPoint) const +{ + if (mData->isEmpty()) + { + qDebug() << Q_FUNC_INFO << "requested point distance on graph" << mName << "without data"; + return 500; + } + if (mData->size() == 1) + { + QPointF dataPoint = coordsToPixels(mData->constBegin().key(), mData->constBegin().value().value); + return QVector2D(dataPoint-pixelPoint).length(); + } + + if (mLineStyle == lsNone && mScatterStyle.isNone()) + return 500; + + // calculate minimum distances to graph representation: + if (mLineStyle == lsNone) + { + // no line displayed, only calculate distance to scatter points: + QVector *pointData = new QVector; + getScatterPlotData(pointData); + double minDistSqr = std::numeric_limits::max(); + QPointF ptA; + QPointF ptB = coordsToPixels(pointData->at(0).key, pointData->at(0).value); // getScatterPlotData returns in plot coordinates, so transform to pixels + for (int i=1; isize(); ++i) + { + ptA = ptB; + ptB = coordsToPixels(pointData->at(i).key, pointData->at(i).value); + double currentDistSqr = distSqrToLine(ptA, ptB, pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + delete pointData; + return sqrt(minDistSqr); + } else + { + // line displayed calculate distance to line segments: + QVector *lineData = new QVector; + getPlotData(lineData, 0); // unlike with getScatterPlotData we get pixel coordinates here + double minDistSqr = std::numeric_limits::max(); + if (mLineStyle == lsImpulse) + { + // impulse plot differs from other line styles in that the lineData points are only pairwise connected: + for (int i=0; isize()-1; i+=2) // iterate pairs + { + double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + } else + { + // all other line plots (line and step) connect points directly: + for (int i=0; isize()-1; ++i) + { + double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + } + delete lineData; + return sqrt(minDistSqr); + } +} + +/*! \internal + + Finds the highest index of \a data, whose points y value is just below \a y. Assumes y values in + \a data points are ordered descending, as is the case when plotting with vertical key axis (since + keys are ordered ascending). + + Used to calculate the channel fill polygon, see \ref getChannelFillPolygon. +*/ +int QCPGraph::findIndexBelowY(const QVector *data, double y) const +{ + for (int i=data->size()-1; i>=0; --i) + { + if (data->at(i).y() > y) + { + if (isize()-1) + return i+1; + else + return data->size()-1; + } + } + return -1; +} + +/* inherits documentation from base class */ +QCPRange QCPGraph::getKeyRange(bool &validRange, SignDomain inSignDomain) const +{ + // just call the specialized version which takes an additional argument whether error bars + // should also be taken into consideration for range calculation. We set this to true here. + return getKeyRange(validRange, inSignDomain, true); +} + +/* inherits documentation from base class */ +QCPRange QCPGraph::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + // just call the specialized version which takes an additional argument whether error bars + // should also be taken into consideration for range calculation. We set this to true here. + return getValueRange(validRange, inSignDomain, true); +} + +/*! \overload + + Allows to specify whether the error bars should be included in the range calculation. + + \see getKeyRange(bool &validRange, SignDomain inSignDomain) +*/ +QCPRange QCPGraph::getKeyRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current, currentErrorMinus, currentErrorPlus; + + if (inSignDomain == sdBoth) // range may be anywhere + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); + if (current-currentErrorMinus < range.lower || !haveLower) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if (current+currentErrorPlus > range.upper || !haveUpper) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + ++it; + } + } else if (inSignDomain == sdNegative) // range may only be in the negative sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus < 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus < 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to geht that point. + { + if ((current < range.lower || !haveLower) && current < 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current < 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } else if (inSignDomain == sdPositive) // range may only be in the positive sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + currentErrorMinus = (includeErrors ? it.value().keyErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().keyErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus > 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus > 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to get that point. + { + if ((current < range.lower || !haveLower) && current > 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current > 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } + + validRange = haveLower && haveUpper; + return range; +} + +/*! \overload + + Allows to specify whether the error bars should be included in the range calculation. + + \see getValueRange(bool &validRange, SignDomain inSignDomain) +*/ +QCPRange QCPGraph::getValueRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current, currentErrorMinus, currentErrorPlus; + + if (inSignDomain == sdBoth) // range may be anywhere + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); + if (current-currentErrorMinus < range.lower || !haveLower) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if (current+currentErrorPlus > range.upper || !haveUpper) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + ++it; + } + } else if (inSignDomain == sdNegative) // range may only be in the negative sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus < 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus < 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to get that point. + { + if ((current < range.lower || !haveLower) && current < 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current < 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } else if (inSignDomain == sdPositive) // range may only be in the positive sign domain + { + QCPDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + currentErrorMinus = (includeErrors ? it.value().valueErrorMinus : 0); + currentErrorPlus = (includeErrors ? it.value().valueErrorPlus : 0); + if ((current-currentErrorMinus < range.lower || !haveLower) && current-currentErrorMinus > 0) + { + range.lower = current-currentErrorMinus; + haveLower = true; + } + if ((current+currentErrorPlus > range.upper || !haveUpper) && current+currentErrorPlus > 0) + { + range.upper = current+currentErrorPlus; + haveUpper = true; + } + if (includeErrors) // in case point is in valid sign domain but errobars stretch beyond it, we still want to geht that point. + { + if ((current < range.lower || !haveLower) && current > 0) + { + range.lower = current; + haveLower = true; + } + if ((current > range.upper || !haveUpper) && current > 0) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + } + + validRange = haveLower && haveUpper; + return range; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPCurveData +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPCurveData + \brief Holds the data of one single data point for QCPCurve. + + The container for storing multiple data points is \ref QCPCurveDataMap. + + The stored data is: + \li \a t: the free parameter of the curve at this curve point (cp. the mathematical vector (x(t), y(t))) + \li \a key: coordinate on the key axis of this curve point + \li \a value: coordinate on the value axis of this curve point + + \see QCPCurveDataMap +*/ + +/*! + Constructs a curve data point with t, key and value set to zero. +*/ +QCPCurveData::QCPCurveData() : + t(0), + key(0), + value(0) +{ +} + +/*! + Constructs a curve data point with the specified \a t, \a key and \a value. +*/ +QCPCurveData::QCPCurveData(double t, double key, double value) : + t(t), + key(key), + value(value) +{ +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPCurve +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPCurve + \brief A plottable representing a parametric curve in a plot. + + \image html QCPCurve.png + + Unlike QCPGraph, plottables of this type may have multiple points with the same key coordinate, + so their visual representation can have \a loops. This is realized by introducing a third + coordinate \a t, which defines the order of the points described by the other two coordinates \a + x and \a y. + + To plot data, assign it with the \ref setData or \ref addData functions. + + \section appearance Changing the appearance + + The appearance of the curve is determined by the pen and the brush (\ref setPen, \ref setBrush). + \section usage Usage + + Like all data representing objects in QCustomPlot, the QCPCurve is a plottable (QCPAbstractPlottable). So + the plottable-interface of QCustomPlot applies (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) + + Usually, you first create an instance: + \code + QCPCurve *newCurve = new QCPCurve(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot with QCustomPlot::addPlottable: + \code + customPlot->addPlottable(newCurve);\endcode + and then modify the properties of the newly created plottable, e.g.: + \code + newCurve->setName("Fermat's Spiral"); + newCurve->setData(tData, xData, yData);\endcode +*/ + +/*! + Constructs a curve which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value + axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have + the same orientation. If either of these restrictions is violated, a corresponding message is + printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed QCPCurve can be added to the plot with QCustomPlot::addPlottable, QCustomPlot + then takes ownership of the graph. +*/ +QCPCurve::QCPCurve(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis) +{ + mData = new QCPCurveDataMap; + mPen.setColor(Qt::blue); + mPen.setStyle(Qt::SolidLine); + mBrush.setColor(Qt::blue); + mBrush.setStyle(Qt::NoBrush); + mSelectedPen = mPen; + mSelectedPen.setWidthF(2.5); + mSelectedPen.setColor(QColor(80, 80, 255)); // lighter than Qt::blue of mPen + mSelectedBrush = mBrush; + + setScatterStyle(QCPScatterStyle()); + setLineStyle(lsLine); +} + +QCPCurve::~QCPCurve() +{ + delete mData; +} + +/*! + Replaces the current data with the provided \a data. + + If \a copy is set to true, data points in \a data will only be copied. if false, the plottable + takes ownership of the passed data and replaces the internal data pointer with it. This is + significantly faster than copying for large datasets. +*/ +void QCPCurve::setData(QCPCurveDataMap *data, bool copy) +{ + if (copy) + { + *mData = *data; + } else + { + delete mData; + mData = data; + } +} + +/*! \overload + + Replaces the current data with the provided points in \a t, \a key and \a value tuples. The + provided vectors should have equal length. Else, the number of added points will be the size of + the smallest vector. +*/ +void QCPCurve::setData(const QVector &t, const QVector &key, const QVector &value) +{ + mData->clear(); + int n = t.size(); + n = qMin(n, key.size()); + n = qMin(n, value.size()); + QCPCurveData newData; + for (int i=0; iinsertMulti(newData.t, newData); + } +} + +/*! \overload + + Replaces the current data with the provided \a key and \a value pairs. The t parameter + of each data point will be set to the integer index of the respective key/value pair. +*/ +void QCPCurve::setData(const QVector &key, const QVector &value) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + QCPCurveData newData; + for (int i=0; iinsertMulti(newData.t, newData); + } +} + +/*! + Sets the visual appearance of single data points in the plot. If set to \ref + QCPScatterStyle::ssNone, no scatter points are drawn (e.g. for line-only plots with appropriate + line style). + + \see QCPScatterStyle, setLineStyle +*/ +void QCPCurve::setScatterStyle(const QCPScatterStyle &style) +{ + mScatterStyle = style; +} + +/*! + Sets how the single data points are connected in the plot or how they are represented visually + apart from the scatter symbol. For scatter-only plots, set \a style to \ref lsNone and \ref + setScatterStyle to the desired scatter style. + + \see setScatterStyle +*/ +void QCPCurve::setLineStyle(QCPCurve::LineStyle style) +{ + mLineStyle = style; +} + +/*! + Adds the provided data points in \a dataMap to the current data. + \see removeData +*/ +void QCPCurve::addData(const QCPCurveDataMap &dataMap) +{ + mData->unite(dataMap); +} + +/*! \overload + Adds the provided single data point in \a data to the current data. + \see removeData +*/ +void QCPCurve::addData(const QCPCurveData &data) +{ + mData->insertMulti(data.t, data); +} + +/*! \overload + Adds the provided single data point as \a t, \a key and \a value tuple to the current data + \see removeData +*/ +void QCPCurve::addData(double t, double key, double value) +{ + QCPCurveData newData; + newData.t = t; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.t, newData); +} + +/*! \overload + + Adds the provided single data point as \a key and \a value pair to the current data The t + parameter of the data point is set to the t of the last data point plus 1. If there is no last + data point, t will be set to 0. + + \see removeData +*/ +void QCPCurve::addData(double key, double value) +{ + QCPCurveData newData; + if (!mData->isEmpty()) + newData.t = (mData->constEnd()-1).key()+1; + else + newData.t = 0; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.t, newData); +} + +/*! \overload + Adds the provided data points as \a t, \a key and \a value tuples to the current data. + \see removeData +*/ +void QCPCurve::addData(const QVector &ts, const QVector &keys, const QVector &values) +{ + int n = ts.size(); + n = qMin(n, keys.size()); + n = qMin(n, values.size()); + QCPCurveData newData; + for (int i=0; iinsertMulti(newData.t, newData); + } +} + +/*! + Removes all data points with curve parameter t smaller than \a t. + \see addData, clearData +*/ +void QCPCurve::removeDataBefore(double t) +{ + QCPCurveDataMap::iterator it = mData->begin(); + while (it != mData->end() && it.key() < t) + it = mData->erase(it); +} + +/*! + Removes all data points with curve parameter t greater than \a t. + \see addData, clearData +*/ +void QCPCurve::removeDataAfter(double t) +{ + if (mData->isEmpty()) return; + QCPCurveDataMap::iterator it = mData->upperBound(t); + while (it != mData->end()) + it = mData->erase(it); +} + +/*! + Removes all data points with curve parameter t between \a fromt and \a tot. if \a fromt is + greater or equal to \a tot, the function does nothing. To remove a single data point with known + t, use \ref removeData(double t). + + \see addData, clearData +*/ +void QCPCurve::removeData(double fromt, double tot) +{ + if (fromt >= tot || mData->isEmpty()) return; + QCPCurveDataMap::iterator it = mData->upperBound(fromt); + QCPCurveDataMap::iterator itEnd = mData->upperBound(tot); + while (it != itEnd) + it = mData->erase(it); +} + +/*! \overload + + Removes a single data point at curve parameter \a t. If the position is not known with absolute + precision, consider using \ref removeData(double fromt, double tot) with a small fuzziness + interval around the suspected position, depeding on the precision with which the curve parameter + is known. + + \see addData, clearData +*/ +void QCPCurve::removeData(double t) +{ + mData->remove(t); +} + +/*! + Removes all data points. + \see removeData, removeDataAfter, removeDataBefore +*/ +void QCPCurve::clearData() +{ + mData->clear(); +} + +/* inherits documentation from base class */ +double QCPCurve::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if ((onlySelectable && !mSelectable) || mData->isEmpty()) + return -1; + + return pointDistance(pos); +} + +/* inherits documentation from base class */ +void QCPCurve::draw(QCPPainter *painter) +{ + if (mData->isEmpty()) return; + + // allocate line vector: + QVector *lineData = new QVector; + + // fill with curve data: + getCurveData(lineData); + + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + QCPCurveDataMap::const_iterator it; + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + if (QCP::isInvalidData(it.value().t) || + QCP::isInvalidData(it.value().key, it.value().value)) + qDebug() << Q_FUNC_INFO << "Data point at" << it.key() << "invalid." << "Plottable name:" << name(); + } +#endif + + // draw curve fill: + if (mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) + { + applyFillAntialiasingHint(painter); + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(QPolygonF(*lineData)); + } + + // draw curve line: + if (mLineStyle != lsNone && mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(Qt::NoBrush); + // if drawing solid line and not in PDF, use much faster line drawing instead of polyline: + if (mParentPlot->plottingHints().testFlag(QCP::phFastPolylines) && + painter->pen().style() == Qt::SolidLine && + !painter->modes().testFlag(QCPPainter::pmVectorized) && + !painter->modes().testFlag(QCPPainter::pmNoCaching)) + { + for (int i=1; isize(); ++i) + painter->drawLine(lineData->at(i-1), lineData->at(i)); + } else + { + painter->drawPolyline(QPolygonF(*lineData)); + } + } + + // draw scatters: + if (!mScatterStyle.isNone()) + drawScatterPlot(painter, lineData); + + // free allocated line data: + delete lineData; +} + +/* inherits documentation from base class */ +void QCPCurve::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw fill: + if (mBrush.style() != Qt::NoBrush) + { + applyFillAntialiasingHint(painter); + painter->fillRect(QRectF(rect.left(), rect.top()+rect.height()/2.0, rect.width(), rect.height()/3.0), mBrush); + } + // draw line vertically centered: + if (mLineStyle != lsNone) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + painter->drawLine(QLineF(rect.left(), rect.top()+rect.height()/2.0, rect.right()+5, rect.top()+rect.height()/2.0)); // +5 on x2 else last segment is missing from dashed/dotted pens + } + // draw scatter symbol: + if (!mScatterStyle.isNone()) + { + applyScattersAntialiasingHint(painter); + // scale scatter pixmap if it's too large to fit in legend icon rect: + if (mScatterStyle.shape() == QCPScatterStyle::ssPixmap && (mScatterStyle.pixmap().size().width() > rect.width() || mScatterStyle.pixmap().size().height() > rect.height())) + { + QCPScatterStyle scaledStyle(mScatterStyle); + scaledStyle.setPixmap(scaledStyle.pixmap().scaled(rect.size().toSize(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); + scaledStyle.applyTo(painter, mPen); + scaledStyle.drawShape(painter, QRectF(rect).center()); + } else + { + mScatterStyle.applyTo(painter, mPen); + mScatterStyle.drawShape(painter, QRectF(rect).center()); + } + } +} + +/*! \internal + + Draws scatter symbols at every data point passed in \a pointData. scatter symbols are independent of + the line style and are always drawn if scatter shape is not \ref QCPScatterStyle::ssNone. +*/ +void QCPCurve::drawScatterPlot(QCPPainter *painter, const QVector *pointData) const +{ + // draw scatter point symbols: + applyScattersAntialiasingHint(painter); + mScatterStyle.applyTo(painter, mPen); + for (int i=0; isize(); ++i) + mScatterStyle.drawShape(painter, pointData->at(i)); +} + +/*! \internal + + called by QCPCurve::draw to generate a point vector (pixels) which represents the line of the + curve. Line segments that aren't visible in the current axis rect are handled in an optimized + way. +*/ +void QCPCurve::getCurveData(QVector *lineData) const +{ + /* Extended sides of axis rect R divide space into 9 regions: + 1__|_4_|__7 + 2__|_R_|__8 + 3 | 6 | 9 + General idea: If the two points of a line segment are in the same region (that is not R), the line segment corner is removed. + Curves outside R become straight lines closely outside of R which greatly reduces drawing time, yet keeps the look of lines and + fills inside R consistent. + The region R has index 5. + */ + QCPAxis *keyAxis = mKeyAxis.data(); + QCPAxis *valueAxis = mValueAxis.data(); + if (!keyAxis || !valueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + QRect axisRect = mKeyAxis.data()->axisRect()->rect() & mValueAxis.data()->axisRect()->rect(); + lineData->reserve(mData->size()); + QCPCurveDataMap::const_iterator it; + int lastRegion = 5; + int currentRegion = 5; + double RLeft = keyAxis->range().lower; + double RRight = keyAxis->range().upper; + double RBottom = valueAxis->range().lower; + double RTop = valueAxis->range().upper; + double x, y; // current key/value + bool addedLastAlready = true; + bool firstPoint = true; // first point must always be drawn, to make sure fill works correctly + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + x = it.value().key; + y = it.value().value; + // determine current region: + if (x < RLeft) // region 123 + { + if (y > RTop) + currentRegion = 1; + else if (y < RBottom) + currentRegion = 3; + else + currentRegion = 2; + } else if (x > RRight) // region 789 + { + if (y > RTop) + currentRegion = 7; + else if (y < RBottom) + currentRegion = 9; + else + currentRegion = 8; + } else // region 456 + { + if (y > RTop) + currentRegion = 4; + else if (y < RBottom) + currentRegion = 6; + else + currentRegion = 5; + } + + /* + Watch out, the next part is very tricky. It modifies the curve such that it seems like the + whole thing is still drawn, but actually the points outside the axisRect are simplified + ("optimized") greatly. There are some subtle special cases when line segments are large and + thereby each subsequent point may be in a different region or even skip some. + */ + // determine whether to keep current point: + if (currentRegion == 5 || (firstPoint && mBrush.style() != Qt::NoBrush)) // current is in R, add current and last if it wasn't added already + { + if (!addedLastAlready) // in case curve just entered R, make sure the last point outside R is also drawn correctly + lineData->append(coordsToPixels((it-1).value().key, (it-1).value().value)); // add last point to vector + else if (lastRegion != 5) // added last already. If that's the case, we probably added it at optimized position. So go back and make sure it's at original position (else the angle changes under which this segment enters R) + { + if (!firstPoint) // because on firstPoint, currentRegion is 5 and addedLastAlready is true, although there is no last point + lineData->replace(lineData->size()-1, coordsToPixels((it-1).value().key, (it-1).value().value)); + } + lineData->append(coordsToPixels(it.value().key, it.value().value)); // add current point to vector + addedLastAlready = true; // so in next iteration, we don't add this point twice + } else if (currentRegion != lastRegion) // changed region, add current and last if not added already + { + // using outsideCoordsToPixels instead of coorsToPixels for optimized point placement (places points just outside axisRect instead of potentially far away) + + // if we're coming from R or we skip diagonally over the corner regions (so line might still be visible in R), we can't place points optimized + if (lastRegion == 5 || // coming from R + ((lastRegion==2 && currentRegion==4) || (lastRegion==4 && currentRegion==2)) || // skip top left diagonal + ((lastRegion==4 && currentRegion==8) || (lastRegion==8 && currentRegion==4)) || // skip top right diagonal + ((lastRegion==8 && currentRegion==6) || (lastRegion==6 && currentRegion==8)) || // skip bottom right diagonal + ((lastRegion==6 && currentRegion==2) || (lastRegion==2 && currentRegion==6)) // skip bottom left diagonal + ) + { + // always add last point if not added already, original: + if (!addedLastAlready) + lineData->append(coordsToPixels((it-1).value().key, (it-1).value().value)); + // add current point, original: + lineData->append(coordsToPixels(it.value().key, it.value().value)); + } else // no special case that forbids optimized point placement, so do it: + { + // always add last point if not added already, optimized: + if (!addedLastAlready) + lineData->append(outsideCoordsToPixels((it-1).value().key, (it-1).value().value, currentRegion, axisRect)); + // add current point, optimized: + lineData->append(outsideCoordsToPixels(it.value().key, it.value().value, currentRegion, axisRect)); + } + addedLastAlready = true; // so that if next point enters 5, or crosses another region boundary, we don't add this point twice + } else // neither in R, nor crossed a region boundary, skip current point + { + addedLastAlready = false; + } + lastRegion = currentRegion; + firstPoint = false; + } + // If curve ends outside R, we want to add very last point so the fill looks like it should when the curve started inside R: + if (lastRegion != 5 && mBrush.style() != Qt::NoBrush && !mData->isEmpty()) + lineData->append(coordsToPixels((mData->constEnd()-1).value().key, (mData->constEnd()-1).value().value)); +} + +/*! \internal + + Calculates the (minimum) distance (in pixels) the curve's representation has from the given \a + pixelPoint in pixels. This is used to determine whether the curve was clicked or not, e.g. in + \ref selectTest. +*/ +double QCPCurve::pointDistance(const QPointF &pixelPoint) const +{ + if (mData->isEmpty()) + { + qDebug() << Q_FUNC_INFO << "requested point distance on curve" << mName << "without data"; + return 500; + } + if (mData->size() == 1) + { + QPointF dataPoint = coordsToPixels(mData->constBegin().key(), mData->constBegin().value().value); + return QVector2D(dataPoint-pixelPoint).length(); + } + + // calculate minimum distance to line segments: + QVector *lineData = new QVector; + getCurveData(lineData); + double minDistSqr = std::numeric_limits::max(); + for (int i=0; isize()-1; ++i) + { + double currentDistSqr = distSqrToLine(lineData->at(i), lineData->at(i+1), pixelPoint); + if (currentDistSqr < minDistSqr) + minDistSqr = currentDistSqr; + } + delete lineData; + return sqrt(minDistSqr); +} + +/*! \internal + + This is a specialized \ref coordsToPixels function for points that are outside the visible + axisRect and just crossing a boundary (since \ref getCurveData reduces non-visible curve segments + to those line segments that cross region boundaries, see documentation there). It only uses the + coordinate parallel to the region boundary of the axisRect. The other coordinate is picked just + outside the axisRect (how far is determined by the scatter size and the line width). Together + with the optimization in \ref getCurveData this improves performance for large curves (or zoomed + in ones) significantly while keeping the illusion the whole curve and its filling is still being + drawn for the viewer. +*/ +QPointF QCPCurve::outsideCoordsToPixels(double key, double value, int region, QRect axisRect) const +{ + int margin = qCeil(qMax(mScatterStyle.size(), (double)mPen.widthF())) + 2; + QPointF result = coordsToPixels(key, value); + switch (region) + { + case 2: result.setX(axisRect.left()-margin); break; // left + case 8: result.setX(axisRect.right()+margin); break; // right + case 4: result.setY(axisRect.top()-margin); break; // top + case 6: result.setY(axisRect.bottom()+margin); break; // bottom + case 1: result.setX(axisRect.left()-margin); + result.setY(axisRect.top()-margin); break; // top left + case 7: result.setX(axisRect.right()+margin); + result.setY(axisRect.top()-margin); break; // top right + case 9: result.setX(axisRect.right()+margin); + result.setY(axisRect.bottom()+margin); break; // bottom right + case 3: result.setX(axisRect.left()-margin); + result.setY(axisRect.bottom()+margin); break; // bottom left + } + return result; +} + +/* inherits documentation from base class */ +QCPRange QCPCurve::getKeyRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current; + + QCPCurveDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) + { + if (current < range.lower || !haveLower) + { + range.lower = current; + haveLower = true; + } + if (current > range.upper || !haveUpper) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + + validRange = haveLower && haveUpper; + return range; +} + +/* inherits documentation from base class */ +QCPRange QCPCurve::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current; + + QCPCurveDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value; + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) + { + if (current < range.lower || !haveLower) + { + range.lower = current; + haveLower = true; + } + if (current > range.upper || !haveUpper) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + + validRange = haveLower && haveUpper; + return range; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPBarData +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPBarData + \brief Holds the data of one single data point (one bar) for QCPBars. + + The container for storing multiple data points is \ref QCPBarDataMap. + + The stored data is: + \li \a key: coordinate on the key axis of this bar + \li \a value: height coordinate on the value axis of this bar + + \see QCPBarDataaMap +*/ + +/*! + Constructs a bar data point with key and value set to zero. +*/ +QCPBarData::QCPBarData() : + key(0), + value(0) +{ +} + +/*! + Constructs a bar data point with the specified \a key and \a value. +*/ +QCPBarData::QCPBarData(double key, double value) : + key(key), + value(value) +{ +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPBars +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPBars + \brief A plottable representing a bar chart in a plot. + + \image html QCPBars.png + + To plot data, assign it with the \ref setData or \ref addData functions. + + \section appearance Changing the appearance + + The appearance of the bars is determined by the pen and the brush (\ref setPen, \ref setBrush). + + Bar charts are stackable. This means, Two QCPBars plottables can be placed on top of each other + (see \ref QCPBars::moveAbove). Then, when two bars are at the same key position, they will appear + stacked. + + \section usage Usage + + Like all data representing objects in QCustomPlot, the QCPBars is a plottable + (QCPAbstractPlottable). So the plottable-interface of QCustomPlot applies + (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) + + Usually, you first create an instance: + \code + QCPBars *newBars = new QCPBars(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot with QCustomPlot::addPlottable: + \code + customPlot->addPlottable(newBars);\endcode + and then modify the properties of the newly created plottable, e.g.: + \code + newBars->setName("Country population"); + newBars->setData(xData, yData);\endcode +*/ + +/*! \fn QCPBars *QCPBars::barBelow() const + Returns the bars plottable that is directly below this bars plottable. + If there is no such plottable, returns 0. + + \see barAbove, moveBelow, moveAbove +*/ + +/*! \fn QCPBars *QCPBars::barAbove() const + Returns the bars plottable that is directly above this bars plottable. + If there is no such plottable, returns 0. + + \see barBelow, moveBelow, moveAbove +*/ + +/*! + Constructs a bar chart which uses \a keyAxis as its key axis ("x") and \a valueAxis as its value + axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and not have + the same orientation. If either of these restrictions is violated, a corresponding message is + printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed QCPBars can be added to the plot with QCustomPlot::addPlottable, QCustomPlot + then takes ownership of the bar chart. +*/ +QCPBars::QCPBars(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis) +{ + mData = new QCPBarDataMap; + mPen.setColor(Qt::blue); + mPen.setStyle(Qt::SolidLine); + mBrush.setColor(QColor(40, 50, 255, 30)); + mBrush.setStyle(Qt::SolidPattern); + mSelectedPen = mPen; + mSelectedPen.setWidthF(2.5); + mSelectedPen.setColor(QColor(80, 80, 255)); // lighter than Qt::blue of mPen + mSelectedBrush = mBrush; + + mWidth = 0.75; +} + +QCPBars::~QCPBars() +{ + if (mBarBelow || mBarAbove) + connectBars(mBarBelow.data(), mBarAbove.data()); // take this bar out of any stacking + delete mData; +} + +/*! + Sets the width of the bars in plot (key) coordinates. +*/ +void QCPBars::setWidth(double width) +{ + mWidth = width; +} + +/*! + Replaces the current data with the provided \a data. + + If \a copy is set to true, data points in \a data will only be copied. if false, the plottable + takes ownership of the passed data and replaces the internal data pointer with it. This is + significantly faster than copying for large datasets. +*/ +void QCPBars::setData(QCPBarDataMap *data, bool copy) +{ + if (copy) + { + *mData = *data; + } else + { + delete mData; + mData = data; + } +} + +/*! \overload + + Replaces the current data with the provided points in \a key and \a value tuples. The + provided vectors should have equal length. Else, the number of added points will be the size of + the smallest vector. +*/ +void QCPBars::setData(const QVector &key, const QVector &value) +{ + mData->clear(); + int n = key.size(); + n = qMin(n, value.size()); + QCPBarData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Moves this bars plottable below \a bars. In other words, the bars of this plottable will appear + below the bars of \a bars. The move target \a bars must use the same key and value axis as this + plottable. + + Inserting into and removing from existing bar stacking is handled gracefully. If \a bars already + has a bars object below itself, this bars object is inserted between the two. If this bars object + is already between two other bars, the two other bars will be stacked on top of each other after + the operation. + + To remove this bars plottable from any stacking, set \a bars to 0. + + \see moveBelow, barAbove, barBelow +*/ +void QCPBars::moveBelow(QCPBars *bars) +{ + if (bars == this) return; + if (bars && (bars->keyAxis() != mKeyAxis.data() || bars->valueAxis() != mValueAxis.data())) + { + qDebug() << Q_FUNC_INFO << "passed QCPBars* doesn't have same key and value axis as this QCPBars"; + return; + } + // remove from stacking: + connectBars(mBarBelow.data(), mBarAbove.data()); // Note: also works if one (or both) of them is 0 + // if new bar given, insert this bar below it: + if (bars) + { + if (bars->mBarBelow) + connectBars(bars->mBarBelow.data(), this); + connectBars(this, bars); + } +} + +/*! + Moves this bars plottable above \a bars. In other words, the bars of this plottable will appear + above the bars of \a bars. The move target \a bars must use the same key and value axis as this + plottable. + + Inserting into and removing from existing bar stacking is handled gracefully. If \a bars already + has a bars object below itself, this bars object is inserted between the two. If this bars object + is already between two other bars, the two other bars will be stacked on top of each other after + the operation. + + To remove this bars plottable from any stacking, set \a bars to 0. + + \see moveBelow, barBelow, barAbove +*/ +void QCPBars::moveAbove(QCPBars *bars) +{ + if (bars == this) return; + if (bars && (bars->keyAxis() != mKeyAxis.data() || bars->valueAxis() != mValueAxis.data())) + { + qDebug() << Q_FUNC_INFO << "passed QCPBars* doesn't have same key and value axis as this QCPBars"; + return; + } + // remove from stacking: + connectBars(mBarBelow.data(), mBarAbove.data()); // Note: also works if one (or both) of them is 0 + // if new bar given, insert this bar above it: + if (bars) + { + if (bars->mBarAbove) + connectBars(this, bars->mBarAbove.data()); + connectBars(bars, this); + } +} + +/*! + Adds the provided data points in \a dataMap to the current data. + \see removeData +*/ +void QCPBars::addData(const QCPBarDataMap &dataMap) +{ + mData->unite(dataMap); +} + +/*! \overload + Adds the provided single data point in \a data to the current data. + \see removeData +*/ +void QCPBars::addData(const QCPBarData &data) +{ + mData->insertMulti(data.key, data); +} + +/*! \overload + Adds the provided single data point as \a key and \a value tuple to the current data + \see removeData +*/ +void QCPBars::addData(double key, double value) +{ + QCPBarData newData; + newData.key = key; + newData.value = value; + mData->insertMulti(newData.key, newData); +} + +/*! \overload + Adds the provided data points as \a key and \a value tuples to the current data. + \see removeData +*/ +void QCPBars::addData(const QVector &keys, const QVector &values) +{ + int n = keys.size(); + n = qMin(n, values.size()); + QCPBarData newData; + for (int i=0; iinsertMulti(newData.key, newData); + } +} + +/*! + Removes all data points with key smaller than \a key. + \see addData, clearData +*/ +void QCPBars::removeDataBefore(double key) +{ + QCPBarDataMap::iterator it = mData->begin(); + while (it != mData->end() && it.key() < key) + it = mData->erase(it); +} + +/*! + Removes all data points with key greater than \a key. + \see addData, clearData +*/ +void QCPBars::removeDataAfter(double key) +{ + if (mData->isEmpty()) return; + QCPBarDataMap::iterator it = mData->upperBound(key); + while (it != mData->end()) + it = mData->erase(it); +} + +/*! + Removes all data points with key between \a fromKey and \a toKey. if \a fromKey is + greater or equal to \a toKey, the function does nothing. To remove a single data point with known + key, use \ref removeData(double key). + + \see addData, clearData +*/ +void QCPBars::removeData(double fromKey, double toKey) +{ + if (fromKey >= toKey || mData->isEmpty()) return; + QCPBarDataMap::iterator it = mData->upperBound(fromKey); + QCPBarDataMap::iterator itEnd = mData->upperBound(toKey); + while (it != itEnd) + it = mData->erase(it); +} + +/*! \overload + + Removes a single data point at \a key. If the position is not known with absolute precision, + consider using \ref removeData(double fromKey, double toKey) with a small fuzziness interval + around the suspected position, depeding on the precision with which the key is known. + + \see addData, clearData +*/ +void QCPBars::removeData(double key) +{ + mData->remove(key); +} + +/*! + Removes all data points. + \see removeData, removeDataAfter, removeDataBefore +*/ +void QCPBars::clearData() +{ + mData->clear(); +} + +/* inherits documentation from base class */ +double QCPBars::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QCPBarDataMap::ConstIterator it; + double posKey, posValue; + pixelsToCoords(pos, posKey, posValue); + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + double baseValue = getBaseValue(it.key(), it.value().value >=0); + QCPRange keyRange(it.key()-mWidth*0.5, it.key()+mWidth*0.5); + QCPRange valueRange(baseValue, baseValue+it.value().value); + if (keyRange.contains(posKey) && valueRange.contains(posValue)) + return mParentPlot->selectionTolerance()*0.99; + } + return -1; +} + +/* inherits documentation from base class */ +void QCPBars::draw(QCPPainter *painter) +{ + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + if (mData->isEmpty()) return; + + QCPBarDataMap::const_iterator it; + for (it = mData->constBegin(); it != mData->constEnd(); ++it) + { + // skip bar if not visible in key axis range: + if (it.key()+mWidth*0.5 < mKeyAxis.data()->range().lower || it.key()-mWidth*0.5 > mKeyAxis.data()->range().upper) + continue; + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + if (QCP::isInvalidData(it.value().key, it.value().value)) + qDebug() << Q_FUNC_INFO << "Data point at" << it.key() << "of drawn range invalid." << "Plottable name:" << name(); +#endif + QPolygonF barPolygon = getBarPolygon(it.key(), it.value().value); + // draw bar fill: + if (mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) + { + applyFillAntialiasingHint(painter); + painter->setPen(Qt::NoPen); + painter->setBrush(mainBrush()); + painter->drawPolygon(barPolygon); + } + // draw bar line: + if (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0) + { + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(Qt::NoBrush); + painter->drawPolyline(barPolygon); + } + } +} + +/* inherits documentation from base class */ +void QCPBars::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw filled rect: + applyDefaultAntialiasingHint(painter); + painter->setBrush(mBrush); + painter->setPen(mPen); + QRectF r = QRectF(0, 0, rect.width()*0.67, rect.height()*0.67); + r.moveCenter(rect.center()); + painter->drawRect(r); +} + +/*! \internal + + Returns the polygon of a single bar with \a key and \a value. The Polygon is open at the bottom + and shifted according to the bar stacking (see \ref moveAbove). +*/ +QPolygonF QCPBars::getBarPolygon(double key, double value) const +{ + QPolygonF result; + double baseValue = getBaseValue(key, value >= 0); + result << coordsToPixels(key-mWidth*0.5, baseValue); + result << coordsToPixels(key-mWidth*0.5, baseValue+value); + result << coordsToPixels(key+mWidth*0.5, baseValue+value); + result << coordsToPixels(key+mWidth*0.5, baseValue); + return result; +} + +/*! \internal + + This function is called to find at which value to start drawing the base of a bar at \a key, when + it is stacked on top of another QCPBars (e.g. with \ref moveAbove). + + positive and negative bars are separated per stack (positive are stacked above 0-value upwards, + negative are stacked below 0-value downwards). This can be indicated with \a positive. So if the + bar for which we need the base value is negative, set \a positive to false. +*/ +double QCPBars::getBaseValue(double key, bool positive) const +{ + if (mBarBelow) + { + double max = 0; + // find bars of mBarBelow that are approximately at key and find largest one: + QCPBarDataMap::const_iterator it = mBarBelow.data()->mData->lowerBound(key-mWidth*0.1); + QCPBarDataMap::const_iterator itEnd = mBarBelow.data()->mData->upperBound(key+mWidth*0.1); + while (it != itEnd) + { + if ((positive && it.value().value > max) || + (!positive && it.value().value < max)) + max = it.value().value; + ++it; + } + // recurse down the bar-stack to find the total height: + return max + mBarBelow.data()->getBaseValue(key, positive); + } else + return 0; +} + +/*! \internal + + Connects \a below and \a above to each other via their mBarAbove/mBarBelow properties. + The bar(s) currently below lower and upper will become disconnected to lower/upper. + + If lower is zero, upper will be disconnected at the bottom. + If upper is zero, lower will be disconnected at the top. +*/ +void QCPBars::connectBars(QCPBars *lower, QCPBars *upper) +{ + if (!lower && !upper) return; + + if (!lower) // disconnect upper at bottom + { + // disconnect old bar below upper: + if (upper->mBarBelow && upper->mBarBelow.data()->mBarAbove.data() == upper) + upper->mBarBelow.data()->mBarAbove.clear(); + upper->mBarBelow.clear(); + } else if (!upper) // disconnect lower at top + { + // disconnect old bar above lower: + if (lower->mBarAbove && lower->mBarAbove.data()->mBarBelow.data() == lower) + lower->mBarAbove.data()->mBarBelow.clear(); + lower->mBarAbove.clear(); + } else // connect lower and upper + { + // disconnect old bar above lower: + if (lower->mBarAbove && lower->mBarAbove.data()->mBarBelow.data() == lower) + lower->mBarAbove.data()->mBarBelow.clear(); + // disconnect old bar below upper: + if (upper->mBarBelow && upper->mBarBelow.data()->mBarAbove.data() == upper) + upper->mBarBelow.data()->mBarAbove.clear(); + lower->mBarAbove = upper; + upper->mBarBelow = lower; + } +} + +/* inherits documentation from base class */ +QCPRange QCPBars::getKeyRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = false; + bool haveUpper = false; + + double current; + double barWidthHalf = mWidth*0.5; + QCPBarDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().key; + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current+barWidthHalf < 0) || (inSignDomain == sdPositive && current-barWidthHalf > 0)) + { + if (current-barWidthHalf < range.lower || !haveLower) + { + range.lower = current-barWidthHalf; + haveLower = true; + } + if (current+barWidthHalf > range.upper || !haveUpper) + { + range.upper = current+barWidthHalf; + haveUpper = true; + } + } + ++it; + } + + validRange = haveLower && haveUpper; + return range; +} + +/* inherits documentation from base class */ +QCPRange QCPBars::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + QCPRange range; + bool haveLower = true; // set to true, because 0 should always be visible in bar charts + bool haveUpper = true; // set to true, because 0 should always be visible in bar charts + + double current; + + QCPBarDataMap::const_iterator it = mData->constBegin(); + while (it != mData->constEnd()) + { + current = it.value().value + getBaseValue(it.value().key, it.value().value >= 0); + if (inSignDomain == sdBoth || (inSignDomain == sdNegative && current < 0) || (inSignDomain == sdPositive && current > 0)) + { + if (current < range.lower || !haveLower) + { + range.lower = current; + haveLower = true; + } + if (current > range.upper || !haveUpper) + { + range.upper = current; + haveUpper = true; + } + } + ++it; + } + + validRange = range.lower < range.upper; + return range; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPStatisticalBox +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPStatisticalBox + \brief A plottable representing a single statistical box in a plot. + + \image html QCPStatisticalBox.png + + To plot data, assign it with the individual parameter functions or use \ref setData to set all + parameters at once. The individual funcions are: + \li \ref setMinimum + \li \ref setLowerQuartile + \li \ref setMedian + \li \ref setUpperQuartile + \li \ref setMaximum + + Additionally you can define a list of outliers, drawn as circle datapoints: + \li \ref setOutliers + + \section appearance Changing the appearance + + The appearance of the box itself is controlled via \ref setPen and \ref setBrush. You may change + the width of the box with \ref setWidth in plot coordinates (not pixels). + + Analog functions exist for the minimum/maximum-whiskers: \ref setWhiskerPen, \ref + setWhiskerBarPen, \ref setWhiskerWidth. The whisker width is the width of the bar at the top + (maximum) and bottom (minimum). + + The median indicator line has its own pen, \ref setMedianPen. + + If the whisker backbone pen is changed, make sure to set the capStyle to Qt::FlatCap. Else, the + backbone line might exceed the whisker bars by a few pixels due to the pen cap being not + perfectly flat. + + The Outlier data points are drawn as normal scatter points. Their look can be controlled with + \ref setOutlierStyle + + \section usage Usage + + Like all data representing objects in QCustomPlot, the QCPStatisticalBox is a plottable + (QCPAbstractPlottable). So the plottable-interface of QCustomPlot applies + (QCustomPlot::plottable, QCustomPlot::addPlottable, QCustomPlot::removePlottable, etc.) + + Usually, you first create an instance: + \code + QCPStatisticalBox *newBox = new QCPStatisticalBox(customPlot->xAxis, customPlot->yAxis);\endcode + add it to the customPlot with QCustomPlot::addPlottable: + \code + customPlot->addPlottable(newBox);\endcode + and then modify the properties of the newly created plottable, e.g.: + \code + newBox->setName("Measurement Series 1"); + newBox->setData(1, 3, 4, 5, 7); + newBox->setOutliers(QVector() << 0.5 << 0.64 << 7.2 << 7.42);\endcode +*/ + +/*! + Constructs a statistical box which uses \a keyAxis as its key axis ("x") and \a valueAxis as its + value axis ("y"). \a keyAxis and \a valueAxis must reside in the same QCustomPlot instance and + not have the same orientation. If either of these restrictions is violated, a corresponding + message is printed to the debug output (qDebug), the construction is not aborted, though. + + The constructed statistical box can be added to the plot with QCustomPlot::addPlottable, + QCustomPlot then takes ownership of the statistical box. +*/ +QCPStatisticalBox::QCPStatisticalBox(QCPAxis *keyAxis, QCPAxis *valueAxis) : + QCPAbstractPlottable(keyAxis, valueAxis), + mKey(0), + mMinimum(0), + mLowerQuartile(0), + mMedian(0), + mUpperQuartile(0), + mMaximum(0) +{ + setOutlierStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, 6)); + setWhiskerWidth(0.2); + setWidth(0.5); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2.5)); + setMedianPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::FlatCap)); + setWhiskerPen(QPen(Qt::black, 0, Qt::DashLine, Qt::FlatCap)); + setWhiskerBarPen(QPen(Qt::black)); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); +} + +/*! + Sets the key coordinate of the statistical box. +*/ +void QCPStatisticalBox::setKey(double key) +{ + mKey = key; +} + +/*! + Sets the parameter "minimum" of the statistical box plot. This is the position of the lower + whisker, typically the minimum measurement of the sample that's not considered an outlier. + + \see setMaximum, setWhiskerPen, setWhiskerBarPen, setWhiskerWidth +*/ +void QCPStatisticalBox::setMinimum(double value) +{ + mMinimum = value; +} + +/*! + Sets the parameter "lower Quartile" of the statistical box plot. This is the lower end of the + box. The lower and the upper quartiles are the two statistical quartiles around the median of the + sample, they contain 50% of the sample data. + + \see setUpperQuartile, setPen, setBrush, setWidth +*/ +void QCPStatisticalBox::setLowerQuartile(double value) +{ + mLowerQuartile = value; +} + +/*! + Sets the parameter "median" of the statistical box plot. This is the value of the median mark + inside the quartile box. The median separates the sample data in half (50% of the sample data is + below/above the median). + + \see setMedianPen +*/ +void QCPStatisticalBox::setMedian(double value) +{ + mMedian = value; +} + +/*! + Sets the parameter "upper Quartile" of the statistical box plot. This is the upper end of the + box. The lower and the upper quartiles are the two statistical quartiles around the median of the + sample, they contain 50% of the sample data. + + \see setLowerQuartile, setPen, setBrush, setWidth +*/ +void QCPStatisticalBox::setUpperQuartile(double value) +{ + mUpperQuartile = value; +} + +/*! + Sets the parameter "maximum" of the statistical box plot. This is the position of the upper + whisker, typically the maximum measurement of the sample that's not considered an outlier. + + \see setMinimum, setWhiskerPen, setWhiskerBarPen, setWhiskerWidth +*/ +void QCPStatisticalBox::setMaximum(double value) +{ + mMaximum = value; +} + +/*! + Sets a vector of outlier values that will be drawn as circles. Any data points in the sample that + are not within the whiskers (\ref setMinimum, \ref setMaximum) should be considered outliers and + displayed as such. + + \see setOutlierStyle +*/ +void QCPStatisticalBox::setOutliers(const QVector &values) +{ + mOutliers = values; +} + +/*! + Sets all parameters of the statistical box plot at once. + + \see setKey, setMinimum, setLowerQuartile, setMedian, setUpperQuartile, setMaximum +*/ +void QCPStatisticalBox::setData(double key, double minimum, double lowerQuartile, double median, double upperQuartile, double maximum) +{ + setKey(key); + setMinimum(minimum); + setLowerQuartile(lowerQuartile); + setMedian(median); + setUpperQuartile(upperQuartile); + setMaximum(maximum); +} + +/*! + Sets the width of the box in key coordinates. + + \see setWhiskerWidth +*/ +void QCPStatisticalBox::setWidth(double width) +{ + mWidth = width; +} + +/*! + Sets the width of the whiskers (\ref setMinimum, \ref setMaximum) in key coordinates. + + \see setWidth +*/ +void QCPStatisticalBox::setWhiskerWidth(double width) +{ + mWhiskerWidth = width; +} + +/*! + Sets the pen used for drawing the whisker backbone (That's the line parallel to the value axis). + + Make sure to set the \a pen capStyle to Qt::FlatCap to prevent the whisker backbone from reaching + a few pixels past the whisker bars, when using a non-zero pen width. + + \see setWhiskerBarPen +*/ +void QCPStatisticalBox::setWhiskerPen(const QPen &pen) +{ + mWhiskerPen = pen; +} + +/*! + Sets the pen used for drawing the whisker bars (Those are the lines parallel to the key axis at + each end of the whisker backbone). + + \see setWhiskerPen +*/ +void QCPStatisticalBox::setWhiskerBarPen(const QPen &pen) +{ + mWhiskerBarPen = pen; +} + +/*! + Sets the pen used for drawing the median indicator line inside the statistical box. +*/ +void QCPStatisticalBox::setMedianPen(const QPen &pen) +{ + mMedianPen = pen; +} + +/*! + Sets the appearance of the outlier data points. + + \see setOutliers +*/ +void QCPStatisticalBox::setOutlierStyle(const QCPScatterStyle &style) +{ + mOutlierStyle = style; +} + +/* inherits documentation from base class */ +void QCPStatisticalBox::clearData() +{ + setOutliers(QVector()); + setKey(0); + setMinimum(0); + setLowerQuartile(0); + setMedian(0); + setUpperQuartile(0); + setMaximum(0); +} + +/* inherits documentation from base class */ +double QCPStatisticalBox::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return -1; } + + double posKey, posValue; + pixelsToCoords(pos, posKey, posValue); + // quartile box: + QCPRange keyRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + QCPRange valueRange(mLowerQuartile, mUpperQuartile); + if (keyRange.contains(posKey) && valueRange.contains(posValue)) + return mParentPlot->selectionTolerance()*0.99; + + // min/max whiskers: + if (QCPRange(mMinimum, mMaximum).contains(posValue)) + return qAbs(mKeyAxis.data()->coordToPixel(mKey)-mKeyAxis.data()->coordToPixel(posKey)); + + return -1; +} + +/* inherits documentation from base class */ +void QCPStatisticalBox::draw(QCPPainter *painter) +{ + if (!mKeyAxis || !mValueAxis) { qDebug() << Q_FUNC_INFO << "invalid key or value axis"; return; } + + // check data validity if flag set: +#ifdef QCUSTOMPLOT_CHECK_DATA + if (QCP::isInvalidData(mKey, mMedian) || + QCP::isInvalidData(mLowerQuartile, mUpperQuartile) || + QCP::isInvalidData(mMinimum, mMaximum)) + qDebug() << Q_FUNC_INFO << "Data point at" << mKey << "of drawn range has invalid data." << "Plottable name:" << name(); + for (int i=0; isave(); + painter->setClipRect(quartileBox, Qt::IntersectClip); + drawMedian(painter); + painter->restore(); + + drawWhiskers(painter); + drawOutliers(painter); +} + +/* inherits documentation from base class */ +void QCPStatisticalBox::drawLegendIcon(QCPPainter *painter, const QRectF &rect) const +{ + // draw filled rect: + applyDefaultAntialiasingHint(painter); + painter->setPen(mPen); + painter->setBrush(mBrush); + QRectF r = QRectF(0, 0, rect.width()*0.67, rect.height()*0.67); + r.moveCenter(rect.center()); + painter->drawRect(r); +} + +/*! \internal + + Draws the quartile box. \a box is an output parameter that returns the quartile box (in pixel + coordinates) which is used to set the clip rect of the painter before calling \ref drawMedian (so + the median doesn't draw outside the quartile box). +*/ +void QCPStatisticalBox::drawQuartileBox(QCPPainter *painter, QRectF *quartileBox) const +{ + QRectF box; + box.setTopLeft(coordsToPixels(mKey-mWidth*0.5, mUpperQuartile)); + box.setBottomRight(coordsToPixels(mKey+mWidth*0.5, mLowerQuartile)); + applyDefaultAntialiasingHint(painter); + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + painter->drawRect(box); + if (quartileBox) + *quartileBox = box; +} + +/*! \internal + + Draws the median line inside the quartile box. +*/ +void QCPStatisticalBox::drawMedian(QCPPainter *painter) const +{ + QLineF medianLine; + medianLine.setP1(coordsToPixels(mKey-mWidth*0.5, mMedian)); + medianLine.setP2(coordsToPixels(mKey+mWidth*0.5, mMedian)); + applyDefaultAntialiasingHint(painter); + painter->setPen(mMedianPen); + painter->drawLine(medianLine); +} + +/*! \internal + + Draws both whisker backbones and bars. +*/ +void QCPStatisticalBox::drawWhiskers(QCPPainter *painter) const +{ + QLineF backboneMin, backboneMax, barMin, barMax; + backboneMax.setPoints(coordsToPixels(mKey, mUpperQuartile), coordsToPixels(mKey, mMaximum)); + backboneMin.setPoints(coordsToPixels(mKey, mLowerQuartile), coordsToPixels(mKey, mMinimum)); + barMax.setPoints(coordsToPixels(mKey-mWhiskerWidth*0.5, mMaximum), coordsToPixels(mKey+mWhiskerWidth*0.5, mMaximum)); + barMin.setPoints(coordsToPixels(mKey-mWhiskerWidth*0.5, mMinimum), coordsToPixels(mKey+mWhiskerWidth*0.5, mMinimum)); + applyErrorBarsAntialiasingHint(painter); + painter->setPen(mWhiskerPen); + painter->drawLine(backboneMin); + painter->drawLine(backboneMax); + painter->setPen(mWhiskerBarPen); + painter->drawLine(barMin); + painter->drawLine(barMax); +} + +/*! \internal + + Draws the outlier scatter points. +*/ +void QCPStatisticalBox::drawOutliers(QCPPainter *painter) const +{ + applyScattersAntialiasingHint(painter); + mOutlierStyle.applyTo(painter, mPen); + for (int i=0; i 0; + if (inSignDomain == sdBoth) + { + return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + } else if (inSignDomain == sdNegative) + { + if (mKey+mWidth*0.5 < 0) + return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + else if (mKey < 0) + return QCPRange(mKey-mWidth*0.5, mKey); + else + { + validRange = false; + return QCPRange(); + } + } else if (inSignDomain == sdPositive) + { + if (mKey-mWidth*0.5 > 0) + return QCPRange(mKey-mWidth*0.5, mKey+mWidth*0.5); + else if (mKey > 0) + return QCPRange(mKey, mKey+mWidth*0.5); + else + { + validRange = false; + return QCPRange(); + } + } + validRange = false; + return QCPRange(); +} + +/* inherits documentation from base class */ +QCPRange QCPStatisticalBox::getValueRange(bool &validRange, SignDomain inSignDomain) const +{ + if (inSignDomain == sdBoth) + { + double lower = qMin(mMinimum, qMin(mMedian, mLowerQuartile)); + double upper = qMax(mMaximum, qMax(mMedian, mUpperQuartile)); + for (int i=0; i upper) + upper = mOutliers.at(i); + } + validRange = upper > lower; + return QCPRange(lower, upper); + } else + { + QVector values; // values that must be considered (i.e. all outliers and the five box-parameters) + values.reserve(mOutliers.size() + 5); + values << mMaximum << mUpperQuartile << mMedian << mLowerQuartile << mMinimum; + values << mOutliers; + // go through values and find the ones in legal range: + bool haveUpper = false; + bool haveLower = false; + double upper = 0; + double lower = 0; + for (int i=0; i 0)) + { + if (values.at(i) > upper || !haveUpper) + { + upper = values.at(i); + haveUpper = true; + } + if (values.at(i) < lower || !haveLower) + { + lower = values.at(i); + haveLower = true; + } + } + } + // return the bounds if we found some sensible values: + if (haveLower && haveUpper && lower < upper) + { + validRange = true; + return QCPRange(lower, upper); + } else + { + validRange = false; + return QCPRange(); + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemStraightLine +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemStraightLine + \brief A straight line that spans infinitely in both directions + + \image html QCPItemStraightLine.png "Straight line example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a point1 and \a point2, which define the straight line. +*/ + +/*! + Creates a straight line item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemStraightLine::QCPItemStraightLine(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + point1(createPosition("point1")), + point2(createPosition("point2")) +{ + point1->setCoords(0, 0); + point2->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); +} + +QCPItemStraightLine::~QCPItemStraightLine() +{ +} + +/*! + Sets the pen that will be used to draw the line + + \see setSelectedPen +*/ +void QCPItemStraightLine::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line when selected + + \see setPen, setSelected +*/ +void QCPItemStraightLine::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/* inherits documentation from base class */ +double QCPItemStraightLine::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + return distToStraightLine(QVector2D(point1->pixelPoint()), QVector2D(point2->pixelPoint()-point1->pixelPoint()), QVector2D(pos)); +} + +/* inherits documentation from base class */ +void QCPItemStraightLine::draw(QCPPainter *painter) +{ + QVector2D start(point1->pixelPoint()); + QVector2D end(point2->pixelPoint()); + // get visible segment of straight line inside clipRect: + double clipPad = mainPen().widthF(); + QLineF line = getRectClippedStraightLine(start, end-start, clipRect().adjusted(-clipPad, -clipPad, clipPad, clipPad)); + // paint visible segment, if existent: + if (!line.isNull()) + { + painter->setPen(mainPen()); + painter->drawLine(line); + } +} + +/*! \internal + + finds the shortest distance of \a point to the straight line defined by the base point \a + base and the direction vector \a vec. + + This is a helper function for \ref selectTest. +*/ +double QCPItemStraightLine::distToStraightLine(const QVector2D &base, const QVector2D &vec, const QVector2D &point) const +{ + return qAbs((base.y()-point.y())*vec.x()-(base.x()-point.x())*vec.y())/vec.length(); +} + +/*! \internal + + Returns the section of the straight line defined by \a base and direction vector \a + vec, that is visible in the specified \a rect. + + This is a helper function for \ref draw. +*/ +QLineF QCPItemStraightLine::getRectClippedStraightLine(const QVector2D &base, const QVector2D &vec, const QRect &rect) const +{ + double bx, by; + double gamma; + QLineF result; + if (vec.x() == 0 && vec.y() == 0) + return result; + if (qFuzzyIsNull(vec.x())) // line is vertical + { + // check top of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); + if (gamma >= 0 && gamma <= rect.width()) + result.setLine(bx+gamma, rect.top(), bx+gamma, rect.bottom()); // no need to check bottom because we know line is vertical + } else if (qFuzzyIsNull(vec.y())) // line is horizontal + { + // check left of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); + if (gamma >= 0 && gamma <= rect.height()) + result.setLine(rect.left(), by+gamma, rect.right(), by+gamma); // no need to check right because we know line is horizontal + } else // line is skewed + { + QList pointVectors; + // check top of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + // check bottom of rect: + bx = rect.left(); + by = rect.bottom(); + gamma = base.x()-bx + (by-base.y())*vec.x()/vec.y(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + // check left of rect: + bx = rect.left(); + by = rect.top(); + gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + // check right of rect: + bx = rect.right(); + by = rect.top(); + gamma = base.y()-by + (bx-base.x())*vec.y()/vec.x(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + + // evaluate points: + if (pointVectors.size() == 2) + { + result.setPoints(pointVectors.at(0).toPointF(), pointVectors.at(1).toPointF()); + } else if (pointVectors.size() > 2) + { + // line probably goes through corner of rect, and we got two points there. single out the point pair with greatest distance: + double distSqrMax = 0; + QVector2D pv1, pv2; + for (int i=0; i distSqrMax) + { + pv1 = pointVectors.at(i); + pv2 = pointVectors.at(k); + distSqrMax = distSqr; + } + } + } + result.setPoints(pv1.toPointF(), pv2.toPointF()); + } + } + return result; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemStraightLine::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemLine +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemLine + \brief A line from one point to another + + \image html QCPItemLine.png "Line example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a start and \a end, which define the end points of the line. + + With \ref setHead and \ref setTail you may set different line ending styles, e.g. to create an arrow. +*/ + +/*! + Creates a line item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemLine::QCPItemLine(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + start(createPosition("start")), + end(createPosition("end")) +{ + start->setCoords(0, 0); + end->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); +} + +QCPItemLine::~QCPItemLine() +{ +} + +/*! + Sets the pen that will be used to draw the line + + \see setSelectedPen +*/ +void QCPItemLine::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line when selected + + \see setPen, setSelected +*/ +void QCPItemLine::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the line ending style of the head. The head corresponds to the \a end position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setHead(QCPLineEnding::esSpikeArrow) \endcode + + \see setTail +*/ +void QCPItemLine::setHead(const QCPLineEnding &head) +{ + mHead = head; +} + +/*! + Sets the line ending style of the tail. The tail corresponds to the \a start position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setTail(QCPLineEnding::esSpikeArrow) \endcode + + \see setHead +*/ +void QCPItemLine::setTail(const QCPLineEnding &tail) +{ + mTail = tail; +} + +/* inherits documentation from base class */ +double QCPItemLine::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + return qSqrt(distSqrToLine(start->pixelPoint(), end->pixelPoint(), pos)); +} + +/* inherits documentation from base class */ +void QCPItemLine::draw(QCPPainter *painter) +{ + QVector2D startVec(start->pixelPoint()); + QVector2D endVec(end->pixelPoint()); + if (startVec.toPoint() == endVec.toPoint()) + return; + // get visible segment of straight line inside clipRect: + double clipPad = qMax(mHead.boundingDistance(), mTail.boundingDistance()); + clipPad = qMax(clipPad, (double)mainPen().widthF()); + QLineF line = getRectClippedLine(startVec, endVec, clipRect().adjusted(-clipPad, -clipPad, clipPad, clipPad)); + // paint visible segment, if existent: + if (!line.isNull()) + { + painter->setPen(mainPen()); + painter->drawLine(line); + painter->setBrush(Qt::SolidPattern); + if (mTail.style() != QCPLineEnding::esNone) + mTail.draw(painter, startVec, startVec-endVec); + if (mHead.style() != QCPLineEnding::esNone) + mHead.draw(painter, endVec, endVec-startVec); + } +} + +/*! \internal + + Returns the section of the line defined by \a start and \a end, that is visible in the specified + \a rect. + + This is a helper function for \ref draw. +*/ +QLineF QCPItemLine::getRectClippedLine(const QVector2D &start, const QVector2D &end, const QRect &rect) const +{ + bool containsStart = rect.contains(start.x(), start.y()); + bool containsEnd = rect.contains(end.x(), end.y()); + if (containsStart && containsEnd) + return QLineF(start.toPointF(), end.toPointF()); + + QVector2D base = start; + QVector2D vec = end-start; + double bx, by; + double gamma, mu; + QLineF result; + QList pointVectors; + + if (!qFuzzyIsNull(vec.y())) // line is not horizontal + { + // check top of rect: + bx = rect.left(); + by = rect.top(); + mu = (by-base.y())/vec.y(); + if (mu >= 0 && mu <= 1) + { + gamma = base.x()-bx + mu*vec.x(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + } + // check bottom of rect: + bx = rect.left(); + by = rect.bottom(); + mu = (by-base.y())/vec.y(); + if (mu >= 0 && mu <= 1) + { + gamma = base.x()-bx + mu*vec.x(); + if (gamma >= 0 && gamma <= rect.width()) + pointVectors.append(QVector2D(bx+gamma, by)); + } + } + if (!qFuzzyIsNull(vec.x())) // line is not vertical + { + // check left of rect: + bx = rect.left(); + by = rect.top(); + mu = (bx-base.x())/vec.x(); + if (mu >= 0 && mu <= 1) + { + gamma = base.y()-by + mu*vec.y(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + } + // check right of rect: + bx = rect.right(); + by = rect.top(); + mu = (bx-base.x())/vec.x(); + if (mu >= 0 && mu <= 1) + { + gamma = base.y()-by + mu*vec.y(); + if (gamma >= 0 && gamma <= rect.height()) + pointVectors.append(QVector2D(bx, by+gamma)); + } + } + + if (containsStart) + pointVectors.append(start); + if (containsEnd) + pointVectors.append(end); + + // evaluate points: + if (pointVectors.size() == 2) + { + result.setPoints(pointVectors.at(0).toPointF(), pointVectors.at(1).toPointF()); + } else if (pointVectors.size() > 2) + { + // line probably goes through corner of rect, and we got two points there. single out the point pair with greatest distance: + double distSqrMax = 0; + QVector2D pv1, pv2; + for (int i=0; i distSqrMax) + { + pv1 = pointVectors.at(i); + pv2 = pointVectors.at(k); + distSqrMax = distSqr; + } + } + } + result.setPoints(pv1.toPointF(), pv2.toPointF()); + } + return result; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemLine::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemCurve +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemCurve + \brief A curved line from one point to another + + \image html QCPItemCurve.png "Curve example. Blue dotted circles are anchors, solid blue discs are positions." + + It has four positions, \a start and \a end, which define the end points of the line, and two + control points which define the direction the line exits from the start and the direction from + which it approaches the end: \a startDir and \a endDir. + + With \ref setHead and \ref setTail you may set different line ending styles, e.g. to create an + arrow. + + Often it is desirable for the control points to stay at fixed relative positions to the start/end + point. This can be achieved by setting the parent anchor e.g. of \a startDir simply to \a start, + and then specify the desired pixel offset with QCPItemPosition::setCoords on \a startDir. +*/ + +/*! + Creates a curve item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemCurve::QCPItemCurve(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + start(createPosition("start")), + startDir(createPosition("startDir")), + endDir(createPosition("endDir")), + end(createPosition("end")) +{ + start->setCoords(0, 0); + startDir->setCoords(0.5, 0); + endDir->setCoords(0, 0.5); + end->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); +} + +QCPItemCurve::~QCPItemCurve() +{ +} + +/*! + Sets the pen that will be used to draw the line + + \see setSelectedPen +*/ +void QCPItemCurve::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line when selected + + \see setPen, setSelected +*/ +void QCPItemCurve::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the line ending style of the head. The head corresponds to the \a end position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setHead(QCPLineEnding::esSpikeArrow) \endcode + + \see setTail +*/ +void QCPItemCurve::setHead(const QCPLineEnding &head) +{ + mHead = head; +} + +/*! + Sets the line ending style of the tail. The tail corresponds to the \a start position. + + Note that due to the overloaded QCPLineEnding constructor, you may directly specify + a QCPLineEnding::EndingStyle here, e.g. \code setTail(QCPLineEnding::esSpikeArrow) \endcode + + \see setHead +*/ +void QCPItemCurve::setTail(const QCPLineEnding &tail) +{ + mTail = tail; +} + +/* inherits documentation from base class */ +double QCPItemCurve::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QPointF startVec(start->pixelPoint()); + QPointF startDirVec(startDir->pixelPoint()); + QPointF endDirVec(endDir->pixelPoint()); + QPointF endVec(end->pixelPoint()); + + QPainterPath cubicPath(startVec); + cubicPath.cubicTo(startDirVec, endDirVec, endVec); + + QPolygonF polygon = cubicPath.toSubpathPolygons().first(); + double minDistSqr = std::numeric_limits::max(); + for (int i=1; ipixelPoint()); + QPointF startDirVec(startDir->pixelPoint()); + QPointF endDirVec(endDir->pixelPoint()); + QPointF endVec(end->pixelPoint()); + if (QVector2D(endVec-startVec).length() > 1e10) // too large curves cause crash + return; + + QPainterPath cubicPath(startVec); + cubicPath.cubicTo(startDirVec, endDirVec, endVec); + + // paint visible segment, if existent: + QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); + QRect cubicRect = cubicPath.controlPointRect().toRect(); + if (cubicRect.isEmpty()) // may happen when start and end exactly on same x or y position + cubicRect.adjust(0, 0, 1, 1); + if (clip.intersects(cubicRect)) + { + painter->setPen(mainPen()); + painter->drawPath(cubicPath); + painter->setBrush(Qt::SolidPattern); + if (mTail.style() != QCPLineEnding::esNone) + mTail.draw(painter, QVector2D(startVec), M_PI-cubicPath.angleAtPercent(0)/180.0*M_PI); + if (mHead.style() != QCPLineEnding::esNone) + mHead.draw(painter, QVector2D(endVec), -cubicPath.angleAtPercent(1)/180.0*M_PI); + } +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemCurve::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemRect +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemRect + \brief A rectangle + + \image html QCPItemRect.png "Rectangle example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a topLeft and \a bottomRight, which define the rectangle. +*/ + +/*! + Creates a rectangle item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemRect::QCPItemRect(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + topLeft(createPosition("topLeft")), + bottomRight(createPosition("bottomRight")), + top(createAnchor("top", aiTop)), + topRight(createAnchor("topRight", aiTopRight)), + right(createAnchor("right", aiRight)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), + left(createAnchor("left", aiLeft)) +{ + topLeft->setCoords(0, 1); + bottomRight->setCoords(1, 0); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue,2)); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); +} + +QCPItemRect::~QCPItemRect() +{ +} + +/*! + Sets the pen that will be used to draw the line of the rectangle + + \see setSelectedPen, setBrush +*/ +void QCPItemRect::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line of the rectangle when selected + + \see setPen, setSelected +*/ +void QCPItemRect::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used to fill the rectangle. To disable filling, set \a brush to + Qt::NoBrush. + + \see setSelectedBrush, setPen +*/ +void QCPItemRect::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used to fill the rectangle when selected. To disable filling, set \a + brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPItemRect::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/* inherits documentation from base class */ +double QCPItemRect::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()).normalized(); + bool filledRect = mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0; + return rectSelectTest(rect, pos, filledRect); +} + +/* inherits documentation from base class */ +void QCPItemRect::draw(QCPPainter *painter) +{ + QPointF p1 = topLeft->pixelPoint(); + QPointF p2 = bottomRight->pixelPoint(); + if (p1.toPoint() == p2.toPoint()) + return; + QRectF rect = QRectF(p1, p2).normalized(); + double clipPad = mainPen().widthF(); + QRectF boundingRect = rect.adjusted(-clipPad, -clipPad, clipPad, clipPad); + if (boundingRect.intersects(clipRect())) // only draw if bounding rect of rect item is visible in cliprect + { + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + painter->drawRect(rect); + } +} + +/* inherits documentation from base class */ +QPointF QCPItemRect::anchorPixelPoint(int anchorId) const +{ + QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()); + switch (anchorId) + { + case aiTop: return (rect.topLeft()+rect.topRight())*0.5; + case aiTopRight: return rect.topRight(); + case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; + case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; + case aiBottomLeft: return rect.bottomLeft(); + case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemRect::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemRect::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemText +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemText + \brief A text label + + \image html QCPItemText.png "Text example. Blue dotted circles are anchors, solid blue discs are positions." + + Its position is defined by the member \a position and the setting of \ref setPositionAlignment. + The latter controls which part of the text rect shall be aligned with \a position. + + The text alignment itself (i.e. left, center, right) can be controlled with \ref + setTextAlignment. + + The text may be rotated around the \a position point with \ref setRotation. +*/ + +/*! + Creates a text item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemText::QCPItemText(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + position(createPosition("position")), + topLeft(createAnchor("topLeft", aiTopLeft)), + top(createAnchor("top", aiTop)), + topRight(createAnchor("topRight", aiTopRight)), + right(createAnchor("right", aiRight)), + bottomRight(createAnchor("bottomRight", aiBottomRight)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), + left(createAnchor("left", aiLeft)) +{ + position->setCoords(0, 0); + + setRotation(0); + setTextAlignment(Qt::AlignTop|Qt::AlignHCenter); + setPositionAlignment(Qt::AlignCenter); + setText("text"); + + setPen(Qt::NoPen); + setSelectedPen(Qt::NoPen); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); + setColor(Qt::black); + setSelectedColor(Qt::blue); +} + +QCPItemText::~QCPItemText() +{ +} + +/*! + Sets the color of the text. +*/ +void QCPItemText::setColor(const QColor &color) +{ + mColor = color; +} + +/*! + Sets the color of the text that will be used when the item is selected. +*/ +void QCPItemText::setSelectedColor(const QColor &color) +{ + mSelectedColor = color; +} + +/*! + Sets the pen that will be used do draw a rectangular border around the text. To disable the + border, set \a pen to Qt::NoPen. + + \see setSelectedPen, setBrush, setPadding +*/ +void QCPItemText::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used do draw a rectangular border around the text, when the item is + selected. To disable the border, set \a pen to Qt::NoPen. + + \see setPen +*/ +void QCPItemText::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used do fill the background of the text. To disable the + background, set \a brush to Qt::NoBrush. + + \see setSelectedBrush, setPen, setPadding +*/ +void QCPItemText::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used do fill the background of the text, when the item is selected. To disable the + background, set \a brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPItemText::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + Sets the font of the text. + + \see setSelectedFont, setColor +*/ +void QCPItemText::setFont(const QFont &font) +{ + mFont = font; +} + +/*! + Sets the font of the text that will be used when the item is selected. + + \see setFont +*/ +void QCPItemText::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; +} + +/*! + Sets the text that will be displayed. Multi-line texts are supported by inserting a line break + character, e.g. '\n'. + + \see setFont, setColor, setTextAlignment +*/ +void QCPItemText::setText(const QString &text) +{ + mText = text; +} + +/*! + Sets which point of the text rect shall be aligned with \a position. + + Examples: + \li If \a alignment is Qt::AlignHCenter | Qt::AlignTop, the text will be positioned such + that the top of the text rect will be horizontally centered on \a position. + \li If \a alignment is Qt::AlignLeft | Qt::AlignBottom, \a position will indicate the + bottom left corner of the text rect. + + If you want to control the alignment of (multi-lined) text within the text rect, use \ref + setTextAlignment. +*/ +void QCPItemText::setPositionAlignment(Qt::Alignment alignment) +{ + mPositionAlignment = alignment; +} + +/*! + Controls how (multi-lined) text is aligned inside the text rect (typically Qt::AlignLeft, Qt::AlignCenter or Qt::AlignRight). +*/ +void QCPItemText::setTextAlignment(Qt::Alignment alignment) +{ + mTextAlignment = alignment; +} + +/*! + Sets the angle in degrees by which the text (and the text rectangle, if visible) will be rotated + around \a position. +*/ +void QCPItemText::setRotation(double degrees) +{ + mRotation = degrees; +} + +/*! + Sets the distance between the border of the text rectangle and the text. The appearance (and + visibility) of the text rectangle can be controlled with \ref setPen and \ref setBrush. +*/ +void QCPItemText::setPadding(const QMargins &padding) +{ + mPadding = padding; +} + +/* inherits documentation from base class */ +double QCPItemText::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + // The rect may be rotated, so we transform the actual clicked pos to the rotated + // coordinate system, so we can use the normal rectSelectTest function for non-rotated rects: + QPointF positionPixels(position->pixelPoint()); + QTransform inputTransform; + inputTransform.translate(positionPixels.x(), positionPixels.y()); + inputTransform.rotate(-mRotation); + inputTransform.translate(-positionPixels.x(), -positionPixels.y()); + QPointF rotatedPos = inputTransform.map(pos); + QFontMetrics fontMetrics(mFont); + QRect textRect = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); + QRect textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); + QPointF textPos = getTextDrawPoint(positionPixels, textBoxRect, mPositionAlignment); + textBoxRect.moveTopLeft(textPos.toPoint()); + + return rectSelectTest(textBoxRect, rotatedPos, true); +} + +/* inherits documentation from base class */ +void QCPItemText::draw(QCPPainter *painter) +{ + QPointF pos(position->pixelPoint()); + QTransform transform = painter->transform(); + transform.translate(pos.x(), pos.y()); + if (!qFuzzyIsNull(mRotation)) + transform.rotate(mRotation); + painter->setFont(mainFont()); + QRect textRect = painter->fontMetrics().boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); + QRect textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); + QPointF textPos = getTextDrawPoint(QPointF(0, 0), textBoxRect, mPositionAlignment); // 0, 0 because the transform does the translation + textRect.moveTopLeft(textPos.toPoint()+QPoint(mPadding.left(), mPadding.top())); + textBoxRect.moveTopLeft(textPos.toPoint()); + double clipPad = mainPen().widthF(); + QRect boundingRect = textBoxRect.adjusted(-clipPad, -clipPad, clipPad, clipPad); + if (transform.mapRect(boundingRect).intersects(painter->transform().mapRect(clipRect()))) + { + painter->setTransform(transform); + if ((mainBrush().style() != Qt::NoBrush && mainBrush().color().alpha() != 0) || + (mainPen().style() != Qt::NoPen && mainPen().color().alpha() != 0)) + { + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + painter->drawRect(textBoxRect); + } + painter->setBrush(Qt::NoBrush); + painter->setPen(QPen(mainColor())); + painter->drawText(textRect, Qt::TextDontClip|mTextAlignment, mText); + } +} + +/* inherits documentation from base class */ +QPointF QCPItemText::anchorPixelPoint(int anchorId) const +{ + // get actual rect points (pretty much copied from draw function): + QPointF pos(position->pixelPoint()); + QTransform transform; + transform.translate(pos.x(), pos.y()); + if (!qFuzzyIsNull(mRotation)) + transform.rotate(mRotation); + QFontMetrics fontMetrics(mainFont()); + QRect textRect = fontMetrics.boundingRect(0, 0, 0, 0, Qt::TextDontClip|mTextAlignment, mText); + QRectF textBoxRect = textRect.adjusted(-mPadding.left(), -mPadding.top(), mPadding.right(), mPadding.bottom()); + QPointF textPos = getTextDrawPoint(QPointF(0, 0), textBoxRect, mPositionAlignment); // 0, 0 because the transform does the translation + textBoxRect.moveTopLeft(textPos.toPoint()); + QPolygonF rectPoly = transform.map(QPolygonF(textBoxRect)); + + switch (anchorId) + { + case aiTopLeft: return rectPoly.at(0); + case aiTop: return (rectPoly.at(0)+rectPoly.at(1))*0.5; + case aiTopRight: return rectPoly.at(1); + case aiRight: return (rectPoly.at(1)+rectPoly.at(2))*0.5; + case aiBottomRight: return rectPoly.at(2); + case aiBottom: return (rectPoly.at(2)+rectPoly.at(3))*0.5; + case aiBottomLeft: return rectPoly.at(3); + case aiLeft: return (rectPoly.at(3)+rectPoly.at(0))*0.5; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the point that must be given to the QPainter::drawText function (which expects the top + left point of the text rect), according to the position \a pos, the text bounding box \a rect and + the requested \a positionAlignment. + + For example, if \a positionAlignment is Qt::AlignLeft | Qt::AlignBottom the returned point + will be shifted upward by the height of \a rect, starting from \a pos. So if the text is finally + drawn at that point, the lower left corner of the resulting text rect is at \a pos. +*/ +QPointF QCPItemText::getTextDrawPoint(const QPointF &pos, const QRectF &rect, Qt::Alignment positionAlignment) const +{ + if (positionAlignment == 0 || positionAlignment == (Qt::AlignLeft|Qt::AlignTop)) + return pos; + + QPointF result = pos; // start at top left + if (positionAlignment.testFlag(Qt::AlignHCenter)) + result.rx() -= rect.width()/2.0; + else if (positionAlignment.testFlag(Qt::AlignRight)) + result.rx() -= rect.width(); + if (positionAlignment.testFlag(Qt::AlignVCenter)) + result.ry() -= rect.height()/2.0; + else if (positionAlignment.testFlag(Qt::AlignBottom)) + result.ry() -= rect.height(); + return result; +} + +/*! \internal + + Returns the font that should be used for drawing text. Returns mFont when the item is not selected + and mSelectedFont when it is. +*/ +QFont QCPItemText::mainFont() const +{ + return mSelected ? mSelectedFont : mFont; +} + +/*! \internal + + Returns the color that should be used for drawing text. Returns mColor when the item is not + selected and mSelectedColor when it is. +*/ +QColor QCPItemText::mainColor() const +{ + return mSelected ? mSelectedColor : mColor; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemText::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemText::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemEllipse +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemEllipse + \brief An ellipse + + \image html QCPItemEllipse.png "Ellipse example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a topLeft and \a bottomRight, which define the rect the ellipse will be drawn in. +*/ + +/*! + Creates an ellipse item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemEllipse::QCPItemEllipse(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + topLeft(createPosition("topLeft")), + bottomRight(createPosition("bottomRight")), + topLeftRim(createAnchor("topLeftRim", aiTopLeftRim)), + top(createAnchor("top", aiTop)), + topRightRim(createAnchor("topRightRim", aiTopRightRim)), + right(createAnchor("right", aiRight)), + bottomRightRim(createAnchor("bottomRightRim", aiBottomRightRim)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeftRim(createAnchor("bottomLeftRim", aiBottomLeftRim)), + left(createAnchor("left", aiLeft)), + center(createAnchor("center", aiCenter)) +{ + topLeft->setCoords(0, 1); + bottomRight->setCoords(1, 0); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2)); + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); +} + +QCPItemEllipse::~QCPItemEllipse() +{ +} + +/*! + Sets the pen that will be used to draw the line of the ellipse + + \see setSelectedPen, setBrush +*/ +void QCPItemEllipse::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line of the ellipse when selected + + \see setPen, setSelected +*/ +void QCPItemEllipse::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used to fill the ellipse. To disable filling, set \a brush to + Qt::NoBrush. + + \see setSelectedBrush, setPen +*/ +void QCPItemEllipse::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used to fill the ellipse when selected. To disable filling, set \a + brush to Qt::NoBrush. + + \see setBrush +*/ +void QCPItemEllipse::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/* inherits documentation from base class */ +double QCPItemEllipse::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + double result = -1; + QPointF p1 = topLeft->pixelPoint(); + QPointF p2 = bottomRight->pixelPoint(); + QPointF center((p1+p2)/2.0); + double a = qAbs(p1.x()-p2.x())/2.0; + double b = qAbs(p1.y()-p2.y())/2.0; + double x = pos.x()-center.x(); + double y = pos.y()-center.y(); + + // distance to border: + double c = 1.0/qSqrt(x*x/(a*a)+y*y/(b*b)); + result = qAbs(c-1)*qSqrt(x*x+y*y); + // filled ellipse, allow click inside to count as hit: + if (result > mParentPlot->selectionTolerance()*0.99 && mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0) + { + if (x*x/(a*a) + y*y/(b*b) <= 1) + result = mParentPlot->selectionTolerance()*0.99; + } + return result; +} + +/* inherits documentation from base class */ +void QCPItemEllipse::draw(QCPPainter *painter) +{ + QPointF p1 = topLeft->pixelPoint(); + QPointF p2 = bottomRight->pixelPoint(); + if (p1.toPoint() == p2.toPoint()) + return; + QRectF ellipseRect = QRectF(p1, p2).normalized(); + QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); + if (ellipseRect.intersects(clip)) // only draw if bounding rect of ellipse is visible in cliprect + { + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); +#ifdef __EXCEPTIONS + try // drawEllipse sometimes throws exceptions if ellipse is too big + { +#endif + painter->drawEllipse(ellipseRect); +#ifdef __EXCEPTIONS + } catch (...) + { + qDebug() << Q_FUNC_INFO << "Item too large for memory, setting invisible"; + setVisible(false); + } +#endif + } +} + +/* inherits documentation from base class */ +QPointF QCPItemEllipse::anchorPixelPoint(int anchorId) const +{ + QRectF rect = QRectF(topLeft->pixelPoint(), bottomRight->pixelPoint()); + switch (anchorId) + { + case aiTopLeftRim: return rect.center()+(rect.topLeft()-rect.center())*1/qSqrt(2); + case aiTop: return (rect.topLeft()+rect.topRight())*0.5; + case aiTopRightRim: return rect.center()+(rect.topRight()-rect.center())*1/qSqrt(2); + case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; + case aiBottomRightRim: return rect.center()+(rect.bottomRight()-rect.center())*1/qSqrt(2); + case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; + case aiBottomLeftRim: return rect.center()+(rect.bottomLeft()-rect.center())*1/qSqrt(2); + case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5; + case aiCenter: return (rect.topLeft()+rect.bottomRight())*0.5; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemEllipse::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemEllipse::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemPixmap +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemPixmap + \brief An arbitrary pixmap + + \image html QCPItemPixmap.png "Pixmap example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a topLeft and \a bottomRight, which define the rectangle the pixmap will + be drawn in. Depending on the scale setting (\ref setScaled), the pixmap will be either scaled to + fit the rectangle or be drawn aligned to the topLeft position. + + If scaling is enabled and \a topLeft is further to the bottom/right than \a bottomRight (as shown + on the right side of the example image), the pixmap will be flipped in the respective + orientations. +*/ + +/*! + Creates a rectangle item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemPixmap::QCPItemPixmap(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + topLeft(createPosition("topLeft")), + bottomRight(createPosition("bottomRight")), + top(createAnchor("top", aiTop)), + topRight(createAnchor("topRight", aiTopRight)), + right(createAnchor("right", aiRight)), + bottom(createAnchor("bottom", aiBottom)), + bottomLeft(createAnchor("bottomLeft", aiBottomLeft)), + left(createAnchor("left", aiLeft)) +{ + topLeft->setCoords(0, 1); + bottomRight->setCoords(1, 0); + + setPen(Qt::NoPen); + setSelectedPen(QPen(Qt::blue)); + setScaled(false, Qt::KeepAspectRatio); +} + +QCPItemPixmap::~QCPItemPixmap() +{ +} + +/*! + Sets the pixmap that will be displayed. +*/ +void QCPItemPixmap::setPixmap(const QPixmap &pixmap) +{ + mPixmap = pixmap; + if (mPixmap.isNull()) + qDebug() << Q_FUNC_INFO << "pixmap is null"; +} + +/*! + Sets whether the pixmap will be scaled to fit the rectangle defined by the \a topLeft and \a + bottomRight positions. +*/ +void QCPItemPixmap::setScaled(bool scaled, Qt::AspectRatioMode aspectRatioMode) +{ + mScaled = scaled; + mAspectRatioMode = aspectRatioMode; + updateScaledPixmap(); +} + +/*! + Sets the pen that will be used to draw a border around the pixmap. + + \see setSelectedPen, setBrush +*/ +void QCPItemPixmap::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw a border around the pixmap when selected + + \see setPen, setSelected +*/ +void QCPItemPixmap::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/* inherits documentation from base class */ +double QCPItemPixmap::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + return rectSelectTest(getFinalRect(), pos, true); +} + +/* inherits documentation from base class */ +void QCPItemPixmap::draw(QCPPainter *painter) +{ + bool flipHorz = false; + bool flipVert = false; + QRect rect = getFinalRect(&flipHorz, &flipVert); + double clipPad = mainPen().style() == Qt::NoPen ? 0 : mainPen().widthF(); + QRect boundingRect = rect.adjusted(-clipPad, -clipPad, clipPad, clipPad); + if (boundingRect.intersects(clipRect())) + { + updateScaledPixmap(rect, flipHorz, flipVert); + painter->drawPixmap(rect.topLeft(), mScaled ? mScaledPixmap : mPixmap); + QPen pen = mainPen(); + if (pen.style() != Qt::NoPen) + { + painter->setPen(pen); + painter->setBrush(Qt::NoBrush); + painter->drawRect(rect); + } + } +} + +/* inherits documentation from base class */ +QPointF QCPItemPixmap::anchorPixelPoint(int anchorId) const +{ + bool flipHorz; + bool flipVert; + QRect rect = getFinalRect(&flipHorz, &flipVert); + // we actually want denormal rects (negative width/height) here, so restore + // the flipped state: + if (flipHorz) + rect.adjust(rect.width(), 0, -rect.width(), 0); + if (flipVert) + rect.adjust(0, rect.height(), 0, -rect.height()); + + switch (anchorId) + { + case aiTop: return (rect.topLeft()+rect.topRight())*0.5; + case aiTopRight: return rect.topRight(); + case aiRight: return (rect.topRight()+rect.bottomRight())*0.5; + case aiBottom: return (rect.bottomLeft()+rect.bottomRight())*0.5; + case aiBottomLeft: return rect.bottomLeft(); + case aiLeft: return (rect.topLeft()+rect.bottomLeft())*0.5;; + } + + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Creates the buffered scaled image (\a mScaledPixmap) to fit the specified \a finalRect. The + parameters \a flipHorz and \a flipVert control whether the resulting image shall be flipped + horizontally or vertically. (This is used when \a topLeft is further to the bottom/right than \a + bottomRight.) + + This function only creates the scaled pixmap when the buffered pixmap has a different size than + the expected result, so calling this function repeatedly, e.g. in the \ref draw function, does + not cause expensive rescaling every time. + + If scaling is disabled, sets mScaledPixmap to a null QPixmap. +*/ +void QCPItemPixmap::updateScaledPixmap(QRect finalRect, bool flipHorz, bool flipVert) +{ + if (mPixmap.isNull()) + return; + + if (mScaled) + { + if (finalRect.isNull()) + finalRect = getFinalRect(&flipHorz, &flipVert); + if (finalRect.size() != mScaledPixmap.size()) + { + mScaledPixmap = mPixmap.scaled(finalRect.size(), mAspectRatioMode, Qt::SmoothTransformation); + if (flipHorz || flipVert) + mScaledPixmap = QPixmap::fromImage(mScaledPixmap.toImage().mirrored(flipHorz, flipVert)); + } + } else if (!mScaledPixmap.isNull()) + mScaledPixmap = QPixmap(); +} + +/*! \internal + + Returns the final (tight) rect the pixmap is drawn in, depending on the current item positions + and scaling settings. + + The output parameters \a flippedHorz and \a flippedVert return whether the pixmap should be drawn + flipped horizontally or vertically in the returned rect. (The returned rect itself is always + normalized, i.e. the top left corner of the rect is actually further to the top/left than the + bottom right corner). This is the case when the item position \a topLeft is further to the + bottom/right than \a bottomRight. + + If scaling is disabled, returns a rect with size of the original pixmap and the top left corner + aligned with the item position \a topLeft. The position \a bottomRight is ignored. +*/ +QRect QCPItemPixmap::getFinalRect(bool *flippedHorz, bool *flippedVert) const +{ + QRect result; + bool flipHorz = false; + bool flipVert = false; + QPoint p1 = topLeft->pixelPoint().toPoint(); + QPoint p2 = bottomRight->pixelPoint().toPoint(); + if (p1 == p2) + return QRect(p1, QSize(0, 0)); + if (mScaled) + { + QSize newSize = QSize(p2.x()-p1.x(), p2.y()-p1.y()); + QPoint topLeft = p1; + if (newSize.width() < 0) + { + flipHorz = true; + newSize.rwidth() *= -1; + topLeft.setX(p2.x()); + } + if (newSize.height() < 0) + { + flipVert = true; + newSize.rheight() *= -1; + topLeft.setY(p2.y()); + } + QSize scaledSize = mPixmap.size(); + scaledSize.scale(newSize, mAspectRatioMode); + result = QRect(topLeft, scaledSize); + } else + { + result = QRect(p1, mPixmap.size()); + } + if (flippedHorz) + *flippedHorz = flipHorz; + if (flippedVert) + *flippedVert = flipVert; + return result; +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemPixmap::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemTracer +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemTracer + \brief Item that sticks to QCPGraph data points + + \image html QCPItemTracer.png "Tracer example. Blue dotted circles are anchors, solid blue discs are positions." + + The tracer can be connected with a QCPGraph via \ref setGraph. Then it will automatically adopt + the coordinate axes of the graph and update its \a position to be on the graph's data. This means + the key stays controllable via \ref setGraphKey, but the value will follow the graph data. If a + QCPGraph is connected, note that setting the coordinates of the tracer item directly via \a + position will have no effect because they will be overriden in the next redraw (this is when the + coordinate update happens). + + If the specified key in \ref setGraphKey is outside the key bounds of the graph, the tracer will + stay at the corresponding end of the graph. + + With \ref setInterpolating you may specify whether the tracer may only stay exactly on data + points or whether it interpolates data points linearly, if given a key that lies between two data + points of the graph. + + The tracer has different visual styles, see \ref setStyle. It is also possible to make the tracer + have no own visual appearance (set the style to \ref tsNone), and just connect other item + positions to the tracer \a position (used as an anchor) via \ref + QCPItemPosition::setParentAnchor. + + \note The tracer position is only automatically updated upon redraws. So when the data of the + graph changes and immediately afterwards (without a redraw) the a position coordinates of the + tracer are retrieved, they will not reflect the updated data of the graph. In this case \ref + updatePosition must be called manually, prior to reading the tracer coordinates. +*/ + +/*! + Creates a tracer item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemTracer::QCPItemTracer(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + position(createPosition("position")), + mGraph(0) +{ + position->setCoords(0, 0); + + setBrush(Qt::NoBrush); + setSelectedBrush(Qt::NoBrush); + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2)); + setStyle(tsCrosshair); + setSize(6); + setInterpolating(false); + setGraphKey(0); +} + +QCPItemTracer::~QCPItemTracer() +{ +} + +/*! + Sets the pen that will be used to draw the line of the tracer + + \see setSelectedPen, setBrush +*/ +void QCPItemTracer::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the line of the tracer when selected + + \see setPen, setSelected +*/ +void QCPItemTracer::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the brush that will be used to draw any fills of the tracer + + \see setSelectedBrush, setPen +*/ +void QCPItemTracer::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the brush that will be used to draw any fills of the tracer, when selected. + + \see setBrush, setSelected +*/ +void QCPItemTracer::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + Sets the size of the tracer in pixels, if the style supports setting a size (e.g. \ref tsSquare + does, \ref tsCrosshair does not). +*/ +void QCPItemTracer::setSize(double size) +{ + mSize = size; +} + +/*! + Sets the style/visual appearance of the tracer. + + If you only want to use the tracer \a position as an anchor for other items, set \a style to + \ref tsNone. +*/ +void QCPItemTracer::setStyle(QCPItemTracer::TracerStyle style) +{ + mStyle = style; +} + +/*! + Sets the QCPGraph this tracer sticks to. The tracer \a position will be set to type + QCPItemPosition::ptPlotCoords and the axes will be set to the axes of \a graph. + + To free the tracer from any graph, set \a graph to 0. The tracer \a position can then be placed + freely like any other item position. This is the state the tracer will assume when its graph gets + deleted while still attached to it. + + \see setGraphKey +*/ +void QCPItemTracer::setGraph(QCPGraph *graph) +{ + if (graph) + { + if (graph->parentPlot() == mParentPlot) + { + position->setType(QCPItemPosition::ptPlotCoords); + position->setAxes(graph->keyAxis(), graph->valueAxis()); + mGraph = graph; + updatePosition(); + } else + qDebug() << Q_FUNC_INFO << "graph isn't in same QCustomPlot instance as this item"; + } else + { + mGraph = 0; + } +} + +/*! + Sets the key of the graph's data point the tracer will be positioned at. This is the only free + coordinate of a tracer when attached to a graph. + + Depending on \ref setInterpolating, the tracer will be either positioned on the data point + closest to \a key, or will stay exactly at \a key and interpolate the value linearly. + + \see setGraph, setInterpolating +*/ +void QCPItemTracer::setGraphKey(double key) +{ + mGraphKey = key; +} + +/*! + Sets whether the value of the graph's data points shall be interpolated, when positioning the + tracer. + + If \a enabled is set to false and a key is given with \ref setGraphKey, the tracer is placed on + the data point of the graph which is closest to the key, but which is not necessarily exactly + there. If \a enabled is true, the tracer will be positioned exactly at the specified key, and + the appropriate value will be interpolated from the graph's data points linearly. + + \see setGraph, setGraphKey +*/ +void QCPItemTracer::setInterpolating(bool enabled) +{ + mInterpolating = enabled; +} + +/* inherits documentation from base class */ +double QCPItemTracer::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QPointF center(position->pixelPoint()); + double w = mSize/2.0; + QRect clip = clipRect(); + switch (mStyle) + { + case tsNone: return -1; + case tsPlus: + { + if (clipRect().intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + return qSqrt(qMin(distSqrToLine(center+QPointF(-w, 0), center+QPointF(w, 0), pos), + distSqrToLine(center+QPointF(0, -w), center+QPointF(0, w), pos))); + break; + } + case tsCrosshair: + { + return qSqrt(qMin(distSqrToLine(QPointF(clip.left(), center.y()), QPointF(clip.right(), center.y()), pos), + distSqrToLine(QPointF(center.x(), clip.top()), QPointF(center.x(), clip.bottom()), pos))); + } + case tsCircle: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + { + // distance to border: + double centerDist = QVector2D(center-pos).length(); + double circleLine = w; + double result = qAbs(centerDist-circleLine); + // filled ellipse, allow click inside to count as hit: + if (result > mParentPlot->selectionTolerance()*0.99 && mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0) + { + if (centerDist <= circleLine) + result = mParentPlot->selectionTolerance()*0.99; + } + return result; + } + break; + } + case tsSquare: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + { + QRectF rect = QRectF(center-QPointF(w, w), center+QPointF(w, w)); + bool filledRect = mBrush.style() != Qt::NoBrush && mBrush.color().alpha() != 0; + return rectSelectTest(rect, pos, filledRect); + } + break; + } + } + return -1; +} + +/* inherits documentation from base class */ +void QCPItemTracer::draw(QCPPainter *painter) +{ + updatePosition(); + if (mStyle == tsNone) + return; + + painter->setPen(mainPen()); + painter->setBrush(mainBrush()); + QPointF center(position->pixelPoint()); + double w = mSize/2.0; + QRect clip = clipRect(); + switch (mStyle) + { + case tsNone: return; + case tsPlus: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + { + painter->drawLine(QLineF(center+QPointF(-w, 0), center+QPointF(w, 0))); + painter->drawLine(QLineF(center+QPointF(0, -w), center+QPointF(0, w))); + } + break; + } + case tsCrosshair: + { + if (center.y() > clip.top() && center.y() < clip.bottom()) + painter->drawLine(QLineF(clip.left(), center.y(), clip.right(), center.y())); + if (center.x() > clip.left() && center.x() < clip.right()) + painter->drawLine(QLineF(center.x(), clip.top(), center.x(), clip.bottom())); + break; + } + case tsCircle: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + painter->drawEllipse(center, w, w); + break; + } + case tsSquare: + { + if (clip.intersects(QRectF(center-QPointF(w, w), center+QPointF(w, w)).toRect())) + painter->drawRect(QRectF(center-QPointF(w, w), center+QPointF(w, w))); + break; + } + } +} + +/*! + If the tracer is connected with a graph (\ref setGraph), this function updates the tracer's \a + position to reside on the graph data, depending on the configured key (\ref setGraphKey). + + It is called automatically on every redraw and normally doesn't need to be called manually. One + exception is when you want to read the tracer coordinates via \a position and are not sure that + the graph's data (or the tracer key with \ref setGraphKey) hasn't changed since the last redraw. + In that situation, call this function before accessing \a position, to make sure you don't get + out-of-date coordinates. + + If there is no graph set on this tracer, this function does nothing. +*/ +void QCPItemTracer::updatePosition() +{ + if (mGraph) + { + if (mParentPlot->hasPlottable(mGraph)) + { + if (mGraph->data()->size() > 1) + { + QCPDataMap::const_iterator first = mGraph->data()->constBegin(); + QCPDataMap::const_iterator last = mGraph->data()->constEnd()-1; + if (mGraphKey < first.key()) + position->setCoords(first.key(), first.value().value); + else if (mGraphKey > last.key()) + position->setCoords(last.key(), last.value().value); + else + { + QCPDataMap::const_iterator it = first; + it = mGraph->data()->lowerBound(mGraphKey); + if (it != first) // mGraphKey is somewhere between iterators + { + QCPDataMap::const_iterator prevIt = it-1; + if (mInterpolating) + { + // interpolate between iterators around mGraphKey: + double slope = (it.value().value-prevIt.value().value)/(it.key()-prevIt.key()); + position->setCoords(mGraphKey, (mGraphKey-prevIt.key())*slope+prevIt.value().value); + } else + { + // find iterator with key closest to mGraphKey: + if (mGraphKey < (prevIt.key()+it.key())*0.5) + it = prevIt; + position->setCoords(it.key(), it.value().value); + } + } else // mGraphKey is exactly on first iterator + position->setCoords(it.key(), it.value().value); + } + } else if (mGraph->data()->size() == 1) + { + QCPDataMap::const_iterator it = mGraph->data()->constBegin(); + position->setCoords(it.key(), it.value().value); + } else + qDebug() << Q_FUNC_INFO << "graph has no data"; + } else + qDebug() << Q_FUNC_INFO << "graph not contained in QCustomPlot instance (anymore)"; + } +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the item is not selected + and mSelectedPen when it is. +*/ +QPen QCPItemTracer::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + +/*! \internal + + Returns the brush that should be used for drawing fills of the item. Returns mBrush when the item + is not selected and mSelectedBrush when it is. +*/ +QBrush QCPItemTracer::mainBrush() const +{ + return mSelected ? mSelectedBrush : mBrush; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPItemBracket +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPItemBracket + \brief A bracket for referencing/highlighting certain parts in the plot. + + \image html QCPItemBracket.png "Bracket example. Blue dotted circles are anchors, solid blue discs are positions." + + It has two positions, \a left and \a right, which define the span of the bracket. If \a left is + actually farther to the left than \a right, the bracket is opened to the bottom, as shown in the + example image. + + The bracket supports multiple styles via \ref setStyle. The length, i.e. how far the bracket + stretches away from the embraced span, can be controlled with \ref setLength. + + \image html QCPItemBracket-length.png +
Demonstrating the effect of different values for \ref setLength, for styles \ref + bsCalligraphic and \ref bsSquare. Anchors and positions are displayed for reference.
+ + It provides an anchor \a center, to allow connection of other items, e.g. an arrow (QCPItemLine + or QCPItemCurve) or a text label (QCPItemText), to the bracket. +*/ + +/*! + Creates a bracket item and sets default values. + + The constructed item can be added to the plot with QCustomPlot::addItem. +*/ +QCPItemBracket::QCPItemBracket(QCustomPlot *parentPlot) : + QCPAbstractItem(parentPlot), + left(createPosition("left")), + right(createPosition("right")), + center(createAnchor("center", aiCenter)) +{ + left->setCoords(0, 0); + right->setCoords(1, 1); + + setPen(QPen(Qt::black)); + setSelectedPen(QPen(Qt::blue, 2)); + setLength(8); + setStyle(bsCalligraphic); +} + +QCPItemBracket::~QCPItemBracket() +{ +} + +/*! + Sets the pen that will be used to draw the bracket. + + Note that when the style is \ref bsCalligraphic, only the color will be taken from the pen, the + stroke and width are ignored. To change the apparent stroke width of a calligraphic bracket, use + \ref setLength, which has a similar effect. + + \see setSelectedPen +*/ +void QCPItemBracket::setPen(const QPen &pen) +{ + mPen = pen; +} + +/*! + Sets the pen that will be used to draw the bracket when selected + + \see setPen, setSelected +*/ +void QCPItemBracket::setSelectedPen(const QPen &pen) +{ + mSelectedPen = pen; +} + +/*! + Sets the \a length in pixels how far the bracket extends in the direction towards the embraced + span of the bracket (i.e. perpendicular to the left-right-direction) + + \image html QCPItemBracket-length.png +
Demonstrating the effect of different values for \ref setLength, for styles \ref + bsCalligraphic and \ref bsSquare. Anchors and positions are displayed for reference.
+*/ +void QCPItemBracket::setLength(double length) +{ + mLength = length; +} + +/*! + Sets the style of the bracket, i.e. the shape/visual appearance. + + \see setPen +*/ +void QCPItemBracket::setStyle(QCPItemBracket::BracketStyle style) +{ + mStyle = style; +} + +/* inherits documentation from base class */ +double QCPItemBracket::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + QVector2D leftVec(left->pixelPoint()); + QVector2D rightVec(right->pixelPoint()); + if (leftVec.toPoint() == rightVec.toPoint()) + return -1; + + QVector2D widthVec = (rightVec-leftVec)*0.5; + QVector2D lengthVec(-widthVec.y(), widthVec.x()); + lengthVec = lengthVec.normalized()*mLength; + QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; + + return qSqrt(distSqrToLine((centerVec-widthVec).toPointF(), (centerVec+widthVec).toPointF(), pos)); +} + +/* inherits documentation from base class */ +void QCPItemBracket::draw(QCPPainter *painter) +{ + QVector2D leftVec(left->pixelPoint()); + QVector2D rightVec(right->pixelPoint()); + if (leftVec.toPoint() == rightVec.toPoint()) + return; + + QVector2D widthVec = (rightVec-leftVec)*0.5; + QVector2D lengthVec(-widthVec.y(), widthVec.x()); + lengthVec = lengthVec.normalized()*mLength; + QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; + + QPolygon boundingPoly; + boundingPoly << leftVec.toPoint() << rightVec.toPoint() + << (rightVec-lengthVec).toPoint() << (leftVec-lengthVec).toPoint(); + QRect clip = clipRect().adjusted(-mainPen().widthF(), -mainPen().widthF(), mainPen().widthF(), mainPen().widthF()); + if (clip.intersects(boundingPoly.boundingRect())) + { + painter->setPen(mainPen()); + switch (mStyle) + { + case bsSquare: + { + painter->drawLine((centerVec+widthVec).toPointF(), (centerVec-widthVec).toPointF()); + painter->drawLine((centerVec+widthVec).toPointF(), (centerVec+widthVec+lengthVec).toPointF()); + painter->drawLine((centerVec-widthVec).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + break; + } + case bsRound: + { + painter->setBrush(Qt::NoBrush); + QPainterPath path; + path.moveTo((centerVec+widthVec+lengthVec).toPointF()); + path.cubicTo((centerVec+widthVec).toPointF(), (centerVec+widthVec).toPointF(), centerVec.toPointF()); + path.cubicTo((centerVec-widthVec).toPointF(), (centerVec-widthVec).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + painter->drawPath(path); + break; + } + case bsCurly: + { + painter->setBrush(Qt::NoBrush); + QPainterPath path; + path.moveTo((centerVec+widthVec+lengthVec).toPointF()); + path.cubicTo((centerVec+widthVec*1-lengthVec*0.8).toPointF(), (centerVec+0.4*widthVec+1*lengthVec).toPointF(), centerVec.toPointF()); + path.cubicTo((centerVec-0.4*widthVec+1*lengthVec).toPointF(), (centerVec-widthVec*1-lengthVec*0.8).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + painter->drawPath(path); + break; + } + case bsCalligraphic: + { + painter->setPen(Qt::NoPen); + painter->setBrush(QBrush(mainPen().color())); + QPainterPath path; + path.moveTo((centerVec+widthVec+lengthVec).toPointF()); + + path.cubicTo((centerVec+widthVec*1-lengthVec*0.8).toPointF(), (centerVec+0.4*widthVec+0.8*lengthVec).toPointF(), centerVec.toPointF()); + path.cubicTo((centerVec-0.4*widthVec+0.8*lengthVec).toPointF(), (centerVec-widthVec*1-lengthVec*0.8).toPointF(), (centerVec-widthVec+lengthVec).toPointF()); + + path.cubicTo((centerVec-widthVec*1-lengthVec*0.5).toPointF(), (centerVec-0.2*widthVec+1.2*lengthVec).toPointF(), (centerVec+lengthVec*0.2).toPointF()); + path.cubicTo((centerVec+0.2*widthVec+1.2*lengthVec).toPointF(), (centerVec+widthVec*1-lengthVec*0.5).toPointF(), (centerVec+widthVec+lengthVec).toPointF()); + + painter->drawPath(path); + break; + } + } + } +} + +/* inherits documentation from base class */ +QPointF QCPItemBracket::anchorPixelPoint(int anchorId) const +{ + QVector2D leftVec(left->pixelPoint()); + QVector2D rightVec(right->pixelPoint()); + if (leftVec.toPoint() == rightVec.toPoint()) + return leftVec.toPointF(); + + QVector2D widthVec = (rightVec-leftVec)*0.5; + QVector2D lengthVec(-widthVec.y(), widthVec.x()); + lengthVec = lengthVec.normalized()*mLength; + QVector2D centerVec = (rightVec+leftVec)*0.5-lengthVec; + + switch (anchorId) + { + case aiCenter: + return centerVec.toPointF(); + } + qDebug() << Q_FUNC_INFO << "invalid anchorId" << anchorId; + return QPointF(); +} + +/*! \internal + + Returns the pen that should be used for drawing lines. Returns mPen when the + item is not selected and mSelectedPen when it is. +*/ +QPen QCPItemBracket::mainPen() const +{ + return mSelected ? mSelectedPen : mPen; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAxisRect +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAxisRect + \brief Holds multiple axes and arranges them in a rectangular shape. + + This class represents an axis rect, a rectangular area that is bounded on all sides with an + arbitrary number of axes. + + Initially QCustomPlot has one axis rect, accessible via QCustomPlot::axisRect(). However, the + layout system allows to have multiple axis rects, e.g. arranged in a grid layout + (QCustomPlot::plotLayout). + + By default, QCPAxisRect comes with four axes, at bottom, top, left and right. They can be + accessed via \ref axis by providing the respective axis type (\ref QCPAxis::AxisType) and index. + If you need all axes in the axis rect, use \ref axes. The top and right axes are set to be + invisible initially (QCPAxis::setVisible). To add more axes to a side, use \ref addAxis or \ref + addAxes. To remove an axis, use \ref removeAxis. + + The axis rect layerable itself only draws a background pixmap or color, if specified (\ref + setBackground). It is placed on the "background" layer initially (see \ref QCPLayer for an + explanation of the QCustomPlot layer system). The axes that are held by the axis rect can be + placed on other layers, independently of the axis rect. + + Every axis rect has a child layout of type \ref QCPLayoutInset. It is accessible via \ref + insetLayout and can be used to have other layout elements (or even other layouts with multiple + elements) hovering inside the axis rect. + + If an axis rect is clicked and dragged, it processes this by moving certain axis ranges. The + behaviour can be controlled with \ref setRangeDrag and \ref setRangeDragAxes. If the mouse wheel + is scrolled while the cursor is on the axis rect, certain axes are scaled. This is controllable + via \ref setRangeZoom, \ref setRangeZoomAxes and \ref setRangeZoomFactor. These interactions are + only enabled if \ref QCustomPlot::setInteractions contains \ref QCP::iRangeDrag and \ref + QCP::iRangeZoom. + + \image html AxisRectSpacingOverview.png +
Overview of the spacings and paddings that define the geometry of an axis. The dashed + line on the far left indicates the viewport/widget border.
+*/ + +/* start documentation of inline functions */ + +/*! \fn QCPLayoutInset *QCPAxisRect::insetLayout() const + + Returns the inset layout of this axis rect. It can be used to place other layout elements (or + even layouts with multiple other elements) inside/on top of an axis rect. + + \see QCPLayoutInset +*/ + +/*! \fn int QCPAxisRect::left() const + + Returns the pixel position of the left border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::right() const + + Returns the pixel position of the right border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::top() const + + Returns the pixel position of the top border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::bottom() const + + Returns the pixel position of the bottom border of this axis rect. Margins are not taken into + account here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::width() const + + Returns the pixel width of this axis rect. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/*! \fn int QCPAxisRect::height() const + + Returns the pixel height of this axis rect. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QSize QCPAxisRect::size() const + + Returns the pixel size of this axis rect. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::topLeft() const + + Returns the top left corner of this axis rect in pixels. Margins are not taken into account here, + so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::topRight() const + + Returns the top right corner of this axis rect in pixels. Margins are not taken into account + here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::bottomLeft() const + + Returns the bottom left corner of this axis rect in pixels. Margins are not taken into account + here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::bottomRight() const + + Returns the bottom right corner of this axis rect in pixels. Margins are not taken into account + here, so the returned value is with respect to the inner \ref rect. +*/ + +/*! \fn QPoint QCPAxisRect::center() const + + Returns the center of this axis rect in pixels. Margins are not taken into account here, so the + returned value is with respect to the inner \ref rect. +*/ + +/* end documentation of inline functions */ + +/*! + Creates a QCPAxisRect instance and sets default values. An axis is added for each of the four + sides, the top and right axes are set invisible initially. +*/ +QCPAxisRect::QCPAxisRect(QCustomPlot *parentPlot, bool setupDefaultAxes) : + QCPLayoutElement(parentPlot), + mBackgroundBrush(Qt::NoBrush), + mBackgroundScaled(true), + mBackgroundScaledMode(Qt::KeepAspectRatioByExpanding), + mInsetLayout(new QCPLayoutInset), + mRangeDrag(Qt::Horizontal|Qt::Vertical), + mRangeZoom(Qt::Horizontal|Qt::Vertical), + mRangeZoomFactorHorz(0.85), + mRangeZoomFactorVert(0.85), + mDragging(false) +{ + mInsetLayout->initializeParentPlot(mParentPlot); + mInsetLayout->setParentLayerable(this); + mInsetLayout->setParent(this); + + setMinimumSize(50, 50); + setMinimumMargins(QMargins(15, 15, 15, 15)); + mAxes.insert(QCPAxis::atLeft, QList()); + mAxes.insert(QCPAxis::atRight, QList()); + mAxes.insert(QCPAxis::atTop, QList()); + mAxes.insert(QCPAxis::atBottom, QList()); + + if (setupDefaultAxes) + { + QCPAxis *xAxis = addAxis(QCPAxis::atBottom); + QCPAxis *yAxis = addAxis(QCPAxis::atLeft); + QCPAxis *xAxis2 = addAxis(QCPAxis::atTop); + QCPAxis *yAxis2 = addAxis(QCPAxis::atRight); + setRangeDragAxes(xAxis, yAxis); + setRangeZoomAxes(xAxis, yAxis); + xAxis2->setVisible(false); + yAxis2->setVisible(false); + xAxis->grid()->setVisible(true); + yAxis->grid()->setVisible(true); + xAxis2->grid()->setVisible(false); + yAxis2->grid()->setVisible(false); + xAxis2->grid()->setZeroLinePen(Qt::NoPen); + yAxis2->grid()->setZeroLinePen(Qt::NoPen); + xAxis2->grid()->setVisible(false); + yAxis2->grid()->setVisible(false); + } +} + +QCPAxisRect::~QCPAxisRect() +{ + delete mInsetLayout; + mInsetLayout = 0; + + QList axesList = axes(); + for (int i=0; i ax(mAxes.value(type)); + if (index >= 0 && index < ax.size()) + { + return ax.at(index); + } else + { + qDebug() << Q_FUNC_INFO << "Axis index out of bounds:" << index; + return 0; + } +} + +/*! + Returns all axes on the axis rect sides specified with \a types. + + \a types may be a single \ref QCPAxis::AxisType or an or-combination, to get the axes of + multiple sides. + + \see axis +*/ +QList QCPAxisRect::axes(QCPAxis::AxisTypes types) const +{ + QList result; + if (types.testFlag(QCPAxis::atLeft)) + result << mAxes.value(QCPAxis::atLeft); + if (types.testFlag(QCPAxis::atRight)) + result << mAxes.value(QCPAxis::atRight); + if (types.testFlag(QCPAxis::atTop)) + result << mAxes.value(QCPAxis::atTop); + if (types.testFlag(QCPAxis::atBottom)) + result << mAxes.value(QCPAxis::atBottom); + return result; +} + +/*! \overload + + Returns all axes of this axis rect. +*/ +QList QCPAxisRect::axes() const +{ + QList result; + QHashIterator > it(mAxes); + while (it.hasNext()) + { + it.next(); + result << it.value(); + } + return result; +} + +/*! + Adds a new axis to the axis rect side specified with \a type, and returns it. + + If an axis rect side already contains one or more axes, the lower and upper endings of the new + axis (\ref QCPAxis::setLowerEnding, \ref QCPAxis::setUpperEnding) are initialized to \ref + QCPLineEnding::esHalfBar. + + \see addAxes, setupFullAxesBox +*/ +QCPAxis *QCPAxisRect::addAxis(QCPAxis::AxisType type) +{ + QCPAxis *newAxis = new QCPAxis(this, type); + if (mAxes[type].size() > 0) // multiple axes on one side, add half-bar axis ending to additional axes with offset + { + bool invert = (type == QCPAxis::atRight) || (type == QCPAxis::atBottom); + newAxis->setLowerEnding(QCPLineEnding(QCPLineEnding::esHalfBar, 6, 10, !invert)); + newAxis->setUpperEnding(QCPLineEnding(QCPLineEnding::esHalfBar, 6, 10, invert)); + } + mAxes[type].append(newAxis); + return newAxis; +} + +/*! + Adds a new axis with \ref addAxis to each axis rect side specified in \a types. This may be an + or-combination of QCPAxis::AxisType, so axes can be added to multiple sides at once. + + Returns a list of the added axes. + + \see addAxis, setupFullAxesBox +*/ +QList QCPAxisRect::addAxes(QCPAxis::AxisTypes types) +{ + QList result; + if (types.testFlag(QCPAxis::atLeft)) + result << addAxis(QCPAxis::atLeft); + if (types.testFlag(QCPAxis::atRight)) + result << addAxis(QCPAxis::atRight); + if (types.testFlag(QCPAxis::atTop)) + result << addAxis(QCPAxis::atTop); + if (types.testFlag(QCPAxis::atBottom)) + result << addAxis(QCPAxis::atBottom); + return result; +} + +/*! + Removes the specified \a axis from the axis rect and deletes it. + + Returns true on success, i.e. if \a axis was a valid axis in this axis rect. + + \see addAxis +*/ +bool QCPAxisRect::removeAxis(QCPAxis *axis) +{ + // don't access axis->axisType() to provide safety when axis is an invalid pointer, rather go through all axis containers: + QHashIterator > it(mAxes); + while (it.hasNext()) + { + it.next(); + if (it.value().contains(axis)) + { + mAxes[it.key()].removeOne(axis); + if (qobject_cast(parentPlot())) // make sure this isn't called from QObject dtor when QCustomPlot is already destructed (happens when the axis rect is not in any layout and thus QObject-child of QCustomPlot) + parentPlot()->axisRemoved(axis); + delete axis; + return true; + } + } + qDebug() << Q_FUNC_INFO << "Axis isn't in axis rect:" << reinterpret_cast(axis); + return false; +} + +/*! + Convenience function to create an axis on each side that doesn't have any axes yet, and assign + the top/right axes the following properties of the bottom/left axes (even if they already existed + and weren't created by this function): + + \li range (\ref QCPAxis::setRange) + \li range reversed (\ref QCPAxis::setRangeReversed) + \li scale type (\ref QCPAxis::setScaleType) + \li scale log base (\ref QCPAxis::setScaleLogBase) + \li ticks (\ref QCPAxis::setTicks) + \li auto (major) tick count (\ref QCPAxis::setAutoTickCount) + \li sub tick count (\ref QCPAxis::setSubTickCount) + \li auto sub ticks (\ref QCPAxis::setAutoSubTicks) + \li tick step (\ref QCPAxis::setTickStep) + \li auto tick step (\ref QCPAxis::setAutoTickStep) + + Tick labels (\ref QCPAxis::setTickLabels) of the right and top axes are set to false. + + If \a connectRanges is true, the rangeChanged signals of the bottom and left axes are connected + to the \ref QCPAxis::setRange slots of the top and right axes. +*/ +void QCPAxisRect::setupFullAxesBox(bool connectRanges) +{ + QCPAxis *xAxis, *yAxis, *xAxis2, *yAxis2; + if (axisCount(QCPAxis::atBottom) == 0) + xAxis = addAxis(QCPAxis::atBottom); + else + xAxis = axis(QCPAxis::atBottom); + + if (axisCount(QCPAxis::atLeft) == 0) + yAxis = addAxis(QCPAxis::atLeft); + else + yAxis = axis(QCPAxis::atLeft); + + if (axisCount(QCPAxis::atTop) == 0) + xAxis2 = addAxis(QCPAxis::atTop); + else + xAxis2 = axis(QCPAxis::atTop); + + if (axisCount(QCPAxis::atRight) == 0) + yAxis2 = addAxis(QCPAxis::atRight); + else + yAxis2 = axis(QCPAxis::atRight); + + xAxis2->setVisible(true); + xAxis2->setTickLabels(false); + if (xAxis) + { + xAxis2->setAutoSubTicks(xAxis->autoSubTicks()); + xAxis2->setAutoTickCount(xAxis->autoTickCount()); + xAxis2->setAutoTickStep(xAxis->autoTickStep()); + xAxis2->setScaleType(xAxis->scaleType()); + xAxis2->setScaleLogBase(xAxis->scaleLogBase()); + xAxis2->setTicks(xAxis->ticks()); + xAxis2->setSubTickCount(xAxis->subTickCount()); + xAxis2->setTickStep(xAxis->tickStep()); + xAxis2->setRange(xAxis->range()); + xAxis2->setRangeReversed(xAxis->rangeReversed()); + } + + yAxis2->setVisible(true); + yAxis2->setTickLabels(false); + if (yAxis) + { + yAxis2->setAutoSubTicks(yAxis->autoSubTicks()); + yAxis2->setAutoTickCount(yAxis->autoTickCount()); + yAxis2->setAutoTickStep(yAxis->autoTickStep()); + yAxis2->setScaleType(yAxis->scaleType()); + yAxis2->setScaleLogBase(yAxis->scaleLogBase()); + yAxis2->setTicks(yAxis->ticks()); + yAxis2->setSubTickCount(yAxis->subTickCount()); + yAxis2->setTickStep(yAxis->tickStep()); + yAxis2->setRange(yAxis->range()); + yAxis2->setRangeReversed(yAxis->rangeReversed()); + } + + if (connectRanges) + { + connect(xAxis, SIGNAL(rangeChanged(QCPRange)), xAxis2, SLOT(setRange(QCPRange))); + connect(yAxis, SIGNAL(rangeChanged(QCPRange)), yAxis2, SLOT(setRange(QCPRange))); + } +} + +/*! + Returns a list of all the plottables that are associated with this axis rect. + + A plottable is considered associated with an axis rect if its key or value axis (or both) is in + this axis rect. + + \see graphs, items +*/ +QList QCPAxisRect::plottables() const +{ + // Note: don't append all QCPAxis::plottables() into a list, because we might get duplicate entries + QList result; + for (int i=0; imPlottables.size(); ++i) + { + if (mParentPlot->mPlottables.at(i)->keyAxis()->axisRect() == this ||mParentPlot->mPlottables.at(i)->valueAxis()->axisRect() == this) + result.append(mParentPlot->mPlottables.at(i)); + } + return result; +} + +/*! + Returns a list of all the graphs that are associated with this axis rect. + + A graph is considered associated with an axis rect if its key or value axis (or both) is in + this axis rect. + + \see plottables, items +*/ +QList QCPAxisRect::graphs() const +{ + // Note: don't append all QCPAxis::graphs() into a list, because we might get duplicate entries + QList result; + for (int i=0; imGraphs.size(); ++i) + { + if (mParentPlot->mGraphs.at(i)->keyAxis()->axisRect() == this || mParentPlot->mGraphs.at(i)->valueAxis()->axisRect() == this) + result.append(mParentPlot->mGraphs.at(i)); + } + return result; +} + +/*! + Returns a list of all the items that are associated with this axis rect. + + An item is considered associated with an axis rect if any of its positions has key or value axis + set to an axis that is in this axis rect, or if any of its positions has \ref + QCPItemPosition::setAxisRect set to the axis rect, or if the clip axis rect (\ref + QCPAbstractItem::setClipAxisRect) is set to this axis rect. + + \see plottables, graphs +*/ +QList QCPAxisRect::items() const +{ + // Note: don't just append all QCPAxis::items() into a list, because we might get duplicate entries + // and miss those items that have this axis rect as clipAxisRect. + QList result; + for (int itemId=0; itemIdmItems.size(); ++itemId) + { + if (mParentPlot->mItems.at(itemId)->clipAxisRect() == this) + { + result.append(mParentPlot->mItems.at(itemId)); + continue; + } + QList positions = mParentPlot->mItems.at(itemId)->positions(); + for (int posId=0; posIdaxisRect() == this || + positions.at(posId)->keyAxis()->axisRect() == this || + positions.at(posId)->valueAxis()->axisRect() == this) + { + result.append(mParentPlot->mItems.at(itemId)); + break; + } + } + } + return result; +} + +/*! + This method is called automatically upon replot and doesn't need to be called by users of + QCPAxisRect. + + Calls the base class implementation to update the margins (see \ref QCPLayoutElement::update), + and finally passes the \ref rect to the inset layout (\ref insetLayout) and calls its + QCPInsetLayout::update function. +*/ +void QCPAxisRect::update() +{ + QCPLayoutElement::update(); + + // pass update call on to inset layout (doesn't happen automatically, because QCPAxisRect doesn't derive from QCPLayout): + mInsetLayout->setOuterRect(rect()); + mInsetLayout->update(); +} + +/* inherits documentation from base class */ +QList QCPAxisRect::elements(bool recursive) const +{ + QList result; + if (mInsetLayout) + { + result << mInsetLayout; + if (recursive) + result << mInsetLayout->elements(recursive); + } + return result; +} + +/* inherits documentation from base class */ +void QCPAxisRect::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + painter->setAntialiasing(false); +} + +/* inherits documentation from base class */ +void QCPAxisRect::draw(QCPPainter *painter) +{ + drawBackground(painter); +} + +/*! + Sets \a pm as the axis background pixmap. The axis background pixmap will be drawn inside the + axis rect. Since axis rects place themselves on the "background" layer by default, the axis rect + backgrounds are usually drawn below everything else. + + For cases where the provided pixmap doesn't have the same size as the axis rect, scaling can be + enabled with \ref setBackgroundScaled and the scaling mode (i.e. whether and how the aspect ratio + is preserved) can be set with \ref setBackgroundScaledMode. To set all these options in one call, + consider using the overloaded version of this function. + + Below the pixmap, the axis rect may be optionally filled with a brush, if specified with \ref + setBackground(const QBrush &brush). + + \see setBackgroundScaled, setBackgroundScaledMode, setBackground(const QBrush &brush) +*/ +void QCPAxisRect::setBackground(const QPixmap &pm) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); +} + +/*! \overload + + Sets \a brush as the background brush. The axis rect background will be filled with this brush. + Since axis rects place themselves on the "background" layer by default, the axis rect backgrounds + are usually drawn below everything else. + + The brush will be drawn before (under) any background pixmap, which may be specified with \ref + setBackground(const QPixmap &pm). + + To disable drawing of a background brush, set \a brush to Qt::NoBrush. + + \see setBackground(const QPixmap &pm) +*/ +void QCPAxisRect::setBackground(const QBrush &brush) +{ + mBackgroundBrush = brush; +} + +/*! \overload + + Allows setting the background pixmap of the axis rect, whether it shall be scaled and how it + shall be scaled in one call. + + \see setBackground(const QPixmap &pm), setBackgroundScaled, setBackgroundScaledMode +*/ +void QCPAxisRect::setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode) +{ + mBackgroundPixmap = pm; + mScaledBackgroundPixmap = QPixmap(); + mBackgroundScaled = scaled; + mBackgroundScaledMode = mode; +} + +/*! + Sets whether the axis background pixmap shall be scaled to fit the axis rect or not. If \a scaled + is set to true, you may control whether and how the aspect ratio of the original pixmap is + preserved with \ref setBackgroundScaledMode. + + Note that the scaled version of the original pixmap is buffered, so there is no performance + penalty on replots. (Except when the axis rect dimensions are changed continuously.) + + \see setBackground, setBackgroundScaledMode +*/ +void QCPAxisRect::setBackgroundScaled(bool scaled) +{ + mBackgroundScaled = scaled; +} + +/*! + If scaling of the axis background pixmap is enabled (\ref setBackgroundScaled), use this function to + define whether and how the aspect ratio of the original pixmap passed to \ref setBackground is preserved. + \see setBackground, setBackgroundScaled +*/ +void QCPAxisRect::setBackgroundScaledMode(Qt::AspectRatioMode mode) +{ + mBackgroundScaledMode = mode; +} + +/*! + Returns the range drag axis of the \a orientation provided. + + \see setRangeDragAxes +*/ +QCPAxis *QCPAxisRect::rangeDragAxis(Qt::Orientation orientation) +{ + return (orientation == Qt::Horizontal ? mRangeDragHorzAxis.data() : mRangeDragVertAxis.data()); +} + +/*! + Returns the range zoom axis of the \a orientation provided. + + \see setRangeZoomAxes +*/ +QCPAxis *QCPAxisRect::rangeZoomAxis(Qt::Orientation orientation) +{ + return (orientation == Qt::Horizontal ? mRangeZoomHorzAxis.data() : mRangeZoomVertAxis.data()); +} + +/*! + Returns the range zoom factor of the \a orientation provided. + + \see setRangeZoomFactor +*/ +double QCPAxisRect::rangeZoomFactor(Qt::Orientation orientation) +{ + return (orientation == Qt::Horizontal ? mRangeZoomFactorHorz : mRangeZoomFactorVert); +} + +/*! + Sets which axis orientation may be range dragged by the user with mouse interaction. + What orientation corresponds to which specific axis can be set with + \ref setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical). By + default, the horizontal axis is the bottom axis (xAxis) and the vertical axis + is the left axis (yAxis). + + To disable range dragging entirely, pass 0 as \a orientations or remove \ref QCP::iRangeDrag from \ref + QCustomPlot::setInteractions. To enable range dragging for both directions, pass Qt::Horizontal | + Qt::Vertical as \a orientations. + + In addition to setting \a orientations to a non-zero value, make sure \ref QCustomPlot::setInteractions + contains \ref QCP::iRangeDrag to enable the range dragging interaction. + + \see setRangeZoom, setRangeDragAxes, setNoAntialiasingOnDrag +*/ +void QCPAxisRect::setRangeDrag(Qt::Orientations orientations) +{ + mRangeDrag = orientations; +} + +/*! + Sets which axis orientation may be zoomed by the user with the mouse wheel. What orientation + corresponds to which specific axis can be set with \ref setRangeZoomAxes(QCPAxis *horizontal, + QCPAxis *vertical). By default, the horizontal axis is the bottom axis (xAxis) and the vertical + axis is the left axis (yAxis). + + To disable range zooming entirely, pass 0 as \a orientations or remove \ref QCP::iRangeZoom from \ref + QCustomPlot::setInteractions. To enable range zooming for both directions, pass Qt::Horizontal | + Qt::Vertical as \a orientations. + + In addition to setting \a orientations to a non-zero value, make sure \ref QCustomPlot::setInteractions + contains \ref QCP::iRangeZoom to enable the range zooming interaction. + + \see setRangeZoomFactor, setRangeZoomAxes, setRangeDrag +*/ +void QCPAxisRect::setRangeZoom(Qt::Orientations orientations) +{ + mRangeZoom = orientations; +} + +/*! + Sets the axes whose range will be dragged when \ref setRangeDrag enables mouse range dragging + on the QCustomPlot widget. + + \see setRangeZoomAxes +*/ +void QCPAxisRect::setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical) +{ + mRangeDragHorzAxis = horizontal; + mRangeDragVertAxis = vertical; +} + +/*! + Sets the axes whose range will be zoomed when \ref setRangeZoom enables mouse wheel zooming on the + QCustomPlot widget. The two axes can be zoomed with different strengths, when different factors + are passed to \ref setRangeZoomFactor(double horizontalFactor, double verticalFactor). + + \see setRangeDragAxes +*/ +void QCPAxisRect::setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical) +{ + mRangeZoomHorzAxis = horizontal; + mRangeZoomVertAxis = vertical; +} + +/*! + Sets how strong one rotation step of the mouse wheel zooms, when range zoom was activated with + \ref setRangeZoom. The two parameters \a horizontalFactor and \a verticalFactor provide a way to + let the horizontal axis zoom at different rates than the vertical axis. Which axis is horizontal + and which is vertical, can be set with \ref setRangeZoomAxes. + + When the zoom factor is greater than one, scrolling the mouse wheel backwards (towards the user) + will zoom in (make the currently visible range smaller). For zoom factors smaller than one, the + same scrolling direction will zoom out. +*/ +void QCPAxisRect::setRangeZoomFactor(double horizontalFactor, double verticalFactor) +{ + mRangeZoomFactorHorz = horizontalFactor; + mRangeZoomFactorVert = verticalFactor; +} + +/*! \overload + + Sets both the horizontal and vertical zoom \a factor. +*/ +void QCPAxisRect::setRangeZoomFactor(double factor) +{ + mRangeZoomFactorHorz = factor; + mRangeZoomFactorVert = factor; +} + +/*! \internal + + Draws the background of this axis rect. It may consist of a background fill (a QBrush) and a + pixmap. + + If a brush was given via \ref setBackground(const QBrush &brush), this function first draws an + according filling inside the axis rect with the provided \a painter. + + Then, if a pixmap was provided via \ref setBackground, this function buffers the scaled version + depending on \ref setBackgroundScaled and \ref setBackgroundScaledMode and then draws it inside + the axis rect with the provided \a painter. The scaled version is buffered in + mScaledBackgroundPixmap to prevent expensive rescaling at every redraw. It is only updated, when + the axis rect has changed in a way that requires a rescale of the background pixmap (this is + dependant on the \ref setBackgroundScaledMode), or when a differend axis backgroud pixmap was + set. + + \see setBackground, setBackgroundScaled, setBackgroundScaledMode +*/ +void QCPAxisRect::drawBackground(QCPPainter *painter) +{ + // draw background fill: + if (mBackgroundBrush != Qt::NoBrush) + painter->fillRect(mRect, mBackgroundBrush); + + // draw background pixmap (on top of fill, if brush specified): + if (!mBackgroundPixmap.isNull()) + { + if (mBackgroundScaled) + { + // check whether mScaledBackground needs to be updated: + QSize scaledSize(mBackgroundPixmap.size()); + scaledSize.scale(mRect.size(), mBackgroundScaledMode); + if (mScaledBackgroundPixmap.size() != scaledSize) + mScaledBackgroundPixmap = mBackgroundPixmap.scaled(mRect.size(), mBackgroundScaledMode, Qt::SmoothTransformation); + painter->drawPixmap(mRect.topLeft(), mScaledBackgroundPixmap, QRect(0, 0, mRect.width(), mRect.height()) & mScaledBackgroundPixmap.rect()); + } else + { + painter->drawPixmap(mRect.topLeft(), mBackgroundPixmap, QRect(0, 0, mRect.width(), mRect.height())); + } + } +} + +/*! \internal + + This function makes sure multiple axes on the side specified with \a type don't collide, but are + distributed according to their respective space requirement (QCPAxis::calculateMargin). + + It does this by setting an appropriate offset (\ref QCPAxis::setOffset) on all axes except the + one with index zero. + + This function is called by \ref calculateAutoMargin. +*/ +void QCPAxisRect::updateAxesOffset(QCPAxis::AxisType type) +{ + const QList axesList = mAxes.value(type); + for (int i=1; isetOffset(axesList.at(i-1)->offset() + axesList.at(i-1)->calculateMargin() + axesList.at(i)->tickLengthIn()); +} + +/* inherits documentation from base class */ +int QCPAxisRect::calculateAutoMargin(QCP::MarginSide side) +{ + if (!mAutoMargins.testFlag(side)) + qDebug() << Q_FUNC_INFO << "Called with side that isn't specified as auto margin"; + + updateAxesOffset(QCPAxis::marginSideToAxisType(side)); + + // note: only need to look at the last (outer most) axis to determine the total margin, due to updateAxisOffset call + const QList axesList = mAxes.value(QCPAxis::marginSideToAxisType(side)); + if (axesList.size() > 0) + return axesList.last()->offset() + axesList.last()->calculateMargin(); + else + return 0; +} + +/*! \internal + + Event handler for when a mouse button is pressed on the axis rect. If the left mouse button is + pressed, the range dragging interaction is initialized (the actual range manipulation happens in + the \ref mouseMoveEvent). + + The mDragging flag is set to true and some anchor points are set that are needed to determine the + distance the mouse was dragged in the mouse move/release events later. + + \see mouseMoveEvent, mouseReleaseEvent +*/ +void QCPAxisRect::mousePressEvent(QMouseEvent *event) +{ + mDragStart = event->pos(); // need this even when not LeftButton is pressed, to determine in releaseEvent whether it was a full click (no position change between press and release) + if (event->buttons() & Qt::LeftButton) + { + mDragging = true; + // initialize antialiasing backup in case we start dragging: + if (mParentPlot->noAntialiasingOnDrag()) + { + mAADragBackup = mParentPlot->antialiasedElements(); + mNotAADragBackup = mParentPlot->notAntialiasedElements(); + } + // Mouse range dragging interaction: + if (mParentPlot->interactions().testFlag(QCP::iRangeDrag)) + { + if (mRangeDragHorzAxis) + mDragStartHorzRange = mRangeDragHorzAxis.data()->range(); + if (mRangeDragVertAxis) + mDragStartVertRange = mRangeDragVertAxis.data()->range(); + } + } +} + +/*! \internal + + Event handler for when the mouse is moved on the axis rect. If range dragging was activated in a + preceding \ref mousePressEvent, the range is moved accordingly. + + \see mousePressEvent, mouseReleaseEvent +*/ +void QCPAxisRect::mouseMoveEvent(QMouseEvent *event) +{ + // Mouse range dragging interaction: + if (mDragging && mParentPlot->interactions().testFlag(QCP::iRangeDrag)) + { + if (mRangeDrag.testFlag(Qt::Horizontal)) + { + if (QCPAxis *rangeDragHorzAxis = mRangeDragHorzAxis.data()) + { + if (rangeDragHorzAxis->mScaleType == QCPAxis::stLinear) + { + double diff = rangeDragHorzAxis->pixelToCoord(mDragStart.x()) - rangeDragHorzAxis->pixelToCoord(event->pos().x()); + rangeDragHorzAxis->setRange(mDragStartHorzRange.lower+diff, mDragStartHorzRange.upper+diff); + } else if (rangeDragHorzAxis->mScaleType == QCPAxis::stLogarithmic) + { + double diff = rangeDragHorzAxis->pixelToCoord(mDragStart.x()) / rangeDragHorzAxis->pixelToCoord(event->pos().x()); + rangeDragHorzAxis->setRange(mDragStartHorzRange.lower*diff, mDragStartHorzRange.upper*diff); + } + } + } + if (mRangeDrag.testFlag(Qt::Vertical)) + { + if (QCPAxis *rangeDragVertAxis = mRangeDragVertAxis.data()) + { + if (rangeDragVertAxis->mScaleType == QCPAxis::stLinear) + { + double diff = rangeDragVertAxis->pixelToCoord(mDragStart.y()) - rangeDragVertAxis->pixelToCoord(event->pos().y()); + rangeDragVertAxis->setRange(mDragStartVertRange.lower+diff, mDragStartVertRange.upper+diff); + } else if (rangeDragVertAxis->mScaleType == QCPAxis::stLogarithmic) + { + double diff = rangeDragVertAxis->pixelToCoord(mDragStart.y()) / rangeDragVertAxis->pixelToCoord(event->pos().y()); + rangeDragVertAxis->setRange(mDragStartVertRange.lower*diff, mDragStartVertRange.upper*diff); + } + } + } + if (mRangeDrag != 0) // if either vertical or horizontal drag was enabled, do a replot + { + if (mParentPlot->noAntialiasingOnDrag()) + mParentPlot->setNotAntialiasedElements(QCP::aeAll); + mParentPlot->replot(); + } + } +} + +/* inherits documentation from base class */ +void QCPAxisRect::mouseReleaseEvent(QMouseEvent *event) +{ + Q_UNUSED(event) + mDragging = false; + if (mParentPlot->noAntialiasingOnDrag()) + { + mParentPlot->setAntialiasedElements(mAADragBackup); + mParentPlot->setNotAntialiasedElements(mNotAADragBackup); + } +} + +/*! \internal + + Event handler for mouse wheel events. If rangeZoom is Qt::Horizontal, Qt::Vertical or both, the + ranges of the axes defined as rangeZoomHorzAxis and rangeZoomVertAxis are scaled. The center of + the scaling operation is the current cursor position inside the axis rect. The scaling factor is + dependant on the mouse wheel delta (which direction the wheel was rotated) to provide a natural + zooming feel. The Strength of the zoom can be controlled via \ref setRangeZoomFactor. + + Note, that event->delta() is usually +/-120 for single rotation steps. However, if the mouse + wheel is turned rapidly, many steps may bunch up to one event, so the event->delta() may then be + multiples of 120. This is taken into account here, by calculating \a wheelSteps and using it as + exponent of the range zoom factor. This takes care of the wheel direction automatically, by + inverting the factor, when the wheel step is negative (f^-1 = 1/f). +*/ +void QCPAxisRect::wheelEvent(QWheelEvent *event) +{ + // Mouse range zooming interaction: + if (mParentPlot->interactions().testFlag(QCP::iRangeZoom)) + { + if (mRangeZoom != 0) + { + double factor; + double wheelSteps = event->delta()/120.0; // a single step delta is +/-120 usually + if (mRangeZoom.testFlag(Qt::Horizontal)) + { + factor = pow(mRangeZoomFactorHorz, wheelSteps); + if (mRangeZoomHorzAxis.data()) + mRangeZoomHorzAxis.data()->scaleRange(factor, mRangeZoomHorzAxis.data()->pixelToCoord(event->pos().x())); + } + if (mRangeZoom.testFlag(Qt::Vertical)) + { + factor = pow(mRangeZoomFactorVert, wheelSteps); + if (mRangeZoomVertAxis.data()) + mRangeZoomVertAxis.data()->scaleRange(factor, mRangeZoomVertAxis.data()->pixelToCoord(event->pos().y())); + } + mParentPlot->replot(); + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPAbstractLegendItem +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPAbstractLegendItem + \brief The abstract base class for all entries in a QCPLegend. + + It defines a very basic interface for entries in a QCPLegend. For representing plottables in the + legend, the subclass \ref QCPPlottableLegendItem is more suitable. + + Only derive directly from this class when you need absolute freedom (e.g. a custom legend entry + that's not even associated with a plottable). + + You must implement the following pure virtual functions: + \li \ref draw (from QCPLayerable) + + You inherit the following members you may use: + + + + + + + + +
QCPLegend *\b mParentLegendA pointer to the parent QCPLegend.
QFont \b mFontThe generic font of the item. You should use this font for all or at least the most prominent text of the item.
+*/ + +/* start of documentation of signals */ + +/*! \fn void QCPAbstractLegendItem::selectionChanged(bool selected) + + This signal is emitted when the selection state of this legend item has changed, either by user + interaction or by a direct call to \ref setSelected. +*/ + +/* end of documentation of signals */ + +/*! + Constructs a QCPAbstractLegendItem and associates it with the QCPLegend \a parent. This does not + cause the item to be added to \a parent, so \ref QCPLegend::addItem must be called separately. +*/ +QCPAbstractLegendItem::QCPAbstractLegendItem(QCPLegend *parent) : + QCPLayoutElement(parent->parentPlot()), + mParentLegend(parent), + mFont(parent->font()), + mTextColor(parent->textColor()), + mSelectedFont(parent->selectedFont()), + mSelectedTextColor(parent->selectedTextColor()), + mSelectable(true), + mSelected(false) +{ + setLayer("legend"); + setMargins(QMargins(8, 2, 8, 2)); +} + +/*! + Sets the default font of this specific legend item to \a font. + + \see setTextColor, QCPLegend::setFont +*/ +void QCPAbstractLegendItem::setFont(const QFont &font) +{ + mFont = font; +} + +/*! + Sets the default text color of this specific legend item to \a color. + + \see setFont, QCPLegend::setTextColor +*/ +void QCPAbstractLegendItem::setTextColor(const QColor &color) +{ + mTextColor = color; +} + +/*! + When this legend item is selected, \a font is used to draw generic text, instead of the normal + font set with \ref setFont. + + \see setFont, QCPLegend::setSelectedFont +*/ +void QCPAbstractLegendItem::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; +} + +/*! + When this legend item is selected, \a color is used to draw generic text, instead of the normal + color set with \ref setTextColor. + + \see setTextColor, QCPLegend::setSelectedTextColor +*/ +void QCPAbstractLegendItem::setSelectedTextColor(const QColor &color) +{ + mSelectedTextColor = color; +} + +/*! + Sets whether this specific legend item is selectable. + + \see setSelectedParts, QCustomPlot::setInteractions +*/ +void QCPAbstractLegendItem::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets whether this specific legend item is selected. + + It is possible to set the selection state of this item by calling this function directly, even if + setSelectable is set to false. + + \see setSelectableParts, QCustomPlot::setInteractions +*/ +void QCPAbstractLegendItem::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/* inherits documentation from base class */ +double QCPAbstractLegendItem::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (!mParentPlot) return -1; + if (onlySelectable && (!mSelectable || !mParentLegend->selectableParts().testFlag(QCPLegend::spItems))) + return -1; + + if (mRect.contains(pos.toPoint())) + return mParentPlot->selectionTolerance()*0.99; + else + return -1; +} + +/* inherits documentation from base class */ +void QCPAbstractLegendItem::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeLegendItems); +} + +/* inherits documentation from base class */ +QRect QCPAbstractLegendItem::clipRect() const +{ + return mOuterRect; +} + +/* inherits documentation from base class */ +void QCPAbstractLegendItem::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable && mParentLegend->selectableParts().testFlag(QCPLegend::spItems)) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPAbstractLegendItem::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable && mParentLegend->selectableParts().testFlag(QCPLegend::spItems)) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPPlottableLegendItem +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPPlottableLegendItem + \brief A legend item representing a plottable with an icon and the plottable name. + + This is the standard legend item for plottables. It displays an icon of the plottable next to the + plottable name. The icon is drawn by the respective plottable itself (\ref + QCPAbstractPlottable::drawLegendIcon), and tries to give an intuitive symbol for the plottable. + For example, the QCPGraph draws a centered horizontal line and/or a single scatter point in the + middle. + + Legend items of this type are always associated with one plottable (retrievable via the + plottable() function and settable with the constructor). You may change the font of the plottable + name with \ref setFont. Icon padding and border pen is taken from the parent QCPLegend, see \ref + QCPLegend::setIconBorderPen and \ref QCPLegend::setIconTextPadding. + + The function \ref QCPAbstractPlottable::addToLegend/\ref QCPAbstractPlottable::removeFromLegend + creates/removes legend items of this type in the default implementation. However, these functions + may be reimplemented such that a different kind of legend item (e.g a direct subclass of + QCPAbstractLegendItem) is used for that plottable. + + Since QCPLegend is based on QCPLayoutGrid, a legend item itself is just a subclass of + QCPLayoutElement. While it could be added to a legend (or any other layout) via the normal layout + interface, QCPLegend has specialized functions for handling legend items conveniently, see the + documentation of \ref QCPLegend. +*/ + +/*! + Creates a new legend item associated with \a plottable. + + Once it's created, it can be added to the legend via \ref QCPLegend::addItem. + + A more convenient way of adding/removing a plottable to/from the legend is via the functions \ref + QCPAbstractPlottable::addToLegend and \ref QCPAbstractPlottable::removeFromLegend. +*/ +QCPPlottableLegendItem::QCPPlottableLegendItem(QCPLegend *parent, QCPAbstractPlottable *plottable) : + QCPAbstractLegendItem(parent), + mPlottable(plottable) +{ +} + +/*! \internal + + Returns the pen that shall be used to draw the icon border, taking into account the selection + state of this item. +*/ +QPen QCPPlottableLegendItem::getIconBorderPen() const +{ + return mSelected ? mParentLegend->selectedIconBorderPen() : mParentLegend->iconBorderPen(); +} + +/*! \internal + + Returns the text color that shall be used to draw text, taking into account the selection state + of this item. +*/ +QColor QCPPlottableLegendItem::getTextColor() const +{ + return mSelected ? mSelectedTextColor : mTextColor; +} + +/*! \internal + + Returns the font that shall be used to draw text, taking into account the selection state of this + item. +*/ +QFont QCPPlottableLegendItem::getFont() const +{ + return mSelected ? mSelectedFont : mFont; +} + +/*! \internal + + Draws the item with \a painter. The size and position of the drawn legend item is defined by the + parent layout (typically a \ref QCPLegend) and the \ref minimumSizeHint and \ref maximumSizeHint + of this legend item. +*/ +void QCPPlottableLegendItem::draw(QCPPainter *painter) +{ + if (!mPlottable) return; + painter->setFont(getFont()); + painter->setPen(QPen(getTextColor())); + QSizeF iconSize = mParentLegend->iconSize(); + QRectF textRect = painter->fontMetrics().boundingRect(0, 0, 0, iconSize.height(), Qt::TextDontClip, mPlottable->name()); + QRectF iconRect(mRect.topLeft(), iconSize); + int textHeight = qMax(textRect.height(), iconSize.height()); // if text has smaller height than icon, center text vertically in icon height, else align tops + painter->drawText(mRect.x()+iconSize.width()+mParentLegend->iconTextPadding(), mRect.y(), textRect.width(), textHeight, Qt::TextDontClip, mPlottable->name()); + // draw icon: + painter->save(); + painter->setClipRect(iconRect, Qt::IntersectClip); + mPlottable->drawLegendIcon(painter, iconRect); + painter->restore(); + // draw icon border: + if (getIconBorderPen().style() != Qt::NoPen) + { + painter->setPen(getIconBorderPen()); + painter->setBrush(Qt::NoBrush); + painter->drawRect(iconRect); + } +} + +/*! \internal + + Calculates and returns the size of this item. This includes the icon, the text and the padding in + between. +*/ +QSize QCPPlottableLegendItem::minimumSizeHint() const +{ + if (!mPlottable) return QSize(); + QSize result(0, 0); + QRect textRect; + QFontMetrics fontMetrics(getFont()); + QSize iconSize = mParentLegend->iconSize(); + textRect = fontMetrics.boundingRect(0, 0, 0, iconSize.height(), Qt::TextDontClip, mPlottable->name()); + result.setWidth(iconSize.width() + mParentLegend->iconTextPadding() + textRect.width() + mMargins.left() + mMargins.right()); + result.setHeight(qMax(textRect.height(), iconSize.height()) + mMargins.top() + mMargins.bottom()); + return result; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPLegend +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPLegend + \brief Manages a legend inside a QCustomPlot. + + A legend is a small box somewhere in the plot which lists plottables with their name and icon. + + Normally, the legend is populated by calling \ref QCPAbstractPlottable::addToLegend. The + respective legend item can be removed with \ref QCPAbstractPlottable::removeFromLegend. However, + QCPLegend also offers an interface to add and manipulate legend items directly: \ref item, \ref + itemWithPlottable, \ref itemCount, \ref addItem, \ref removeItem, etc. + + The QCPLegend derives from QCPLayoutGrid and as such can be placed in any position a + QCPLayoutElement may be positioned. The legend items are themselves QCPLayoutElements which are + placed in the grid layout of the legend. QCPLegend only adds an interface specialized for + handling child elements of type QCPAbstractLegendItem, as mentioned above. In principle, any + other layout elements may also be added to a legend via the normal \ref QCPLayoutGrid interface. + However, the QCPAbstractLegendItem-Interface will ignore those elements (e.g. \ref itemCount will + only return the number of items with QCPAbstractLegendItems type). + + By default, every QCustomPlot has one legend (QCustomPlot::legend) which is placed in the inset + layout of the main axis rect (\ref QCPAxisRect::insetLayout). To move the legend to another + position inside the axis rect, use the methods of the \ref QCPLayoutInset. To move the legend + outside of the axis rect, place it anywhere else with the QCPLayout/QCPLayoutElement interface. +*/ + +/* start of documentation of signals */ + +/*! \fn void QCPLegend::selectionChanged(QCPLegend::SelectableParts selection); + + This signal is emitted when the selection state of this legend has changed. + + \see setSelectedParts, setSelectableParts +*/ + +/* end of documentation of signals */ + +/*! + Constructs a new QCPLegend instance with \a parentPlot as the containing plot and default values. + + Note that by default, QCustomPlot already contains a legend ready to be used as + QCustomPlot::legend +*/ +QCPLegend::QCPLegend() +{ + setRowSpacing(0); + setColumnSpacing(10); + setMargins(QMargins(2, 3, 2, 2)); + setAntialiased(false); + setIconSize(32, 18); + + setIconTextPadding(7); + + setSelectableParts(spLegendBox | spItems); + setSelectedParts(spNone); + + setBorderPen(QPen(Qt::black)); + setSelectedBorderPen(QPen(Qt::blue, 2)); + setIconBorderPen(Qt::NoPen); + setSelectedIconBorderPen(QPen(Qt::blue, 2)); + setBrush(Qt::white); + setSelectedBrush(Qt::white); + setTextColor(Qt::black); + setSelectedTextColor(Qt::blue); +} + +QCPLegend::~QCPLegend() +{ + clearItems(); + if (mParentPlot) + mParentPlot->legendRemoved(this); +} + +/* no doc for getter, see setSelectedParts */ +QCPLegend::SelectableParts QCPLegend::selectedParts() const +{ + // check whether any legend elements selected, if yes, add spItems to return value + bool hasSelectedItems = false; + for (int i=0; iselected()) + { + hasSelectedItems = true; + break; + } + } + if (hasSelectedItems) + return mSelectedParts | spItems; + else + return mSelectedParts & ~spItems; +} + +/*! + Sets the pen, the border of the entire legend is drawn with. +*/ +void QCPLegend::setBorderPen(const QPen &pen) +{ + mBorderPen = pen; +} + +/*! + Sets the brush of the legend background. +*/ +void QCPLegend::setBrush(const QBrush &brush) +{ + mBrush = brush; +} + +/*! + Sets the default font of legend text. Legend items that draw text (e.g. the name of a graph) will + use this font by default. However, a different font can be specified on a per-item-basis by + accessing the specific legend item. + + This function will also set \a font on all already existing legend items. + + \see QCPAbstractLegendItem::setFont +*/ +void QCPLegend::setFont(const QFont &font) +{ + mFont = font; + for (int i=0; isetFont(mFont); + } +} + +/*! + Sets the default color of legend text. Legend items that draw text (e.g. the name of a graph) + will use this color by default. However, a different colors can be specified on a per-item-basis + by accessing the specific legend item. + + This function will also set \a color on all already existing legend items. + + \see QCPAbstractLegendItem::setTextColor +*/ +void QCPLegend::setTextColor(const QColor &color) +{ + mTextColor = color; + for (int i=0; isetTextColor(color); + } +} + +/*! + Sets the size of legend icons. Legend items that draw an icon (e.g. a visual + representation of the graph) will use this size by default. +*/ +void QCPLegend::setIconSize(const QSize &size) +{ + mIconSize = size; +} + +/*! \overload +*/ +void QCPLegend::setIconSize(int width, int height) +{ + mIconSize.setWidth(width); + mIconSize.setHeight(height); +} + +/*! + Sets the horizontal space in pixels between the legend icon and the text next to it. + Legend items that draw an icon (e.g. a visual representation of the graph) and text (e.g. the + name of the graph) will use this space by default. +*/ +void QCPLegend::setIconTextPadding(int padding) +{ + mIconTextPadding = padding; +} + +/*! + Sets the pen used to draw a border around each legend icon. Legend items that draw an + icon (e.g. a visual representation of the graph) will use this pen by default. + + If no border is wanted, set this to \a Qt::NoPen. +*/ +void QCPLegend::setIconBorderPen(const QPen &pen) +{ + mIconBorderPen = pen; +} + +/*! + Sets whether the user can (de-)select the parts in \a selectable by clicking on the QCustomPlot surface. + (When \ref QCustomPlot::setInteractions contains iSelectLegend.) + + However, even when \a selectable is set to a value not allowing the selection of a specific part, + it is still possible to set the selection of this part manually, by calling \ref setSelectedParts + directly. + + \see SelectablePart, setSelectedParts +*/ +void QCPLegend::setSelectableParts(const SelectableParts &selectable) +{ + mSelectableParts = selectable; +} + +/*! + Sets the selected state of the respective legend parts described by \ref SelectablePart. When a part + is selected, it uses a different pen/font and brush. If some legend items are selected and \a selected + doesn't contain \ref spItems, those items become deselected. + + The entire selection mechanism is handled automatically when \ref QCustomPlot::setInteractions + contains iSelectLegend. You only need to call this function when you wish to change the selection + state manually. + + This function can change the selection state of a part even when \ref setSelectableParts was set to a + value that actually excludes the part. + + emits the \ref selectionChanged signal when \a selected is different from the previous selection state. + + Note that it doesn't make sense to set the selected state \ref spItems here when it wasn't set + before, because there's no way to specify which exact items to newly select. Do this by calling + \ref QCPAbstractLegendItem::setSelected directly on the legend item you wish to select. + + \see SelectablePart, setSelectableParts, selectTest, setSelectedBorderPen, setSelectedIconBorderPen, setSelectedBrush, + setSelectedFont +*/ +void QCPLegend::setSelectedParts(const SelectableParts &selected) +{ + SelectableParts newSelected = selected; + mSelectedParts = this->selectedParts(); // update mSelectedParts in case item selection changed + + if (mSelectedParts != newSelected) + { + if (!mSelectedParts.testFlag(spItems) && newSelected.testFlag(spItems)) // attempt to set spItems flag (can't do that) + { + qDebug() << Q_FUNC_INFO << "spItems flag can not be set, it can only be unset with this function"; + newSelected &= ~spItems; + } + if (mSelectedParts.testFlag(spItems) && !newSelected.testFlag(spItems)) // spItems flag was unset, so clear item selection + { + for (int i=0; isetSelected(false); + } + } + mSelectedParts = newSelected; + emit selectionChanged(mSelectedParts); + } +} + +/*! + When the legend box is selected, this pen is used to draw the border instead of the normal pen + set via \ref setBorderPen. + + \see setSelectedParts, setSelectableParts, setSelectedBrush +*/ +void QCPLegend::setSelectedBorderPen(const QPen &pen) +{ + mSelectedBorderPen = pen; +} + +/*! + Sets the pen legend items will use to draw their icon borders, when they are selected. + + \see setSelectedParts, setSelectableParts, setSelectedFont +*/ +void QCPLegend::setSelectedIconBorderPen(const QPen &pen) +{ + mSelectedIconBorderPen = pen; +} + +/*! + When the legend box is selected, this brush is used to draw the legend background instead of the normal brush + set via \ref setBrush. + + \see setSelectedParts, setSelectableParts, setSelectedBorderPen +*/ +void QCPLegend::setSelectedBrush(const QBrush &brush) +{ + mSelectedBrush = brush; +} + +/*! + Sets the default font that is used by legend items when they are selected. + + This function will also set \a font on all already existing legend items. + + \see setFont, QCPAbstractLegendItem::setSelectedFont +*/ +void QCPLegend::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; + for (int i=0; isetSelectedFont(font); + } +} + +/*! + Sets the default text color that is used by legend items when they are selected. + + This function will also set \a color on all already existing legend items. + + \see setTextColor, QCPAbstractLegendItem::setSelectedTextColor +*/ +void QCPLegend::setSelectedTextColor(const QColor &color) +{ + mSelectedTextColor = color; + for (int i=0; isetSelectedTextColor(color); + } +} + +/*! + Returns the item with index \a i. + + \see itemCount +*/ +QCPAbstractLegendItem *QCPLegend::item(int index) const +{ + return qobject_cast(elementAt(index)); +} + +/*! + Returns the QCPPlottableLegendItem which is associated with \a plottable (e.g. a \ref QCPGraph*). + If such an item isn't in the legend, returns 0. + + \see hasItemWithPlottable +*/ +QCPPlottableLegendItem *QCPLegend::itemWithPlottable(const QCPAbstractPlottable *plottable) const +{ + for (int i=0; i(item(i))) + { + if (pli->plottable() == plottable) + return pli; + } + } + return 0; +} + +/*! + Returns the number of items currently in the legend. + \see item +*/ +int QCPLegend::itemCount() const +{ + return elementCount(); +} + +/*! + Returns whether the legend contains \a itm. +*/ +bool QCPLegend::hasItem(QCPAbstractLegendItem *item) const +{ + for (int i=0; iitem(i)) + return true; + } + return false; +} + +/*! + Returns whether the legend contains a QCPPlottableLegendItem which is associated with \a plottable (e.g. a \ref QCPGraph*). + If such an item isn't in the legend, returns false. + + \see itemWithPlottable +*/ +bool QCPLegend::hasItemWithPlottable(const QCPAbstractPlottable *plottable) const +{ + return itemWithPlottable(plottable); +} + +/*! + Adds \a item to the legend, if it's not present already. + + Returns true on sucess, i.e. if the item wasn't in the list already and has been successfuly added. + + The legend takes ownership of the item. +*/ +bool QCPLegend::addItem(QCPAbstractLegendItem *item) +{ + if (!hasItem(item)) + { + return addElement(rowCount(), 0, item); + } else + return false; +} + +/*! + Removes the item with index \a index from the legend. + + Returns true, if successful. + + \see itemCount, clearItems +*/ +bool QCPLegend::removeItem(int index) +{ + if (QCPAbstractLegendItem *ali = item(index)) + { + bool success = remove(ali); + simplify(); + return success; + } else + return false; +} + +/*! \overload + + Removes \a item from the legend. + + Returns true, if successful. + + \see clearItems +*/ +bool QCPLegend::removeItem(QCPAbstractLegendItem *item) +{ + bool success = remove(item); + simplify(); + return success; +} + +/*! + Removes all items from the legend. +*/ +void QCPLegend::clearItems() +{ + for (int i=itemCount()-1; i>=0; --i) + removeItem(i); +} + +/*! + Returns the legend items that are currently selected. If no items are selected, + the list is empty. + + \see QCPAbstractLegendItem::setSelected, setSelectable +*/ +QList QCPLegend::selectedItems() const +{ + QList result; + for (int i=0; iselected()) + result.append(ali); + } + } + return result; +} + +/*! \internal + + A convenience function to easily set the QPainter::Antialiased hint on the provided \a painter + before drawing main legend elements. + + This is the antialiasing state the painter passed to the \ref draw method is in by default. + + This function takes into account the local setting of the antialiasing flag as well as the + overrides set with \ref QCustomPlot::setAntialiasedElements and \ref + QCustomPlot::setNotAntialiasedElements. + + \see setAntialiased +*/ +void QCPLegend::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeLegend); +} + +/*! \internal + + Returns the pen used to paint the border of the legend, taking into account the selection state + of the legend box. +*/ +QPen QCPLegend::getBorderPen() const +{ + return mSelectedParts.testFlag(spLegendBox) ? mSelectedBorderPen : mBorderPen; +} + +/*! \internal + + Returns the brush used to paint the background of the legend, taking into account the selection + state of the legend box. +*/ +QBrush QCPLegend::getBrush() const +{ + return mSelectedParts.testFlag(spLegendBox) ? mSelectedBrush : mBrush; +} + +/*! \internal + + Draws the legend box with the provided \a painter. The individual legend items are layerables + themselves, thus are drawn independently. +*/ +void QCPLegend::draw(QCPPainter *painter) +{ + // draw background rect: + painter->setBrush(getBrush()); + painter->setPen(getBorderPen()); + painter->drawRect(mOuterRect); +} + +/* inherits documentation from base class */ +double QCPLegend::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + if (!mParentPlot) return -1; + if (onlySelectable && !mSelectableParts.testFlag(spLegendBox)) + return -1; + + if (mOuterRect.contains(pos.toPoint())) + { + if (details) details->setValue(spLegendBox); + return mParentPlot->selectionTolerance()*0.99; + } + return -1; +} + +/* inherits documentation from base class */ +void QCPLegend::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + mSelectedParts = selectedParts(); // in case item selection has changed + if (details.value() == spLegendBox && mSelectableParts.testFlag(spLegendBox)) + { + SelectableParts selBefore = mSelectedParts; + setSelectedParts(additive ? mSelectedParts^spLegendBox : mSelectedParts|spLegendBox); // no need to unset spItems in !additive case, because they will be deselected by QCustomPlot (they're normal QCPLayerables with own deselectEvent) + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPLegend::deselectEvent(bool *selectionStateChanged) +{ + mSelectedParts = selectedParts(); // in case item selection has changed + if (mSelectableParts.testFlag(spLegendBox)) + { + SelectableParts selBefore = mSelectedParts; + setSelectedParts(selectedParts() & ~spLegendBox); + if (selectionStateChanged) + *selectionStateChanged = mSelectedParts != selBefore; + } +} + +/* inherits documentation from base class */ +QCP::Interaction QCPLegend::selectionCategory() const +{ + return QCP::iSelectLegend; +} + +/* inherits documentation from base class */ +QCP::Interaction QCPAbstractLegendItem::selectionCategory() const +{ + return QCP::iSelectLegend; +} + +/* inherits documentation from base class */ +void QCPLegend::parentPlotInitialized(QCustomPlot *parentPlot) +{ + Q_UNUSED(parentPlot) +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////// QCPPlotTitle +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/*! \class QCPPlotTitle + \brief A layout element displaying a plot title text + + The text may be specified with \ref setText, theformatting can be controlled with \ref setFont + and \ref setTextColor. + + A plot title can be added as follows: + \code + customPlot->plotLayout()->insertRow(0); // inserts an empty row above the default axis rect + customPlot->plotLayout()->addElement(0, 0, new QCPPlotTitle(customPlot, "Your Plot Title")); + \endcode + + Since a plot title is a common requirement, QCustomPlot offers specialized selection signals for + easy interaction with QCPPlotTitle. If a layout element of type QCPPlotTitle is clicked, the + signal \ref QCustomPlot::titleClick is emitted. A double click emits the \ref + QCustomPlot::titleDoubleClick signal. +*/ + +/* start documentation of signals */ + +/*! \fn void QCPPlotTitle::selectionChanged(bool selected) + + This signal is emitted when the selection state has changed to \a selected, either by user + interaction or by a direct call to \ref setSelected. + + \see setSelected, setSelectable +*/ + +/* end documentation of signals */ + +/*! + Creates a new QCPPlotTitle instance and sets default values. The initial text is empty (\ref setText). + + To set the title text in the constructor, rather use \ref QCPPlotTitle(QCustomPlot *parentPlot, const QString &text). +*/ +QCPPlotTitle::QCPPlotTitle(QCustomPlot *parentPlot) : + QCPLayoutElement(parentPlot), + mFont(QFont("sans serif", 13*1.5, QFont::Bold)), + mTextColor(Qt::black), + mSelectedFont(QFont("sans serif", 13*1.6, QFont::Bold)), + mSelectedTextColor(Qt::blue), + mSelectable(false), + mSelected(false) +{ + if (parentPlot) + { + setLayer(parentPlot->currentLayer()); + mFont = QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.5, QFont::Bold); + mSelectedFont = QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.6, QFont::Bold); + } + setMargins(QMargins(5, 5, 5, 0)); +} + +/*! \overload + + Creates a new QCPPlotTitle instance and sets default values. The initial text is set to \a text. +*/ +QCPPlotTitle::QCPPlotTitle(QCustomPlot *parentPlot, const QString &text) : + QCPLayoutElement(parentPlot), + mText(text), + mFont(QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.5, QFont::Bold)), + mTextColor(Qt::black), + mSelectedFont(QFont(parentPlot->font().family(), parentPlot->font().pointSize()*1.6, QFont::Bold)), + mSelectedTextColor(Qt::blue), + mSelectable(false), + mSelected(false) +{ + setLayer("axes"); + setMargins(QMargins(5, 5, 5, 0)); +} + +/*! + Sets the text that will be displayed to \a text. Multiple lines can be created by insertion of "\n". + + \see setFont, setTextColor +*/ +void QCPPlotTitle::setText(const QString &text) +{ + mText = text; +} + +/*! + Sets the \a font of the title text. + + \see setTextColor, setSelectedFont +*/ +void QCPPlotTitle::setFont(const QFont &font) +{ + mFont = font; +} + +/*! + Sets the \a color of the title text. + + \see setFont, setSelectedTextColor +*/ +void QCPPlotTitle::setTextColor(const QColor &color) +{ + mTextColor = color; +} + +/*! + Sets the \a font of the title text that will be used if the plot title is selected (\ref setSelected). + + \see setFont +*/ +void QCPPlotTitle::setSelectedFont(const QFont &font) +{ + mSelectedFont = font; +} + +/*! + Sets the \a color of the title text that will be used if the plot title is selected (\ref setSelected). + + \see setTextColor +*/ +void QCPPlotTitle::setSelectedTextColor(const QColor &color) +{ + mSelectedTextColor = color; +} + +/*! + Sets whether the user may select this plot title to \a selectable. + + Note that even when \a selectable is set to false, the selection state may be changed + programmatically via \ref setSelected. +*/ +void QCPPlotTitle::setSelectable(bool selectable) +{ + mSelectable = selectable; +} + +/*! + Sets the selection state of this plot title to \a selected. If the selection has changed, \ref + selectionChanged is emitted. + + Note that this function can change the selection state independently of the current \ref + setSelectable state. +*/ +void QCPPlotTitle::setSelected(bool selected) +{ + if (mSelected != selected) + { + mSelected = selected; + emit selectionChanged(mSelected); + } +} + +/* inherits documentation from base class */ +void QCPPlotTitle::applyDefaultAntialiasingHint(QCPPainter *painter) const +{ + applyAntialiasingHint(painter, mAntialiased, QCP::aeNone); +} + +/* inherits documentation from base class */ +void QCPPlotTitle::draw(QCPPainter *painter) +{ + painter->setFont(mainFont()); + painter->setPen(QPen(mainTextColor())); + painter->drawText(mRect, Qt::AlignCenter, mText, &mTextBoundingRect); +} + +/* inherits documentation from base class */ +QSize QCPPlotTitle::minimumSizeHint() const +{ + QFontMetrics metrics(mFont); + QSize result = metrics.boundingRect(0, 0, 0, 0, Qt::AlignCenter, mText).size(); + result.rwidth() += mMargins.left() + mMargins.right(); + result.rheight() += mMargins.top() + mMargins.bottom(); + return result; +} + +/* inherits documentation from base class */ +QSize QCPPlotTitle::maximumSizeHint() const +{ + QFontMetrics metrics(mFont); + QSize result = metrics.boundingRect(0, 0, 0, 0, Qt::AlignCenter, mText).size(); + result.rheight() += mMargins.top() + mMargins.bottom(); + result.setWidth(QWIDGETSIZE_MAX); + return result; +} + +/* inherits documentation from base class */ +void QCPPlotTitle::selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged) +{ + Q_UNUSED(event) + Q_UNUSED(details) + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(additive ? !mSelected : true); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +void QCPPlotTitle::deselectEvent(bool *selectionStateChanged) +{ + if (mSelectable) + { + bool selBefore = mSelected; + setSelected(false); + if (selectionStateChanged) + *selectionStateChanged = mSelected != selBefore; + } +} + +/* inherits documentation from base class */ +double QCPPlotTitle::selectTest(const QPointF &pos, bool onlySelectable, QVariant *details) const +{ + Q_UNUSED(details) + if (onlySelectable && !mSelectable) + return -1; + + if (mTextBoundingRect.contains(pos.toPoint())) + return mParentPlot->selectionTolerance()*0.99; + else + return -1; +} + +/*! \internal + + Returns the main font to be used. This is mSelectedFont if \ref setSelected is set to + true, else mFont is returned. +*/ +QFont QCPPlotTitle::mainFont() const +{ + return mSelected ? mSelectedFont : mFont; +} + +/*! \internal + + Returns the main color to be used. This is mSelectedTextColor if \ref setSelected is set to + true, else mTextColor is returned. +*/ +QColor QCPPlotTitle::mainTextColor() const +{ + return mSelected ? mSelectedTextColor : mTextColor; +} + diff --git a/DEC_GUI/qcustomplot.h b/DEC_GUI/qcustomplot.h new file mode 100644 index 0000000..6d01dd2 --- /dev/null +++ b/DEC_GUI/qcustomplot.h @@ -0,0 +1,3036 @@ +/*************************************************************************** +** ** +** QCustomPlot, an easy to use, modern plotting widget for Qt ** +** Copyright (C) 2011, 2012, 2013 Emanuel Eichhammer ** +** ** +** This program is free software: you can redistribute it and/or modify ** +** it under the terms of the GNU General Public License as published by ** +** the Free Software Foundation, either version 3 of the License, or ** +** (at your option) any later version. ** +** ** +** This program is distributed in the hope that it will be useful, ** +** but WITHOUT ANY WARRANTY; without even the implied warranty of ** +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** +** GNU General Public License for more details. ** +** ** +** You should have received a copy of the GNU General Public License ** +** along with this program. If not, see http://www.gnu.org/licenses/. ** +** ** +**************************************************************************** +** Author: Emanuel Eichhammer ** +** Website/Contact: http://www.qcustomplot.com/ ** +** Date: 05.09.13 ** +** Version: 1.0.1 ** +****************************************************************************/ + +#ifndef QCUSTOMPLOT_H +#define QCUSTOMPLOT_H + +#ifdef QT_DISABLE_DEPRECATED_BEFORE +# undef QT_DISABLE_DEPRECATED_BEFORE +#endif +#define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(0, 0, 0) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) +# include +# include +#else +# include +# include +#endif + +class QCPPainter; +class QCustomPlot; +class QCPLayerable; +class QCPLayoutElement; +class QCPLayout; +class QCPAxis; +class QCPAxisRect; +class QCPAbstractPlottable; +class QCPGraph; +class QCPAbstractItem; +class QCPItemPosition; +class QCPLayer; +class QCPPlotTitle; +class QCPLegend; +class QCPAbstractLegendItem; +class QCPAbstractItem; + + +/*! \file */ + +#ifdef QT_DISABLE_DEPRECATED_BEFORE +# undef QT_DISABLE_DEPRECATED_BEFORE +#endif +#define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(0, 0, 0) + + +// decl definitions for shared library compilation/usage: +#if defined(QCUSTOMPLOT_COMPILE_LIBRARY) +# define QCP_LIB_DECL Q_DECL_EXPORT +#elif defined(QCUSTOMPLOT_USE_LIBRARY) +# define QCP_LIB_DECL Q_DECL_IMPORT +#else +# define QCP_LIB_DECL +#endif + +/*! + The QCP Namespace contains general enums and QFlags used throughout the QCustomPlot library +*/ +namespace QCP +{ +/*! + Defines the sides of a rectangular entity to which margins can be applied. + + \see QCPLayoutElement::setAutoMargins, QCPAxisRect::setAutoMargins +*/ +enum MarginSide { msLeft = 0x01 ///< 0x01 left margin + ,msRight = 0x02 ///< 0x02 right margin + ,msTop = 0x04 ///< 0x04 top margin + ,msBottom = 0x08 ///< 0x08 bottom margin + ,msAll = 0xFF ///< 0xFF all margins + ,msNone = 0x00 ///< 0x00 no margin + }; +Q_DECLARE_FLAGS(MarginSides, MarginSide) + +/*! + Defines what objects of a plot can be forcibly drawn antialiased/not antialiased. If an object is + neither forcibly drawn antialiased nor forcibly drawn not antialiased, it is up to the respective + element how it is drawn. Typically it provides a \a setAntialiased function for this. + + \c AntialiasedElements is a flag of or-combined elements of this enum type. + + \see QCustomPlot::setAntialiasedElements, QCustomPlot::setNotAntialiasedElements +*/ +enum AntialiasedElement { aeAxes = 0x0001 ///< 0x0001 Axis base line and tick marks + ,aeGrid = 0x0002 ///< 0x0002 Grid lines + ,aeSubGrid = 0x0004 ///< 0x0004 Sub grid lines + ,aeLegend = 0x0008 ///< 0x0008 Legend box + ,aeLegendItems = 0x0010 ///< 0x0010 Legend items + ,aePlottables = 0x0020 ///< 0x0020 Main lines of plottables (excluding error bars, see element \ref aeErrorBars) + ,aeItems = 0x0040 ///< 0x0040 Main lines of items + ,aeScatters = 0x0080 ///< 0x0080 Scatter symbols of plottables (excluding scatter symbols of type ssPixmap) + ,aeErrorBars = 0x0100 ///< 0x0100 Error bars + ,aeFills = 0x0200 ///< 0x0200 Borders of fills (e.g. under or between graphs) + ,aeZeroLine = 0x0400 ///< 0x0400 Zero-lines, see \ref QCPGrid::setZeroLinePen + ,aeAll = 0xFFFF ///< 0xFFFF All elements + ,aeNone = 0x0000 ///< 0x0000 No elements + }; +Q_DECLARE_FLAGS(AntialiasedElements, AntialiasedElement) + +/*! + Defines plotting hints that control various aspects of the quality and speed of plotting. + + \see QCustomPlot::setPlottingHints +*/ +enum PlottingHint { phNone = 0x000 ///< 0x000 No hints are set + ,phFastPolylines = 0x001 ///< 0x001 Graph/Curve lines are drawn with a faster method. This reduces the quality + ///< especially of the line segment joins. (Only relevant for solid line pens.) + ,phForceRepaint = 0x002 ///< 0x002 causes an immediate repaint() instead of a soft update() when QCustomPlot::replot() is called. This is set by default + ///< on Windows-Systems to prevent the plot from freezing on fast consecutive replots (e.g. user drags ranges with mouse). + ,phCacheLabels = 0x004 ///< 0x004 axis (tick) labels will be cached as pixmaps, increasing replot performance. + }; +Q_DECLARE_FLAGS(PlottingHints, PlottingHint) + +/*! + Defines the mouse interactions possible with QCustomPlot. + + \c Interactions is a flag of or-combined elements of this enum type. + + \see QCustomPlot::setInteractions +*/ +enum Interaction { iRangeDrag = 0x001 ///< 0x001 Axis ranges are draggable (see \ref QCPAxisRect::setRangeDrag, \ref QCPAxisRect::setRangeDragAxes) + ,iRangeZoom = 0x002 ///< 0x002 Axis ranges are zoomable with the mouse wheel (see \ref QCPAxisRect::setRangeZoom, \ref QCPAxisRect::setRangeZoomAxes) + ,iMultiSelect = 0x004 ///< 0x004 The user can select multiple objects by holding the modifier set by \ref QCustomPlot::setMultiSelectModifier while clicking + ,iSelectPlottables = 0x008 ///< 0x008 Plottables are selectable (e.g. graphs, curves, bars,... see QCPAbstractPlottable) + ,iSelectAxes = 0x010 ///< 0x010 Axes are selectable (or parts of them, see QCPAxis::setSelectableParts) + ,iSelectLegend = 0x020 ///< 0x020 Legends are selectable (or their child items, see QCPLegend::setSelectableParts) + ,iSelectItems = 0x040 ///< 0x040 Items are selectable (Rectangles, Arrows, Textitems, etc. see \ref QCPAbstractItem) + ,iSelectOther = 0x080 ///< 0x080 All other objects are selectable (e.g. your own derived layerables, the plot title,...) + }; +Q_DECLARE_FLAGS(Interactions, Interaction) + +/*! \internal + + Returns whether the specified \a value is considered an invalid data value for plottables (i.e. + is \e nan or \e +/-inf). This function is used to check data validity upon replots, when the + compiler flag \c QCUSTOMPLOT_CHECK_DATA is set. +*/ +inline bool isInvalidData(double value) +{ + return qIsNaN(value) || qIsInf(value); +} + +/*! \internal + \overload + + Checks two arguments instead of one. +*/ +inline bool isInvalidData(double value1, double value2) +{ + return isInvalidData(value1) || isInvalidData(value2); +} + +/*! \internal + + Sets the specified \a side of \a margins to \a value + + \see getMarginValue +*/ +inline void setMarginValue(QMargins &margins, QCP::MarginSide side, int value) +{ + switch (side) + { + case QCP::msLeft: margins.setLeft(value); break; + case QCP::msRight: margins.setRight(value); break; + case QCP::msTop: margins.setTop(value); break; + case QCP::msBottom: margins.setBottom(value); break; + case QCP::msAll: margins = QMargins(value, value, value, value); break; + default: break; + } +} + +/*! \internal + + Returns the value of the specified \a side of \a margins. If \a side is \ref QCP::msNone or + \ref QCP::msAll, returns 0. + + \see setMarginValue +*/ +inline int getMarginValue(const QMargins &margins, QCP::MarginSide side) +{ + switch (side) + { + case QCP::msLeft: return margins.left(); + case QCP::msRight: return margins.right(); + case QCP::msTop: return margins.top(); + case QCP::msBottom: return margins.bottom(); + default: break; + } + return 0; +} + +} // end of namespace QCP + +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::AntialiasedElements) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::PlottingHints) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::MarginSides) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCP::Interactions) + + +class QCP_LIB_DECL QCPScatterStyle +{ + Q_GADGET +public: + /*! + Defines the shape used for scatter points. + + On plottables/items that draw scatters, the sizes of these visualizations (with exception of + \ref ssDot and \ref ssPixmap) can be controlled with the \ref setSize function. Scatters are + drawn with the pen and brush specified with \ref setPen and \ref setBrush. + */ + Q_ENUMS(ScatterShape) + enum ScatterShape { ssNone ///< no scatter symbols are drawn (e.g. in QCPGraph, data only represented with lines) + ,ssDot ///< \enumimage{ssDot.png} a single pixel (use \ref ssDisc or \ref ssCircle if you want a round shape with a certain radius) + ,ssCross ///< \enumimage{ssCross.png} a cross + ,ssPlus ///< \enumimage{ssPlus.png} a plus + ,ssCircle ///< \enumimage{ssCircle.png} a circle + ,ssDisc ///< \enumimage{ssDisc.png} a circle which is filled with the pen's color (not the brush as with ssCircle) + ,ssSquare ///< \enumimage{ssSquare.png} a square + ,ssDiamond ///< \enumimage{ssDiamond.png} a diamond + ,ssStar ///< \enumimage{ssStar.png} a star with eight arms, i.e. a combination of cross and plus + ,ssTriangle ///< \enumimage{ssTriangle.png} an equilateral triangle, standing on baseline + ,ssTriangleInverted ///< \enumimage{ssTriangleInverted.png} an equilateral triangle, standing on corner + ,ssCrossSquare ///< \enumimage{ssCrossSquare.png} a square with a cross inside + ,ssPlusSquare ///< \enumimage{ssPlusSquare.png} a square with a plus inside + ,ssCrossCircle ///< \enumimage{ssCrossCircle.png} a circle with a cross inside + ,ssPlusCircle ///< \enumimage{ssPlusCircle.png} a circle with a plus inside + ,ssPeace ///< \enumimage{ssPeace.png} a circle, with one vertical and two downward diagonal lines + ,ssPixmap ///< a custom pixmap specified by \ref setPixmap, centered on the data point coordinates + ,ssCustom ///< custom painter operations are performed per scatter (As QPainterPath, see \ref setCustomPath) + }; + + QCPScatterStyle(); + QCPScatterStyle(ScatterShape shape, double size=6); + QCPScatterStyle(ScatterShape shape, const QColor &color, double size); + QCPScatterStyle(ScatterShape shape, const QColor &color, const QColor &fill, double size); + QCPScatterStyle(ScatterShape shape, const QPen &pen, const QBrush &brush, double size); + QCPScatterStyle(const QPixmap &pixmap); + QCPScatterStyle(const QPainterPath &customPath, const QPen &pen, const QBrush &brush=Qt::NoBrush, double size=6); + + // getters: + double size() const { return mSize; } + ScatterShape shape() const { return mShape; } + QPen pen() const { return mPen; } + QBrush brush() const { return mBrush; } + QPixmap pixmap() const { return mPixmap; } + QPainterPath customPath() const { return mCustomPath; } + + // setters: + void setSize(double size); + void setShape(ScatterShape shape); + void setPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setPixmap(const QPixmap &pixmap); + void setCustomPath(const QPainterPath &customPath); + + // non-property methods: + bool isNone() const { return mShape == ssNone; } + bool isPenDefined() const { return mPenDefined; } + void applyTo(QCPPainter *painter, const QPen &defaultPen) const; + void drawShape(QCPPainter *painter, QPointF pos) const; + void drawShape(QCPPainter *painter, double x, double y) const; + +protected: + // property members: + double mSize; + ScatterShape mShape; + QPen mPen; + QBrush mBrush; + QPixmap mPixmap; + QPainterPath mCustomPath; + + // non-property members: + bool mPenDefined; +}; +Q_DECLARE_TYPEINFO(QCPScatterStyle, Q_MOVABLE_TYPE); + + +class QCP_LIB_DECL QCPPainter : public QPainter +{ + Q_GADGET +public: + /*! + Defines special modes the painter can operate in. They disable or enable certain subsets of features/fixes/workarounds, + depending on whether they are wanted on the respective output device. + */ + enum PainterMode {pmDefault = 0x00 ///< 0x00 Default mode for painting on screen devices + ,pmVectorized = 0x01 ///< 0x01 Mode for vectorized painting (e.g. PDF export). For example, this prevents some antialiasing fixes. + ,pmNoCaching = 0x02 ///< 0x02 Mode for all sorts of exports (e.g. PNG, PDF,...). For example, this prevents using cached pixmap labels + ,pmNonCosmetic = 0x04 ///< 0x04 Turns pen widths 0 to 1, i.e. disables cosmetic pens. (A cosmetic pen is always drawn with width 1 pixel in the vector image/pdf viewer, independent of zoom.) + }; + Q_FLAGS(PainterMode PainterModes) + Q_DECLARE_FLAGS(PainterModes, PainterMode) + + QCPPainter(); + QCPPainter(QPaintDevice *device); + ~QCPPainter(); + + // getters: + bool antialiasing() const { return testRenderHint(QPainter::Antialiasing); } + PainterModes modes() const { return mModes; } + + // setters: + void setAntialiasing(bool enabled); + void setMode(PainterMode mode, bool enabled=true); + void setModes(PainterModes modes); + + // methods hiding non-virtual base class functions (QPainter bug workarounds): + bool begin(QPaintDevice *device); + void setPen(const QPen &pen); + void setPen(const QColor &color); + void setPen(Qt::PenStyle penStyle); + void drawLine(const QLineF &line); + void drawLine(const QPointF &p1, const QPointF &p2) {drawLine(QLineF(p1, p2));} + void save(); + void restore(); + + // non-virtual methods: + void makeNonCosmetic(); + +protected: + // property members: + PainterModes mModes; + bool mIsAntialiasing; + + // non-property members: + QStack mAntialiasingStack; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPPainter::PainterModes) + + +class QCP_LIB_DECL QCPLayer : public QObject +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCustomPlot* parentPlot READ parentPlot) + Q_PROPERTY(QString name READ name) + Q_PROPERTY(int index READ index) + Q_PROPERTY(QList children READ children) + /// \endcond +public: + QCPLayer(QCustomPlot* parentPlot, const QString &layerName); + ~QCPLayer(); + + // getters: + QCustomPlot *parentPlot() const { return mParentPlot; } + QString name() const { return mName; } + int index() const { return mIndex; } + QList children() const { return mChildren; } + +protected: + // property members: + QCustomPlot *mParentPlot; + QString mName; + int mIndex; + QList mChildren; + + // non-virtual methods: + void addChild(QCPLayerable *layerable, bool prepend); + void removeChild(QCPLayerable *layerable); + +private: + Q_DISABLE_COPY(QCPLayer) + + friend class QCustomPlot; + friend class QCPLayerable; +}; + +class QCP_LIB_DECL QCPLayerable : public QObject +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(bool visible READ visible WRITE setVisible) + Q_PROPERTY(QCustomPlot* parentPlot READ parentPlot) + Q_PROPERTY(QCPLayerable* parentLayerable READ parentLayerable) + Q_PROPERTY(QCPLayer* layer READ layer WRITE setLayer) + Q_PROPERTY(bool antialiased READ antialiased WRITE setAntialiased) + /// \endcond +public: + QCPLayerable(QCustomPlot *plot, QString targetLayer="", QCPLayerable *parentLayerable=0); + ~QCPLayerable(); + + // getters: + bool visible() const { return mVisible; } + QCustomPlot *parentPlot() const { return mParentPlot; } + QCPLayerable *parentLayerable() const { return mParentLayerable.data(); } + QCPLayer *layer() const { return mLayer; } + bool antialiased() const { return mAntialiased; } + + // setters: + void setVisible(bool on); + bool setLayer(QCPLayer *layer); + bool setLayer(const QString &layerName); + void setAntialiased(bool enabled); + + // introduced virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-property methods: + bool realVisibility() const; + +protected: + // property members: + bool mVisible; + QCustomPlot *mParentPlot; + QWeakPointer mParentLayerable; + QCPLayer *mLayer; + bool mAntialiased; + + // introduced virtual methods: + virtual void parentPlotInitialized(QCustomPlot *parentPlot); + virtual QCP::Interaction selectionCategory() const; + virtual QRect clipRect() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const = 0; + virtual void draw(QCPPainter *painter) = 0; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-property methods: + void initializeParentPlot(QCustomPlot *parentPlot); + void setParentLayerable(QCPLayerable* parentLayerable); + bool moveToLayer(QCPLayer *layer, bool prepend); + void applyAntialiasingHint(QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const; + +private: + Q_DISABLE_COPY(QCPLayerable) + + friend class QCustomPlot; + friend class QCPAxisRect; +}; + + +class QCP_LIB_DECL QCPRange +{ +public: + double lower, upper; + + QCPRange(); + QCPRange(double lower, double upper); + + double size() const; + double center() const; + void normalize(); + QCPRange sanitizedForLogScale() const; + QCPRange sanitizedForLinScale() const; + bool contains(double value) const; + + static bool validRange(double lower, double upper); + static bool validRange(const QCPRange &range); + static const double minRange; //1e-280; + static const double maxRange; //1e280; +}; +Q_DECLARE_TYPEINFO(QCPRange, Q_MOVABLE_TYPE); + + +class QCP_LIB_DECL QCPMarginGroup : public QObject +{ + Q_OBJECT +public: + QCPMarginGroup(QCustomPlot *parentPlot); + ~QCPMarginGroup(); + + // non-virtual methods: + QList elements(QCP::MarginSide side) const { return mChildren.value(side); } + bool isEmpty() const; + void clear(); + +protected: + // non-property members: + QCustomPlot *mParentPlot; + QHash > mChildren; + + // non-virtual methods: + int commonMargin(QCP::MarginSide side) const; + void addChild(QCP::MarginSide side, QCPLayoutElement *element); + void removeChild(QCP::MarginSide side, QCPLayoutElement *element); + +private: + Q_DISABLE_COPY(QCPMarginGroup) + + friend class QCPLayoutElement; +}; + + +class QCP_LIB_DECL QCPLayoutElement : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCPLayout* layout READ layout) + Q_PROPERTY(QRect rect READ rect) + Q_PROPERTY(QRect outerRect READ outerRect WRITE setOuterRect) + Q_PROPERTY(QMargins margins READ margins WRITE setMargins) + Q_PROPERTY(QMargins minimumMargins READ minimumMargins WRITE setMinimumMargins) + Q_PROPERTY(QSize minimumSize READ minimumSize WRITE setMinimumSize) + Q_PROPERTY(QSize maximumSize READ maximumSize WRITE setMaximumSize) + /// \endcond +public: + explicit QCPLayoutElement(QCustomPlot *parentPlot=0); + virtual ~QCPLayoutElement(); + + // getters: + QCPLayout *layout() const { return mParentLayout; } + QRect rect() const { return mRect; } + QRect outerRect() const { return mOuterRect; } + QMargins margins() const { return mMargins; } + QMargins minimumMargins() const { return mMinimumMargins; } + QCP::MarginSides autoMargins() const { return mAutoMargins; } + QSize minimumSize() const { return mMinimumSize; } + QSize maximumSize() const { return mMaximumSize; } + QCPMarginGroup *marginGroup(QCP::MarginSide side) const { return mMarginGroups.value(side, (QCPMarginGroup*)0); } + QHash marginGroups() const { return mMarginGroups; } + + // setters: + void setOuterRect(const QRect &rect); + void setMargins(const QMargins &margins); + void setMinimumMargins(const QMargins &margins); + void setAutoMargins(QCP::MarginSides sides); + void setMinimumSize(const QSize &size); + void setMinimumSize(int width, int height); + void setMaximumSize(const QSize &size); + void setMaximumSize(int width, int height); + void setMarginGroup(QCP::MarginSides sides, QCPMarginGroup *group); + + // introduced virtual methods: + virtual void update(); + virtual QSize minimumSizeHint() const; + virtual QSize maximumSizeHint() const; + virtual QList elements(bool recursive) const; + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QCPLayout *mParentLayout; + QSize mMinimumSize, mMaximumSize; + QRect mRect, mOuterRect; + QMargins mMargins, mMinimumMargins; + QCP::MarginSides mAutoMargins; + QHash mMarginGroups; + + // introduced virtual methods: + virtual int calculateAutoMargin(QCP::MarginSide side); + // events: + virtual void mousePressEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void mouseMoveEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void mouseReleaseEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void mouseDoubleClickEvent(QMouseEvent *event) {Q_UNUSED(event)} + virtual void wheelEvent(QWheelEvent *event) {Q_UNUSED(event)} + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const { Q_UNUSED(painter) } + virtual void draw(QCPPainter *painter) { Q_UNUSED(painter) } + virtual void parentPlotInitialized(QCustomPlot *parentPlot); + +private: + Q_DISABLE_COPY(QCPLayoutElement) + + friend class QCustomPlot; + friend class QCPLayout; + friend class QCPMarginGroup; +}; + + +class QCP_LIB_DECL QCPLayout : public QCPLayoutElement +{ + Q_OBJECT +public: + explicit QCPLayout(); + + // reimplemented virtual methods: + virtual void update(); + virtual QList elements(bool recursive) const; + + // introduced virtual methods: + virtual int elementCount() const = 0; + virtual QCPLayoutElement* elementAt(int index) const = 0; + virtual QCPLayoutElement* takeAt(int index) = 0; + virtual bool take(QCPLayoutElement* element) = 0; + virtual void simplify(); + + // non-virtual methods: + bool removeAt(int index); + bool remove(QCPLayoutElement* element); + void clear(); + +protected: + // introduced virtual methods: + virtual void updateLayout(); + + // non-virtual methods: + void sizeConstraintsChanged() const; + void adoptElement(QCPLayoutElement *el); + void releaseElement(QCPLayoutElement *el); + QVector getSectionSizes(QVector maxSizes, QVector minSizes, QVector stretchFactors, int totalSize) const; + +private: + Q_DISABLE_COPY(QCPLayout) + friend class QCPLayoutElement; +}; + + +class QCP_LIB_DECL QCPLayoutGrid : public QCPLayout +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(int rowCount READ rowCount) + Q_PROPERTY(int columnCount READ columnCount) + Q_PROPERTY(QList columnStretchFactors READ columnStretchFactors WRITE setColumnStretchFactors) + Q_PROPERTY(QList rowStretchFactors READ rowStretchFactors WRITE setRowStretchFactors) + Q_PROPERTY(int columnSpacing READ columnSpacing WRITE setColumnSpacing) + Q_PROPERTY(int rowSpacing READ rowSpacing WRITE setRowSpacing) + /// \endcond +public: + explicit QCPLayoutGrid(); + virtual ~QCPLayoutGrid(); + + // getters: + int rowCount() const; + int columnCount() const; + QList columnStretchFactors() const { return mColumnStretchFactors; } + QList rowStretchFactors() const { return mRowStretchFactors; } + int columnSpacing() const { return mColumnSpacing; } + int rowSpacing() const { return mRowSpacing; } + + // setters: + void setColumnStretchFactor(int column, double factor); + void setColumnStretchFactors(const QList &factors); + void setRowStretchFactor(int row, double factor); + void setRowStretchFactors(const QList &factors); + void setColumnSpacing(int pixels); + void setRowSpacing(int pixels); + + // reimplemented virtual methods: + virtual void updateLayout(); + virtual int elementCount() const; + virtual QCPLayoutElement* elementAt(int index) const; + virtual QCPLayoutElement* takeAt(int index); + virtual bool take(QCPLayoutElement* element); + virtual QList elements(bool recursive) const; + virtual void simplify(); + virtual QSize minimumSizeHint() const; + virtual QSize maximumSizeHint() const; + + // non-virtual methods: + QCPLayoutElement *element(int row, int column) const; + bool addElement(int row, int column, QCPLayoutElement *element); + bool hasElement(int row, int column); + void expandTo(int newRowCount, int newColumnCount); + void insertRow(int newIndex); + void insertColumn(int newIndex); + +protected: + // property members: + QList > mElements; + QList mColumnStretchFactors; + QList mRowStretchFactors; + int mColumnSpacing, mRowSpacing; + + // non-virtual methods: + void getMinimumRowColSizes(QVector *minColWidths, QVector *minRowHeights) const; + void getMaximumRowColSizes(QVector *maxColWidths, QVector *maxRowHeights) const; + +private: + Q_DISABLE_COPY(QCPLayoutGrid) +}; + + +class QCP_LIB_DECL QCPLayoutInset : public QCPLayout +{ + Q_OBJECT +public: + /*! + Defines how the placement and sizing is handled for a certain element in a QCPLayoutInset. + */ + enum InsetPlacement {ipFree ///< The element may be positioned/sized arbitrarily, see \ref setInsetRect + ,ipBorderAligned ///< The element is aligned to one of the layout sides, see \ref setInsetAlignment + }; + + explicit QCPLayoutInset(); + virtual ~QCPLayoutInset(); + + // getters: + InsetPlacement insetPlacement(int index) const; + Qt::Alignment insetAlignment(int index) const; + QRectF insetRect(int index) const; + + // setters: + void setInsetPlacement(int index, InsetPlacement placement); + void setInsetAlignment(int index, Qt::Alignment alignment); + void setInsetRect(int index, const QRectF &rect); + + // reimplemented virtual methods: + virtual void updateLayout(); + virtual int elementCount() const; + virtual QCPLayoutElement* elementAt(int index) const; + virtual QCPLayoutElement* takeAt(int index); + virtual bool take(QCPLayoutElement* element); + virtual void simplify() {} + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + void addElement(QCPLayoutElement *element, Qt::Alignment alignment); + void addElement(QCPLayoutElement *element, const QRectF &rect); + +protected: + // property members: + QList mElements; + QList mInsetPlacement; + QList mInsetAlignment; + QList mInsetRect; + +private: + Q_DISABLE_COPY(QCPLayoutInset) +}; + + +class QCP_LIB_DECL QCPLineEnding +{ + Q_GADGET +public: + /*! + Defines the type of ending decoration for line-like items, e.g. an arrow. + + \image html QCPLineEnding.png + + The width and length of these decorations can be controlled with the functions \ref setWidth + and \ref setLength. Some decorations like \ref esDisc, \ref esSquare, \ref esDiamond and \ref esBar only + support a width, the length property is ignored. + + \see QCPItemLine::setHead, QCPItemLine::setTail, QCPItemCurve::setHead, QCPItemCurve::setTail + */ + Q_ENUMS(EndingStyle) + enum EndingStyle { esNone ///< No ending decoration + ,esFlatArrow ///< A filled arrow head with a straight/flat back (a triangle) + ,esSpikeArrow ///< A filled arrow head with an indented back + ,esLineArrow ///< A non-filled arrow head with open back + ,esDisc ///< A filled circle + ,esSquare ///< A filled square + ,esDiamond ///< A filled diamond (45° rotated square) + ,esBar ///< A bar perpendicular to the line + ,esHalfBar ///< A bar perpendicular to the line sticking out to one side + ,esSkewedBar ///< A bar that is skewed (skew controllable via \ref setLength) + }; + + QCPLineEnding(); + QCPLineEnding(EndingStyle style, double width=8, double length=10, bool inverted=false); + + // getters: + EndingStyle style() const { return mStyle; } + double width() const { return mWidth; } + double length() const { return mLength; } + bool inverted() const { return mInverted; } + + // setters: + void setStyle(EndingStyle style); + void setWidth(double width); + void setLength(double length); + void setInverted(bool inverted); + + // non-property methods: + double boundingDistance() const; + double realLength() const; + void draw(QCPPainter *painter, const QVector2D &pos, const QVector2D &dir) const; + void draw(QCPPainter *painter, const QVector2D &pos, double angle) const; + +protected: + // property members: + EndingStyle mStyle; + double mWidth, mLength; + bool mInverted; +}; +Q_DECLARE_TYPEINFO(QCPLineEnding, Q_MOVABLE_TYPE); + + +class QCP_LIB_DECL QCPGrid :public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(bool subGridVisible READ subGridVisible WRITE setSubGridVisible) + Q_PROPERTY(bool antialiasedSubGrid READ antialiasedSubGrid WRITE setAntialiasedSubGrid) + Q_PROPERTY(bool antialiasedZeroLine READ antialiasedZeroLine WRITE setAntialiasedZeroLine) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen subGridPen READ subGridPen WRITE setSubGridPen) + Q_PROPERTY(QPen zeroLinePen READ zeroLinePen WRITE setZeroLinePen) + /// \endcond +public: + QCPGrid(QCPAxis *parentAxis); + + // getters: + bool subGridVisible() const { return mSubGridVisible; } + bool antialiasedSubGrid() const { return mAntialiasedSubGrid; } + bool antialiasedZeroLine() const { return mAntialiasedZeroLine; } + QPen pen() const { return mPen; } + QPen subGridPen() const { return mSubGridPen; } + QPen zeroLinePen() const { return mZeroLinePen; } + + // setters: + void setSubGridVisible(bool visible); + void setAntialiasedSubGrid(bool enabled); + void setAntialiasedZeroLine(bool enabled); + void setPen(const QPen &pen); + void setSubGridPen(const QPen &pen); + void setZeroLinePen(const QPen &pen); + +protected: + // property members: + bool mSubGridVisible; + bool mAntialiasedSubGrid, mAntialiasedZeroLine; + QPen mPen, mSubGridPen, mZeroLinePen; + // non-property members: + QCPAxis *mParentAxis; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + void drawGridLines(QCPPainter *painter) const; + void drawSubGridLines(QCPPainter *painter) const; + + friend class QCPAxis; +}; + + +class QCP_LIB_DECL QCPAxis : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(AxisType axisType READ axisType) + Q_PROPERTY(QCPAxisRect* axisRect READ axisRect) + Q_PROPERTY(ScaleType scaleType READ scaleType WRITE setScaleType) + Q_PROPERTY(double scaleLogBase READ scaleLogBase WRITE setScaleLogBase) + Q_PROPERTY(QCPRange range READ range WRITE setRange) + Q_PROPERTY(bool rangeReversed READ rangeReversed WRITE setRangeReversed) + Q_PROPERTY(bool autoTicks READ autoTicks WRITE setAutoTicks) + Q_PROPERTY(int autoTickCount READ autoTickCount WRITE setAutoTickCount) + Q_PROPERTY(bool autoTickLabels READ autoTickLabels WRITE setAutoTickLabels) + Q_PROPERTY(bool autoTickStep READ autoTickStep WRITE setAutoTickStep) + Q_PROPERTY(bool autoSubTicks READ autoSubTicks WRITE setAutoSubTicks) + Q_PROPERTY(bool ticks READ ticks WRITE setTicks) + Q_PROPERTY(bool tickLabels READ tickLabels WRITE setTickLabels) + Q_PROPERTY(int tickLabelPadding READ tickLabelPadding WRITE setTickLabelPadding) + Q_PROPERTY(LabelType tickLabelType READ tickLabelType WRITE setTickLabelType) + Q_PROPERTY(QFont tickLabelFont READ tickLabelFont WRITE setTickLabelFont) + Q_PROPERTY(QColor tickLabelColor READ tickLabelColor WRITE setTickLabelColor) + Q_PROPERTY(double tickLabelRotation READ tickLabelRotation WRITE setTickLabelRotation) + Q_PROPERTY(QString dateTimeFormat READ dateTimeFormat WRITE setDateTimeFormat) + Q_PROPERTY(QString numberFormat READ numberFormat WRITE setNumberFormat) + Q_PROPERTY(int numberPrecision READ numberPrecision WRITE setNumberPrecision) + Q_PROPERTY(double tickStep READ tickStep WRITE setTickStep) + Q_PROPERTY(QVector tickVector READ tickVector WRITE setTickVector) + Q_PROPERTY(QVector tickVectorLabels READ tickVectorLabels WRITE setTickVectorLabels) + Q_PROPERTY(int tickLengthIn READ tickLengthIn WRITE setTickLengthIn) + Q_PROPERTY(int tickLengthOut READ tickLengthOut WRITE setTickLengthOut) + Q_PROPERTY(int subTickCount READ subTickCount WRITE setSubTickCount) + Q_PROPERTY(int subTickLengthIn READ subTickLengthIn WRITE setSubTickLengthIn) + Q_PROPERTY(int subTickLengthOut READ subTickLengthOut WRITE setSubTickLengthOut) + Q_PROPERTY(QPen basePen READ basePen WRITE setBasePen) + Q_PROPERTY(QPen tickPen READ tickPen WRITE setTickPen) + Q_PROPERTY(QPen subTickPen READ subTickPen WRITE setSubTickPen) + Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont) + Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor) + Q_PROPERTY(QString label READ label WRITE setLabel) + Q_PROPERTY(int labelPadding READ labelPadding WRITE setLabelPadding) + Q_PROPERTY(int padding READ padding WRITE setPadding) + Q_PROPERTY(int offset READ offset WRITE setOffset) + Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts) + Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts) + Q_PROPERTY(QFont selectedTickLabelFont READ selectedTickLabelFont WRITE setSelectedTickLabelFont) + Q_PROPERTY(QFont selectedLabelFont READ selectedLabelFont WRITE setSelectedLabelFont) + Q_PROPERTY(QColor selectedTickLabelColor READ selectedTickLabelColor WRITE setSelectedTickLabelColor) + Q_PROPERTY(QColor selectedLabelColor READ selectedLabelColor WRITE setSelectedLabelColor) + Q_PROPERTY(QPen selectedBasePen READ selectedBasePen WRITE setSelectedBasePen) + Q_PROPERTY(QPen selectedTickPen READ selectedTickPen WRITE setSelectedTickPen) + Q_PROPERTY(QPen selectedSubTickPen READ selectedSubTickPen WRITE setSelectedSubTickPen) + Q_PROPERTY(QCPLineEnding lowerEnding READ lowerEnding WRITE setLowerEnding) + Q_PROPERTY(QCPLineEnding upperEnding READ upperEnding WRITE setUpperEnding) + Q_PROPERTY(QCPGrid* grid READ grid) + /// \endcond +public: + /*! + Defines at which side of the axis rect the axis will appear. This also affects how the tick + marks are drawn, on which side the labels are placed etc. + */ + enum AxisType { atLeft = 0x01 ///< 0x01 Axis is vertical and on the left side of the axis rect + ,atRight = 0x02 ///< 0x02 Axis is vertical and on the right side of the axis rect + ,atTop = 0x04 ///< 0x04 Axis is horizontal and on the top side of the axis rect + ,atBottom = 0x08 ///< 0x08 Axis is horizontal and on the bottom side of the axis rect + }; + Q_FLAGS(AxisType AxisTypes) + Q_DECLARE_FLAGS(AxisTypes, AxisType) + /*! + When automatic tick label generation is enabled (\ref setAutoTickLabels), defines how the + coordinate of the tick is interpreted, i.e. translated into a string. + + \see setTickLabelType + */ + enum LabelType { ltNumber ///< Tick coordinate is regarded as normal number and will be displayed as such. (see \ref setNumberFormat) + ,ltDateTime ///< Tick coordinate is regarded as a date/time (seconds since 1970-01-01T00:00:00 UTC) and will be displayed and formatted as such. (for details, see \ref setDateTimeFormat) + }; + Q_ENUMS(LabelType) + /*! + Defines the scale of an axis. + \see setScaleType + */ + enum ScaleType { stLinear ///< Linear scaling + ,stLogarithmic ///< Logarithmic scaling with correspondingly transformed plots and (major) tick marks at every base power (see \ref setScaleLogBase). + }; + Q_ENUMS(ScaleType) + /*! + Defines the selectable parts of an axis. + \see setSelectableParts, setSelectedParts + */ + enum SelectablePart { spNone = 0 ///< None of the selectable parts + ,spAxis = 0x001 ///< The axis backbone and tick marks + ,spTickLabels = 0x002 ///< Tick labels (numbers) of this axis (as a whole, not individually) + ,spAxisLabel = 0x004 ///< The axis label + }; + Q_FLAGS(SelectablePart SelectableParts) + Q_DECLARE_FLAGS(SelectableParts, SelectablePart) + + explicit QCPAxis(QCPAxisRect *parent, AxisType type); + + // getters: + AxisType axisType() const { return mAxisType; } + QCPAxisRect *axisRect() const { return mAxisRect; } + ScaleType scaleType() const { return mScaleType; } + double scaleLogBase() const { return mScaleLogBase; } + const QCPRange range() const { return mRange; } + bool rangeReversed() const { return mRangeReversed; } + bool autoTicks() const { return mAutoTicks; } + int autoTickCount() const { return mAutoTickCount; } + bool autoTickLabels() const { return mAutoTickLabels; } + bool autoTickStep() const { return mAutoTickStep; } + bool autoSubTicks() const { return mAutoSubTicks; } + bool ticks() const { return mTicks; } + bool tickLabels() const { return mTickLabels; } + int tickLabelPadding() const { return mTickLabelPadding; } + LabelType tickLabelType() const { return mTickLabelType; } + QFont tickLabelFont() const { return mTickLabelFont; } + QColor tickLabelColor() const { return mTickLabelColor; } + double tickLabelRotation() const { return mTickLabelRotation; } + QString dateTimeFormat() const { return mDateTimeFormat; } + QString numberFormat() const; + int numberPrecision() const { return mNumberPrecision; } + double tickStep() const { return mTickStep; } + QVector tickVector() const { return mTickVector; } + QVector tickVectorLabels() const { return mTickVectorLabels; } + int tickLengthIn() const { return mTickLengthIn; } + int tickLengthOut() const { return mTickLengthOut; } + int subTickCount() const { return mSubTickCount; } + int subTickLengthIn() const { return mSubTickLengthIn; } + int subTickLengthOut() const { return mSubTickLengthOut; } + QPen basePen() const { return mBasePen; } + QPen tickPen() const { return mTickPen; } + QPen subTickPen() const { return mSubTickPen; } + QFont labelFont() const { return mLabelFont; } + QColor labelColor() const { return mLabelColor; } + QString label() const { return mLabel; } + int labelPadding() const { return mLabelPadding; } + int padding() const { return mPadding; } + int offset() const { return mOffset; } + SelectableParts selectedParts() const { return mSelectedParts; } + SelectableParts selectableParts() const { return mSelectableParts; } + QFont selectedTickLabelFont() const { return mSelectedTickLabelFont; } + QFont selectedLabelFont() const { return mSelectedLabelFont; } + QColor selectedTickLabelColor() const { return mSelectedTickLabelColor; } + QColor selectedLabelColor() const { return mSelectedLabelColor; } + QPen selectedBasePen() const { return mSelectedBasePen; } + QPen selectedTickPen() const { return mSelectedTickPen; } + QPen selectedSubTickPen() const { return mSelectedSubTickPen; } + QCPLineEnding lowerEnding() const { return mLowerEnding; } + QCPLineEnding upperEnding() const { return mUpperEnding; } + QCPGrid *grid() const { return mGrid; } + + // setters: + void setScaleType(ScaleType type); + void setScaleLogBase(double base); + Q_SLOT void setRange(const QCPRange &range); + void setRange(double lower, double upper); + void setRange(double position, double size, Qt::AlignmentFlag alignment); + void setRangeLower(double lower); + void setRangeUpper(double upper); + void setRangeReversed(bool reversed); + void setAutoTicks(bool on); + void setAutoTickCount(int approximateCount); + void setAutoTickLabels(bool on); + void setAutoTickStep(bool on); + void setAutoSubTicks(bool on); + void setTicks(bool show); + void setTickLabels(bool show); + void setTickLabelPadding(int padding); + void setTickLabelType(LabelType type); + void setTickLabelFont(const QFont &font); + void setTickLabelColor(const QColor &color); + void setTickLabelRotation(double degrees); + void setDateTimeFormat(const QString &format); + void setNumberFormat(const QString &formatCode); + void setNumberPrecision(int precision); + void setTickStep(double step); + void setTickVector(const QVector &vec); + void setTickVectorLabels(const QVector &vec); + void setTickLength(int inside, int outside=0); + void setTickLengthIn(int inside); + void setTickLengthOut(int outside); + void setSubTickCount(int count); + void setSubTickLength(int inside, int outside=0); + void setSubTickLengthIn(int inside); + void setSubTickLengthOut(int outside); + void setBasePen(const QPen &pen); + void setTickPen(const QPen &pen); + void setSubTickPen(const QPen &pen); + void setLabelFont(const QFont &font); + void setLabelColor(const QColor &color); + void setLabel(const QString &str); + void setLabelPadding(int padding); + void setPadding(int padding); + void setOffset(int offset); + void setSelectedTickLabelFont(const QFont &font); + void setSelectedLabelFont(const QFont &font); + void setSelectedTickLabelColor(const QColor &color); + void setSelectedLabelColor(const QColor &color); + void setSelectedBasePen(const QPen &pen); + void setSelectedTickPen(const QPen &pen); + void setSelectedSubTickPen(const QPen &pen); + Q_SLOT void setSelectableParts(const QCPAxis::SelectableParts &selectableParts); + Q_SLOT void setSelectedParts(const QCPAxis::SelectableParts &selectedParts); + void setLowerEnding(const QCPLineEnding &ending); + void setUpperEnding(const QCPLineEnding &ending); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + Qt::Orientation orientation() const { return mOrientation; } + void moveRange(double diff); + void scaleRange(double factor, double center); + void setScaleRatio(const QCPAxis *otherAxis, double ratio=1.0); + double pixelToCoord(double value) const; + double coordToPixel(double value) const; + SelectablePart getPartAt(const QPointF &pos) const; + QList plottables() const; + QList graphs() const; + QList items() const; + + static AxisType marginSideToAxisType(QCP::MarginSide side); + +signals: + void ticksRequest(); + void rangeChanged(const QCPRange &newRange); + void selectionChanged(const QCPAxis::SelectableParts &parts); + +protected: + struct CachedLabel + { + QPointF offset; + QPixmap pixmap; + }; + struct TickLabelData + { + QString basePart, expPart; + QRect baseBounds, expBounds, totalBounds, rotatedTotalBounds; + QFont baseFont, expFont; + }; + + // property members: + // axis base: + AxisType mAxisType; + QCPAxisRect *mAxisRect; + int mOffset, mPadding; + Qt::Orientation mOrientation; + SelectableParts mSelectableParts, mSelectedParts; + QPen mBasePen, mSelectedBasePen; + QCPLineEnding mLowerEnding, mUpperEnding; + // axis label: + int mLabelPadding; + QString mLabel; + QFont mLabelFont, mSelectedLabelFont; + QColor mLabelColor, mSelectedLabelColor; + // tick labels: + int mTickLabelPadding; + bool mTickLabels, mAutoTickLabels; + double mTickLabelRotation; + LabelType mTickLabelType; + QFont mTickLabelFont, mSelectedTickLabelFont; + QColor mTickLabelColor, mSelectedTickLabelColor; + QString mDateTimeFormat; + int mNumberPrecision; + char mNumberFormatChar; + bool mNumberBeautifulPowers; + bool mNumberMultiplyCross; + // ticks and subticks: + bool mTicks; + double mTickStep; + int mSubTickCount, mAutoTickCount; + bool mAutoTicks, mAutoTickStep, mAutoSubTicks; + int mTickLengthIn, mTickLengthOut, mSubTickLengthIn, mSubTickLengthOut; + QPen mTickPen, mSelectedTickPen; + QPen mSubTickPen, mSelectedSubTickPen; + // scale and range: + QCPRange mRange; + bool mRangeReversed; + ScaleType mScaleType; + double mScaleLogBase, mScaleLogBaseLogInv; + + // non-property members: + QCPGrid *mGrid; + QCache mLabelCache; + int mLowestVisibleTick, mHighestVisibleTick; + QChar mExponentialChar, mPositiveSignChar; + QVector mTickVector; + QVector mTickVectorLabels; + QVector mSubTickVector; + QRect mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox; + bool mCachedMarginValid; + int mCachedMargin; + + // introduced virtual methods: + virtual void setupTickVectors(); + virtual void generateAutoTicks(); + virtual int calculateAutoSubTickCount(double tickStep) const; + virtual int calculateMargin(); + // tick label drawing/caching: + virtual void placeTickLabel(QCPPainter *painter, double position, int distanceToAxis, const QString &text, QSize *tickLabelsSize); + virtual void drawTickLabel(QCPPainter *painter, double x, double y, const TickLabelData &labelData) const; + virtual TickLabelData getTickLabelData(const QFont &font, const QString &text) const; + virtual QPointF getTickLabelDrawOffset(const TickLabelData &labelData) const; + virtual void getMaxTickLabelSize(const QFont &font, const QString &text, QSize *tickLabelsSize) const; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + virtual QCP::Interaction selectionCategory() const; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-virtual methods: + void visibleTickBounds(int &lowIndex, int &highIndex) const; + double baseLog(double value) const; + double basePow(double value) const; + QPen getBasePen() const; + QPen getTickPen() const; + QPen getSubTickPen() const; + QFont getTickLabelFont() const; + QFont getLabelFont() const; + QColor getTickLabelColor() const; + QColor getLabelColor() const; + +private: + Q_DISABLE_COPY(QCPAxis) + + friend class QCustomPlot; + friend class QCPGrid; + friend class QCPAxisRect; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPAxis::SelectableParts) +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPAxis::AxisTypes) +Q_DECLARE_METATYPE(QCPAxis::SelectablePart) + + +class QCP_LIB_DECL QCPAbstractPlottable : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(bool antialiasedFill READ antialiasedFill WRITE setAntialiasedFill) + Q_PROPERTY(bool antialiasedScatters READ antialiasedScatters WRITE setAntialiasedScatters) + Q_PROPERTY(bool antialiasedErrorBars READ antialiasedErrorBars WRITE setAntialiasedErrorBars) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(QCPAxis* keyAxis READ keyAxis WRITE setKeyAxis) + Q_PROPERTY(QCPAxis* valueAxis READ valueAxis WRITE setValueAxis) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + QCPAbstractPlottable(QCPAxis *keyAxis, QCPAxis *valueAxis); + + // getters: + QString name() const { return mName; } + bool antialiasedFill() const { return mAntialiasedFill; } + bool antialiasedScatters() const { return mAntialiasedScatters; } + bool antialiasedErrorBars() const { return mAntialiasedErrorBars; } + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + QCPAxis *keyAxis() const { return mKeyAxis.data(); } + QCPAxis *valueAxis() const { return mValueAxis.data(); } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setName(const QString &name); + void setAntialiasedFill(bool enabled); + void setAntialiasedScatters(bool enabled); + void setAntialiasedErrorBars(bool enabled); + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + void setKeyAxis(QCPAxis *axis); + void setValueAxis(QCPAxis *axis); + Q_SLOT void setSelectable(bool selectable); + Q_SLOT void setSelected(bool selected); + + // introduced virtual methods: + virtual void clearData() = 0; + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const = 0; + virtual bool addToLegend(); + virtual bool removeFromLegend() const; + + // non-property methods: + void rescaleAxes(bool onlyEnlarge=false) const; + void rescaleKeyAxis(bool onlyEnlarge=false) const; + void rescaleValueAxis(bool onlyEnlarge=false) const; + +signals: + void selectionChanged(bool selected); + +protected: + /*! + Represents negative and positive sign domain for passing to \ref getKeyRange and \ref getValueRange. + */ + enum SignDomain { sdNegative ///< The negative sign domain, i.e. numbers smaller than zero + ,sdBoth ///< Both sign domains, including zero, i.e. all (rational) numbers + ,sdPositive ///< The positive sign domain, i.e. numbers greater than zero + }; + + // property members: + QString mName; + bool mAntialiasedFill, mAntialiasedScatters, mAntialiasedErrorBars; + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + QWeakPointer mKeyAxis, mValueAxis; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual QRect clipRect() const; + virtual void draw(QCPPainter *painter) = 0; + virtual QCP::Interaction selectionCategory() const; + void applyDefaultAntialiasingHint(QCPPainter *painter) const; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // introduced virtual methods: + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const = 0; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const = 0; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const = 0; + + // non-virtual methods: + void coordsToPixels(double key, double value, double &x, double &y) const; + const QPointF coordsToPixels(double key, double value) const; + void pixelsToCoords(double x, double y, double &key, double &value) const; + void pixelsToCoords(const QPointF &pixelPos, double &key, double &value) const; + QPen mainPen() const; + QBrush mainBrush() const; + void applyFillAntialiasingHint(QCPPainter *painter) const; + void applyScattersAntialiasingHint(QCPPainter *painter) const; + void applyErrorBarsAntialiasingHint(QCPPainter *painter) const; + double distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const; + +private: + Q_DISABLE_COPY(QCPAbstractPlottable) + + friend class QCustomPlot; + friend class QCPPlottableLegendItem; +}; + + +class QCP_LIB_DECL QCPItemAnchor +{ +public: + QCPItemAnchor(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name, int anchorId=-1); + virtual ~QCPItemAnchor(); + + // getters: + QString name() const { return mName; } + virtual QPointF pixelPoint() const; + +protected: + // property members: + QString mName; + + // non-property members: + QCustomPlot *mParentPlot; + QCPAbstractItem *mParentItem; + int mAnchorId; + QSet mChildren; + + // introduced virtual methods: + virtual QCPItemPosition *toQCPItemPosition() { return 0; } + + // non-virtual methods: + void addChild(QCPItemPosition* pos); // called from pos when this anchor is set as parent + void removeChild(QCPItemPosition *pos); // called from pos when its parent anchor is reset or pos deleted + +private: + Q_DISABLE_COPY(QCPItemAnchor) + + friend class QCPItemPosition; +}; + + + +class QCP_LIB_DECL QCPItemPosition : public QCPItemAnchor +{ +public: + /*! + Defines the ways an item position can be specified. Thus it defines what the numbers passed to + \ref setCoords actually mean. + + \see setType + */ + enum PositionType { ptAbsolute ///< Static positioning in pixels, starting from the top left corner of the viewport/widget. + ,ptViewportRatio ///< Static positioning given by a fraction of the viewport size. + ,ptAxisRectRatio ///< Static positioning given by a fraction of the axis rect size (see \ref setAxisRect). + ,ptPlotCoords ///< Dynamic positioning at a plot coordinate defined by two axes (see \ref setAxes). + }; + + QCPItemPosition(QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name); + virtual ~QCPItemPosition(); + + // getters: + PositionType type() const { return mPositionType; } + QCPItemAnchor *parentAnchor() const { return mParentAnchor; } + double key() const { return mKey; } + double value() const { return mValue; } + QPointF coords() const { return QPointF(mKey, mValue); } + QCPAxis *keyAxis() const { return mKeyAxis.data(); } + QCPAxis *valueAxis() const { return mValueAxis.data(); } + QCPAxisRect *axisRect() const { return mAxisRect.data(); } + virtual QPointF pixelPoint() const; + + // setters: + void setType(PositionType type); + bool setParentAnchor(QCPItemAnchor *parentAnchor, bool keepPixelPosition=false); + void setCoords(double key, double value); + void setCoords(const QPointF &coords); + void setAxes(QCPAxis* keyAxis, QCPAxis* valueAxis); + void setAxisRect(QCPAxisRect *axisRect); + void setPixelPoint(const QPointF &pixelPoint); + +protected: + // property members: + PositionType mPositionType; + QWeakPointer mKeyAxis, mValueAxis; + QWeakPointer mAxisRect; + double mKey, mValue; + QCPItemAnchor *mParentAnchor; + + // reimplemented virtual methods: + virtual QCPItemPosition *toQCPItemPosition() { return this; } + +private: + Q_DISABLE_COPY(QCPItemPosition) + +}; + + +class QCP_LIB_DECL QCPAbstractItem : public QCPLayerable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(bool clipToAxisRect READ clipToAxisRect WRITE setClipToAxisRect) + Q_PROPERTY(QCPAxisRect* clipAxisRect READ clipAxisRect WRITE setClipAxisRect) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + QCPAbstractItem(QCustomPlot *parentPlot); + virtual ~QCPAbstractItem(); + + // getters: + bool clipToAxisRect() const { return mClipToAxisRect; } + QCPAxisRect *clipAxisRect() const { return mClipAxisRect.data(); } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setClipToAxisRect(bool clip); + void setClipAxisRect(QCPAxisRect *rect); + void setSelectable(bool selectable); + void setSelected(bool selected); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const = 0; + + // non-virtual methods: + QList positions() const { return mPositions; } + QList anchors() const { return mAnchors; } + QCPItemPosition *position(const QString &name) const; + QCPItemAnchor *anchor(const QString &name) const; + bool hasAnchor(const QString &name) const; + +signals: + void selectionChanged(bool selected); + +protected: + // property members: + bool mClipToAxisRect; + QWeakPointer mClipAxisRect; + QList mPositions; + QList mAnchors; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual QCP::Interaction selectionCategory() const; + virtual QRect clipRect() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter) = 0; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // introduced virtual methods: + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + double distSqrToLine(const QPointF &start, const QPointF &end, const QPointF &point) const; + double rectSelectTest(const QRectF &rect, const QPointF &pos, bool filledRect) const; + QCPItemPosition *createPosition(const QString &name); + QCPItemAnchor *createAnchor(const QString &name, int anchorId); + +private: + Q_DISABLE_COPY(QCPAbstractItem) + + friend class QCustomPlot; + friend class QCPItemAnchor; +}; + + +class QCP_LIB_DECL QCustomPlot : public QWidget +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QRect viewport READ viewport WRITE setViewport) + Q_PROPERTY(QPixmap background READ background WRITE setBackground) + Q_PROPERTY(bool backgroundScaled READ backgroundScaled WRITE setBackgroundScaled) + Q_PROPERTY(Qt::AspectRatioMode backgroundScaledMode READ backgroundScaledMode WRITE setBackgroundScaledMode) + Q_PROPERTY(QCPLayoutGrid* plotLayout READ plotLayout) + Q_PROPERTY(bool autoAddPlottableToLegend READ autoAddPlottableToLegend WRITE setAutoAddPlottableToLegend) + Q_PROPERTY(int selectionTolerance READ selectionTolerance WRITE setSelectionTolerance) + Q_PROPERTY(bool noAntialiasingOnDrag READ noAntialiasingOnDrag WRITE setNoAntialiasingOnDrag) + Q_PROPERTY(Qt::KeyboardModifier multiSelectModifier READ multiSelectModifier WRITE setMultiSelectModifier) + /// \endcond +public: + /*! + Defines how a layer should be inserted relative to an other layer. + + \see addLayer, moveLayer + */ + enum LayerInsertMode { limBelow ///< Layer is inserted below other layer + ,limAbove ///< Layer is inserted above other layer + }; + Q_ENUMS(LayerInsertMode) + + explicit QCustomPlot(QWidget *parent = 0); + virtual ~QCustomPlot(); + + // getters: + QRect viewport() const { return mViewport; } + QPixmap background() const { return mBackgroundPixmap; } + bool backgroundScaled() const { return mBackgroundScaled; } + Qt::AspectRatioMode backgroundScaledMode() const { return mBackgroundScaledMode; } + QCPLayoutGrid *plotLayout() const { return mPlotLayout; } + QCP::AntialiasedElements antialiasedElements() const { return mAntialiasedElements; } + QCP::AntialiasedElements notAntialiasedElements() const { return mNotAntialiasedElements; } + bool autoAddPlottableToLegend() const { return mAutoAddPlottableToLegend; } + const QCP::Interactions interactions() const { return mInteractions; } + int selectionTolerance() const { return mSelectionTolerance; } + bool noAntialiasingOnDrag() const { return mNoAntialiasingOnDrag; } + QCP::PlottingHints plottingHints() const { return mPlottingHints; } + Qt::KeyboardModifier multiSelectModifier() const { return mMultiSelectModifier; } + + // setters: + void setViewport(const QRect &rect); + void setBackground(const QPixmap &pm); + void setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding); + void setBackground(const QBrush &brush); + void setBackgroundScaled(bool scaled); + void setBackgroundScaledMode(Qt::AspectRatioMode mode); + void setAntialiasedElements(const QCP::AntialiasedElements &antialiasedElements); + void setAntialiasedElement(QCP::AntialiasedElement antialiasedElement, bool enabled=true); + void setNotAntialiasedElements(const QCP::AntialiasedElements ¬AntialiasedElements); + void setNotAntialiasedElement(QCP::AntialiasedElement notAntialiasedElement, bool enabled=true); + void setAutoAddPlottableToLegend(bool on); + void setInteractions(const QCP::Interactions &interactions); + void setInteraction(const QCP::Interaction &interaction, bool enabled=true); + void setSelectionTolerance(int pixels); + void setNoAntialiasingOnDrag(bool enabled); + void setPlottingHints(const QCP::PlottingHints &hints); + void setPlottingHint(QCP::PlottingHint hint, bool enabled=true); + void setMultiSelectModifier(Qt::KeyboardModifier modifier); + + // non-property methods: + // plottable interface: + QCPAbstractPlottable *plottable(int index); + QCPAbstractPlottable *plottable(); + bool addPlottable(QCPAbstractPlottable *plottable); + bool removePlottable(QCPAbstractPlottable *plottable); + bool removePlottable(int index); + int clearPlottables(); + int plottableCount() const; + QList selectedPlottables() const; + QCPAbstractPlottable *plottableAt(const QPointF &pos, bool onlySelectable=false) const; + bool hasPlottable(QCPAbstractPlottable *plottable) const; + + // specialized interface for QCPGraph: + QCPGraph *graph(int index) const; + QCPGraph *graph() const; + QCPGraph *addGraph(QCPAxis *keyAxis=0, QCPAxis *valueAxis=0); + bool removeGraph(QCPGraph *graph); + bool removeGraph(int index); + int clearGraphs(); + int graphCount() const; + QList selectedGraphs() const; + + // item interface: + QCPAbstractItem *item(int index) const; + QCPAbstractItem *item() const; + bool addItem(QCPAbstractItem* item); + bool removeItem(QCPAbstractItem *item); + bool removeItem(int index); + int clearItems(); + int itemCount() const; + QList selectedItems() const; + QCPAbstractItem *itemAt(const QPointF &pos, bool onlySelectable=false) const; + bool hasItem(QCPAbstractItem *item) const; + + // layer interface: + QCPLayer *layer(const QString &name) const; + QCPLayer *layer(int index) const; + QCPLayer *currentLayer() const; + bool setCurrentLayer(const QString &name); + bool setCurrentLayer(QCPLayer *layer); + int layerCount() const; + bool addLayer(const QString &name, QCPLayer *otherLayer=0, LayerInsertMode insertMode=limAbove); + bool removeLayer(QCPLayer *layer); + bool moveLayer(QCPLayer *layer, QCPLayer *otherLayer, LayerInsertMode insertMode=limAbove); + + // axis rect/layout interface: + int axisRectCount() const; + QCPAxisRect* axisRect(int index=0) const; + QList axisRects() const; + QCPLayoutElement* layoutElementAt(const QPointF &pos) const; + Q_SLOT void rescaleAxes(bool onlyVisible=false); + + QList selectedAxes() const; + QList selectedLegends() const; + Q_SLOT void deselectAll(); + + bool savePdf(const QString &fileName, bool noCosmeticPen=false, int width=0, int height=0); + bool savePng(const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1); + bool saveJpg(const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1); + bool saveBmp(const QString &fileName, int width=0, int height=0, double scale=1.0); + bool saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality=-1); + QPixmap toPixmap(int width=0, int height=0, double scale=1.0); + void toPainter(QCPPainter *painter, int width=0, int height=0); + Q_SLOT void replot(); + + QCPAxis *xAxis, *yAxis, *xAxis2, *yAxis2; + QCPLegend *legend; + +signals: + void mouseDoubleClick(QMouseEvent *event); + void mousePress(QMouseEvent *event); + void mouseMove(QMouseEvent *event); + void mouseRelease(QMouseEvent *event); + void mouseWheel(QWheelEvent *event); + + void plottableClick(QCPAbstractPlottable *plottable, QMouseEvent *event); + void plottableDoubleClick(QCPAbstractPlottable *plottable, QMouseEvent *event); + void itemClick(QCPAbstractItem *item, QMouseEvent *event); + void itemDoubleClick(QCPAbstractItem *item, QMouseEvent *event); + void axisClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); + void axisDoubleClick(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); + void legendClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event); + void legendDoubleClick(QCPLegend *legend, QCPAbstractLegendItem *item, QMouseEvent *event); + void titleClick(QMouseEvent *event, QCPPlotTitle *title); + void titleDoubleClick(QMouseEvent *event, QCPPlotTitle *title); + + void selectionChangedByUser(); + void beforeReplot(); + void afterReplot(); + +protected: + // property members: + QRect mViewport; + QCPLayoutGrid *mPlotLayout; + bool mAutoAddPlottableToLegend; + QList mPlottables; + QList mGraphs; // extra list of plottables also in mPlottables that are of type QCPGraph + QList mItems; + QList mLayers; + QCP::AntialiasedElements mAntialiasedElements, mNotAntialiasedElements; + QCP::Interactions mInteractions; + int mSelectionTolerance; + bool mNoAntialiasingOnDrag; + QBrush mBackgroundBrush; + QPixmap mBackgroundPixmap; + QPixmap mScaledBackgroundPixmap; + bool mBackgroundScaled; + Qt::AspectRatioMode mBackgroundScaledMode; + QCPLayer *mCurrentLayer; + QCP::PlottingHints mPlottingHints; + Qt::KeyboardModifier mMultiSelectModifier; + + // non-property members: + QPixmap mPaintBuffer; + QPoint mMousePressPos; + QCPLayoutElement *mMouseEventElement; + bool mReplotting; + + // reimplemented virtual methods: + virtual QSize minimumSizeHint() const; + virtual QSize sizeHint() const; + virtual void paintEvent(QPaintEvent *event); + virtual void resizeEvent(QResizeEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void wheelEvent(QWheelEvent *event); + + // introduced virtual methods: + virtual void draw(QCPPainter *painter); + virtual void axisRemoved(QCPAxis *axis); + virtual void legendRemoved(QCPLegend *legend); + + // non-virtual methods: + void updateLayerIndices() const; + QCPLayerable *layerableAt(const QPointF &pos, bool onlySelectable, QVariant *selectionDetails=0) const; + void drawBackground(QCPPainter *painter); + + friend class QCPLegend; + friend class QCPAxis; + friend class QCPLayer; + friend class QCPAxisRect; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPData +{ +public: + QCPData(); + QCPData(double key, double value); + double key, value; + double keyErrorPlus, keyErrorMinus; + double valueErrorPlus, valueErrorMinus; +}; +Q_DECLARE_TYPEINFO(QCPData, Q_MOVABLE_TYPE); + +/*! \typedef QCPDataMap + Container for storing QCPData items in a sorted fashion. The key of the map + is the key member of the QCPData instance. + + This is the container in which QCPGraph holds its data. + \see QCPData, QCPGraph::setData +*/ +typedef QMap QCPDataMap; +typedef QMapIterator QCPDataMapIterator; +typedef QMutableMapIterator QCPDataMutableMapIterator; + + +class QCP_LIB_DECL QCPGraph : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(LineStyle lineStyle READ lineStyle WRITE setLineStyle) + Q_PROPERTY(QCPScatterStyle scatterStyle READ scatterStyle WRITE setScatterStyle) + Q_PROPERTY(ErrorType errorType READ errorType WRITE setErrorType) + Q_PROPERTY(QPen errorPen READ errorPen WRITE setErrorPen) + Q_PROPERTY(double errorBarSize READ errorBarSize WRITE setErrorBarSize) + Q_PROPERTY(bool errorBarSkipSymbol READ errorBarSkipSymbol WRITE setErrorBarSkipSymbol) + Q_PROPERTY(QCPGraph* channelFillGraph READ channelFillGraph WRITE setChannelFillGraph) + /// \endcond +public: + /*! + Defines how the graph's line is represented visually in the plot. The line is drawn with the + current pen of the graph (\ref setPen). + \see setLineStyle + */ + enum LineStyle { lsNone ///< data points are not connected with any lines (e.g. data only represented + ///< with symbols according to the scatter style, see \ref setScatterStyle) + ,lsLine ///< data points are connected by a straight line + ,lsStepLeft ///< line is drawn as steps where the step height is the value of the left data point + ,lsStepRight ///< line is drawn as steps where the step height is the value of the right data point + ,lsStepCenter ///< line is drawn as steps where the step is in between two data points + ,lsImpulse ///< each data point is represented by a line parallel to the value axis, which reaches from the data point to the zero-value-line + }; + Q_ENUMS(LineStyle) + /*! + Defines what kind of error bars are drawn for each data point + */ + enum ErrorType { etNone ///< No error bars are shown + ,etKey ///< Error bars for the key dimension of the data point are shown + ,etValue ///< Error bars for the value dimension of the data point are shown + ,etBoth ///< Error bars for both key and value dimensions of the data point are shown + }; + Q_ENUMS(ErrorType) + + explicit QCPGraph(QCPAxis *keyAxis, QCPAxis *valueAxis); + virtual ~QCPGraph(); + + // getters: + const QCPDataMap *data() const { return mData; } + LineStyle lineStyle() const { return mLineStyle; } + QCPScatterStyle scatterStyle() const { return mScatterStyle; } + ErrorType errorType() const { return mErrorType; } + QPen errorPen() const { return mErrorPen; } + double errorBarSize() const { return mErrorBarSize; } + bool errorBarSkipSymbol() const { return mErrorBarSkipSymbol; } + QCPGraph *channelFillGraph() const { return mChannelFillGraph.data(); } + + // setters: + void setData(QCPDataMap *data, bool copy=false); + void setData(const QVector &key, const QVector &value); + void setDataKeyError(const QVector &key, const QVector &value, const QVector &keyError); + void setDataKeyError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus); + void setDataValueError(const QVector &key, const QVector &value, const QVector &valueError); + void setDataValueError(const QVector &key, const QVector &value, const QVector &valueErrorMinus, const QVector &valueErrorPlus); + void setDataBothError(const QVector &key, const QVector &value, const QVector &keyError, const QVector &valueError); + void setDataBothError(const QVector &key, const QVector &value, const QVector &keyErrorMinus, const QVector &keyErrorPlus, const QVector &valueErrorMinus, const QVector &valueErrorPlus); + void setLineStyle(LineStyle ls); + void setScatterStyle(const QCPScatterStyle &style); + void setErrorType(ErrorType errorType); + void setErrorPen(const QPen &pen); + void setErrorBarSize(double size); + void setErrorBarSkipSymbol(bool enabled); + void setChannelFillGraph(QCPGraph *targetGraph); + + // non-property methods: + void addData(const QCPDataMap &dataMap); + void addData(const QCPData &data); + void addData(double key, double value); + void addData(const QVector &keys, const QVector &values); + void removeDataBefore(double key); + void removeDataAfter(double key); + void removeData(double fromKey, double toKey); + void removeData(double key); + + // reimplemented virtual methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + using QCPAbstractPlottable::rescaleAxes; + using QCPAbstractPlottable::rescaleKeyAxis; + using QCPAbstractPlottable::rescaleValueAxis; + virtual void rescaleAxes(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface + virtual void rescaleKeyAxis(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface + virtual void rescaleValueAxis(bool onlyEnlarge, bool includeErrorBars) const; // overloads base class interface + +protected: + // property members: + QCPDataMap *mData; + QPen mErrorPen; + LineStyle mLineStyle; + QCPScatterStyle mScatterStyle; + ErrorType mErrorType; + double mErrorBarSize; + bool mErrorBarSkipSymbol; + QWeakPointer mChannelFillGraph; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const; // overloads base class interface + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain, bool includeErrors) const; // overloads base class interface + + // introduced virtual methods: + virtual void drawFill(QCPPainter *painter, QVector *lineData) const; + virtual void drawScatterPlot(QCPPainter *painter, QVector *pointData) const; + virtual void drawLinePlot(QCPPainter *painter, QVector *lineData) const; + virtual void drawImpulsePlot(QCPPainter *painter, QVector *lineData) const; + + // non-virtual methods: + void getPlotData(QVector *lineData, QVector *pointData) const; + void getScatterPlotData(QVector *pointData) const; + void getLinePlotData(QVector *lineData, QVector *pointData) const; + void getStepLeftPlotData(QVector *lineData, QVector *pointData) const; + void getStepRightPlotData(QVector *lineData, QVector *pointData) const; + void getStepCenterPlotData(QVector *lineData, QVector *pointData) const; + void getImpulsePlotData(QVector *lineData, QVector *pointData) const; + void drawError(QCPPainter *painter, double x, double y, const QCPData &data) const; + void getVisibleDataBounds(QCPDataMap::const_iterator &lower, QCPDataMap::const_iterator &upper, int &count) const; + void addFillBasePoints(QVector *lineData) const; + void removeFillBasePoints(QVector *lineData) const; + QPointF lowerFillBasePoint(double lowerKey) const; + QPointF upperFillBasePoint(double upperKey) const; + const QPolygonF getChannelFillPolygon(const QVector *lineData) const; + int findIndexBelowX(const QVector *data, double x) const; + int findIndexAboveX(const QVector *data, double x) const; + int findIndexBelowY(const QVector *data, double y) const; + int findIndexAboveY(const QVector *data, double y) const; + double pointDistance(const QPointF &pixelPoint) const; + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPCurveData +{ +public: + QCPCurveData(); + QCPCurveData(double t, double key, double value); + double t, key, value; +}; +Q_DECLARE_TYPEINFO(QCPCurveData, Q_MOVABLE_TYPE); + +/*! \typedef QCPCurveDataMap + Container for storing QCPCurveData items in a sorted fashion. The key of the map + is the t member of the QCPCurveData instance. + + This is the container in which QCPCurve holds its data. + \see QCPCurveData, QCPCurve::setData +*/ + +typedef QMap QCPCurveDataMap; +typedef QMapIterator QCPCurveDataMapIterator; +typedef QMutableMapIterator QCPCurveDataMutableMapIterator; + + +class QCP_LIB_DECL QCPCurve : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCPScatterStyle scatterStyle READ scatterStyle WRITE setScatterStyle) + Q_PROPERTY(LineStyle lineStyle READ lineStyle WRITE setLineStyle) + /// \endcond +public: + /*! + Defines how the curve's line is represented visually in the plot. The line is drawn with the + current pen of the curve (\ref setPen). + \see setLineStyle + */ + enum LineStyle { lsNone, ///< No line is drawn between data points (e.g. only scatters) + lsLine ///< Data points are connected with a straight line + }; + explicit QCPCurve(QCPAxis *keyAxis, QCPAxis *valueAxis); + virtual ~QCPCurve(); + + // getters: + QCPCurveDataMap *data() const { return mData; } + QCPScatterStyle scatterStyle() const { return mScatterStyle; } + LineStyle lineStyle() const { return mLineStyle; } + + // setters: + void setData(QCPCurveDataMap *data, bool copy=false); + void setData(const QVector &t, const QVector &key, const QVector &value); + void setData(const QVector &key, const QVector &value); + void setScatterStyle(const QCPScatterStyle &style); + void setLineStyle(LineStyle style); + + // non-property methods: + void addData(const QCPCurveDataMap &dataMap); + void addData(const QCPCurveData &data); + void addData(double t, double key, double value); + void addData(double key, double value); + void addData(const QVector &ts, const QVector &keys, const QVector &values); + void removeDataBefore(double t); + void removeDataAfter(double t); + void removeData(double fromt, double tot); + void removeData(double t); + + // reimplemented virtual methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QCPCurveDataMap *mData; + QCPScatterStyle mScatterStyle; + LineStyle mLineStyle; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + + // introduced virtual methods: + virtual void drawScatterPlot(QCPPainter *painter, const QVector *pointData) const; + + // non-virtual methods: + void getCurveData(QVector *lineData) const; + double pointDistance(const QPointF &pixelPoint) const; + QPointF outsideCoordsToPixels(double key, double value, int region, QRect axisRect) const; + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPBarData +{ +public: + QCPBarData(); + QCPBarData(double key, double value); + double key, value; +}; +Q_DECLARE_TYPEINFO(QCPBarData, Q_MOVABLE_TYPE); + +/*! \typedef QCPBarDataMap + Container for storing QCPBarData items in a sorted fashion. The key of the map + is the key member of the QCPBarData instance. + + This is the container in which QCPBars holds its data. + \see QCPBarData, QCPBars::setData +*/ +typedef QMap QCPBarDataMap; +typedef QMapIterator QCPBarDataMapIterator; +typedef QMutableMapIterator QCPBarDataMutableMapIterator; + + +class QCP_LIB_DECL QCPBars : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(double width READ width WRITE setWidth) + Q_PROPERTY(QCPBars* barBelow READ barBelow) + Q_PROPERTY(QCPBars* barAbove READ barAbove) + /// \endcond +public: + explicit QCPBars(QCPAxis *keyAxis, QCPAxis *valueAxis); + virtual ~QCPBars(); + + // getters: + double width() const { return mWidth; } + QCPBars *barBelow() const { return mBarBelow.data(); } + QCPBars *barAbove() const { return mBarAbove.data(); } + QCPBarDataMap *data() const { return mData; } + + // setters: + void setWidth(double width); + void setData(QCPBarDataMap *data, bool copy=false); + void setData(const QVector &key, const QVector &value); + + // non-property methods: + void moveBelow(QCPBars *bars); + void moveAbove(QCPBars *bars); + void addData(const QCPBarDataMap &dataMap); + void addData(const QCPBarData &data); + void addData(double key, double value); + void addData(const QVector &keys, const QVector &values); + void removeDataBefore(double key); + void removeDataAfter(double key); + void removeData(double fromKey, double toKey); + void removeData(double key); + + // reimplemented virtual methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QCPBarDataMap *mData; + double mWidth; + QWeakPointer mBarBelow, mBarAbove; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + + // non-virtual methods: + QPolygonF getBarPolygon(double key, double value) const; + double getBaseValue(double key, bool positive) const; + static void connectBars(QCPBars* lower, QCPBars* upper); + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +/*! \file */ + + + +class QCP_LIB_DECL QCPStatisticalBox : public QCPAbstractPlottable +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(double key READ key WRITE setKey) + Q_PROPERTY(double minimum READ minimum WRITE setMinimum) + Q_PROPERTY(double lowerQuartile READ lowerQuartile WRITE setLowerQuartile) + Q_PROPERTY(double median READ median WRITE setMedian) + Q_PROPERTY(double upperQuartile READ upperQuartile WRITE setUpperQuartile) + Q_PROPERTY(double maximum READ maximum WRITE setMaximum) + Q_PROPERTY(QVector outliers READ outliers WRITE setOutliers) + Q_PROPERTY(double width READ width WRITE setWidth) + Q_PROPERTY(double whiskerWidth READ whiskerWidth WRITE setWhiskerWidth) + Q_PROPERTY(QPen whiskerPen READ whiskerPen WRITE setWhiskerPen) + Q_PROPERTY(QPen whiskerBarPen READ whiskerBarPen WRITE setWhiskerBarPen) + Q_PROPERTY(QPen medianPen READ medianPen WRITE setMedianPen) + Q_PROPERTY(QCPScatterStyle outlierStyle READ outlierStyle WRITE setOutlierStyle) + /// \endcond +public: + explicit QCPStatisticalBox(QCPAxis *keyAxis, QCPAxis *valueAxis); + + // getters: + double key() const { return mKey; } + double minimum() const { return mMinimum; } + double lowerQuartile() const { return mLowerQuartile; } + double median() const { return mMedian; } + double upperQuartile() const { return mUpperQuartile; } + double maximum() const { return mMaximum; } + QVector outliers() const { return mOutliers; } + double width() const { return mWidth; } + double whiskerWidth() const { return mWhiskerWidth; } + QPen whiskerPen() const { return mWhiskerPen; } + QPen whiskerBarPen() const { return mWhiskerBarPen; } + QPen medianPen() const { return mMedianPen; } + QCPScatterStyle outlierStyle() const { return mOutlierStyle; } + + // setters: + void setKey(double key); + void setMinimum(double value); + void setLowerQuartile(double value); + void setMedian(double value); + void setUpperQuartile(double value); + void setMaximum(double value); + void setOutliers(const QVector &values); + void setData(double key, double minimum, double lowerQuartile, double median, double upperQuartile, double maximum); + void setWidth(double width); + void setWhiskerWidth(double width); + void setWhiskerPen(const QPen &pen); + void setWhiskerBarPen(const QPen &pen); + void setMedianPen(const QPen &pen); + void setOutlierStyle(const QCPScatterStyle &style); + + // non-property methods: + virtual void clearData(); + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +protected: + // property members: + QVector mOutliers; + double mKey, mMinimum, mLowerQuartile, mMedian, mUpperQuartile, mMaximum; + double mWidth; + double mWhiskerWidth; + QPen mWhiskerPen, mWhiskerBarPen, mMedianPen; + QCPScatterStyle mOutlierStyle; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual void drawLegendIcon(QCPPainter *painter, const QRectF &rect) const; + virtual QCPRange getKeyRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + virtual QCPRange getValueRange(bool &validRange, SignDomain inSignDomain=sdBoth) const; + + // introduced virtual methods: + virtual void drawQuartileBox(QCPPainter *painter, QRectF *quartileBox=0) const; + virtual void drawMedian(QCPPainter *painter) const; + virtual void drawWhiskers(QCPPainter *painter) const; + virtual void drawOutliers(QCPPainter *painter) const; + + friend class QCustomPlot; + friend class QCPLegend; +}; + + +class QCP_LIB_DECL QCPItemStraightLine : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + /// \endcond +public: + QCPItemStraightLine(QCustomPlot *parentPlot); + virtual ~QCPItemStraightLine(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const point1; + QCPItemPosition * const point2; + +protected: + // property members: + QPen mPen, mSelectedPen; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + double distToStraightLine(const QVector2D &point1, const QVector2D &vec, const QVector2D &point) const; + QLineF getRectClippedStraightLine(const QVector2D &point1, const QVector2D &vec, const QRect &rect) const; + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemLine : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QCPLineEnding head READ head WRITE setHead) + Q_PROPERTY(QCPLineEnding tail READ tail WRITE setTail) + /// \endcond +public: + QCPItemLine(QCustomPlot *parentPlot); + virtual ~QCPItemLine(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QCPLineEnding head() const { return mHead; } + QCPLineEnding tail() const { return mTail; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setHead(const QCPLineEnding &head); + void setTail(const QCPLineEnding &tail); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const start; + QCPItemPosition * const end; + +protected: + // property members: + QPen mPen, mSelectedPen; + QCPLineEnding mHead, mTail; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + QLineF getRectClippedLine(const QVector2D &start, const QVector2D &end, const QRect &rect) const; + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemCurve : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QCPLineEnding head READ head WRITE setHead) + Q_PROPERTY(QCPLineEnding tail READ tail WRITE setTail) + /// \endcond +public: + QCPItemCurve(QCustomPlot *parentPlot); + virtual ~QCPItemCurve(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QCPLineEnding head() const { return mHead; } + QCPLineEnding tail() const { return mTail; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setHead(const QCPLineEnding &head); + void setTail(const QCPLineEnding &tail); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const start; + QCPItemPosition * const startDir; + QCPItemPosition * const endDir; + QCPItemPosition * const end; + +protected: + // property members: + QPen mPen, mSelectedPen; + QCPLineEnding mHead, mTail; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemRect : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + /// \endcond +public: + QCPItemRect(QCustomPlot *parentPlot); + virtual ~QCPItemRect(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const topLeft; + QCPItemPosition * const bottomRight; + QCPItemAnchor * const top; + QCPItemAnchor * const topRight; + QCPItemAnchor * const right; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeft; + QCPItemAnchor * const left; + +protected: + enum AnchorIndex {aiTop, aiTopRight, aiRight, aiBottom, aiBottomLeft, aiLeft}; + + // property members: + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemText : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(QColor selectedColor READ selectedColor WRITE setSelectedColor) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(Qt::Alignment positionAlignment READ positionAlignment WRITE setPositionAlignment) + Q_PROPERTY(Qt::Alignment textAlignment READ textAlignment WRITE setTextAlignment) + Q_PROPERTY(double rotation READ rotation WRITE setRotation) + Q_PROPERTY(QMargins padding READ padding WRITE setPadding) + /// \endcond +public: + QCPItemText(QCustomPlot *parentPlot); + virtual ~QCPItemText(); + + // getters: + QColor color() const { return mColor; } + QColor selectedColor() const { return mSelectedColor; } + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + QFont font() const { return mFont; } + QFont selectedFont() const { return mSelectedFont; } + QString text() const { return mText; } + Qt::Alignment positionAlignment() const { return mPositionAlignment; } + Qt::Alignment textAlignment() const { return mTextAlignment; } + double rotation() const { return mRotation; } + QMargins padding() const { return mPadding; } + + // setters; + void setColor(const QColor &color); + void setSelectedColor(const QColor &color); + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + void setFont(const QFont &font); + void setSelectedFont(const QFont &font); + void setText(const QString &text); + void setPositionAlignment(Qt::Alignment alignment); + void setTextAlignment(Qt::Alignment alignment); + void setRotation(double degrees); + void setPadding(const QMargins &padding); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const position; + QCPItemAnchor * const topLeft; + QCPItemAnchor * const top; + QCPItemAnchor * const topRight; + QCPItemAnchor * const right; + QCPItemAnchor * const bottomRight; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeft; + QCPItemAnchor * const left; + +protected: + enum AnchorIndex {aiTopLeft, aiTop, aiTopRight, aiRight, aiBottomRight, aiBottom, aiBottomLeft, aiLeft}; + + // property members: + QColor mColor, mSelectedColor; + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + QFont mFont, mSelectedFont; + QString mText; + Qt::Alignment mPositionAlignment; + Qt::Alignment mTextAlignment; + double mRotation; + QMargins mPadding; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPointF getTextDrawPoint(const QPointF &pos, const QRectF &rect, Qt::Alignment positionAlignment) const; + QFont mainFont() const; + QColor mainColor() const; + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemEllipse : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + /// \endcond +public: + QCPItemEllipse(QCustomPlot *parentPlot); + virtual ~QCPItemEllipse(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const topLeft; + QCPItemPosition * const bottomRight; + QCPItemAnchor * const topLeftRim; + QCPItemAnchor * const top; + QCPItemAnchor * const topRightRim; + QCPItemAnchor * const right; + QCPItemAnchor * const bottomRightRim; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeftRim; + QCPItemAnchor * const left; + QCPItemAnchor * const center; + +protected: + enum AnchorIndex {aiTopLeftRim, aiTop, aiTopRightRim, aiRight, aiBottomRightRim, aiBottom, aiBottomLeftRim, aiLeft, aiCenter}; + + // property members: + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemPixmap : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap) + Q_PROPERTY(bool scaled READ scaled WRITE setScaled) + Q_PROPERTY(Qt::AspectRatioMode aspectRatioMode READ aspectRatioMode) + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + /// \endcond +public: + QCPItemPixmap(QCustomPlot *parentPlot); + virtual ~QCPItemPixmap(); + + // getters: + QPixmap pixmap() const { return mPixmap; } + bool scaled() const { return mScaled; } + Qt::AspectRatioMode aspectRatioMode() const { return mAspectRatioMode; } + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + + // setters; + void setPixmap(const QPixmap &pixmap); + void setScaled(bool scaled, Qt::AspectRatioMode aspectRatioMode=Qt::KeepAspectRatio); + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const topLeft; + QCPItemPosition * const bottomRight; + QCPItemAnchor * const top; + QCPItemAnchor * const topRight; + QCPItemAnchor * const right; + QCPItemAnchor * const bottom; + QCPItemAnchor * const bottomLeft; + QCPItemAnchor * const left; + +protected: + enum AnchorIndex {aiTop, aiTopRight, aiRight, aiBottom, aiBottomLeft, aiLeft}; + + // property members: + QPixmap mPixmap; + QPixmap mScaledPixmap; + bool mScaled; + Qt::AspectRatioMode mAspectRatioMode; + QPen mPen, mSelectedPen; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + void updateScaledPixmap(QRect finalRect=QRect(), bool flipHorz=false, bool flipVert=false); + QRect getFinalRect(bool *flippedHorz=0, bool *flippedVert=0) const; + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPItemTracer : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(double size READ size WRITE setSize) + Q_PROPERTY(TracerStyle style READ style WRITE setStyle) + Q_PROPERTY(QCPGraph* graph READ graph WRITE setGraph) + Q_PROPERTY(double graphKey READ graphKey WRITE setGraphKey) + Q_PROPERTY(bool interpolating READ interpolating WRITE setInterpolating) + /// \endcond +public: + /*! + The different visual appearances a tracer item can have. Some styles size may be controlled with \ref setSize. + + \see setStyle + */ + enum TracerStyle { tsNone ///< The tracer is not visible + ,tsPlus ///< A plus shaped crosshair with limited size + ,tsCrosshair ///< A plus shaped crosshair which spans the complete axis rect + ,tsCircle ///< A circle + ,tsSquare ///< A square + }; + Q_ENUMS(TracerStyle) + + QCPItemTracer(QCustomPlot *parentPlot); + virtual ~QCPItemTracer(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + QBrush brush() const { return mBrush; } + QBrush selectedBrush() const { return mSelectedBrush; } + double size() const { return mSize; } + TracerStyle style() const { return mStyle; } + QCPGraph *graph() const { return mGraph; } + double graphKey() const { return mGraphKey; } + bool interpolating() const { return mInterpolating; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setSelectedBrush(const QBrush &brush); + void setSize(double size); + void setStyle(TracerStyle style); + void setGraph(QCPGraph *graph); + void setGraphKey(double key); + void setInterpolating(bool enabled); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + void updatePosition(); + + QCPItemPosition * const position; + +protected: + // property members: + QPen mPen, mSelectedPen; + QBrush mBrush, mSelectedBrush; + double mSize; + TracerStyle mStyle; + QCPGraph *mGraph; + double mGraphKey; + bool mInterpolating; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + + // non-virtual methods: + QPen mainPen() const; + QBrush mainBrush() const; +}; + + +class QCP_LIB_DECL QCPItemBracket : public QCPAbstractItem +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen pen READ pen WRITE setPen) + Q_PROPERTY(QPen selectedPen READ selectedPen WRITE setSelectedPen) + Q_PROPERTY(double length READ length WRITE setLength) + Q_PROPERTY(BracketStyle style READ style WRITE setStyle) + /// \endcond +public: + enum BracketStyle { bsSquare ///< A brace with angled edges + ,bsRound ///< A brace with round edges + ,bsCurly ///< A curly brace + ,bsCalligraphic ///< A curly brace with varying stroke width giving a calligraphic impression + }; + + QCPItemBracket(QCustomPlot *parentPlot); + virtual ~QCPItemBracket(); + + // getters: + QPen pen() const { return mPen; } + QPen selectedPen() const { return mSelectedPen; } + double length() const { return mLength; } + BracketStyle style() const { return mStyle; } + + // setters; + void setPen(const QPen &pen); + void setSelectedPen(const QPen &pen); + void setLength(double length); + void setStyle(BracketStyle style); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + QCPItemPosition * const left; + QCPItemPosition * const right; + QCPItemAnchor * const center; + +protected: + // property members: + enum AnchorIndex {aiCenter}; + QPen mPen, mSelectedPen; + double mLength; + BracketStyle mStyle; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QPointF anchorPixelPoint(int anchorId) const; + + // non-virtual methods: + QPen mainPen() const; +}; + + +class QCP_LIB_DECL QCPAxisRect : public QCPLayoutElement +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPixmap background READ background WRITE setBackground) + Q_PROPERTY(bool backgroundScaled READ backgroundScaled WRITE setBackgroundScaled) + Q_PROPERTY(Qt::AspectRatioMode backgroundScaledMode READ backgroundScaledMode WRITE setBackgroundScaledMode) + Q_PROPERTY(Qt::Orientations rangeDrag READ rangeDrag WRITE setRangeDrag) + Q_PROPERTY(Qt::Orientations rangeZoom READ rangeZoom WRITE setRangeZoom) + /// \endcond +public: + explicit QCPAxisRect(QCustomPlot *parentPlot, bool setupDefaultAxes=true); + virtual ~QCPAxisRect(); + + // getters: + QPixmap background() const { return mBackgroundPixmap; } + bool backgroundScaled() const { return mBackgroundScaled; } + Qt::AspectRatioMode backgroundScaledMode() const { return mBackgroundScaledMode; } + Qt::Orientations rangeDrag() const { return mRangeDrag; } + Qt::Orientations rangeZoom() const { return mRangeZoom; } + QCPAxis *rangeDragAxis(Qt::Orientation orientation); + QCPAxis *rangeZoomAxis(Qt::Orientation orientation); + double rangeZoomFactor(Qt::Orientation orientation); + + // setters: + void setBackground(const QPixmap &pm); + void setBackground(const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding); + void setBackground(const QBrush &brush); + void setBackgroundScaled(bool scaled); + void setBackgroundScaledMode(Qt::AspectRatioMode mode); + void setRangeDrag(Qt::Orientations orientations); + void setRangeZoom(Qt::Orientations orientations); + void setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical); + void setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical); + void setRangeZoomFactor(double horizontalFactor, double verticalFactor); + void setRangeZoomFactor(double factor); + + // non-property methods: + int axisCount(QCPAxis::AxisType type) const; + QCPAxis *axis(QCPAxis::AxisType type, int index=0) const; + QList axes(QCPAxis::AxisTypes types) const; + QList axes() const; + QCPAxis *addAxis(QCPAxis::AxisType type); + QList addAxes(QCPAxis::AxisTypes types); + bool removeAxis(QCPAxis *axis); + QCPLayoutInset *insetLayout() const { return mInsetLayout; } + + void setupFullAxesBox(bool connectRanges=false); + QList plottables() const; + QList graphs() const; + QList items() const; + + // read-only interface imitating a QRect: + int left() const { return mRect.left(); } + int right() const { return mRect.right(); } + int top() const { return mRect.top(); } + int bottom() const { return mRect.bottom(); } + int width() const { return mRect.width(); } + int height() const { return mRect.height(); } + QSize size() const { return mRect.size(); } + QPoint topLeft() const { return mRect.topLeft(); } + QPoint topRight() const { return mRect.topRight(); } + QPoint bottomLeft() const { return mRect.bottomLeft(); } + QPoint bottomRight() const { return mRect.bottomRight(); } + QPoint center() const { return mRect.center(); } + + // reimplemented virtual methods: + virtual void update(); + virtual QList elements(bool recursive) const; + +protected: + // property members: + QBrush mBackgroundBrush; + QPixmap mBackgroundPixmap; + QPixmap mScaledBackgroundPixmap; + bool mBackgroundScaled; + Qt::AspectRatioMode mBackgroundScaledMode; + QCPLayoutInset *mInsetLayout; + Qt::Orientations mRangeDrag, mRangeZoom; + QWeakPointer mRangeDragHorzAxis, mRangeDragVertAxis, mRangeZoomHorzAxis, mRangeZoomVertAxis; + double mRangeZoomFactorHorz, mRangeZoomFactorVert; + // non-property members: + QCPRange mDragStartHorzRange, mDragStartVertRange; + QCP::AntialiasedElements mAADragBackup, mNotAADragBackup; + QPoint mDragStart; + bool mDragging; + QHash > mAxes; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + virtual int calculateAutoMargin(QCP::MarginSide side); + // events: + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void wheelEvent(QWheelEvent *event); + + // non-property methods: + void drawBackground(QCPPainter *painter); + void updateAxesOffset(QCPAxis::AxisType type); + +private: + Q_DISABLE_COPY(QCPAxisRect) + + friend class QCustomPlot; +}; + + +class QCP_LIB_DECL QCPAbstractLegendItem : public QCPLayoutElement +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QCPLegend* parentLegend READ parentLegend) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + explicit QCPAbstractLegendItem(QCPLegend *parent); + + // getters: + QCPLegend *parentLegend() const { return mParentLegend; } + QFont font() const { return mFont; } + QColor textColor() const { return mTextColor; } + QFont selectedFont() const { return mSelectedFont; } + QColor selectedTextColor() const { return mSelectedTextColor; } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setFont(const QFont &font); + void setTextColor(const QColor &color); + void setSelectedFont(const QFont &font); + void setSelectedTextColor(const QColor &color); + void setSelectable(bool selectable); + void setSelected(bool selected); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +signals: + void selectionChanged(bool selected); + +protected: + // property members: + QCPLegend *mParentLegend; + QFont mFont; + QColor mTextColor; + QFont mSelectedFont; + QColor mSelectedTextColor; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual QCP::Interaction selectionCategory() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual QRect clipRect() const; + virtual void draw(QCPPainter *painter) = 0; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + +private: + Q_DISABLE_COPY(QCPAbstractLegendItem) + + friend class QCPLegend; +}; + + +class QCP_LIB_DECL QCPPlottableLegendItem : public QCPAbstractLegendItem +{ + Q_OBJECT +public: + QCPPlottableLegendItem(QCPLegend *parent, QCPAbstractPlottable *plottable); + + // getters: + QCPAbstractPlottable *plottable() { return mPlottable; } + +protected: + // property members: + QCPAbstractPlottable *mPlottable; + + // reimplemented virtual methods: + virtual void draw(QCPPainter *painter); + virtual QSize minimumSizeHint() const; + + // non-virtual methods: + QPen getIconBorderPen() const; + QColor getTextColor() const; + QFont getFont() const; +}; + + +class QCP_LIB_DECL QCPLegend : public QCPLayoutGrid +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QPen borderPen READ borderPen WRITE setBorderPen) + Q_PROPERTY(QBrush brush READ brush WRITE setBrush) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor) + Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) + Q_PROPERTY(int iconTextPadding READ iconTextPadding WRITE setIconTextPadding) + Q_PROPERTY(QPen iconBorderPen READ iconBorderPen WRITE setIconBorderPen) + Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts) + Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts) + Q_PROPERTY(QPen selectedBorderPen READ selectedBorderPen WRITE setSelectedBorderPen) + Q_PROPERTY(QPen selectedIconBorderPen READ selectedIconBorderPen WRITE setSelectedIconBorderPen) + Q_PROPERTY(QBrush selectedBrush READ selectedBrush WRITE setSelectedBrush) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor) + /// \endcond +public: + /*! + Defines the selectable parts of a legend + + \see setSelectedParts, setSelectableParts + */ + enum SelectablePart { spNone = 0x000 ///< 0x000 None + ,spLegendBox = 0x001 ///< 0x001 The legend box (frame) + ,spItems = 0x002 ///< 0x002 Legend items individually (see \ref selectedItems) + }; + Q_FLAGS(SelectablePart SelectableParts) + Q_DECLARE_FLAGS(SelectableParts, SelectablePart) + + explicit QCPLegend(); + virtual ~QCPLegend(); + + // getters: + QPen borderPen() const { return mBorderPen; } + QBrush brush() const { return mBrush; } + QFont font() const { return mFont; } + QColor textColor() const { return mTextColor; } + QSize iconSize() const { return mIconSize; } + int iconTextPadding() const { return mIconTextPadding; } + QPen iconBorderPen() const { return mIconBorderPen; } + SelectableParts selectableParts() const { return mSelectableParts; } + SelectableParts selectedParts() const; + QPen selectedBorderPen() const { return mSelectedBorderPen; } + QPen selectedIconBorderPen() const { return mSelectedIconBorderPen; } + QBrush selectedBrush() const { return mSelectedBrush; } + QFont selectedFont() const { return mSelectedFont; } + QColor selectedTextColor() const { return mSelectedTextColor; } + + // setters: + void setBorderPen(const QPen &pen); + void setBrush(const QBrush &brush); + void setFont(const QFont &font); + void setTextColor(const QColor &color); + void setIconSize(const QSize &size); + void setIconSize(int width, int height); + void setIconTextPadding(int padding); + void setIconBorderPen(const QPen &pen); + void setSelectableParts(const SelectableParts &selectableParts); + void setSelectedParts(const SelectableParts &selectedParts); + void setSelectedBorderPen(const QPen &pen); + void setSelectedIconBorderPen(const QPen &pen); + void setSelectedBrush(const QBrush &brush); + void setSelectedFont(const QFont &font); + void setSelectedTextColor(const QColor &color); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + + // non-virtual methods: + QCPAbstractLegendItem *item(int index) const; + QCPPlottableLegendItem *itemWithPlottable(const QCPAbstractPlottable *plottable) const; + int itemCount() const; + bool hasItem(QCPAbstractLegendItem *item) const; + bool hasItemWithPlottable(const QCPAbstractPlottable *plottable) const; + bool addItem(QCPAbstractLegendItem *item); + bool removeItem(int index); + bool removeItem(QCPAbstractLegendItem *item); + void clearItems(); + QList selectedItems() const; + +signals: + void selectionChanged(QCPLegend::SelectableParts selection); + +protected: + // property members: + QPen mBorderPen, mIconBorderPen; + QBrush mBrush; + QFont mFont; + QColor mTextColor; + QSize mIconSize; + int mIconTextPadding; + SelectableParts mSelectedParts, mSelectableParts; + QPen mSelectedBorderPen, mSelectedIconBorderPen; + QBrush mSelectedBrush; + QFont mSelectedFont; + QColor mSelectedTextColor; + + // reimplemented virtual methods: + virtual void parentPlotInitialized(QCustomPlot *parentPlot); + virtual QCP::Interaction selectionCategory() const; + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-virtual methods: + QPen getBorderPen() const; + QBrush getBrush() const; + +private: + Q_DISABLE_COPY(QCPLegend) + + friend class QCustomPlot; + friend class QCPAbstractLegendItem; +}; +Q_DECLARE_OPERATORS_FOR_FLAGS(QCPLegend::SelectableParts) +Q_DECLARE_METATYPE(QCPLegend::SelectablePart) + + +class QCP_LIB_DECL QCPPlotTitle : public QCPLayoutElement +{ + Q_OBJECT + /// \cond INCLUDE_QPROPERTIES + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor) + Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont) + Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor) + Q_PROPERTY(bool selectable READ selectable WRITE setSelectable) + Q_PROPERTY(bool selected READ selected WRITE setSelected) + /// \endcond +public: + explicit QCPPlotTitle(QCustomPlot *parentPlot); + explicit QCPPlotTitle(QCustomPlot *parentPlot, const QString &text); + + // getters: + QString text() const { return mText; } + QFont font() const { return mFont; } + QColor textColor() const { return mTextColor; } + QFont selectedFont() const { return mSelectedFont; } + QColor selectedTextColor() const { return mSelectedTextColor; } + bool selectable() const { return mSelectable; } + bool selected() const { return mSelected; } + + // setters: + void setText(const QString &text); + void setFont(const QFont &font); + void setTextColor(const QColor &color); + void setSelectedFont(const QFont &font); + void setSelectedTextColor(const QColor &color); + void setSelectable(bool selectable); + void setSelected(bool selected); + + // reimplemented virtual methods: + virtual double selectTest(const QPointF &pos, bool onlySelectable, QVariant *details=0) const; + +signals: + void selectionChanged(bool selected); + +protected: + // property members: + QString mText; + QFont mFont; + QColor mTextColor; + QFont mSelectedFont; + QColor mSelectedTextColor; + QRect mTextBoundingRect; + bool mSelectable, mSelected; + + // reimplemented virtual methods: + virtual void applyDefaultAntialiasingHint(QCPPainter *painter) const; + virtual void draw(QCPPainter *painter); + virtual QSize minimumSizeHint() const; + virtual QSize maximumSizeHint() const; + // events: + virtual void selectEvent(QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged); + virtual void deselectEvent(bool *selectionStateChanged); + + // non-virtual methods: + QFont mainFont() const; + QColor mainTextColor() const; + +private: + Q_DISABLE_COPY(QCPPlotTitle) +}; + +#endif // QCUSTOMPLOT_H + diff --git a/DerevyankoReport.cpp b/DerevyankoReport.cpp new file mode 100644 index 0000000..00a355f --- /dev/null +++ b/DerevyankoReport.cpp @@ -0,0 +1,419 @@ +#include "DerevyankoReport.h" +#include "individual/Trait.h" +#include "individual/Phenotype.h" +//#include "population/BreedingStrategies/PopulationBreedingStrategy.h" +#include "population/BreedingStrategies/NeutralEvolutionBreedStrat.h" + +#include +#include + +using std::string; + +BisexualPopulation* DerevyankoReport::populationFactory(int size, std::string initMtGenome){ + BisexualPopulation* ans; + + std::list males; + std::list females; + + Gene gene1(Gene::Sequence, "mtDna1", initMtGenome); + Chromosome chrom1("Mitochondrial chromosome"); + chrom1.insertGeneToEnd(gene1); + + std::vector fGenome; + std::vector mGenome; + fGenome.push_back(chrom1); + mGenome.push_back(chrom1); + + // + Trait trait1(Trait::Discrete, "Age", 20); + // + InnerSubstratesPool* subPool = 0; + // (END) + + for(int i = 0; i < size/2; i++){ + Genotype* genotype = new Genotype(fGenome, mGenome); + Phenotype* phenotype = new Phenotype(trait1); + males.push_back(new Individual(genotype, phenotype, subPool, Individual::male, 0)); + + genotype = new Genotype(fGenome, mGenome); + phenotype = new Phenotype(trait1); + females.push_back(new Individual(genotype, phenotype, subPool, Individual::female, 0)); + } + + ans = new BisexualPopulation(males,females); + return ans; +} +void DerevyankoReport::reportRFBR2013_01(){ + + // ( f) + string initMtDNA = "TTCTTTCATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACC"; + initMtDNA += "GCTATGTATTTCGTACATTACTGCCAGCCACCATGAATATTGTACGGTACCATAAATACT"; + initMtDNA += "TGACCACCTGTAGTACATAAAAACCCAATCCACATCAAAACCCCCCCCTCATGCTTACAA"; + initMtDNA += "GCAAGTACAGCAATCAACCTTCAACTATCACACATCAACTGCAACTCCAAAGCCACCCCT"; + initMtDNA += "CACCCACTAGGATATCAACAAACCTACCCATCCTTAACAGTACATGGTACATAAAGCCAT"; + initMtDNA += "TTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCCTCA"; + + // ( G) + string initMtDNA_G = initMtDNA; + initMtDNA_G.replace(60,1,"T"); + initMtDNA_G.replace(120,1,"A"); + initMtDNA_G.replace(180,1,"C"); + initMtDNA_G.replace(240,1,"G"); + + // + // + int basePopSize = 5000; + float initBirthRate = 0.25f; + float deltaBirthRate = 0.0002f; + BisexualPopulation* pop_f = populationFactory(basePopSize, initMtDNA); + NeutralEvolutionBreedingStrategy* breedStrat_f = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_f->setBirthRate(initBirthRate); + breedStrat_f->setDeathRate(initBirthRate-deltaBirthRate); + pop_f->setBreedingStrategy(breedStrat_f); + + BisexualPopulation* pop_G = populationFactory(basePopSize, initMtDNA_G); + NeutralEvolutionBreedingStrategy* breedStrat_G = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_G->setBirthRate(initBirthRate); + breedStrat_G->setDeathRate(initBirthRate-deltaBirthRate); + pop_G->setBreedingStrategy(breedStrat_G); + + /////////////////////////////////////////// + // + // + // + /////////////////////////////////////////// + + unsigned int generation; + + // 1. + // 1 + int genPerMigr_f_G = 100; + float part_f_to_G = 0.01f; + float part_G_to_f = 0.01f; + std::cout<<"Variant 1"<breedAll(); + pop_f->mutationAll(); + + pop_G->breedAll(); + pop_G->mutationAll(); + + if(generation != 0 && ((generation % genPerMigr_f_G) == 0)){ + std::string code = BisexualPopulation::mutualMigration(pop_f, pop_G, part_f_to_G, part_G_to_f); + std::cout<<"Migration f<->G\t"<createSubpopulation(fraction_e_founder); + std::cout<<"pop_e has been created"<breedAll(); + pop_e->mutationAll(); + + pop_G->breedAll(); + pop_G->mutationAll(); + } + + // 3. + // F d + // 50 + // - d, 90% + float fraction_F_founder = 0.1f; + BisexualPopulation* pop_F = pop_e->createSubpopulation(fraction_F_founder); + std::cout<<"pop_F has been created"<(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_d->setBirthRate(initBirthRate); + breedStrat_d->setDeathRate(initBirthRate-deltaBirthRate*2); + pop_d->setBreedingStrategy(breedStrat_d); + std::cout<<"pop_e -> pop_d\tPop dynamics coeffs have been changed:\td =\t"; + std::cout<<(initBirthRate-deltaBirthRate*2)<breedAll(); + pop_d->mutationAll(); + + pop_F->breedAll(); + pop_F->mutationAll(); + + pop_G->breedAll(); + pop_G->mutationAll(); + } + + // 4. + // d E c + // 100 + // - c, 90% + float fraction_E_founder = 0.1f; + BisexualPopulation* pop_E = pop_d->createSubpopulation(fraction_E_founder); + std::cout<<"pop_E has been created"<(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_c->setBirthRate(initBirthRate); + breedStrat_c->setDeathRate(initBirthRate-deltaBirthRate*2.5f); + pop_c->setBreedingStrategy(breedStrat_c); + std::cout<<"pop_d -> pop_c\tPop dynamics coeffs have been changed:\td =\t"; + std::cout<<(initBirthRate-deltaBirthRate*2.5f)<breedAll(); + pop_c->mutationAll(); + + pop_E->breedAll(); + pop_E->mutationAll(); + + pop_F->breedAll(); + pop_F->mutationAll(); + + pop_G->breedAll(); + pop_G->mutationAll(); + } + + // 5. + // c D b + // 100 + // - b, 90% + float fraction_D_founder = 0.1f; + BisexualPopulation* pop_D = pop_c->createSubpopulation(fraction_D_founder); + std::cout<<"pop_D has been created"<(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_b->setBirthRate(initBirthRate); + breedStrat_b->setDeathRate(initBirthRate-deltaBirthRate*3.f); + pop_b->setBreedingStrategy(breedStrat_b); + std::cout<<"pop_c -> pop_b\tPop dynamics coeffs have been changed:\td =\t"; + std::cout<<(initBirthRate-deltaBirthRate*3.f)<breedAll(); + pop_b->mutationAll(); + + pop_D->breedAll(); + pop_D->mutationAll(); + + pop_E->breedAll(); + pop_E->mutationAll(); + + pop_F->breedAll(); + pop_F->mutationAll(); + + pop_G->breedAll(); + pop_G->mutationAll(); + } + + // 6. + // b C a + // 200 + // - a, 90% + float fraction_C_founder = 0.1f; + BisexualPopulation* pop_C = pop_b->createSubpopulation(fraction_C_founder); + std::cout<<"pop_C has been created"<(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_a->setBirthRate(initBirthRate); + breedStrat_a->setDeathRate(initBirthRate-deltaBirthRate*3.5f); + pop_a->setBreedingStrategy(breedStrat_a); + std::cout<<"pop_b -> pop_a\tPop dynamics coeffs have been changed:\td =\t"; + std::cout<<(initBirthRate-deltaBirthRate*3.5f)<breedAll(); + pop_a->mutationAll(); + + pop_C->breedAll(); + pop_C->mutationAll(); + + pop_D->breedAll(); + pop_D->mutationAll(); + + pop_E->breedAll(); + pop_E->mutationAll(); + + pop_F->breedAll(); + pop_F->mutationAll(); + + pop_G->breedAll(); + pop_G->mutationAll(); + } + + // 7. + // a A B + // 2540 + // - A, 50% , + // . + // A B, A C, D, E, F (G ) + float fraction_B_founder = 0.5f; + BisexualPopulation* pop_B = pop_a->createSubpopulation(fraction_B_founder); + std::cout<<"pop_B has been created"<(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_A->setBirthRate(initBirthRate); + breedStrat_A->setDeathRate(initBirthRate-deltaBirthRate*4.f); + pop_A->setBreedingStrategy(breedStrat_A); + std::cout<<"pop_a -> pop_A\tPop dynamics coeffs have been changed:\td =\t"; + std::cout<<(initBirthRate-deltaBirthRate*4.f)<breedAll(); + pop_A->mutationAll(); + + pop_B->breedAll(); + pop_B->mutationAll(); + + pop_C->breedAll(); + pop_C->mutationAll(); + + pop_D->breedAll(); + pop_D->mutationAll(); + + pop_E->breedAll(); + pop_E->mutationAll(); + + pop_F->breedAll(); + pop_F->mutationAll(); + + if((generation % genPerMigr_A_B) == 0){ + std::string code = BisexualPopulation::mutualMigration(pop_A, pop_B, part_A_to_B, part_B_to_A); + std::cout<<"Migration A<->B\t"<C\t"<D\t"<E\t"<F\t"<putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_A.txt"); + pop_A->putGeneticSimpleStatisticsToStream(file); + file.close(); + + //////////////////////////////////////// + file.open("GenStatistics.pop_B.fasta"); + pop_B->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_B.txt"); + pop_B->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + + //////////////////////////////////////// + file.open("GenStatistics.pop_C.fasta"); + pop_C->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_C.txt"); + pop_C->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + + //////////////////////////////////////// + file.open("GenStatistics.pop_D.fasta"); + pop_D->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_D.txt"); + pop_D->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + + //////////////////////////////////////// + file.open("GenStatistics.pop_E.fasta"); + pop_E->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_E.txt"); + pop_E->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + + //////////////////////////////////////// + file.open("GenStatistics.pop_F.fasta"); + pop_F->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_F.txt"); + pop_F->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + + //////////////////////////////////////// + file.open("GenStatistics.pop_G.fasta"); + pop_G->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_G.txt"); + pop_G->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + + //////////////////////////////////////// + file.open("GenStatistics.pop_flittle.fasta"); + pop_f->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_flittle.txt"); + pop_f->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// +} diff --git a/DerevyankoReport.h b/DerevyankoReport.h new file mode 100644 index 0000000..8b12a99 --- /dev/null +++ b/DerevyankoReport.h @@ -0,0 +1,8 @@ +#pragma once +#include "population/Population.h" + +class DerevyankoReport{ +public: + static void reportRFBR2013_01(); + static BisexualPopulation* populationFactory(int size, std::string initMtGenome); +}; diff --git a/DerevyankoReport2014.cpp b/DerevyankoReport2014.cpp new file mode 100644 index 0000000..786ebc7 --- /dev/null +++ b/DerevyankoReport2014.cpp @@ -0,0 +1,342 @@ +#include "DerevyankoReport2014.h" +#include "individual/Trait.h" +#include "individual/Phenotype.h" +//#include "population/BreedingStrategies/PopulationBreedingStrategy.h" +#include "population/BreedingStrategies/NeutralEvolutionBreedStrat.h" +#include "processor/Settings.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +using std::string; + +std::string DerevyankoReport2014::getInitGene(int type, int num){ + + string seq, initSeq = ""; + srand((unsigned int)time(NULL)); + for(unsigned int i = 0; i < Settings::locusLength; i++){ + int nucl = rand()%4; + if(nucl == 0){initSeq += 'A';} + else if(nucl == 1){initSeq += 'T';} + else if(nucl == 2){initSeq += 'G';} + else if(nucl == 3){initSeq += 'C';} + } + //initSeq = "TTCTTTCATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACC"; + + if(type == 0){ + // ( "") + seq = initSeq; + } + else{ + // ( ) + seq = initSeq; + seq.replace(10,1,"T"); + seq.replace(20,1,"A"); + seq.replace(30,1,"C"); + seq.replace(40,1,"G"); + seq.replace(50,1,"G"); + } + + return seq; +} + +BisexualPopulation* DerevyankoReport2014::populationFactory(int size, const std::vector& genome){ + BisexualPopulation* ans; + + std::list males; + std::list females; + + // + Chromosome chrom1("Mitochondrial chromosome"); + for(unsigned int i = 0; i < genome.size(); i++){ + string gName = "mtDna_" + boost::lexical_cast(i+1); + Gene gene(Gene::Sequence, gName, genome.at(i)); + chrom1.insertGeneToEnd(gene); + } + + std::vector fGenome; + std::vector mGenome; + fGenome.push_back(chrom1); + mGenome.push_back(chrom1); + + // + Trait trait1(Trait::Discrete, "Age", 20); + // + InnerSubstratesPool* subPool = 0; + // (END) + + for(int i = 0; i < size/2; i++){ + Genotype* genotype = new Genotype(fGenome, mGenome); + Phenotype* phenotype = new Phenotype(trait1); + males.push_back(new Individual(genotype, phenotype, subPool, Individual::male, 0)); + + genotype = new Genotype(fGenome, mGenome); + phenotype = new Phenotype(trait1); + females.push_back(new Individual(genotype, phenotype, subPool, Individual::female, 0)); + } + + ans = new BisexualPopulation(males,females); + return ans; +} + +void DerevyankoReport2014::report2014_01(int argc, char** argv){ + std::vector calcScript; + if(argc > 1){ + calcScript = parseScript(argv[1]); + } + else{ + calcScript = parseScript("script.txt"); + } + // + int numLoci = Settings::numLoci; + std::vector initMtDNA(numLoci); + std::vector initMtDNA_ancient(numLoci); + for(unsigned int i = 0; i < initMtDNA.size(); i++){ + initMtDNA.at(i) = getInitGene(0,i); + if(i<= numLoci*Settings::percentDiffLoci){ + string seq = initMtDNA.at(i); + for(int j = 0; j < 5; j++){ + int pos = (int)(j/5.*Settings::locusLength); + if(seq.at(pos)=='T') + seq.replace(pos,1,"G"); + else + seq.replace(pos,1,"T"); + } + initMtDNA_ancient.at(i) = seq; + } + else{ + initMtDNA_ancient.at(i) = initMtDNA.at(i); + } + } + + int popSizeH = Settings::PopulationHomoInitSize; + int popSizeA = Settings::PopulationAncientInitSize; + float initBirthRate = Settings::BirthRate; + float deathRate = Settings::NaturalDeathRate; + + BisexualPopulation* pop_Sapiens = populationFactory(popSizeH, initMtDNA); + NeutralEvolutionBreedingStrategy* breedStrat_Sapiens = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_Sapiens->setBirthRate(initBirthRate); + breedStrat_Sapiens->setDeathRate(deathRate); + pop_Sapiens->setBreedingStrategy(breedStrat_Sapiens); + + BisexualPopulation* pop_Ancient = populationFactory(popSizeA, initMtDNA_ancient); + NeutralEvolutionBreedingStrategy* breedStrat_Ancient = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_Ancient->setBirthRate(initBirthRate); + breedStrat_Ancient->setDeathRate(deathRate); + pop_Ancient->setBreedingStrategy(breedStrat_Ancient); + + /////////////////////////////////////////// + // + // + // + /////////////////////////////////////////// + //Settings::ProbMtDNARecomb = 1e-4; + + // 1. + // 1 + int genPerMigr_H_A = Settings::generationsPerMigration; + float part_H_to_A = Settings::migrationPartHomoToAncient; + float part_A_to_H = Settings::migrationPartAncientToHomo; + + unsigned int generation = 0; + for(unsigned int curLine = 0; curLine < calcScript.size(); curLine++){ + if(calcScript.at(curLine).at(0) == '/' || calcScript.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, calcScript.at(curLine), boost::is_any_of("=") ); + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + + if(instr == "evolution"){ + int iter = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + for(unsigned int i = 0; i < iter; i++, generation++){ + std::cout<<"gen\t"<breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + } + } + else if(instr == "evolution_m"){ + int iter = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + for(unsigned int i = 0; i < iter; i++, generation++){ + std::cout<<"gen\t"<breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + if(i != 0 && ((i % genPerMigr_H_A) == 0)){ + std::string code = BisexualPopulation::mutualMigration(pop_Sapiens, pop_Ancient, part_H_to_A, part_A_to_H); + std::cout<<"Migration Sapienti<->Ancient\t"<Ancient\t"<breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + + if(generation != 0 && ((generation % genPerMigr_H_A) == 0)){ + std::string code = BisexualPopulation::mutualMigration(pop_Sapiens, pop_Ancient, part_H_to_A, part_A_to_H); + std::cout<<"Migration Sapienti<->Ancient\t"<putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_Sapiens.txt"); + pop_Sapiens->putGeneticSimpleStatisticsToStream(file); + file.close(); + + //////////////////////////////////////// + file.open("GenStatistics.pop_Ancient.fasta"); + pop_Ancient->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_Ancient.txt"); + pop_Ancient->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + +} + +std::vector DerevyankoReport2014::parseScript(std::string fileName){ + std::vector script; + std::ifstream file(fileName.c_str()); + std::string str; + + while(getline(file,str)){ + if(str.length() > 2) + script.push_back(str); + } + file.close(); + + // process Script + unsigned int curLine; + for(curLine = 0; curLine < script.size(); curLine++){ + if(script.at(curLine).at(0) == '/' || script.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, script.at(curLine), boost::is_any_of("=") ); + + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + + if(instr == "model_start"){ + vector::const_iterator first = script.begin() + curLine; + vector::const_iterator last = script.end(); + std::vector ans(first, last); + return ans; + } + else if(instr == "pop_homo_init"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::PopulationHomoInitSize = flag; + } + else if(instr == "pop_ancient_init"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::PopulationAncientInitSize = flag; + } + else if(instr == "generations_per_migration"){ + int flag = Settings::generationsPerMigration; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::generationsPerMigration = flag; + } + else if(instr == "migr_homo_ancient_ratio"){ + double ratio = Settings::migrationPartHomoToAncient; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &ratio); + Settings::migrationPartHomoToAncient = ratio; + } + else if(instr == "migr_ancient_homo_ratio"){ + double ratio = Settings::migrationPartAncientToHomo; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &ratio); + Settings::migrationPartAncientToHomo = ratio; + } + else if(instr == "birth" || instr == "birthrate" || instr == "birth_rate" ){ + double rate = Settings::BirthRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::BirthRate = rate; + } + else if(instr == "death" || instr == "deathrate" || instr == "death_rate" ){ + double rate = Settings::NaturalDeathRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::NaturalDeathRate = rate; + } + else if(instr == "percent_diff_loci" ){ + double value = Settings::percentDiffLoci; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &value); + Settings::percentDiffLoci = value; + } + else if(instr == "num_loci"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::numLoci = flag; + } + else if(instr == "prob_recomb" ){ + double value = Settings::ProbMtDNARecomb; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &value); + Settings::ProbMtDNARecomb = value; + } + + + + //***************************** + else if(instr == "breedings"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string strategy = tokensVector.at(1); + boost::to_lower(strategy); + boost::trim(strategy); + Settings::BreedingStrategy = strategy; + } + } // (END) for(curLine = 0; curLine < script.size(); curLine++) + std::vector a; + return a; +} + +//void DerevyankoReport2014::parseCalc(std::vector script){ +// +//} diff --git a/DerevyankoReport2014.h b/DerevyankoReport2014.h new file mode 100644 index 0000000..0e62ecd --- /dev/null +++ b/DerevyankoReport2014.h @@ -0,0 +1,14 @@ +#pragma once +#include +#include "population/Population.h" + +class DerevyankoReport2014 +{ +public: + static void report2014_01(int argc, char** argv); + static std::string getInitGene(int type = 0, int num = 0); + static BisexualPopulation* populationFactory(int size, const std::vector& genome); + static std::vector parseScript(std::string fileName); + //static void parseCalc(std::vector script); +}; + diff --git a/DerevyankoReport2015.cpp b/DerevyankoReport2015.cpp new file mode 100644 index 0000000..7f06048 --- /dev/null +++ b/DerevyankoReport2015.cpp @@ -0,0 +1,335 @@ +#include "DerevyankoReport2015.h" +#include "individual/Trait.h" +#include "individual/Phenotype.h" +//#include "population/BreedingStrategies/PopulationBreedingStrategy.h" +#include "population/BreedingStrategies/NeutralEvolutionBreedStrat.h" +#include "processor/Settings.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +using std::string; + +std::string DerevyankoReport2015::getInitGene(int type, int num){ + + // type - (0 - , 1 - ) + // num - (0-4 - , 5-9 - ) + string initMtDNA = "TTCTTTCATGGGGAAGCAGATTTGGGTACCACCCAAGTATTGACTCACCCATCAACAACC"; + initMtDNA += "GCTATGTATTTCGTACATTACTGCCAGCCACCATGAATATTGTACGGTACCATAAATACT"; + initMtDNA += "TGACCACCTGTAGTACATAAAAACCCAATCCACATCAAAACCCCCCCCTCATGCTTACAA"; + initMtDNA += "GCAAGTACAGCAATCAACCTTCAACTATCACACATCAACTGCAACTCCAAAGCCACCCCT"; + initMtDNA += "CACCCACTAGGATATCAACAAACCTACCCATCCTTAACAGTACATGGTACATAAAGCCAT"; + initMtDNA += "TTACCGTACATAGCACATTACAGTCAAATCCCTTCTCGTCCCCATGGATGACCCCCCTCA"; + + string subSeqs[] = { + "AAAAAAAAAA", + "TTTTTTTTTT", + "GGGGGGGGGG", + "CCCCCCCCCC", + "AAAAAAAAAA", + "AAAAATTTTT", + "TTTTTAAAAA", + "GGGGGTTTTT", + "CCCCCGGGGG", + "GGGGGCCCCC"}; + + // + int pos = num*10; + num = num > 9 ? 9 : num; + initMtDNA.replace(pos, subSeqs[num].length(), subSeqs[num]); + + return initMtDNA; +} + +BisexualPopulation* DerevyankoReport2015::populationFactory(int type, int size){ + BisexualPopulation* ans; + + std::list males; + std::list females; + + // + Trait trait1(Trait::Discrete, "Age", 20); + // + InnerSubstratesPool* subPool = 0; + // (END) + + for(int j = 0; j < size/2; j++){ + // + Chromosome chrom1("Mitochondrial chromosome"); + string gName = type == 0 ? "mtDna_KR" : "mtDna_Neand"; + int num = 5*type + (j%5); + Gene gene(Gene::Sequence, gName, getInitGene(type,num)); + chrom1.insertGeneToEnd(gene); + + Chromosome chrom2("Numt genome"); + gName = "Numt"; + Gene gene2(Gene::Sequence, gName, ""); + chrom2.insertGeneToEnd(gene2); + + std::vector fGenome; + std::vector mGenome; + fGenome.push_back(chrom1); + fGenome.push_back(chrom2); + mGenome.push_back(chrom1); + mGenome.push_back(chrom2); + + Genotype* genotype = new Genotype(fGenome, mGenome); + Phenotype* phenotype = new Phenotype(trait1); + males.push_back(new Individual(genotype, phenotype, subPool, Individual::male, 0)); + + genotype = new Genotype(fGenome, mGenome); + phenotype = new Phenotype(trait1); + females.push_back(new Individual(genotype, phenotype, subPool, Individual::female, 0)); + } + + ans = new BisexualPopulation(males,females); + return ans; +} + +void DerevyankoReport2015::report2015_01(int argc, char** argv){ + std::vector calcScript; + if(argc > 1){ + calcScript = parseScript(argv[1]); + } + else{ + calcScript = parseScript("script.txt"); + } + // + const int krom = 0; const int neand = 1; + int popSizeH = Settings::PopulationHomoInitSize; + int popSizeA = Settings::PopulationAncientInitSize; + float initBirthRate = Settings::BirthRate; + float deathRate = Settings::NaturalDeathRate; + + BisexualPopulation* pop_Sapiens = populationFactory(krom, popSizeH); + NeutralEvolutionBreedingStrategy* breedStrat_Sapiens = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_Sapiens->setBirthRate(initBirthRate); + breedStrat_Sapiens->setDeathRate(deathRate); + pop_Sapiens->setBreedingStrategy(breedStrat_Sapiens); + + BisexualPopulation* pop_Ancient = populationFactory(neand, popSizeA); + NeutralEvolutionBreedingStrategy* breedStrat_Ancient = + dynamic_cast(PopulationBreedingStrategy::getInstance("neutral")); + breedStrat_Ancient->setBirthRate(initBirthRate); + breedStrat_Ancient->setDeathRate(deathRate); + pop_Ancient->setBreedingStrategy(breedStrat_Ancient); + + /////////////////////////////////////////// + // + // + // + /////////////////////////////////////////// + //Settings::ProbMtDNARecomb = 1e-4; + + // 1. + // 1 + int genPerMigr_H_A = Settings::generationsPerMigration; + float part_H_to_A = Settings::migrationPartHomoToAncient; + float part_A_to_H = Settings::migrationPartAncientToHomo; + + unsigned int generation = 0; + for(unsigned int curLine = 0; curLine < calcScript.size(); curLine++){ + if(calcScript.at(curLine).at(0) == '/' || calcScript.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, calcScript.at(curLine), boost::is_any_of("=") ); + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + + if(instr == "evolution"){ + int iter = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + for(unsigned int i = 0; i < iter; i++, generation++){ + std::cout<<"gen\t"<breedAll(); + //pop_Sapiens->mutationAll(); + // TODO + pop_Sapiens->mutationDerevyanko2015(1e-6, 1e-8); + + pop_Ancient->breedAll(); + //pop_Ancient->mutationAll(); + pop_Ancient->mutationDerevyanko2015(1e-6, 1e-8); + + } + } + else if(instr == "evolution_m"){ + int iter = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + for(unsigned int i = 0; i < iter; i++, generation++){ + std::cout<<"gen\t"<breedAll(); + //pop_Sapiens->mutationAll(); + pop_Sapiens->mutationDerevyanko2015(1e-6, 1e-8); + + pop_Ancient->breedAll(); + //pop_Ancient->mutationAll(); + pop_Ancient->mutationDerevyanko2015(1e-6, 1e-8); + if(i != 0 && ((i % genPerMigr_H_A) == 0)){ + std::string code = BisexualPopulation::mutualMigration(pop_Sapiens, pop_Ancient, part_H_to_A, part_A_to_H); + std::cout<<"Migration Sapienti<->Ancient\t"<Ancient\t"<breedAll(); + pop_Sapiens->mutationAll(); + + pop_Ancient->breedAll(); + pop_Ancient->mutationAll(); + + if(generation != 0 && ((generation % genPerMigr_H_A) == 0)){ + std::string code = BisexualPopulation::mutualMigration(pop_Sapiens, pop_Ancient, part_H_to_A, part_A_to_H); + std::cout<<"Migration Sapienti<->Ancient\t"<putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_Sapiens.txt"); + pop_Sapiens->putGeneticSimpleStatisticsToStream(file); + file.close(); + + //////////////////////////////////////// + file.open("GenStatistics.pop_Ancient.fasta"); + pop_Ancient->putGeneticStatisticsToStream(file); + file.close(); + + file.open("GenStatistics.pop_Ancient.txt"); + pop_Ancient->putGeneticSimpleStatisticsToStream(file); + file.close(); + //////////////////////////////////////// + +} + +std::vector DerevyankoReport2015::parseScript(std::string fileName){ + std::vector script; + std::ifstream file(fileName.c_str()); + std::string str; + + while(getline(file,str)){ + if(str.length() > 2) + script.push_back(str); + } + file.close(); + + // process Script + unsigned int curLine; + for(curLine = 0; curLine < script.size(); curLine++){ + if(script.at(curLine).at(0) == '/' || script.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, script.at(curLine), boost::is_any_of("=") ); + + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + + if(instr == "model_start"){ + vector::const_iterator first = script.begin() + curLine; + vector::const_iterator last = script.end(); + std::vector ans(first, last); + return ans; + } + else if(instr == "pop_homo_init"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::PopulationHomoInitSize = flag; + } + else if(instr == "pop_ancient_init"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::PopulationAncientInitSize = flag; + } + else if(instr == "generations_per_migration"){ + int flag = Settings::generationsPerMigration; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::generationsPerMigration = flag; + } + else if(instr == "migr_homo_ancient_ratio"){ + double ratio = Settings::migrationPartHomoToAncient; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &ratio); + Settings::migrationPartHomoToAncient = ratio; + } + else if(instr == "migr_ancient_homo_ratio"){ + double ratio = Settings::migrationPartAncientToHomo; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &ratio); + Settings::migrationPartAncientToHomo = ratio; + } + else if(instr == "birth" || instr == "birthrate" || instr == "birth_rate" ){ + double rate = Settings::BirthRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::BirthRate = rate; + } + else if(instr == "death" || instr == "deathrate" || instr == "death_rate" ){ + double rate = Settings::NaturalDeathRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::NaturalDeathRate = rate; + } + else if(instr == "percent_diff_loci" ){ + double value = Settings::percentDiffLoci; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &value); + Settings::percentDiffLoci = value; + } + else if(instr == "num_loci"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::numLoci = flag; + } + else if(instr == "prob_recomb" ){ + double value = Settings::ProbMtDNARecomb; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &value); + Settings::ProbMtDNARecomb = value; + } + + + + //***************************** + else if(instr == "breedings"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string strategy = tokensVector.at(1); + boost::to_lower(strategy); + boost::trim(strategy); + Settings::BreedingStrategy = strategy; + } + } // (END) for(curLine = 0; curLine < script.size(); curLine++) + std::vector a; + return a; +} + +//void DerevyankoReport2015::parseCalc(std::vector script){ +// +//} diff --git a/DerevyankoReport2015.h b/DerevyankoReport2015.h new file mode 100644 index 0000000..2640908 --- /dev/null +++ b/DerevyankoReport2015.h @@ -0,0 +1,13 @@ +#pragma once +#include +#include "population/Population.h" + +class DerevyankoReport2015 +{ +public: + static void report2015_01(int argc, char** argv); + static std::string getInitGene(int type = 0, int num = 0); + static BisexualPopulation* populationFactory(int type, int size); + static std::vector parseScript(std::string fileName); + //static void parseCalc(std::vector script); +}; diff --git a/environment/AbstractEnvironment.h b/environment/AbstractEnvironment.h new file mode 100644 index 0000000..9fe8ce0 --- /dev/null +++ b/environment/AbstractEnvironment.h @@ -0,0 +1,10 @@ +#pragma once +#include "AbstractRegion.h" +#include + +class Environment { +protected: + std::vector regions; +public: + +}; diff --git a/environment/AbstractRegion.h b/environment/AbstractRegion.h new file mode 100644 index 0000000..5e1f1c2 --- /dev/null +++ b/environment/AbstractRegion.h @@ -0,0 +1,40 @@ +#pragma once +#include + +// () +template +class Position3D { +public: + T xOrigin; + T yOrigin; + T zOrigin; + T length; + T width; + T height; + //Position3D(T x0, T y0, T z0, T len, T wid, T hei): + Position3D(T x0, T y0, T z0, T len, T wid, T heigh): + xOrigin(x0), yOrigin(y0), zOrigin(z0), + length(len), width(wid), height(heigh){}; +}; + +// , +using std::vector; +class Region { +protected: + long int capacity; // map capacities + std::vector currentSubstrates; // + std::vector restorationSubstrates; // + std::vector maxSubstrates; // + std::vector regulators; // temperature, humidity etc + + ///////////////////// + Position3D position3D; + +public: + Region(Position3D pos, long int capac); + Region(Position3D pos, long int capac, + const vector&, const vector&, + const vector&, const vector&); + void restoreSubstrate(); + long int getCapacity() const { return this->capacity;} +}; diff --git a/environment/Environment.cpp b/environment/Environment.cpp new file mode 100644 index 0000000..a814ac8 --- /dev/null +++ b/environment/Environment.cpp @@ -0,0 +1,2 @@ +#include "AbstractEnvironment.h" + diff --git a/environment/Region.cpp b/environment/Region.cpp new file mode 100644 index 0000000..836d8f5 --- /dev/null +++ b/environment/Region.cpp @@ -0,0 +1,39 @@ +#include "AbstractRegion.h" +#include + +//template + + +////////////////////////////////////// +Region::Region(Position3D pos, long capac): +position3D(pos), capacity(capac) +{} + +Region::Region(Position3D pos, long capac, + const std::vector & curS, const std::vector & restS, + const std::vector & maxS, const std::vector & regS): +position3D(pos), capacity(capac), +currentSubstrates(curS), restorationSubstrates(restS), +maxSubstrates(maxS), regulators(regS) +{ + if(currentSubstrates.size() != restorationSubstrates.size()){ + std::cerr<<"Warning! currentSubstrates size != restorationSubstrates size\n"; + } + if(currentSubstrates.size() != maxSubstrates.size()){ + std::cerr<<"Warning! currentSubstrates size != maximumSubstrates size\n"; + } + if(restorationSubstrates.size() != maxSubstrates.size()){ + std::cerr<<"Warning! restorationSubstrates size != maximumSubstrates size\n"; + } +} + +/** +* +**/ +void Region::restoreSubstrate(){ + for(unsigned int i = 0; i < this->currentSubstrates.size(); i++){ + this->currentSubstrates.at(i) = std::max( + this->currentSubstrates.at(i) + this->restorationSubstrates.at(i), + this->maxSubstrates.at(i)); + } +} \ No newline at end of file diff --git a/individual/AbstractIndividual.h b/individual/AbstractIndividual.h new file mode 100644 index 0000000..52f1405 --- /dev/null +++ b/individual/AbstractIndividual.h @@ -0,0 +1,59 @@ +#pragma once +/* + + +*/ +#include "../environment/AbstractEnvironment.h" +#include "genome/AbstractGenome.h" +#include "InnerSubstratesPool.h" +#include "genome/strategies/PhenotypeToFitnessStrategy.h" +class Phenotype; +class GenotypeToPhenotypeStrategy; +class Individual { +public: + enum Gender { male, female, hermaphrodite }; + friend class GenotypeToPhenotypeStrategy; + friend class InOutBreedingGenotypeToPhenotypeStrategy; + friend class KolchShindyalGenotypeToPhenotypeStrategy; + friend class BisexualPopulation; // MutationStrategy !!! +protected: + // + GenotypeToPhenotypeStrategy* genToPhenStrategy; + PhenotypeToFitnessStrategy* phenToFitStrategy; + ChromosomeRearrangementStrategy* recombinationStrategy; + + //// + //Environment* currentEnvironment; + Region* region; + + unsigned int age; + Gender gender; + Genotype* genotype; + + InnerSubstratesPool* substrateCache ; // + + Phenotype* phenotype; + + double fitness; + + ///////////////// +public: + Individual(const Individual& father, const Individual& mother); // - + Individual(Genotype* gType, Phenotype* pType, InnerSubstratesPool* sub, Gender _gender = hermaphrodite, Region* reg = 0); + virtual ~Individual(); + virtual const Genotype& getGenotype() const { return *genotype;} + virtual const Phenotype& getPhenotype() const {return *phenotype;} + //virtual void setEnvironment(Environment* env) { currentEnvironment = env; } + virtual void setRegion(Region* _region) {}; + virtual void setGenToPhenStrategy(GenotypeToPhenotypeStrategy* s){ genToPhenStrategy = s;} + virtual void setPhenToFitnessStrategy(PhenotypeToFitnessStrategy* p) { if(phenToFitStrategy != 0) {delete phenToFitStrategy;} phenToFitStrategy = p;} + virtual void calculateFitness(); + virtual void calculatePhenotype(); + virtual double getFitness() const { return fitness; } + + Gender getGender() const { return gender; } + virtual bool operator<(const Individual* _ind) const { return this->fitness < _ind->fitness;} +}; + +//bool compareOnFitness(const Individual& a, const Individual& b); +bool compareOnFitness(const Individual* a, const Individual* b); \ No newline at end of file diff --git a/individual/Individual.cpp b/individual/Individual.cpp new file mode 100644 index 0000000..59b62be --- /dev/null +++ b/individual/Individual.cpp @@ -0,0 +1,68 @@ +#include "AbstractIndividual.h" +#include "genome/strategies/GenotypeToPhenotypeStrategy.h" +#include + +Individual::Individual(const Individual& father, const Individual& mother) +{ + this->genToPhenStrategy = GenotypeToPhenotypeStrategies::getInstance("inoutbreeding"); + this->phenToFitStrategy = PhenotypeToFitnessStrategy::getInstance("inoutbreeding"); + this->recombinationStrategy = RecombinationStrategies::getInstance("Simple recombination"); + + genotype = new Genotype( + father.getGenotype().recombinantHaploidGenotype(recombinationStrategy), + mother.getGenotype().recombinantHaploidGenotype(recombinationStrategy)); + // + + // + this->substrateCache = new InnerSubstratesPool(); + + phenotype= new Phenotype(father.getPhenotype()); + this->age = 0; + this->calculateFitness(); + +} + +Individual::Individual(Genotype* gType, Phenotype* pType, InnerSubstratesPool* sub, Gender _gender, Region* _reg): +genotype(gType), phenotype(pType), substrateCache(sub), +gender(_gender), region(_reg) +{ + this->genToPhenStrategy = GenotypeToPhenotypeStrategies::getInstance("inoutbreeding"); + this->phenToFitStrategy = PhenotypeToFitnessStrategy::getInstance("inoutbreeding"); + this->recombinationStrategy = RecombinationStrategies::getInstance("Simple recombination"); + + this->age = 0; + + //this->calculateFitness(); + //this->phenotype +} + + +Individual::~Individual(){ +// std::cerr<<"Destructor works"<genotype; + delete this->phenotype; + + //delete this->genToPhenStrategy; + //delete this->phenToFitStrategy; + //delete this->recombinationStrategy; + + if(this->substrateCache != 0) + delete this->substrateCache; +} + +/*bool compareOnFitness(const Individual& a, const Individual& b){ + return a.getFitness() < b.getFitness(); +}*/ + +bool compareOnFitness(const Individual* a, const Individual* b){ + return a->getFitness() < b->getFitness(); +} + +void Individual::calculateFitness(){ + this->genToPhenStrategy->calculatePhenotype(this); + this->fitness = this->phenToFitStrategy->calculateFitness(this->phenotype); +} + +void Individual::calculatePhenotype(){ + this->genToPhenStrategy->calculatePhenotype(this); +} \ No newline at end of file diff --git a/individual/InnerSubstratesPool.cpp b/individual/InnerSubstratesPool.cpp new file mode 100644 index 0000000..cba8ea7 --- /dev/null +++ b/individual/InnerSubstratesPool.cpp @@ -0,0 +1 @@ +#include "InnerSubstratesPool.h" \ No newline at end of file diff --git a/individual/InnerSubstratesPool.h b/individual/InnerSubstratesPool.h new file mode 100644 index 0000000..07746b2 --- /dev/null +++ b/individual/InnerSubstratesPool.h @@ -0,0 +1,40 @@ +#pragma once +#include +#include +#include + +using std::vector; +using std::map; + +class InnerSubstratesPool { +protected: + std::vector subConcentrations; // + std::map subNamesMap; // ( - ) + // P.S. , , ... + + std::vector regConcentrations; // + std::map regNamesMap; // ( - ) + +public: + InnerSubstratesPool(){}; + InnerSubstratesPool(const vector& _subs, const map& _subNames) + : subConcentrations(_subs), subNamesMap(_subNames){} + + InnerSubstratesPool(const vector& _subs, const map& _subNames, + const vector& _regs, const map& _regNames) + : subConcentrations(_subs), subNamesMap(_subNames), + regConcentrations(_regs), regNamesMap(_regNames){} + + virtual void utilizeSubstrate(int num, float count) { subConcentrations.at(num) -= count; } + virtual void utilizeRegulator(int num, float count) { regConcentrations.at(num) -= count; } + + virtual void utilizeSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) -= count; } + virtual void utilizeRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) -= count; } + + virtual void addSubstrate(int num, float count) { subConcentrations.at(num) += count; } + virtual void addRegulator(int num, float count) { regConcentrations.at(num) += count; } + + virtual void addSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) += count; } + virtual void addRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) += count; } + +}; diff --git a/individual/Phenotype.cpp b/individual/Phenotype.cpp new file mode 100644 index 0000000..8fcdd1e --- /dev/null +++ b/individual/Phenotype.cpp @@ -0,0 +1,38 @@ +#include "Phenotype.h" +#include +#include + +Phenotype::Phenotype(Trait _trait){ + this->traitsMap[_trait.getName()] = _trait; +} + +void Phenotype::addTrait(Trait _trait){ + std::map::iterator it; + it = this->traitsMap.find(_trait.getName()); + + if(it == this->traitsMap.end()){ + this->traitsMap[_trait.getName()] = _trait; + } + else{ + std::cerr<<"Phenotype.cpp(16): already has the trait: "<first<::const_iterator it; + for(it = p.traitsMap.begin(); it != p.traitsMap.end(); it++){ + os<<(it->first)<<"\t"<<(it->second.getTraitValueCont())<<"\t"; + } + + return os; +} + +std::string Phenotype::toSimpleString() const { + std::stringstream os; + std::map::const_iterator it; + for(it = this->traitsMap.begin(); it != this->traitsMap.end(); it++){ + os<<(it->second.getTraitValueCont())<<"\t"; + } + + return os.str(); +} \ No newline at end of file diff --git a/individual/Phenotype.h b/individual/Phenotype.h new file mode 100644 index 0000000..b3e493d --- /dev/null +++ b/individual/Phenotype.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Trait.h" +#include +#include +#include + +class Phenotype { + friend class GenotypeToPhenotypeStrategy; + friend class InOutBreedingGenotypeToPhenotypeStrategy; + friend class KolchShindyalGenotypeToPhenotypeStrategy; + friend class PhenotypeToFitnessStrategy; + friend std::ostream& operator << (std::ostream& os, const Phenotype& p); +protected: + //std::vector traits; + std::map traitsMap; +public: + Phenotype() { }; + Phenotype(const std::map& _tm) : traitsMap(_tm) {} + Phenotype(Trait _trait); + + Trait getTraitByName(std::string name) const {return this->traitsMap.find(name)->second;}; + void addTrait(Trait _trait); + std::string toSimpleString() const; +}; + diff --git a/individual/Trait.cpp b/individual/Trait.cpp new file mode 100644 index 0000000..20a3f11 --- /dev/null +++ b/individual/Trait.cpp @@ -0,0 +1,31 @@ +#include "Trait.h" +#include + +//Trait::Trait(const Trait& _t) +//{ +// *this = _t; +//} + +Trait::Trait(Trait::idType _ID, std::string _name, float value): +ID(_ID), name(_name), traitValueCont(value), traitType(Continious) +{} + +Trait::Trait(Trait::idType _ID, std::string _name, int value): +ID(_ID), name(_name), traitValueDiscr(value), traitType(Discrete) +{} + +void Trait::setTraitValue(float _value){ + if(this->traitType == Continious){ + this->traitValueCont = _value; + return; + } + /*throw*/std::cerr<<"Trait.cpp(17) Warning: can't assign float value to discrete trait\n"; +} + +void Trait::setTraitValue(int _value){ + if(this->traitType == Discrete){ + this->traitValueDiscr = _value; + return; + } + /*throw*/std::cerr<<"Trait.cpp(25) Warning: can't assign int value to continious trait\n"; +} \ No newline at end of file diff --git a/individual/Trait.h b/individual/Trait.h new file mode 100644 index 0000000..7ef4d0a --- /dev/null +++ b/individual/Trait.h @@ -0,0 +1,32 @@ +#pragma once + +#include + +class Trait { +public: + enum TraitType { Continious, Discrete }; + typedef unsigned int idType; + +protected: + TraitType traitType; // + idType ID; // + std::string name; // + float traitValueCont; // , + int traitValueDiscr; // , + +public: + Trait(){}; + Trait(idType _ID, std::string _name, float value); + Trait(idType _ID, std::string _name, int value); + + TraitType getTraitType() const { return traitType; } + idType getID() const { return ID; } + std::string getName() const { return name; } + float getTraitValueCont() const { return traitValueCont; } + int getTraitValueDiscr() const { return traitValueDiscr; } + + void setName(const std::string& _name) { name = _name; } + void setID(idType _ID) { ID = _ID; } + void setTraitValue(float _value); + void setTraitValue(int _value); +}; diff --git a/individual/genome/AbstractGenome.h b/individual/genome/AbstractGenome.h new file mode 100644 index 0000000..6bccc59 --- /dev/null +++ b/individual/genome/AbstractGenome.h @@ -0,0 +1,58 @@ +#pragma once + +#include "Chromosome.h" +#include "strategies/ChromosomeRearrangementStrategy.h" +#include "strategies\Derevyanko\2015\Derevyanko2015RecombinationStrategy.h" +#include +#include +/* + +*/ +class ChromosomeRearrangementStrategy; // forward declaration +class Derevyanko2015RecpmbinationStrategy; +class Genotype; + +class HaploidGenotype { + friend class Genotype; + friend class ChromosomeRearrangementStrategy; + friend class Derevyanko2015RecpmbinationStrategy; + friend std::ostream& operator << (std::ostream& os, const Genotype& g); +protected: + std::vector chromosomes; + +public: + const Chromosome& getChromosome(unsigned int i) const { return this->chromosomes.at(i);} + +public: + HaploidGenotype(const std::vector& _chrom) : chromosomes(_chrom){}; + +}; + +class Genotype { + friend class ChromosomeRearrangementStrategy; + friend class Derevyanko2015RecpmbinationStrategy; + friend std::ostream& operator<< (std::ostream& os, const Genotype& g); +protected: + HaploidGenotype fatherGenome; + HaploidGenotype motherGenome; + +public: + Genotype(const std::vector& _fGenome, const std::vector& _mGenome) : fatherGenome(HaploidGenotype(_fGenome)), motherGenome(HaploidGenotype(_mGenome)) {}; + Genotype(const HaploidGenotype& _fGenome, const HaploidGenotype& _mGenome) : fatherGenome(_fGenome), motherGenome(_mGenome) {}; + Genotype(const Genotype& _fDiplGenome, const Genotype& _mDiplGenome); + HaploidGenotype recombinantHaploidGenotype(ChromosomeRearrangementStrategy*) const; + const HaploidGenotype& getFatherGenome() const { return this->fatherGenome;} + const HaploidGenotype& getMotherGenome() const { return this->motherGenome;} + std::string toSimpleString() const; + std::string toSimpleFasta(bool onlyMother = true) const; + std::string toMaxModuleAB() const; + + std::string getRawGene(unsigned int fatherMother, unsigned int chromoNum, unsigned int geneNum) const; + void doRawMutationSequence(unsigned int fatherMother, unsigned int chromoNum, unsigned int geneNum, std::string newSeq); +}; + + +//!!!!!!!!!! +class PolyploidGenotype { + +}; diff --git a/individual/genome/Chromosome.cpp b/individual/genome/Chromosome.cpp new file mode 100644 index 0000000..f6df1fe --- /dev/null +++ b/individual/genome/Chromosome.cpp @@ -0,0 +1,11 @@ +#include "Chromosome.h" + +void Chromosome::insertGene(Gene gene, int pos){ + std::vector::iterator it = this->genes.begin(); + this->genes.insert(it+pos, gene); +} + +void Chromosome::insertGeneToEnd(Gene gene, int pos){ + std::vector::iterator it = this->genes.end(); + this->genes.insert(it-pos, gene); +} diff --git a/individual/genome/Chromosome.h b/individual/genome/Chromosome.h new file mode 100644 index 0000000..881dbe5 --- /dev/null +++ b/individual/genome/Chromosome.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include "Gene.h" +/* + +*/ + +class Chromosome { + friend class ChromosomeRearrangementStrategy; + friend class Derevyanko2015RecpmbinationStrategy; + friend class Genotype; +protected: + std::string name; + std::vector genes; + +public: + Chromosome(std::string _name) : name(_name) {}; + Chromosome(std::string _name, Gene gene) : name(_name), genes(1, gene) {}; + Chromosome(std::string _name, const std::vector& _genes) : name(_name), genes(_genes) {}; + + void insertGene(Gene gene, int pos = 0); + void insertGeneToEnd(Gene gene, int pos = 0); + std::string getName() const { return name;} + const std::vector& getGenesAsVector() const { return genes;} +}; diff --git a/individual/genome/Gene.cpp b/individual/genome/Gene.cpp new file mode 100644 index 0000000..8edce98 --- /dev/null +++ b/individual/genome/Gene.cpp @@ -0,0 +1,39 @@ +#include "Gene.h" +#include + +Gene::Gene(idType _ID, std::string _name, float value): +ID(_ID), name(_name), geneValueCont(value), geneType(Continious) +{} + +Gene::Gene(idType _ID, std::string _name, int value): +ID(_ID), name(_name), geneValueDiscr(value), geneType(Discrete) +{} + +Gene::Gene(idType _ID, std::string _name, std::string _seq): +ID(_ID), name(_name), sequence(_seq), geneType(Sequence) +{} + +void Gene::setGeneValue(float _value){ + if(this->geneType == Continious){ + this->geneValueCont = _value; + return; + } + /*throw*/std::cerr<<"Gene.cpp(17) Warning: can't assign float value to discrete Gene\n"; +} + +void Gene::setGeneValue(int _value){ + if(this->geneType == Discrete){ + this->geneValueDiscr = _value; + return; + } + /*throw*/std::cerr<<"Gene.cpp(25) Warning: can't assign int value to continious Gene\n"; +} + +void Gene::setGeneValue(std::string _seq){ + if(this->geneType == Sequence){ + this->sequence = _seq; + return; + } + /*throw*/std::cerr<<"Gene.cpp(37) Warning: can't assign numerical value to sequence Gene\n"; + +} \ No newline at end of file diff --git a/individual/genome/Gene.h b/individual/genome/Gene.h new file mode 100644 index 0000000..e5ebe76 --- /dev/null +++ b/individual/genome/Gene.h @@ -0,0 +1,45 @@ +#pragma once +#include +/* + , + " " ( ), + +1) +2) / +3) / +4) ( .. ???) +5) , , .. +*/ + +class Gene { + friend class Derevyanko2015RecpmbinationStrategy; +public: + enum GeneType { Continious, Discrete, Sequence }; + typedef unsigned int idType; + +protected: + GeneType geneType; // + idType ID; // + std::string name; // + float geneValueCont;// , + int geneValueDiscr; // , + std::string sequence; + +public: + Gene(idType _ID, std::string _name, float value); + Gene(idType _ID, std::string _name, int value); + Gene(idType _ID, std::string _name, std::string seq); + + GeneType getGeneType() const { return geneType; } + idType getID() const { return ID; } + std::string getName() const { return name; } + float getGeneValueCont() const { return geneValueCont; } + int getGeneValueDiscr() const { return geneValueDiscr; } + std::string getSequence()const { return sequence; } + + void setName(const std::string& _name) { name = _name; } + void setID(idType _ID) { ID = _ID; } + void setGeneValue(float _value); + void setGeneValue(int _value); + void setGeneValue(std::string _seq); +}; diff --git a/individual/genome/Genotype.cpp b/individual/genome/Genotype.cpp new file mode 100644 index 0000000..752bf80 --- /dev/null +++ b/individual/genome/Genotype.cpp @@ -0,0 +1,119 @@ +#include "AbstractGenome.h" +#include +#include +#include +//Genotype::Genotype(const Genotype& _fDiplGenome, const Genotype& _mDiplGenome){ +//} + +HaploidGenotype Genotype::recombinantHaploidGenotype(ChromosomeRearrangementStrategy* strategy) const { + return strategy->buildRecombinantGenotype(this); +} + +std::ostream& operator<< (std::ostream& os, const Genotype& g){ + os<<"F"; + for(unsigned int i = 0; i < g.fatherGenome.chromosomes.size(); i++){ + os<<"ch"<<(i+1)<<":"; + const std::vector genesF = g.fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = g.motherGenome.chromosomes.at(i).getGenesAsVector(); + for(unsigned int j = 0; j < genesF.size(); j++){ + os<<"\t"; + os<fatherGenome.chromosomes.size(); i++){ + const std::vector genesF = this->fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = this->motherGenome.chromosomes.at(i).getGenesAsVector(); + for(unsigned int j = 0; j < genesF.size(); j++){ + if(genesF.at(j).getGeneType() == Gene::Continious){ + os<fatherGenome.chromosomes.size(); i++){ + const std::vector genesF = this->fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = this->motherGenome.chromosomes.at(i).getGenesAsVector(); + for(unsigned int j = 0; j < genesF.size(); j++){ + if(genesF.at(j).getGeneType() == Gene::Continious){ + if(fabs(genesF.at(j).getGeneValueCont()) > fabs(genesM.at(j).getGeneValueCont())){ + os<fatherGenome) : &(this->motherGenome); + return genome->getChromosome(chromoNum).getGenesAsVector().at(geneNum).getSequence(); +} + +void Genotype::doRawMutationSequence(unsigned int fatherMother, unsigned int chromoNum, unsigned int geneNum, std::string newSeq){ + if(fatherMother==2){ + this->fatherGenome.chromosomes.at(chromoNum).genes.at(geneNum).setGeneValue(newSeq); + this->motherGenome.chromosomes.at(chromoNum).genes.at(geneNum).setGeneValue(newSeq); + } +} + +std::string Genotype::toSimpleFasta(bool onlyMother) const { + std::stringstream os; + for(unsigned int i = 0; i < this->motherGenome.chromosomes.size(); i++){ + const std::vector genesF = this->fatherGenome.chromosomes.at(i).getGenesAsVector(); + const std::vector genesM = this->motherGenome.chromosomes.at(i).getGenesAsVector(); + os<<"> "<motherGenome.chromosomes.at(i).getName()<<"\n"; + for(unsigned int j = 0; j < genesM.size(); j++){ + if(genesM.at(i).getGeneType() == Gene::Sequence){ + os< +#include + +HaploidGenotype ChromosomeRearrangementStrategy::buildRecombinantGenotype(const Genotype* parentGenotype){ + std::vector chromosomes; + const std::vector* fGenome = &parentGenotype->fatherGenome.chromosomes; + const std::vector* mGenome = &parentGenotype->motherGenome.chromosomes; + + //srand((unsigned int)time(NULL)); + for (unsigned int i = 0; i < fGenome->size(); i++){ + int flag = rand() % 2; + const std::vector* first; + const std::vector* second; + if(flag == 0){ + first = &fGenome->at(i).genes; + second= &mGenome->at(i).genes; + } + else{ + first = &mGenome->at(i).genes; + second= &fGenome->at(i).genes; + } + Chromosome childChromosome(fGenome->at(i).name, *first); + // " " + int bound = rand() % first->size(); + for(unsigned int j = bound; j < first->size(); j++){ + childChromosome.genes.at(j) = second->at(j); + } + chromosomes.push_back(childChromosome); + + } + // , (. ), + // , + + return HaploidGenotype(chromosomes); +} + +HaploidGenotype ChromosomeRearrangementStrategy:: +buildRecombinantGenotype(const HaploidGenotype& fatherGenome, const HaploidGenotype& motherGenome){ + std::vector chromosomes; + const std::vector fGenome = fatherGenome.chromosomes; + const std::vector mGenome = motherGenome.chromosomes; + + //srand((unsigned int)time(NULL)); + for (unsigned int i = 0; i < fGenome.size(); i++){ + int flag = rand() % 2; + std::vector first; + std::vector second; + if(flag == 0){ + first = fGenome.at(i).genes; + second= mGenome.at(i).genes; + } + else{ + first = mGenome.at(i).genes; + second= fGenome.at(i).genes; + } + Chromosome childChromosome(fGenome.at(i).name, first); + // " " + int bound = rand() % first.size(); + for(unsigned int j = bound; j < first.size(); j++){ + childChromosome.genes.at(j) = second.at(j); + } + chromosomes.push_back(childChromosome); + + } + // , (. ), + // , + + return HaploidGenotype(chromosomes); +} + +std::map RecombinationStrategies::_strategies; + +ChromosomeRearrangementStrategy* RecombinationStrategies::getInstance(std::string _name){ + if(_strategies.find(_name) == _strategies.end()){ + if(_name.compare("D2015") == 0){ + ChromosomeRearrangementStrategy* s = new Derevyanko2015RecombinationStrategy(); + } + else{ + ChromosomeRearrangementStrategy* s = new ChromosomeRearrangementStrategy(); + } + _strategies[_name] = s; + } + + return _strategies[_name]; +} \ No newline at end of file diff --git a/individual/genome/strategies/ChromosomeRearrangementStrategy.h b/individual/genome/strategies/ChromosomeRearrangementStrategy.h new file mode 100644 index 0000000..28815ae --- /dev/null +++ b/individual/genome/strategies/ChromosomeRearrangementStrategy.h @@ -0,0 +1,20 @@ +#pragma once +#include "../AbstractGenome.h" +#include + +class HaploidGenotype; +class Genotype; + +class ChromosomeRearrangementStrategy { + +public: + virtual HaploidGenotype buildRecombinantGenotype(const Genotype*); + virtual HaploidGenotype buildRecombinantGenotype(const HaploidGenotype&, const HaploidGenotype&); +}; + +// +class RecombinationStrategies { + static std::map _strategies; +public: + static ChromosomeRearrangementStrategy* getInstance(std::string _name); +}; \ No newline at end of file diff --git a/individual/genome/strategies/Derevyanko/2015/Derevyanko2015RecombinationStrategy.cpp b/individual/genome/strategies/Derevyanko/2015/Derevyanko2015RecombinationStrategy.cpp new file mode 100644 index 0000000..b31109a --- /dev/null +++ b/individual/genome/strategies/Derevyanko/2015/Derevyanko2015RecombinationStrategy.cpp @@ -0,0 +1,173 @@ +#include "Derevyanko2015RecombinationStrategy.h" +#include +#include + +HaploidGenotype Derevyanko2015RecombinationStrategy::buildRecombinantGenotype(const Genotype* parentGenotype){ + std::vector chromosomes; + const std::vector* fGenome = &parentGenotype->fatherGenome.chromosomes; + const std::vector* mGenome = &parentGenotype->motherGenome.chromosomes; + + +// srand((unsigned int)time(NULL)); + +// int flag = rand() % 2; + const std::vector* first; + const std::vector* second; + + first = &fGenome->at(0).genes; + second= &mGenome->at(0).genes; + + double pNumt = 1e-2; + double pHybr = 1e-5; + + bool sameSpecies = true; + if(first->at(0).getName().compare(second->at(0).getName()) != 0){ + sameSpecies = false; + pHybr = 1e-2; + } + + Chromosome childChromosome(mGenome->at(0).name); + Chromosome numtChromosome(mGenome->at(1).name); + std::string numtName = mGenome->at(1).genes.at(0).getName(); + std::string numtSeq = mGenome->at(1).genes.at(0).sequence; + + int flag = rand() % (int)(1/pHybr); + if(flag == 0){ + // + int bound1 = rand() % first->at(0).sequence.length; + int bound2 = rand() % first->at(0).sequence.length; + + // 1>2, - , - + std::string seq; + if(bound1 > bound2){ + seq = first->at(0).sequence; + seq.replace(bound2, bound1-bound2, + second->at(0).sequence.substr(bound2, bound1-bound2)); + } + else{ + seq = second->at(0).sequence; + seq.replace(bound1, bound2-bound1, + first->at(0).sequence.substr(bound1, bound2-bound1)); + } + + std::string gName = second->at(0).getName(); + Gene gene(Gene::Sequence, gName, seq); + childChromosome.insertGeneToEnd(gene); + std::cerr<<"Recombination occured:\t"<at(0).sequence.length; + int bound2 = rand() % first->at(0).sequence.length; + std::string numtAdd = (bound1 < bound2) ? + first->at(0).sequence.substr(bound1, bound2-bound1) : + first->at(0).sequence.substr(bound2, bound1-bound2); + + numtSeq += numtAdd; + std::cerr<<"New numt occured:\t"<at(0)); + } + + Gene geneNumt(Gene::Sequence, numtName, numtSeq); + numtChromosome.insertGeneToEnd(geneNumt); + chromosomes.push_back(childChromosome); + chromosomes.push_back(numtChromosome); + + return HaploidGenotype(chromosomes); +} + +HaploidGenotype Derevyanko2015RecombinationStrategy:: +buildRecombinantGenotype(const HaploidGenotype& fatherGenome, const HaploidGenotype& motherGenome){ + std::vector chromosomes; + const std::vector* fGenome = &fatherGenome.chromosomes; + const std::vector* mGenome = *motherGenome.chromosomes; + +// std::vector chromosomes; +// const std::vector* fGenome = &parentGenotype->fatherGenome.chromosomes; +// const std::vector* mGenome = &parentGenotype->motherGenome.chromosomes; + + +// srand((unsigned int)time(NULL)); + +// int flag = rand() % 2; + const std::vector* first; + const std::vector* second; + + first = &fGenome->at(0).genes; + second= &mGenome->at(0).genes; + + double pNumt = 1e-2; + double pHybr = 1e-5; + + bool sameSpecies = true; + if(first->at(0).getName().compare(second->at(0).getName()) != 0){ + sameSpecies = false; + pHybr = 1e-2; + } + + Chromosome childChromosome(mGenome->at(0).name); + Chromosome numtChromosome(mGenome->at(1).name); + std::string numtName = mGenome->at(1).genes.at(0).getName(); + std::string numtSeq = mGenome->at(1).genes.at(0).sequence; + + int flag = rand() % (int)(1/pHybr); + if(flag == 0){ + // + int bound1 = rand() % first->at(0).sequence.length; + int bound2 = rand() % first->at(0).sequence.length; + + // 1>2, - , - + std::string seq; + if(bound1 > bound2){ + seq = first->at(0).sequence; + seq.replace(bound2, bound1-bound2, + second->at(0).sequence.substr(bound2, bound1-bound2)); + } + else{ + seq = second->at(0).sequence; + seq.replace(bound1, bound2-bound1, + first->at(0).sequence.substr(bound1, bound2-bound1)); + } + + std::string gName = second->at(0).getName(); + Gene gene(Gene::Sequence, gName, seq); + childChromosome.insertGeneToEnd(gene); + std::cerr<<"Recombination occured:\t"<at(0).sequence.length; + int bound2 = rand() % first->at(0).sequence.length; + std::string numtAdd = (bound1 < bound2) ? + first->at(0).sequence.substr(bound1, bound2-bound1) : + first->at(0).sequence.substr(bound2, bound1-bound2); + + numtSeq += numtAdd; + std::cerr<<"New numt occured:\t"<at(0)); + } + + Gene geneNumt(Gene::Sequence, numtName, numtSeq); + numtChromosome.insertGeneToEnd(geneNumt); + chromosomes.push_back(childChromosome); + chromosomes.push_back(numtChromosome); + + return HaploidGenotype(chromosomes); + +} \ No newline at end of file diff --git a/individual/genome/strategies/Derevyanko/2015/Derevyanko2015RecombinationStrategy.h b/individual/genome/strategies/Derevyanko/2015/Derevyanko2015RecombinationStrategy.h new file mode 100644 index 0000000..6f6ce18 --- /dev/null +++ b/individual/genome/strategies/Derevyanko/2015/Derevyanko2015RecombinationStrategy.h @@ -0,0 +1,8 @@ +#pragma once +#include "../../ChromosomeRearrangementStrategy.h" + +class Derevyanko2015RecombinationStrategy : public ChromosomeRearrangementStrategy{ +public: + virtual HaploidGenotype buildRecombinantGenotype(const Genotype*); + virtual HaploidGenotype buildRecombinantGenotype(const HaploidGenotype&, const HaploidGenotype&); +}; \ No newline at end of file diff --git a/individual/genome/strategies/GenotypeToPhenotypeStrategy.cpp b/individual/genome/strategies/GenotypeToPhenotypeStrategy.cpp new file mode 100644 index 0000000..dd2944b --- /dev/null +++ b/individual/genome/strategies/GenotypeToPhenotypeStrategy.cpp @@ -0,0 +1,44 @@ +#include "GenotypeToPhenotypeStrategy.h" +#include "KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h" +#include + +void GenotypeToPhenotypeStrategy::calculatePhenotype(Individual* individ){ + Genotype* genotype = individ->genotype; + Phenotype* phenotype = individ->phenotype; + InnerSubstratesPool* substrates = individ->substrateCache; + + // Chromosome 1 + Chromosome chr1F = individ->genotype->getFatherGenome().getChromosome(0); + Chromosome chr1M = individ->genotype->getMotherGenome().getChromosome(0); + + const std::vector& genesF = chr1F.getGenesAsVector(); + const std::vector& genesM = chr1M.getGenesAsVector(); + + for(unsigned int i = 0; i < genesF.size(); i++){ + float geneVal = std::min( + genesF.at(i).getGeneValueCont(), + genesM.at(i).getGeneValueCont()); + phenotype->traitsMap[genesF.at(i).getName()].setTraitValue(geneVal); + } +} + +std::map GenotypeToPhenotypeStrategies::_strategies; + +GenotypeToPhenotypeStrategy* GenotypeToPhenotypeStrategies::getInstance(std::string _name){ + if(_strategies.find(_name) == _strategies.end()){ + GenotypeToPhenotypeStrategy* s = 0; + if(_name.compare("inoutbreeding") == 0){ + s = new InOutBreedingGenotypeToPhenotypeStrategy(); + } + else if(_name.compare("kolchan_shindyal_gen_to_phen") == 0){ + s = new KolchShindyalGenotypeToPhenotypeStrategy(); + } + else { + // default + s = new GenotypeToPhenotypeStrategy();; + } + _strategies[_name] = s; + } + + return _strategies[_name]; +} diff --git a/individual/genome/strategies/GenotypeToPhenotypeStrategy.h b/individual/genome/strategies/GenotypeToPhenotypeStrategy.h new file mode 100644 index 0000000..3060261 --- /dev/null +++ b/individual/genome/strategies/GenotypeToPhenotypeStrategy.h @@ -0,0 +1,23 @@ +#pragma once +#include "../../AbstractIndividual.h" +#include "../AbstractGenome.h" +#include "../../Phenotype.h" +#include +class GenotypeToPhenotypeStrategy { +public: + virtual void calculatePhenotype(Individual*); + //virtual void calculatePhenotype(const Genotype*, Phenotype*); + //Phenotype* calculatePhenotype(const Genotype*); +}; + +class InOutBreedingGenotypeToPhenotypeStrategy : public GenotypeToPhenotypeStrategy { +public: + virtual void calculatePhenotype(Individual*); +}; + +// +class GenotypeToPhenotypeStrategies { + static std::map _strategies; +public: + static GenotypeToPhenotypeStrategy* getInstance(std::string _name); +}; \ No newline at end of file diff --git a/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.cpp b/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.cpp new file mode 100644 index 0000000..b694937 --- /dev/null +++ b/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.cpp @@ -0,0 +1,11 @@ +#include "InOutBreedingPhenToFitStrategy.h" +#include "../../../Phenotype.h" + +double InOutBreedingPhenToFitStrategy::calculateFitness(Phenotype *phen){ + double ans = 0.0; + + + ans = phen->getTraitByName("coadaptive").getTraitValueCont(); + //float coef = phen->getTraitByName("disease") + return ans; +} \ No newline at end of file diff --git a/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.h b/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.h new file mode 100644 index 0000000..199324d --- /dev/null +++ b/individual/genome/strategies/InOutBreeding/InOutBreedingPhenToFitStrategy.h @@ -0,0 +1,7 @@ +#pragma once + +#include "../PhenotypeToFitnessStrategy.h" + +class InOutBreedingPhenToFitStrategy : public PhenotypeToFitnessStrategy { + virtual double calculateFitness(Phenotype* phen); +}; diff --git a/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.cpp b/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.cpp new file mode 100644 index 0000000..39020ba --- /dev/null +++ b/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.cpp @@ -0,0 +1,85 @@ +#include "InOutBreedingPopulationBreedingStrategy.h" +#include "../../../../processor/Settings.h" +#include "../../../Phenotype.h" +#include +#include +#include +#include + +void InOutBreedingPopulationBreedingStrategy::breed(Population *_pop){ + // N = const + + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + + srand((unsigned int)time(NULL)); + + int offsprings = Settings::OffspringsMean; + std::vector newIndivids; + + long int inds; + for(inds = pop->individs.size();inds >=2; inds -= 2){ + int motherIndex = rand()%inds; + int fatherIndex = rand()%inds; + if(fatherIndex == motherIndex){ + fatherIndex = (fatherIndex+1)%inds; + } + + + // + for(int i = 0; i < offsprings; i++){ + Individual* ind = new Individual(*(pop->individs.at(motherIndex)), *(pop->individs.at(fatherIndex))); + + // + ind->calculatePhenotype(); + Phenotype phen = ind->getPhenotype(); + float coadapt = phen.getTraitByName("coadaptive").getTraitValueCont(); + float disease = phen.getTraitByName("disease").getTraitValueCont(); + + if(disease > Settings::DiseaseThreshold){ // + float probSurvive = 1.f; + if(coadapt < Settings::CoadaptiveThreshold){ // TODO: + probSurvive = Settings::CoadaptiveMinimumP; + } + else{ + probSurvive = (1-Settings::CoadaptiveMinimumP)/(Settings::CoadaptiveMaximumTrait-Settings::CoadaptiveThreshold); + probSurvive *= coadapt - Settings::CoadaptiveMaximumTrait; + probSurvive += 1; + } + int order = 1000; + int prob = rand()%order; + if(prob < order*probSurvive){ + // .. + newIndivids.push_back(ind); + } + } + } // (END) for(int i = 0; i < offsprings; i++) + + // + delete pop->individs.at(motherIndex); + delete pop->individs.at(fatherIndex); + if(motherIndex > fatherIndex){ + pop->individs.erase(pop->individs.begin()+motherIndex); + pop->individs.erase(pop->individs.begin()+fatherIndex); + } + else{ + pop->individs.erase(pop->individs.begin()+fatherIndex); + pop->individs.erase(pop->individs.begin()+motherIndex); + } + + // + if(newIndivids.size() >= Settings::KMaxParameter){ + for(unsigned int i = 0; i < pop->individs.size(); i++){ + delete pop->individs.at(i); + } + pop->individs.clear(); + break; + } + } // (END) for(inds = pop->individs.size();inds >=2; inds -= 2) + + // + pop->individs.insert(pop->individs.begin(), newIndivids.begin(), newIndivids.end()); +} \ No newline at end of file diff --git a/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h b/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h new file mode 100644 index 0000000..481feef --- /dev/null +++ b/individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h @@ -0,0 +1,8 @@ +#pragma once + +#include "../../../../population/BreedingStrategies/PopulationBreedingStrategy.h" + +class InOutBreedingPopulationBreedingStrategy : public PopulationBreedingStrategy { +public: + virtual void breed(Population* pop); +}; \ No newline at end of file diff --git a/individual/genome/strategies/InOutBreeding/InOutBreeginGenToPhenStrategy.cpp b/individual/genome/strategies/InOutBreeding/InOutBreeginGenToPhenStrategy.cpp new file mode 100644 index 0000000..501e454 --- /dev/null +++ b/individual/genome/strategies/InOutBreeding/InOutBreeginGenToPhenStrategy.cpp @@ -0,0 +1,101 @@ +#include "../GenotypeToPhenotypeStrategy.h" +#include "../../../../processor/Settings.h" +#include + +void InOutBreedingGenotypeToPhenotypeStrategy::calculatePhenotype(Individual* individ){ + Genotype* genotype = individ->genotype; + Phenotype* phenotype = individ->phenotype; + InnerSubstratesPool* substrates = individ->substrateCache; + + // Chromosome 1 + Chromosome chr1F = individ->genotype->getFatherGenome().getChromosome(0); + Chromosome chr1M = individ->genotype->getMotherGenome().getChromosome(0); + + const std::vector& genesF = chr1F.getGenesAsVector(); + const std::vector& genesM = chr1M.getGenesAsVector(); + + // + float a1 = genesF.at(0).getGeneValueCont(); + float a2 = genesM.at(0).getGeneValueCont(); + + float b1 = genesF.at(1).getGeneValueCont(); + float b2 = genesM.at(1).getGeneValueCont(); + // (END) + + // + std::vector diseaseAllelesF(4); + std::vector diseaseAllelesM(4); + + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + diseaseAllelesF.at(i) = genesF.at(i+2).getGeneValueCont(); + diseaseAllelesM.at(i) = genesM.at(i+2).getGeneValueCont(); + } + // (END) + + + // + float trait1 = 0, trait2 = 0; + float a, b; + + // 1) + + if(Settings::CoadaptiveGenesInteraction == "onechromosome"){ + // 1.1 + a = a1; + b = b1; + } + else if(Settings::CoadaptiveGenesInteraction == "mean"){ + // 1.2 + a = 0.5f*(a1+a2); + b = 0.5f*(b1+b2); + } + else{ // Settings::CoadaptiveGenesInteraction == "maxmodule" + // 1.3 + a = std::fabs(a1) >= std::fabs(a2) ? a1 : a2; + b = std::fabs(b1) >= std::fabs(b2) ? b1 : b2; + } + + // 1 + trait1 = std::max(a*b - (fabs(a*a*a) + fabs(b*b*b))/20, 0.0f); + //trait1 = std::max(a*b - (a*a*a*a + b*b*b*b)/250, 0.0f); + + // 2) + if(Settings::DiseaseGenesInteraction == "add1"){ + // 2.1 + float sum1 = 0.0f, sum2 = 0.0f; + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + sum1 += diseaseAllelesF.at(i); + sum2 += diseaseAllelesM.at(i); + } + trait2 = std::max(sum1,sum2); + } + else if(Settings::DiseaseGenesInteraction == "addmax"){ + // 2.1 () + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 += std::max(diseaseAllelesF.at(i), diseaseAllelesM.at(i)); + } + } + else if(Settings::DiseaseGenesInteraction == "mult"){ + // 2.2 + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 *= std::max(diseaseAllelesF.at(i), diseaseAllelesM.at(i)); + } + } + else if(Settings::DiseaseGenesInteraction == "meanadd"){ + // 2.3 () + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 += diseaseAllelesF.at(i) + diseaseAllelesM.at(i); + } + trait2 /= 2.0f; + } + else{// if(Settings::DiseaseGenesInteraction == "meanmult"){ + // 2.3 () + for(unsigned int i = 0; i < diseaseAllelesF.size(); i++){ + trait2 *= (diseaseAllelesF.at(i) + diseaseAllelesM.at(i))/2; + } + } + + // + phenotype->traitsMap["coadaptive"].setTraitValue(trait1); + phenotype->traitsMap["disease"].setTraitValue(trait2); +} \ No newline at end of file diff --git a/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.cpp b/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.cpp new file mode 100644 index 0000000..c308add --- /dev/null +++ b/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.cpp @@ -0,0 +1,54 @@ +#include "KolchShindyalBreedingStrategy.h" +#include "../../../../processor/Settings.h" +#include "../../../Phenotype.h" +#include +#include +#include +#include + +void KolchShindyalBreedingStrategy::breed(Population *_pop){ + // N = const + + srand((unsigned int)time(NULL)); + + // + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + std::sort(pop->individs.begin(), pop->individs.end(), compareOnFitness); + int inds = pop->individs.size(); + + // , SelectionAll + // - + // + float deathRate = 0.01f; //Settings::DeathRate + int toDie = int (inds * deathRate); + std::vector::iterator start = pop->individs.begin(); + std::vector::iterator end = pop->individs.begin()+toDie; + //advance(end,toDie); + for(std::vector::iterator it = start; it != end; it++){ + delete *it; + } + pop->individs.erase(start, end); + + std::cout<<"PopulationBreedingStrategy::breed: "<individs.size(); + srand((unsigned int)time(NULL)); + for(int i = 0; i < toBorn; i++) { + int male = rand() % inds; + int female = rand() % inds; + female = (female != male ? female : (female + 1) % inds); + + Individual* ind = new Individual(*(pop->individs.at(male)), *(pop->individs.at(female))); + // !!! + // .. + pop->individs.push_back(ind); + } + +} \ No newline at end of file diff --git a/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h b/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h new file mode 100644 index 0000000..fc5c4f3 --- /dev/null +++ b/individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h @@ -0,0 +1,8 @@ +#pragma once + +#include "../../../../population/BreedingStrategies/PopulationBreedingStrategy.h" + +class KolchShindyalBreedingStrategy : public PopulationBreedingStrategy { +public: + virtual void breed(Population* pop); +}; \ No newline at end of file diff --git a/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.cpp b/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.cpp new file mode 100644 index 0000000..1b0fdca --- /dev/null +++ b/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.cpp @@ -0,0 +1,63 @@ +#include "KolchShindyalGenotypeToPhenotypeStrategy.h" +//#include "../GenotypeToPhenotypeStrategy.h" +#include "../../../../processor/Settings.h" +#include + +void KolchShindyalGenotypeToPhenotypeStrategy::calculatePhenotype(Individual* individ){ + Genotype* genotype = individ->genotype; + Phenotype* phenotype = individ->phenotype; + InnerSubstratesPool* substrates = individ->substrateCache; + + // Chromosome 1 + Chromosome chr1F = individ->genotype->getFatherGenome().getChromosome(0); + Chromosome chr1M = individ->genotype->getMotherGenome().getChromosome(0); + + const std::vector& genesF = chr1F.getGenesAsVector(); + const std::vector& genesM = chr1M.getGenesAsVector(); + + // - + float c1m = genesM.at(0).getGeneValueCont(); + float c2m = genesM.at(1).getGeneValueCont(); + float c3m = genesM.at(2).getGeneValueCont(); + float c4m = genesM.at(3).getGeneValueCont(); + float c5m = genesM.at(4).getGeneValueCont(); + float Em = genesM.at(5).getGeneValueCont(); + + float c1f = genesF.at(0).getGeneValueCont(); + float c2f = genesF.at(1).getGeneValueCont(); + float c3f = genesF.at(2).getGeneValueCont(); + float c4f = genesF.at(3).getGeneValueCont(); + float c5f = genesF.at(4).getGeneValueCont(); + float Ef = genesF.at(5).getGeneValueCont(); + + float X = 0; + // +/* + // 1) - + // ) - + int feedBackM = genesM.at(6).getGeneValueDiscr(); + int feedBackF = genesF.at(6).getGeneValueDiscr(); + if( (feedBackF+feedBackM) != 0) { + X = -c2/2 + sqrt( c2*c2/4 + c5*c2/c3*(E+c4)); + } + else{ + X = c1/c3*(E+c4); + } + + // ) - + int feedBackM = genesM.at(6).getGeneValueDiscr(); + int feedBackF = genesF.at(6).getGeneValueDiscr(); + if( (feedBackF+feedBackM) == 2) { + X = -c2/2 + sqrt( c2*c2/4 + c5*c2/c3*(E+c4)); + } + else{ + X = c1/c3*(E+c4); + } + + // 2) +*/ + + + // + phenotype->traitsMap["X"].setTraitValue(X); +} \ No newline at end of file diff --git a/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h b/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h new file mode 100644 index 0000000..45f9353 --- /dev/null +++ b/individual/genome/strategies/KolchShindyal/KolchShindyalGenotypeToPhenotypeStrategy.h @@ -0,0 +1,6 @@ +#pragma once +#include "../GenotypeToPhenotypeStrategy.h" +class KolchShindyalGenotypeToPhenotypeStrategy: public GenotypeToPhenotypeStrategy { +public: + virtual void calculatePhenotype(Individual*); +}; \ No newline at end of file diff --git a/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.cpp b/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.cpp new file mode 100644 index 0000000..fe1145d --- /dev/null +++ b/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.cpp @@ -0,0 +1,16 @@ +#include "KolchShindyalPhenToFitnessStrategy.h" +#define _USE_MATH_DEFINES +#include +#include + + +double KolchShindyalPhenToFitnessStrategy::calculateFitness(Phenotype *phen){ + + double X = phen->getTraitByName("X").getTraitValueCont(); + double Xopt = phen->getTraitByName("Xopt").getTraitValueCont(); + double sigmaX = phen->getTraitByName("sigmaX").getTraitValueCont(); + + double ans = 1/(sqrt(2*M_PI)) * exp(-0.5*pow((X-Xopt)/sigmaX,2.)); + + return ans; +} \ No newline at end of file diff --git a/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.h b/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.h new file mode 100644 index 0000000..7514ec9 --- /dev/null +++ b/individual/genome/strategies/KolchShindyal/KolchShindyalPhenToFitnessStrategy.h @@ -0,0 +1,7 @@ +#pragma once +#include "../PhenotypeToFitnessStrategy.h" +#include "../../../Phenotype.h" + +class KolchShindyalPhenToFitnessStrategy : public PhenotypeToFitnessStrategy { + virtual double calculateFitness(Phenotype* phen); +}; diff --git a/individual/genome/strategies/PhenotypeToFitnessStrategy.cpp b/individual/genome/strategies/PhenotypeToFitnessStrategy.cpp new file mode 100644 index 0000000..ba4c72c --- /dev/null +++ b/individual/genome/strategies/PhenotypeToFitnessStrategy.cpp @@ -0,0 +1,36 @@ +#include "PhenotypeToFitnessStrategy.h" +#include "../../Phenotype.h" +#include "InOutBreeding/InOutBreedingPhenToFitStrategy.h" +#include "KolchShindyal/KolchShindyalPhenToFitnessStrategy.h" +#include + +double PhenotypeToFitnessStrategy::calculateFitness(Phenotype *phen){ + double ans = 0.0; + // + std::map::iterator it; + for(it = phen->traitsMap.begin(); it != phen->traitsMap.end(); it++){ + float trait = it->second.getTraitValueCont(); + ans += trait*trait; + } + return std::pow(ans,0.5); +} + +std::map PhenotypeToFitnessStrategy::_strategies; + +PhenotypeToFitnessStrategy* PhenotypeToFitnessStrategy::getInstance(std::string _name){ + if(_strategies.find(_name) == _strategies.end()){ + PhenotypeToFitnessStrategy* s = 0; + if(_name.compare("inoutbreeding") == 0){ + s = new InOutBreedingPhenToFitStrategy(); + } + else if(_name.compare("kolch_shindyal_phen_to_fit") == 0){ + s = new KolchShindyalPhenToFitnessStrategy(); + } + else { + s = new PhenotypeToFitnessStrategy(); + } + _strategies[_name] = s; + } + + return _strategies[_name]; +} \ No newline at end of file diff --git a/individual/genome/strategies/PhenotypeToFitnessStrategy.h b/individual/genome/strategies/PhenotypeToFitnessStrategy.h new file mode 100644 index 0000000..778d0c7 --- /dev/null +++ b/individual/genome/strategies/PhenotypeToFitnessStrategy.h @@ -0,0 +1,12 @@ +#pragma once +#include +#include + +class Phenotype; + +class PhenotypeToFitnessStrategy { + static std::map _strategies; +public: + static PhenotypeToFitnessStrategy* getInstance(std::string); + virtual double calculateFitness(Phenotype* phen); +}; diff --git a/population/BisexualPopulation.cpp b/population/BisexualPopulation.cpp new file mode 100644 index 0000000..f137b1c --- /dev/null +++ b/population/BisexualPopulation.cpp @@ -0,0 +1,287 @@ +#include "Population.h" +#include +#include +#include +#include +#include + +BisexualPopulation::~BisexualPopulation(){ + // +} +void BisexualPopulation::calculateFitnessAll(){ + // +} + +void BisexualPopulation::breedAll(){ + this->breedingStrategy->breed(this); +} + +void BisexualPopulation::selectionAll(){ + +} + +void BisexualPopulation::mutationAll(){ + // !!! + srand((unsigned int)time(NULL)); + + float mutProb = 1 / 1e+6f; // - + + // + std::list::iterator it; + for(it = this->females.begin(); it != this->females.end(); it++){ + // 2014 + Chromosome chrom = (*it)->genotype->getMotherGenome().getChromosome(0); + std::vector genes = chrom.getGenesAsVector(); + int wholeSeqLength = 0; + for(unsigned int i = 0; i < genes.size(); i++){ + wholeSeqLength += genes.at(i).getSequence().size(); + } + + //std::string seq = (*it)->genotype->getRawGene(0,0,0); // 2013 + int positionToMutate = rand() % (int)(1/mutProb); + if(positionToMutate < wholeSeqLength){ + std::string seq = genes.at(0).getSequence(); + int geneNum = positionToMutate / seq.size(); // 2014 + positionToMutate = positionToMutate % seq.size(); // 2014 + //Gene geneToMutate = genes.at(geneNum); + int nucl = rand() % 3; + switch(seq.c_str()[positionToMutate]){ + case 'A': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'C': + if(nucl == 0) seq.replace(positionToMutate,1,"A"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'G': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"A"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'T': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"A"); + break; + } // (END) switch(...) + (*it)->genotype->doRawMutationSequence(2, 0, geneNum, seq); + } // (END) if (mutate) + } // (END) for + + // !!! -------------------------------- +} + +std::string BisexualPopulation::getSatistics(){ + std::string ans; + return ans; +} + +void BisexualPopulation::putGeneticStatisticsToStream(std::ostream& out){ + out<<"Females\n=======\n"; + int i = 1; + for(std::list::iterator it = females.begin(); it != females.end(); it++){ + + //out<<"> Female seq mitochondrial"<<(i++)<<"\n"; + out<<(*it)->getGenotype().toSimpleFasta()<::iterator it = males.begin(); it != males.end(); it++){ + out<<"> Male seq "<<(i++)<<"\n"; + out<<(*it)->getGenotype().toSimpleFasta()<males.size() + p1->females.size(); + int sizeP2 = p2->males.size() + p2->females.size(); + + int indsP1toP2 = (int) (frac1*sizeP1)/2; + int indsP2toP1 = (int) (frac2*sizeP2)/2; + + // , + std::list malesTemp; + std::list femalesTemp; + + // P1 -> temp + // males + std::list::iterator it1 = p1->males.begin(); + std::list::iterator it2 = it1; + std::advance(it2, indsP1toP2); + malesTemp.splice(malesTemp.begin(), p1->males, it1, it2); + + // females + it1 = p1->females.begin(); + it2 = it1; + std::advance(it2, indsP1toP2); + femalesTemp.splice(femalesTemp.begin(), p1->females, it1, it2); + ///////////////////////////////////////////////////////////// + + // P2 -> P1 + // males + it1 = p2->males.begin(); + it2 = it1; + std::advance(it2, indsP2toP1); + p1->males.splice(p1->males.end(), p2->males, it1, it2); + + // females + it1 = p2->females.begin(); + it2 = it1; + std::advance(it2, indsP2toP1); + p1->females.splice(p1->females.end(), p2->females, it1, it2); + ///////////////////////////////////////////////////////////// + + // temp -> P2 + // males + p2->males.splice(p2->males.end(), malesTemp); + + // females + p2->females.splice(p2->females.end(), femalesTemp); + + ss<<"Migration:\tP1->P2\t"<P1\t"<males.size()); + int femalesFounders = (int) (frac*this->females.size()); + + // , + std::list malesTemp; + std::list femalesTemp; + + // P1 -> temp + // males + std::list::iterator it1 = this->males.begin(); + std::list::iterator it2 = it1; + std::advance(it2, malesFounders); + malesTemp.splice(malesTemp.begin(), this->males, it1, it2); + + // females + it1 = this->females.begin(); + it2 = it1; + std::advance(it2, femalesFounders); + femalesTemp.splice(femalesTemp.begin(), this->females, it1, it2); + ///////////////////////////////////////////////////////////// + + return new BisexualPopulation(malesTemp,femalesTemp, this->breedingStrategy); +} + +/////////////////////////////// +void BisexualPopulation::mutationDerevyanko2015(double pMutMtDNA, double pMutNumt){ + // !!! + srand((unsigned int)time(NULL)); + + //float mutProb = 1 / 1e+6f; // - + + // + // - + std::list::iterator it; + for(it = this->females.begin(); it != this->females.end(); it++){ + // 2015 + Chromosome chrom = (*it)->genotype->getMotherGenome().getChromosome(0); + Chromosome chromNumt = (*it)->genotype->getMotherGenome().getChromosome(1); + std::vector genes = chrom.getGenesAsVector(); + int wholeSeqLength = 0; + for(unsigned int i = 0; i < genes.size(); i++){ + wholeSeqLength += genes.at(i).getSequence().size(); + } + + int positionToMutate = rand() % (int)(1/pMutMtDNA); + if(positionToMutate < wholeSeqLength){ + std::string seq = genes.at(0).getSequence(); + int geneNum = positionToMutate / seq.size(); // 2015 + positionToMutate = positionToMutate % seq.size(); // 2015 + //Gene geneToMutate = genes.at(geneNum); + int nucl = rand() % 3; + switch(seq.c_str()[positionToMutate]){ + case 'A': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'C': + if(nucl == 0) seq.replace(positionToMutate,1,"A"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'G': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"A"); + if(nucl == 2) seq.replace(positionToMutate,1,"T"); + break; + case 'T': + if(nucl == 0) seq.replace(positionToMutate,1,"C"); + if(nucl == 1) seq.replace(positionToMutate,1,"G"); + if(nucl == 2) seq.replace(positionToMutate,1,"A"); + break; + } // (END) switch(...) + (*it)->genotype->doRawMutationSequence(2, 0, geneNum, seq); + } // (END) if (mutate) + + // + //std::vector genes = chromNumt.getGenesAsVector(); + //int wholeSeqLength = 0; + //for(unsigned int i = 0; i < genes.size(); i++){ + // wholeSeqLength += genes.at(i).getSequence().size(); + //} + + //int positionToMutate = rand() % (int)(1/pMutNumt); + //if(positionToMutate < wholeSeqLength){ + // std::string seq = genes.at(0).getSequence(); + // int geneNum = positionToMutate / seq.size(); // 2015 + // positionToMutate = positionToMutate % seq.size(); // 2015 + // //Gene geneToMutate = genes.at(geneNum); + // int nucl = rand() % 3; + // switch(seq.c_str()[positionToMutate]){ + // case 'A': + // if(nucl == 0) seq.replace(positionToMutate,1,"C"); + // if(nucl == 1) seq.replace(positionToMutate,1,"G"); + // if(nucl == 2) seq.replace(positionToMutate,1,"T"); + // break; + // case 'C': + // if(nucl == 0) seq.replace(positionToMutate,1,"A"); + // if(nucl == 1) seq.replace(positionToMutate,1,"G"); + // if(nucl == 2) seq.replace(positionToMutate,1,"T"); + // break; + // case 'G': + // if(nucl == 0) seq.replace(positionToMutate,1,"C"); + // if(nucl == 1) seq.replace(positionToMutate,1,"A"); + // if(nucl == 2) seq.replace(positionToMutate,1,"T"); + // break; + // case 'T': + // if(nucl == 0) seq.replace(positionToMutate,1,"C"); + // if(nucl == 1) seq.replace(positionToMutate,1,"G"); + // if(nucl == 2) seq.replace(positionToMutate,1,"A"); + // break; + // } // (END) switch(...) + // (*it)->genotype->doRawMutationSequence(2, 0, geneNum, seq); + //} // (END) - + + + } // (END) for + + // !!! -------------------------------- + +} \ No newline at end of file diff --git a/population/BreedingStrategies/NeutralEvolutionBreedStrat.cpp b/population/BreedingStrategies/NeutralEvolutionBreedStrat.cpp new file mode 100644 index 0000000..8365aa2 --- /dev/null +++ b/population/BreedingStrategies/NeutralEvolutionBreedStrat.cpp @@ -0,0 +1,99 @@ +#include "NeutralEvolutionBreedStrat.h" +#include "../../individual/Phenotype.h" +#include "../../processor/Settings.h" +#include +#include +#include +#include + +void NeutralEvolutionBreedingStrategy::breed(Population* _pop){ + + BisexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to BisexualPopulation\n"; + return; + } + + int numMales = pop->males.size(); + int numFemales = pop->females.size(); + int inds = numMales + numFemales; + + srand((unsigned int)time(NULL)); + //srand(0); + // + int toDie = int (inds * deathRate); + for(int i = 0; i < toDie; i++){ + int indToDie = rand() % (inds-i); + if(indToDie < numMales){ + std::list::iterator it = pop->males.begin(); + std::advance(it,indToDie); // it += indToDie; + delete *it; + pop->males.erase(it); + numMales--; + } + else{ + std::list::iterator it = pop->females.begin(); + std::advance(it,indToDie-numMales); // it += indToDie; + delete *it; + pop->females.erase(it); + numFemales--; + } + } + + + //std::cout<<"PopulationBreedingStrategy::breed: "<males.size(); + numFemales = pop->females.size(); + inds = numMales + numFemales; + + for(int i = 0; i < toBorn; i++) { + int fatherNum = rand() % numMales; + int motherNum = rand() % numFemales; + int gender = rand() % 2; + + std::list::iterator itFather = pop->males.begin(); + std::advance(itFather, fatherNum); + std::list::iterator itMother = pop->females.begin(); + std::advance(itMother, motherNum); + + Genotype* genotype; + + double prob = Settings::ProbMtDNARecomb; + if(prob > 0.0){ + int invProb = (int)(1/prob); + int recombine = rand() % invProb; + if(recombine == 0){ + // + //std::cerr<<"Recomb\n"; + ChromosomeRearrangementStrategy* recombinator = RecombinationStrategies::getInstance("D2015"); + HaploidGenotype recombGenotype = recombinator->buildRecombinantGenotype( + (*itFather)->getGenotype().getMotherGenome(), (*itMother)->getGenotype().getMotherGenome()); + genotype = new Genotype(recombGenotype, recombGenotype); + } + else{ + genotype = new Genotype( + (*itMother)->getGenotype().getMotherGenome(), (*itMother)->getGenotype().getMotherGenome()); + } + } + else{ + genotype = new Genotype( + (*itMother)->getGenotype().getMotherGenome(), (*itMother)->getGenotype().getMotherGenome()); + // + } + + + Phenotype* phenotype= new Phenotype((*itFather)->getPhenotype()); + + Individual* ind = new Individual(genotype, phenotype, 0, Individual::Gender(gender)); + // .. + if(gender == 0){ + pop->males.push_back(ind); + } + else{ + pop->females.push_back(ind); + } + } + +} \ No newline at end of file diff --git a/population/BreedingStrategies/NeutralEvolutionBreedStrat.h b/population/BreedingStrategies/NeutralEvolutionBreedStrat.h new file mode 100644 index 0000000..184ba9b --- /dev/null +++ b/population/BreedingStrategies/NeutralEvolutionBreedStrat.h @@ -0,0 +1,12 @@ +#pragma once +#include "PopulationBreedingStrategy.h" + +class NeutralEvolutionBreedingStrategy : public PopulationBreedingStrategy { + float birthRate; + float deathRate; +public: + void setBirthRate(float b) {birthRate = b;} + void setDeathRate(float d) {deathRate = d;} + + virtual void breed(Population* pop); +}; diff --git a/population/BreedingStrategies/PopulationBreedingStrategy.cpp b/population/BreedingStrategies/PopulationBreedingStrategy.cpp new file mode 100644 index 0000000..996f544 --- /dev/null +++ b/population/BreedingStrategies/PopulationBreedingStrategy.cpp @@ -0,0 +1,81 @@ +#include "PopulationBreedingStrategy.h" +#include "VerhulstBreedingStrategy.h" +#include "NeutralEvolutionBreedStrat.h" +#include "../../individual/genome/strategies/InOutBreeding/InOutBreedingPopulationBreedingStrategy.h" +#include "../../individual/genome/strategies/KolchShindyal/KolchShindyalBreedingStrategy.h" + +#include "../../processor/Settings.h" +//#include +#include +#include +#include +#include + +void PopulationBreedingStrategy::breed(Population* _pop){ + float deathRate = Settings::NaturalDeathRate;//0.01f; // + + // + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + std::sort(pop->individs.begin(), pop->individs.end(), compareOnFitness); + int inds = pop->individs.size(); + + // , SelectionAll + // - + // + int toDie = int (inds * deathRate); + std::vector::iterator start = pop->individs.begin(); + std::vector::iterator end = pop->individs.begin()+toDie; + //advance(end,toDie); + for(std::vector::iterator it = start; it != end; it++){ + delete *it; + } + pop->individs.erase(start, end); + + std::cout<<"PopulationBreedingStrategy::breed: "<individs.size(); + srand((unsigned int)time(NULL)); + for(int i = 0; i < toBorn; i++) { + int male = rand() % inds; + int female = rand() % inds; + female = (female != male ? female : (female + 1) % inds); + + Individual* ind = new Individual(*(pop->individs.at(male)), *(pop->individs.at(female))); + // .. + pop->individs.push_back(ind); + } + +} + +std::map PopulationBreedingStrategy::_strategies; + +PopulationBreedingStrategy* PopulationBreedingStrategy::getInstance(std::string _name){ + if(_strategies.find(_name) == _strategies.end()){ + PopulationBreedingStrategy* s = 0; + if(_name.compare("Verhulst") == 0){ + s = new VerhulstBreedingStrategy(); + } + else if(_name.compare("inoutbreeding") == 0){ + s = new InOutBreedingPopulationBreedingStrategy(); + } + else if(_name.compare("kolchan_shindyal_breeding") == 0){ + s = new KolchShindyalBreedingStrategy(); + } + else if(_name.compare("neutral") == 0){ + s = new NeutralEvolutionBreedingStrategy(); + } + else { + s = new PopulationBreedingStrategy(); + } + _strategies[_name] = s; + } + + return _strategies[_name]; +} diff --git a/population/BreedingStrategies/PopulationBreedingStrategy.h b/population/BreedingStrategies/PopulationBreedingStrategy.h new file mode 100644 index 0000000..e2e715e --- /dev/null +++ b/population/BreedingStrategies/PopulationBreedingStrategy.h @@ -0,0 +1,12 @@ +#pragma once +#include "../Population.h" +#include + +class Population; + +class PopulationBreedingStrategy { + static std::map _strategies; +public: + virtual void breed(Population* pop); + static PopulationBreedingStrategy* getInstance(std::string name); +}; diff --git a/population/BreedingStrategies/VerhulstBreedingStrategy.cpp b/population/BreedingStrategies/VerhulstBreedingStrategy.cpp new file mode 100644 index 0000000..cddeff2 --- /dev/null +++ b/population/BreedingStrategies/VerhulstBreedingStrategy.cpp @@ -0,0 +1,52 @@ +#include "VerhulstBreedingStrategy.h" +#include "../../processor/Settings.h" +#include +#include +#include +#include + +void VerhulstBreedingStrategy::breed(Population *_pop) { + // + // rX * (1 - X/K) = rX - (r/K)X^2 + + double birthRate = Settings::BirthRate;// 0.03; + double r = 1 + birthRate; + double K = _pop->region->getCapacity(); + + AsexualPopulation* pop = dynamic_cast(_pop); + if(pop == NULL){ + std::cerr<<"Wrong dynamic cast to AsexualPopulation\n"; + return; + } + + long int inds = pop->individs.size(); + long int toDie = long int (inds*inds * r/K + 0.5); // 0.5 - - + long int toBorn = long int (inds*birthRate + 0.5); // + + // , + // - , + + // + std::sort(pop->individs.begin(), pop->individs.end(), compareOnFitness); + std::vector::iterator start = pop->individs.begin(); + std::vector::iterator end = pop->individs.begin()+toDie; + for(std::vector::iterator it = start; it != end; it++){ + delete *it; + } + pop->individs.erase(start, end); + std::cout<<"VerhulstBreedingStrategy::breed: "<individs.size(); + srand((unsigned int)time(NULL)); + for(long int i = 0; i < toBorn; i++) { + int male = rand() % inds; + int female = rand() % inds; + female = (female != male ? female : (female + 1) % inds); + + Individual* ind = new Individual(*(pop->individs.at(male)), *(pop->individs.at(female))); + // .. + pop->individs.push_back(ind); + } + +} diff --git a/population/BreedingStrategies/VerhulstBreedingStrategy.h b/population/BreedingStrategies/VerhulstBreedingStrategy.h new file mode 100644 index 0000000..40c70d0 --- /dev/null +++ b/population/BreedingStrategies/VerhulstBreedingStrategy.h @@ -0,0 +1,7 @@ +#pragma once +#include "PopulationBreedingStrategy.h" + +class VerhulstBreedingStrategy : public PopulationBreedingStrategy { +public: + virtual void breed(Population* pop); +}; \ No newline at end of file diff --git a/population/Population.cpp b/population/Population.cpp new file mode 100644 index 0000000..ac240cc --- /dev/null +++ b/population/Population.cpp @@ -0,0 +1,159 @@ +#include "Population.h" +#include "../individual/Phenotype.h" +#include +#include +#include + +AsexualPopulation::~AsexualPopulation(){ + // TODO : +} +AsexualPopulation::AsexualPopulation(int size, PopulationBreedingStrategy* _strategy) : + Population(_strategy), individs(size/*, 0*/) +{ + + srand(0); + int RANGE = 1000; + float gValue; + + // + for(int i = 0; i < size; i++){ + // + std::vector fGenome; + std::vector mGenome; + + // + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneF1(Gene::Continious, "X", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneF2(Gene::Continious, "Y", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneF3(Gene::Continious, "Z", gValue); + + Chromosome chromF("Chrom 1"); // + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + + + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneM1(Gene::Continious, "X", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneM2(Gene::Continious, "Y", gValue); + gValue = (rand()%RANGE + 1) / (float) RANGE; + Gene geneM3(Gene::Continious, "Z", gValue); + + Chromosome chromM("Chrom 1"); // + chromM.insertGeneToEnd(geneM1); + chromM.insertGeneToEnd(geneM2); + chromM.insertGeneToEnd(geneM3); + + fGenome.push_back(chromF); + mGenome.push_back(chromM); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "X", 0.0f); + Trait trait2(Trait::Continious, "Y", 0.0f); + Trait trait3(Trait::Continious, "Z", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + phenotype->addTrait(trait3); + // (END) + + // + InnerSubstratesPool* subPool = 0; + // (END) + + this->individs.at(i) = new Individual(genotype, phenotype, subPool, Individual::hermaphrodite, 0); + } // (END) for(int i = 0; i < size; i++) +} + +void AsexualPopulation::calculateFitnessAll(){ + for(unsigned int i = 0; i < this->individs.size(); i++){ + this->individs.at(i)->calculateFitness(); + } +} + + + +void AsexualPopulation::breedAll(){ + this->breedingStrategy->breed(this); +} + +void AsexualPopulation::selectionAll(){ + // + // breedAll +} + +void AsexualPopulation::mutationAll(){ + +} + +void AsexualPopulation::setRegion(Region *_region){ + this->region = _region; + for(unsigned int i = 0; i < this->individs.size(); i++){ + this->individs.at(i)->setRegion(_region); + } +} + +std::string AsexualPopulation::getSatistics(){ + std::stringstream ans; + long int pSize = this->individs.size(); + ans<<"Population size\t"<individs.at(i)->getFitness(); + best = fitness > best ? fitness : best; + worst= fitness < worst? fitness : worst; + totalFitness += fitness; + } + ans<<"Average fitness\t"<<(totalFitness/pSize); + ans<<"\tBest\t"<<(best); + ans<<"\tWorst\t"<<(worst); + return ans.str(); +} + +void AsexualPopulation::putGeneticStatisticsToStream(std::ostream &out){ + + out<<"Population size:\t"<individs.size()<individs.begin(),this->individs.end()); + + for(unsigned int i = 0; i < this->individs.size(); i++){ + out<<(i+1)<<"\t"; + out<<"Fitness:\t"<<(this->individs.at(i)->getFitness()); + out<<"\t"; + out<<"Genotype:\t"<<(this->individs.at(i)->getGenotype()); + out<<"\t"; + out<<"Phenotype:\t"<<(this->individs.at(i)->getPhenotype()); + out<individs.size(); i++){ + out<<(i+1)<<"\t"<<(this->individs.at(i)->getFitness()); + out<<"\t"<<(this->individs.at(i)->getGenotype().toSimpleString()); + //out<<"\t"; + out<<(this->individs.at(i)->getPhenotype().toSimpleString()); + out<individs.size(); i++){ + out<<(i+1)<<"\t"<<(this->individs.at(i)->getFitness()); + out<<"\t"<<(this->individs.at(i)->getGenotype().toMaxModuleAB()); + //out<<"\t"; + //out<<(this->individs.at(i)->getPhenotype().toSimpleString()); + out< +#include +#include "../individual/AbstractIndividual.h" +#include "BreedingStrategies/PopulationBreedingStrategy.h" +#include "../environment/AbstractEnvironment.h" + +class PopulationBreedingStrategy; + +class Population { + friend class PopulationBreedingStrategy; + friend class VerhulstBreedingStrategy; +protected: + PopulationBreedingStrategy* breedingStrategy; + Region* region; +public: + Population(PopulationBreedingStrategy* _strategy) : breedingStrategy(_strategy){} + virtual ~Population() {}; + virtual void setBreedingStrategy(PopulationBreedingStrategy* _strategy) { breedingStrategy = _strategy;} + virtual void setRegion(Region* _region) { region = _region;} + virtual void calculateFitnessAll() = 0; + virtual void breedAll() = 0; + virtual void selectionAll() = 0; + virtual void mutationAll() = 0; + virtual std::string getSatistics() = 0; + virtual void putGeneticStatisticsToStream(std::ostream& out) = 0; + virtual void putGeneticSimpleStatisticsToStream(std::ostream& out) = 0; + virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out) = 0; +}; + +class AsexualPopulation : public Population { + friend class PopulationBreedingStrategy; + friend class VerhulstBreedingStrategy; + friend class InOutBreedingPopulationBreedingStrategy; + friend class KolchShindyalBreedingStrategy; +protected: + std::vector individs; + +public: + AsexualPopulation(const std::vector& _inds, PopulationBreedingStrategy* _strategy = 0) : Population(_strategy), individs(_inds) {}; + AsexualPopulation(int size, PopulationBreedingStrategy* _strategy = 0); + virtual ~AsexualPopulation(); + + virtual void setRegion(Region* _region); + virtual void calculateFitnessAll(); + virtual void breedAll(); + virtual void selectionAll(); + virtual void mutationAll(); + virtual std::string getSatistics(); + virtual void putGeneticStatisticsToStream(std::ostream& out); + virtual void putGeneticSimpleStatisticsToStream(std::ostream& out); + virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out); +}; + +////////////////////////////////////////////// +////////////////////////////////////////////// +////////////////////////////////////////////// +class BisexualPopulation : public Population { + friend class NeutralEvolutionBreedingStrategy; +protected: + std::list males; + std::list females; +public: + BisexualPopulation(const std::list& _males, + const std::list& _females, PopulationBreedingStrategy* _strategy = 0) : + Population(_strategy), males(_males), females(_females) {} + + virtual ~BisexualPopulation(); + + //virtual void setRegion(Region* _region); + virtual void calculateFitnessAll(); + virtual void breedAll(); + virtual void selectionAll(); + virtual void mutationAll(); + virtual std::string getSatistics(); + virtual void putGeneticStatisticsToStream(std::ostream& out); + virtual void putGeneticSimpleStatisticsToStream(std::ostream& out); + virtual void putGeneticMaxModuleStatisticsToStream(std::ostream& out); + + // - + static std::string mutualMigration(BisexualPopulation* p1, BisexualPopulation* p2, float frac1, float frac2 = -1.f); + BisexualPopulation* createSubpopulation(float frac); + void mutationDerevyanko2015(double pMutMtDNA, double pMutNumt); +}; diff --git a/processor/KolchShindyalov.cpp b/processor/KolchShindyalov.cpp new file mode 100644 index 0000000..df389e4 --- /dev/null +++ b/processor/KolchShindyalov.cpp @@ -0,0 +1,125 @@ +#include "Settings.h" +#include "../population/Population.h" +#include "../individual/Phenotype.h" +#include "../individual/genome/strategies/GenotypeToPhenotypeStrategy.h" +#include +#include +#include +#include "KolchShindyalov.h" + +void KolchShindyalov::test01(){ + std::ofstream statFile("statFile.txt"); + std::string stat; + + // + int maxGenerations = Settings::Iterations; + long initPopSize = Settings::InitPopSize; + float ratioBetweenPops = Settings::InitRatioBetweenPops; + long int maxIndivids = Settings::KMaxParameter; + + Position3D position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + srand(0); + int RANGE = 1000; + int PRECISION = 10; + float gValue; + + std::vector individs; + + // + for(int i = 0; i < initPopSize; i++){ + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + //float gValue + // + RANGE = 10; + gValue = -(float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "C1", gValue); + gValue = -(float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "C2", gValue); + + PRECISION=1; + RANGE = 2; + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF3(Gene::Continious, "C3", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF4(Gene::Continious, "C4", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF5(Gene::Continious, "C5", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF6(Gene::Continious, "E", gValue); + gValue = rand()%2; + Gene geneF7(Gene::Discrete,"Feedback", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + chromF.insertGeneToEnd(geneF7); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "X", 10.0f); + Trait trait2(Trait::Continious, "Xopt", 10.0f); + Trait trait3(Trait::Continious, "sigmaX", 3.0f); + + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + phenotype->addTrait(trait3); + // (END) + + Individual* newInd = new Individual(genotype, phenotype, 0, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("kolchan_shindyal_gen_to_phen")); + newInd->setPhenToFitnessStrategy(PhenotypeToFitnessStrategy::getInstance("kolch_shindyal_phen_to_fit")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + AsexualPopulation population(individs); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance("kolchan_shindyal_breeding")); + population.setRegion(®ion); + // (END) + + // + for(int i = 0; i < maxGenerations; i++){ + // + population.breedAll(); + //--- --- + stat = population.getSatistics(); + statFile< +#include +#include + +void Processor::test(/*int initPSize, int steps*/){ + std::ofstream statFile("statFile.txt"); + std::string stat; + + // + int maxGenerations = Settings::Iterations; + int initPopSize = Settings::InitPopSize; + + AsexualPopulation population(initPopSize); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance(Settings::BreedingStrategy)); + + // + for(int i = 0; i < maxGenerations; i++){ + // ( ) + + // + population.calculateFitnessAll(); + + // + population.breedAll(); + + // + population.mutationAll(); + + // ( ) + + // ( ..) + population.selectionAll(); + + //--- --- + stat = population.getSatistics(); + statFile< position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + AsexualPopulation population(initPopSize); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance(Settings::BreedingStrategy)); + population.setRegion(®ion); + + // + for(int i = 0; i < maxGenerations; i++){ + // ( ) + + // + population.calculateFitnessAll(); + + // + population.breedAll(); + + // + population.mutationAll(); + + // ( ) + + // ( ..) + population.selectionAll(); + + //--- --- + stat = population.getSatistics(); + statFile< position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + + srand(0); + int RANGE = 1000; + int PRECISION = 10; + float gValue; + + std::vector individs; + // + for(int i = 0; i < maxIndivids/2; i++){ + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + // + RANGE = 10; + gValue = (float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "A coadaptive", gValue); + gValue = (float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "B coadaptive", gValue); + + RANGE = 2; + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF3(Gene::Continious, "C disease", gValue); + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF4(Gene::Continious, "D disease", gValue); + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF5(Gene::Continious, "E disease", gValue); + gValue = (rand()%(RANGE + 1)) / (float) RANGE; + Gene geneF6(Gene::Continious, "F disease", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "coadaptive", 0.0f); + Trait trait2(Trait::Continious, "disease", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + // (END) + + // + InnerSubstratesPool* subPool = 0; + // (END) + + Individual* newInd = new Individual(genotype, phenotype, subPool, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("inoutbreeding")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + AsexualPopulation population(individs); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance("inoutbreeding")); + population.setRegion(®ion); + // (END) + + // + for(int i = 0; i < maxGenerations; i++){ + // + population.breedAll(); + //--- --- + stat = population.getSatistics(); + statFile< position(0, 0, 0, 1000, 1000, 1000); + Region region(position, maxIndivids); + + srand(0); + int RANGE = 1000; + int PRECISION = 10; + float gValue; + + std::vector individs; + // - 1 + for(int i = 0; i < initPopSize*ratioBetweenPops; i++){ + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + // + RANGE = 10; + gValue = (float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "A coadaptive", gValue); + gValue = (float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "B coadaptive", gValue); + + RANGE = 2; + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF3(Gene::Continious, "C disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF4(Gene::Continious, "D disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF5(Gene::Continious, "E disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF6(Gene::Continious, "F disease", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "coadaptive", 0.0f); + Trait trait2(Trait::Continious, "disease", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + // (END) + + Individual* newInd = new Individual(genotype, phenotype, 0, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("inoutbreeding")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + // - 2 + for(int i = 0; i < initPopSize; i++){ + // + std::vector fGenome; + std::vector mGenome; + + std::vector chroms; + for(int j = 0; j < 2; j++){ + // + RANGE = 10; + gValue = -(float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF1(Gene::Continious, "A coadaptive", gValue); + gValue = -(float)(rand()%(RANGE*PRECISION+1))/PRECISION; + Gene geneF2(Gene::Continious, "B coadaptive", gValue); + + PRECISION=1; + RANGE = 2; + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF3(Gene::Continious, "C disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF4(Gene::Continious, "D disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF5(Gene::Continious, "E disease", gValue); + gValue = (rand()%(RANGE*PRECISION + 1)) / (float) RANGE / PRECISION; + Gene geneF6(Gene::Continious, "F disease", gValue); + + Chromosome chromF("Chrom 1"); // / + chromF.insertGeneToEnd(geneF1); + chromF.insertGeneToEnd(geneF2); + chromF.insertGeneToEnd(geneF3); + chromF.insertGeneToEnd(geneF4); + chromF.insertGeneToEnd(geneF5); + chromF.insertGeneToEnd(geneF6); + + chroms.push_back(chromF); + } // (END) for(int i = 0; i < 2; i++) + + fGenome.push_back(chroms.at(0)); + mGenome.push_back(chroms.at(1)); + Genotype* genotype = new Genotype(fGenome, mGenome); + // (END) + + // + Trait trait1(Trait::Continious, "coadaptive", 0.0f); + Trait trait2(Trait::Continious, "disease", 0.0f); + Phenotype* phenotype = new Phenotype(trait1); + phenotype->addTrait(trait2); + // (END) + + Individual* newInd = new Individual(genotype, phenotype, 0, Individual::hermaphrodite, 0); + newInd->setGenToPhenStrategy(GenotypeToPhenotypeStrategies::getInstance("inoutbreeding")); + individs.push_back(newInd); + } // (END) for(int i = 0; i < size; i++) + + AsexualPopulation population(individs); + population.setBreedingStrategy(PopulationBreedingStrategy::getInstance("inoutbreeding")); + population.setRegion(®ion); + // (END) + + // + for(int i = 0; i < maxGenerations; i++){ + // + population.breedAll(); + //--- --- + stat = population.getSatistics(); + statFile< +#include +#include +#include +#include +#include + +#ifdef LINUX +#define sscanf_s sscanf +#endif + +// Default parameters +bool Settings::WRITE_FULL_STATISTICS_TO_FILE = false; + +int Settings::Iterations = 10; +long int Settings::InitPopSize = 10; +float Settings::InitRatioBetweenPops = 1.f; + +double Settings::BirthRate = 0.01; +double Settings::NaturalDeathRate = 0.01; + +long int Settings::KMaxParameter = 10000; + +int Settings::OffspringsMean = 3; +float Settings::CoadaptiveThreshold = 0; +float Settings::CoadaptiveMinimumP = 0.2f; +float Settings::CoadaptiveMaximumTrait = 15.f; + +float Settings::DiseaseThreshold = 1; +std::string Settings::CoadaptiveGenesInteraction = "onechromosome"; +std::string Settings::DiseaseGenesInteraction = "add"; + + +std::string Settings::BreedingStrategy = "default"; +std::string Settings::GenToPhenStrategy = "default"; +std::string Settings::PhenToFitStrategy = "default"; +std::string Settings::RecombinationStrategy = "default"; + +double Settings::ProbMtDNARecomb = 0.0; +int Settings::PopulationHomoInitSize = 1000; +int Settings::PopulationAncientInitSize = 1000; +double Settings::migrationPartHomoToAncient = 0.1; +double Settings::migrationPartAncientToHomo = 0.1; +int Settings::generationsPerMigration = 100; +int Settings::locusLength = 60; +double Settings::percentDiffLoci = 0.1; +int Settings::numLoci = 50; +// (END) Default parameters + +void Settings::initScript(std::string fileName){ + std::vector script; + std::ifstream file(fileName.c_str()); + std::string str; + + while(getline(file,str)){ + if(str.length() > 2) + script.push_back(str); + } + file.close(); + + // process Script + unsigned int curLine; + for(curLine = 0; curLine < script.size(); curLine++){ + if(script.at(curLine).at(0) == '/' || script.at(curLine).at(0) == '#') + continue; + + std::vector tokensVector; // Search for tokens + boost::split(tokensVector, script.at(curLine), boost::is_any_of("=") ); + + std::string instr = tokensVector.at(0); + boost::to_lower(instr); + boost::trim(instr); + + // + if(instr == "fullstat"){ + int flag = 0; + sscanf_s(tokensVector.at(1).c_str(),"%d", &flag); + if(flag != 0) + Settings::WRITE_FULL_STATISTICS_TO_FILE = true; + } + else if(instr == "generations" || instr == "iterations" ){ + int iter = Settings::Iterations; + sscanf_s(tokensVector.at(1).c_str(),"%d", &iter); + Settings::Iterations = iter; + } + else if(instr == "initpopsize" || instr == "init_pop_size" || instr == "popsize" ){ + long int size = Settings::InitPopSize; + sscanf_s(tokensVector.at(1).c_str(),"%ld", &size); + Settings::InitPopSize = size; + } + else if(instr == "initratio" || instr == "init_ratio" || instr == "init_ratio_between_pop_size" ){ + float size = Settings::InitRatioBetweenPops; + sscanf_s(tokensVector.at(1).c_str(),"%f", &size); + Settings::InitRatioBetweenPops = size; + } + else if(instr == "birth" || instr == "birthrate" || instr == "birth_rate" ){ + double rate = Settings::BirthRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::BirthRate = rate; + } + else if(instr == "death" || instr == "deathrate" || instr == "death_rate" ){ + double rate = Settings::NaturalDeathRate; + sscanf_s(tokensVector.at(1).c_str(),"%lg", &rate); + Settings::NaturalDeathRate = rate; + } + else if(instr == "kmax"){ + long int kMax = Settings::KMaxParameter; + sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + Settings::KMaxParameter = kMax; + } + else if(instr == "offsprings" || instr == "offsprings_mean" ){ + int offsprings = Settings::OffspringsMean; + sscanf_s(tokensVector.at(1).c_str(),"%d", &offsprings); + Settings::OffspringsMean = offsprings; + } + else if(instr == "coadaptivet" || instr == "coadaptive_threshold" ){ + float coadaptive = Settings::CoadaptiveThreshold; + sscanf_s(tokensVector.at(1).c_str(),"%f", &coadaptive); + Settings::CoadaptiveThreshold = coadaptive; + } + else if(instr == "coadaptivemax" || instr == "coadaptive_maximum_trait" ){ + float coadaptive = Settings::CoadaptiveMaximumTrait; + sscanf_s(tokensVector.at(1).c_str(),"%f", &coadaptive); + Settings::CoadaptiveMaximumTrait = coadaptive; + } + else if(instr == "coadaptivemin" || instr == "coadaptive_minimum_p" ){ + float coadaptive = Settings::CoadaptiveMinimumP; + sscanf_s(tokensVector.at(1).c_str(),"%f", &coadaptive); + Settings::CoadaptiveMinimumP = coadaptive; + } + else if(instr == "diseaset" || instr == "disease_threshold" ){ + float disease = Settings::DiseaseThreshold; + sscanf_s(tokensVector.at(1).c_str(),"%f", &disease); + Settings::DiseaseThreshold = disease; + } + else if(instr == "coadaptivegenesinteract" || instr == "cgi"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string cgi = tokensVector.at(1); + boost::to_lower(cgi); + boost::trim(cgi); + Settings::CoadaptiveGenesInteraction = cgi; + } + else if(instr == "diseasegenesinteract" || instr == "dgi"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string dgi = tokensVector.at(1); + boost::to_lower(dgi); + boost::trim(dgi); + Settings::DiseaseGenesInteraction = dgi; + } + //***************************** + else if(instr == "breedings"){ + //long int kMax = Settings::KMaxParameter; + //sscanf_s(tokensVector.at(1).c_str(),"%ld", &kMax); + std::string strategy = tokensVector.at(1); + boost::to_lower(strategy); + boost::trim(strategy); + Settings::BreedingStrategy = strategy; + } + } // (END) for(curLine = 0; curLine < script.size(); curLine++) +} diff --git a/processor/Settings.h b/processor/Settings.h new file mode 100644 index 0000000..3a95a2c --- /dev/null +++ b/processor/Settings.h @@ -0,0 +1,45 @@ +#pragma once +#include + +class Settings { +public: + static bool WRITE_FULL_STATISTICS_TO_FILE; + + static int Iterations; + static long int InitPopSize; + static float InitRatioBetweenPops; + + // Common breeding strategies parameters + static double BirthRate; + static double NaturalDeathRate; + + // Verhulst breeding strategy default parameters + static long int KMaxParameter; // r*X*(1 - X/KMax) + + // Inbreeding/Outbreeding model parameters + static int OffspringsMean; + static float CoadaptiveThreshold; + static float CoadaptiveMinimumP; + static float CoadaptiveMaximumTrait; + static float DiseaseThreshold; + static std::string CoadaptiveGenesInteraction; + static std::string DiseaseGenesInteraction; + + static std::string BreedingStrategy; + static std::string GenToPhenStrategy; + static std::string PhenToFitStrategy; + static std::string RecombinationStrategy; + + static double ProbMtDNARecomb; + static int PopulationHomoInitSize; + static int PopulationAncientInitSize; + static double migrationPartHomoToAncient; + static double migrationPartAncientToHomo; + static int generationsPerMigration; + static int locusLength; + static double percentDiffLoci; + static int numLoci; + +public: + static void initScript(std::string fileName); +};