//---------------------------------------------------------------------------
#include <fstream>
#include <vector>
//---------------------------------------------------------------------------
#include <boost/foreach.hpp>
#include <boost/numeric/conversion/cast.hpp>
#include <boost/shared_ptr.hpp>
//---------------------------------------------------------------------------
#include <QDesktopWidget>
//---------------------------------------------------------------------------
#include "binarynewickvector.h"
#include "dialogrampaltest.h"
#include "newick.h"
#include "ui_dialogrampaltest.h"
#include "test.h"
//---------------------------------------------------------------------------
DialogRampalTest::DialogRampalTest(QWidget *parent) :
QDialog(parent,Qt::Window),
ui(new Ui::DialogRampalTest),
m_valid_input(false)
{
ui->setupUi(this);
QObject::connect(ui->button_start,SIGNAL(clicked()),
this,SLOT(onStart()));
QObject::connect(ui->button_benchmark,SIGNAL(clicked()),
this,SLOT(onBenchmark()));
QObject::connect(ui->edit_newick,SIGNAL(textChanged(QString)),
this,SLOT(onAnyChange()));
QObject::connect(ui->edit_theta,SIGNAL(textChanged(QString)),
this,SLOT(onAnyChange()));
//Set table header
{
QTableWidgetItem * const i
= new QTableWidgetItem("Test name");
ui->table->setHorizontalHeaderItem(0,i);
}
{
QTableWidgetItem * const i
= new QTableWidgetItem("Probability");
ui->table->setHorizontalHeaderItem(1,i);
}
{
QTableWidgetItem * const i
= new QTableWidgetItem("Time (sec)");
ui->table->setHorizontalHeaderItem(2,i);
}
{
QTableWidgetItem * const i
= new QTableWidgetItem("Newick");
ui->table->setHorizontalHeaderItem(3,i);
}
{
QTableWidgetItem * const i
= new QTableWidgetItem("Complexity");
ui->table->setHorizontalHeaderItem(4,i);
}
//Put the dialog in the screen center
const QRect screen = QApplication::desktop()->screenGeometry();
this->move( screen.center() - this->rect().center() );
onAnyChange();
}
//---------------------------------------------------------------------------
DialogRampalTest::~DialogRampalTest()
{
delete ui;
}
//---------------------------------------------------------------------------
void DialogRampalTest::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
//---------------------------------------------------------------------------
void DialogRampalTest::resizeEvent(QResizeEvent *)
{
const int n_cols = ui->table->columnCount();
//-18 because of header column
const int width = (ui->table->width() - 18) / n_cols;
for (int i=0; i!=n_cols; ++i)
{
ui->table->setColumnWidth(i,width);
}
}
//---------------------------------------------------------------------------
void DialogRampalTest::onAnyChange()
{
try
{
const std::string s = ui->edit_newick->text().toStdString();
BinaryNewickVector n(s);
}
catch (std::exception&)
{
ui->label_input_feedback->setText("Invalid Newick");
m_valid_input = false;
return;
}
try
{
const std::string s = ui->edit_theta->text().toStdString();
const double t = boost::lexical_cast<double>(s);
if (t <= 0.0)
{
ui->label_input_feedback->setText("Invalid theta");
return;
}
}
catch(boost::bad_lexical_cast&)
{
ui->label_input_feedback->setText("Invalid theta");
m_valid_input = false;
return;
}
//Calculate complexity
{
const std::string s = ui->edit_newick->text().toStdString();
const BinaryNewickVector n(s);
const BigInteger complexity = Newick::CalcComplexity(n.Get());
const std::string c_str = bigIntegerToString(complexity);
ui->label_input_feedback->setText(
QString("Newick complexity: ")
+ QString(c_str.c_str()) );
}
m_valid_input = true;
}
//---------------------------------------------------------------------------
void DialogRampalTest::onBenchmark()
{
//Create fresh file
std::ofstream file("test_output.txt");
file.close();
//Obtain the Newicks to be tested
assert(ui->box_benchmark_type->count()==6);
typedef const std::vector<std::string> (*function_pointer)();
function_pointer newick_getter = 0;
switch(ui->box_benchmark_type->currentIndex())
{
case 0: newick_getter = GetLightNewicks; break;
case 1: newick_getter = GetMediumNewicks; break;
case 2: newick_getter = GetHardNewicks; break;
case 3: newick_getter = GetManyNewicks; break;
case 4: newick_getter = GetLightBiologicalNewicks; break;
case 5: newick_getter = GetHardBiologicalNewicks; break;
default: assert(!"Should not get here");
}
const std::vector<std::string> newicks = newick_getter();
const double theta = 10.0;
const int flags = GetFlags();
m_data.resize(0);
BOOST_FOREACH(const std::string& newick, newicks)
{
//Test each Newick
//Create tests
const std::vector<boost::shared_ptr<Test> > tests
= Test::CreateTests(newick,theta,flags);
BOOST_FOREACH(const boost::shared_ptr<Test> t,tests)
{
t->Execute();
Row d;
d.m_complexity = t->GetComplexity();
d.m_newick = t->GetNewick();
d.m_probability = t->GetProbability();
d.m_test_name = t->GetTestName();
d.m_time = t->GetTime();
//Write to file
file.open("test_output.txt",std::ios::app);
file
<< t->GetTestName() << '\t'
<< t->GetProbability() << '\t'
<< t->GetTime() << '\t'
<< t->GetNewick() << '\t'
<< theta << '\t'
<< t->GetComplexity() << '\n';
file.close();
m_data.push_back(d);
this->ShowData();
QApplication::processEvents();
//this->update();
}
}
//this->ShowData();
}
//---------------------------------------------------------------------------
void DialogRampalTest::onStart()
{
if (!m_valid_input) return;
std::ofstream file("test_output.txt");
const std::string s = ui->edit_newick->text().toStdString();
const double theta
= boost::lexical_cast<double>(
(ui->edit_theta->text().toStdString()));
//Create all tests
const std::vector<boost::shared_ptr<Test> > tests
= Test::CreateTests(s,theta,GetFlags());
//Execute all tests
m_data.resize(0);
BOOST_FOREACH(const boost::shared_ptr<Test> t,tests)
{
t->Execute();
Row d;
d.m_complexity = t->GetComplexity();
d.m_newick = t->GetNewick();
d.m_probability = t->GetProbability();
d.m_test_name = t->GetTestName();
d.m_time = t->GetTime();
file
<< t->GetTestName() << '\t'
<< t->GetProbability() << '\t'
<< t->GetTime() << '\t'
<< t->GetNewick() << '\t'
<< theta << '\t'
<< t->GetComplexity() << '\n';
m_data.push_back(d);
}
this->ShowData();
}
//---------------------------------------------------------------------------
int DialogRampalTest::GetFlags() const
{
int flags = 0;
if (ui->box_ravindran->isChecked() ) flags+= 1;
if (ui->box_endversion2->isChecked() ) flags+= 2;
if (ui->box_twodigitnewick_debug->isChecked() ) flags+= 4;
if (ui->box_twodigitnewick_release->isChecked()) flags+= 8;
return flags;
}
//---------------------------------------------------------------------------
int DialogRampalTest::GetNumTestsChecked() const
{
int cnt = 0;
if (ui->box_ravindran->isChecked() ) ++cnt;
if (ui->box_endversion2->isChecked() ) ++cnt;
if (ui->box_twodigitnewick_debug->isChecked() ) ++cnt;
if (ui->box_twodigitnewick_release->isChecked()) ++cnt;
return cnt;
}
//---------------------------------------------------------------------------
void DialogRampalTest::ShowData()
{
ui->table->clearContents();
ui->table->setRowCount(
boost::numeric_cast<int>(m_data.size()));
int row = 0;
BOOST_FOREACH(const Row& d, m_data)
{
{
QTableWidgetItem * const i = new QTableWidgetItem(
QString(d.m_test_name.c_str()));
ui->table->setItem(row, 0, i);
}
{
QTableWidgetItem * const i = new QTableWidgetItem(
QString(boost::lexical_cast<std::string>(
d.m_probability).c_str()));
ui->table->setItem(row, 1, i);
}
{
QTableWidgetItem * const i = new QTableWidgetItem(
QString(boost::lexical_cast<std::string>(
d.m_time).c_str()));
ui->table->setItem(row, 2, i);
}
{
QTableWidgetItem * const i = new QTableWidgetItem(
QString(boost::lexical_cast<std::string>(
d.m_newick).c_str()));
ui->table->setItem(row, 3, i);
}
{
QTableWidgetItem * const i = new QTableWidgetItem(
QString(boost::lexical_cast<std::string>(
d.m_complexity).c_str()));
ui->table->setItem(row, 4, i);
}
++row;
}
}
//---------------------------------------------------------------------------
const std::vector<std::string> GetHardBiologicalNewicks()
{
std::vector<std::string> v;
v.push_back("((1,(1,(((((1,(1,((1,1),(3,1)))),1),((((1,((1,((1,1),(45,6))),(((1,1),(4,1)),2))),1),2),1)),1),2))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(2,2))),1),((((1,((1,(1,(35,7))),((4,4),1))),1),4),1)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,((((((2,1),(1,((1,1),1))),1),((((1,((1,(5,(36,10))),((2,2),1))),1),(1,5)),1)),1),1))),(1,1))");
v.push_back("((1,(1,((((((1,1),(1,(2,(3,1)))),1),((((1,((1,(1,(36,10))),((5,6),1))),1),2),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(2,3))),1),((((1,((1,((1,1),(34,10))),((4,(4,1)),3))),1),(1,1)),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((((1,1),1),(1,(2,1))),1),((((1,((1,(3,(47,14))),((6,4),(1,1)))),1),(1,1)),1)),1),2))),(1,1))");
v.push_back("((1,(1,((((((1,1),(1,(3,((1,1),1)))),1),((((1,((1,(2,(45,8))),((5,2),1))),1),(2,5)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,((1,1),((1,1),1)))),1),((((1,((1,((2,1),(35,10))),((4,(5,1)),2))),1),8),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,(1,1)))),1),((((1,((1,(2,(66,13))),((8,(5,1)),1))),1),(1,5)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((2,(1,(2,((1,1),1)))),1),((((1,((1,(2,(57,8))),((4,(1,2)),2))),1),6),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(2,3))),1),((((1,((1,(3,(41,10))),((4,(1,1)),(1,2)))),1),5),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,((1,1),2))),1),((((1,((1,(1,(44,12))),((3,5),1))),1),(3,9)),(1,1))),1),1))),1)");
v.push_back("((1,(1,(((((1,(2,(1,(4,1)))),1),((((1,((1,((1,1),(61,8))),((3,(4,1)),2))),1),(1,5)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(2,((1,1),3)))),1),((((1,((1,((2,1),(39,8))),((7,3),1))),1),(2,3)),(1,1))),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,3))),1),((((1,((1,((2,2),(37,9))),(4,2))),1),(4,2)),1)),1),1))),(2,1))");
v.push_back("((1,(1,((((((1,1),(1,(1,2))),1),((((1,((1,(1,(38,12))),((4,5),2))),1),(1,3)),1)),1),2))),(3,1))");
v.push_back("((1,(1,((((((1,1),(1,(2,((1,(1,1)),1)))),1),((((1,((1,(3,(53,13))),8)),1),(2,3)),2)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((2,(1,(3,((1,1),2)))),1),((((1,((1,((1,1),(50,9))),((6,(2,1)),3))),1),2),1)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((1,(1,((1,1),(2,1)))),1),((((1,((1,((2,1),(47,7))),((8,4),1))),1),(1,8)),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(2,(3,1)))),1),((((1,((1,(2,(26,7))),((7,3),1))),1),(3,3)),1)),1),1))),(2,1))");
v.push_back("((1,(1,((((((1,1),(1,(6,((1,3),1)))),1),((((1,((1,((2,2),(39,12))),((3,(2,1)),1))),1),3),1)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,1),1)))),1),((((1,((1,((6,2),(47,7))),((4,(6,1)),1))),1),(1,4)),1)),1),2))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((1,(2,(1,(2,1)))),1),((((1,((1,(2,(49,7))),((7,2),3))),1),(1,6)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,(1,1)),1)))),1),((((1,((1,((2,2),(43,12))),((5,6),(1,2)))),1),1),2)),1),1))),2)");
v.push_back("((1,(1,((((((1,1),(1,(2,((1,3),1)))),1),((((1,((1,(1,(68,13))),((6,5),3))),1),(1,2)),1)),1),1))),(1,1))");
v.push_back("((1,(1,((((((2,1),(1,((1,1),2))),1),((((1,((1,((1,2),(59,9))),((11,2),(1,1)))),1),(1,7)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,((((((1,1),(1,(2,((1,(2,1)),1)))),1),((((1,((1,((1,2),(42,7))),((8,4),1))),1),(2,3)),1)),1),2))),1)");
v.push_back("((1,(1,(((((((1,3),1),(1,(1,((1,1),1)))),1),((((1,((1,((2,1),(48,14))),((4,4),4))),1),(3,1)),1)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((1,(1,(1,1))),1),((((1,((1,(5,(36,12))),((4,4),4))),1),8),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(3,((1,(1,2)),1)))),1),((((1,((1,(3,(33,12))),((4,3),1))),1),(2,3)),(1,1))),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,((3,1),((1,1),1)))),1),((((1,((1,((1,1),(49,10))),((9,4),2))),1),(1,5)),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,((1,1),(3,1)))),1),((((1,((1,(1,(32,11))),((5,4),1))),1),(2,8)),(3,1))),1),1))),(1,1))");
v.push_back("((1,(1,(((((2,(1,((1,1),(3,1)))),1),((((1,((1,(1,(54,12))),((7,4),1))),1),(1,6)),2)),1),1))),(1,1))");
v.push_back("((1,(1,(((((((2,1),1),(1,(1,((1,1),1)))),1),((((1,((1,(2,(48,11))),((5,6),2))),1),(1,4)),1)),1),1))),2)");
v.push_back("((1,(1,((((((2,1),(1,((2,2),((1,1),1)))),1),((((1,((1,((2,2),(61,14))),((4,3),1))),1),(1,3)),(1,1))),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,((1,1),((1,1),1)))),1),((((1,((1,((1,4),(59,17))),((4,(1,1)),(1,1)))),1),(2,8)),1)),1),3))),(1,1))");
v.push_back("((1,(1,(((((1,(1,((1,2),((1,1),1)))),1),((((1,((1,((4,2),(45,7))),((5,4),(1,1)))),1),(2,6)),((1,1),1))),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(2,((1,1),1))),1),((((1,((1,(3,(33,10))),((6,3),(1,1)))),1),(1,5)),2)),1),2))),2)");
v.push_back("((1,(1,(((((((2,1),1),(1,(3,(2,1)))),1),((((1,((1,((1,1),(50,7))),((6,4),2))),1),(1,4)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((2,(1,((1,2),2))),1),((((1,((1,((2,2),(62,8))),((10,(2,1)),(1,1)))),1),(1,4)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((3,(2,((2,1),((1,(1,1)),1)))),1),((((1,((1,((1,2),(41,20))),((4,1),2))),1),(1,8)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(1,((1,1),1)))),1),((((1,((1,((4,1),(44,16))),((7,3),1))),1),(2,7)),1)),1),1))),2)");
v.push_back("((1,(1,((((((2,1),(1,(1,((1,(1,1)),1)))),1),((((1,((1,((1,3),(57,18))),((2,(7,1)),2))),1),4),((1,1),1))),1),1))),((1,2),1))");
v.push_back("((1,(1,((((((2,1),(1,(4,((1,2),1)))),1),((((1,((1,((4,1),(58,11))),((10,1),1))),1),(1,1)),1)),1),1))),((1,2),1))");
v.push_back("((1,(1,(((((2,(1,(1,((1,(1,1)),1)))),1),((((1,((1,((1,4),(42,7))),((5,4),1))),1),5),1)),1),2))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,(1,1)),1)))),1),((((1,((1,(5,(60,14))),((4,5),(1,1)))),1),(1,4)),2)),1),1))),((1,(2,1)),1))");
v.push_back("((1,(1,(((((3,(1,(1,(2,1)))),1),((((1,((1,(1,(53,11))),((4,(2,1)),(2,1)))),1),(1,3)),2)),1),3))),(1,1))");
v.push_back("((1,(1,(((((2,(1,(2,((1,2),1)))),1),((((1,((1,(2,(47,13))),((7,2),1))),1),(1,3)),1)),1),2))),(2,1))");
v.push_back("((1,(1,(((((1,(1,((1,1),1))),1),((((1,((1,((2,1),(53,8))),((7,2),3))),1),(3,5)),2)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,(2,1)))),1),((((1,((1,((2,2),(40,7))),((4,7),2))),1),3),1)),1),2))),((1,2),1))");
v.push_back("((1,(1,((((((1,1),(1,((1,1),(2,1)))),1),((((1,((1,((1,2),(52,5))),((6,(5,2)),(1,2)))),1),(1,4)),1)),1),1))),(3,1))");
v.push_back("((1,(1,(((((1,(1,((3,1),((1,1),1)))),1),((((1,((1,((3,1),(62,20))),((10,(1,1)),2))),1),(1,4)),1)),1),1))),((1,2),1))");
v.push_back("((1,(1,((((((2,1),(1,(2,(1,1)))),1),((((1,((1,((3,2),(56,10))),((5,(5,1)),1))),1),3),(1,1))),1),1))),2)");
v.push_back("((1,(1,(((((((2,1),1),(1,(3,((1,(3,3)),1)))),1),((((1,((1,((3,1),(48,9))),((1,(1,1)),3))),1),(1,4)),((1,2),1))),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,5))),1),((((1,((1,(1,(44,11))),((7,3),2))),1),(1,3)),(2,1))),1),2))),(1,1))");
v.push_back("((1,(1,(((((1,(1,((1,2),((1,1),1)))),1),((((1,((1,((5,1),(66,13))),((8,6),2))),1),(1,2)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(4,(2,1)))),1),((((1,((1,(4,(55,7))),((8,2),(1,1)))),1),(1,3)),1)),1),2))),2)");
v.push_back("((1,(1,((((((1,1),(1,(1,3))),1),((((1,((1,((2,1),(55,12))),((7,3),1))),1),8),3)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,((1,2),((1,(2,1)),1)))),1),((((1,((1,(2,(50,13))),((6,5),2))),1),(3,2)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,((((4,1),((((1,((1,((1,2),(57,5))),((4,4),1))),1),(2,8)),2)),1),1))),((1,2),1))");
v.push_back("((1,(1,((((((1,1),(1,(2,((1,2),1)))),1),((((1,((1,(4,(63,11))),((3,(5,1)),1))),1),(1,7)),2)),1),1))),1)");
v.push_back("((1,(1,(((((((1,1),1),(1,(2,((1,1),1)))),1),((((1,((1,((1,3),(55,13))),((5,6),1))),1),(1,7)),(2,1))),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,((((((2,1),(1,((1,1),((1,1),1)))),1),((((1,((1,((2,3),(48,15))),((5,(1,1)),2))),1),(3,5)),((1,1),1))),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((1,(1,(2,(2,1)))),1),((((1,((1,((3,4),(49,9))),((4,4),1))),1),5),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(2,(4,1)))),1),((((1,((1,(3,(53,7))),((4,(4,1)),1))),1),(3,5)),1)),1),1))),1)");
v.push_back("((1,(1,(((((((1,1),1),(1,((1,1),(2,1)))),1),((((1,((1,(2,(75,16))),((5,6),1))),1),(1,5)),1)),1),1))),(3,1))");
v.push_back("((1,(1,((((((1,1),(2,(1,(1,1)))),1),((((1,((1,((1,1),(49,20))),((6,1),(1,1)))),1),4),3)),1),5))),2)");
v.push_back("((1,(1,(((((1,(1,(2,(2,1)))),1),((((1,((1,(4,(38,10))),((5,(3,1)),3))),1),7),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,(1,1)),1)))),1),((((1,((1,((2,3),(38,9))),((10,8),2))),1),5),1)),1),1))),1)");
v.push_back("((1,(1,(((((2,(1,((1,1),(1,1)))),1),((((1,((1,((1,2),(72,10))),((5,6),3))),1),(1,5)),(1,1))),1),1))),((1,1),1))");
v.push_back("((1,(1,((((((1,1),(1,((1,1),((1,(2,1)),1)))),1),((((1,((1,((3,1),(41,11))),((6,(6,2)),2))),1),(2,2)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((2,(1,(1,(1,2)))),1),((((1,((1,(2,(35,15))),((7,5),1))),1),(1,5)),1)),1),2))),2)");
v.push_back("((1,(1,((((((1,1),(1,((1,1),(1,1)))),1),((((1,((1,((5,2),(59,15))),((7,4),1))),1),(1,5)),1)),1),2))),((1,(1,1)),1))");
v.push_back("((1,(1,((((((2,1),(1,(2,(1,1)))),1),((((1,((1,(1,(52,18))),((4,5),2))),1),(1,5)),1)),1),1))),((1,2),1))");
v.push_back("((1,(1,(((((2,(1,(1,(2,1)))),1),((((1,((1,((1,3),(52,15))),((3,2),(2,1)))),1),(2,4)),1)),1),2))),1)");
v.push_back("((1,(1,((((((1,1),(2,((1,1),((1,(2,1)),1)))),1),((((1,((1,((4,1),(42,11))),((7,3),2))),1),4),2)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(4,((1,(1,1)),1)))),1),((((1,((1,(2,(58,13))),((8,3),1))),1),(1,8)),1)),1),1))),2)");
v.push_back("((1,(1,(((((((1,1),1),(1,(1,((1,2),1)))),1),((((1,((1,((1,3),(44,12))),((3,(3,2)),2))),1),4),2)),1),1))),(3,1))");
v.push_back("((1,(1,((((((1,2),(1,((1,1),3))),1),((((1,((1,((3,1),(39,9))),((4,(5,1)),1))),1),(3,5)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((2,(1,((1,1),(3,1)))),1),((((1,((1,((1,1),(59,16))),((9,2),2))),1),(1,5)),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,(2,2))),1),((((1,((1,(1,(44,5))),((8,3),2))),1),(3,3)),3)),1),2))),(1,1))");
v.push_back("((1,(1,((((((2,1),(1,(2,((1,4),1)))),1),((((1,((1,(3,(48,14))),((12,(1,1)),(1,1)))),1),1),2)),1),2))),2)");
v.push_back("((1,(1,(((((2,(1,(2,((1,(1,2)),1)))),1),((((1,((1,((2,1),(55,7))),((3,3),2))),1),(2,9)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,5),1)))),1),((((1,((1,((1,3),(41,12))),((3,3),4))),1),(1,4)),1)),1),1))),(3,1))");
v.push_back("((1,(1,((((((3,1),(1,((1,1),((1,(1,1)),1)))),1),((((1,((1,(1,(78,19))),((4,(10,1)),2))),1),(1,7)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(2,(1,((1,2),1)))),1),((((1,((1,(1,(37,14))),((3,(3,1)),(1,3)))),1),(1,6)),2)),1),4))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((2,(1,(2,((1,2),1)))),1),((((1,((1,((3,1),(54,7))),((4,2),(1,3)))),1),(1,6)),1)),1),2))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(2,2))),1),((((1,((1,(3,(53,9))),((7,(6,1)),(1,1)))),1),(3,4)),1)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,((((((1,1),(1,(2,(2,1)))),1),((((1,((1,(1,(71,12))),((10,(3,1)),2))),1),(2,4)),1)),1),2))),(1,1))");
v.push_back("((1,(1,(((((((1,1),1),(1,(1,((1,1),1)))),1),((((1,((1,(2,(55,8))),((6,7),2))),1),(5,5)),1)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((1,(1,((1,1),((1,(1,2)),1)))),1),((((1,((1,((2,3),(43,12))),((1,7),1))),1),(2,6)),(1,1))),1),2))),((1,2),1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,5),1)))),1),((((1,((1,((4,2),(44,6))),((4,(3,1)),2))),1),(2,2)),1)),1),1))),(3,1))");
v.push_back("((1,(1,(((((1,(2,(1,((1,1),1)))),1),((((1,((1,(5,(41,7))),((5,7),1))),1),(3,11)),1)),1),1))),(1,1))");
v.push_back("((1,(1,((((((2,1),(1,(1,((1,(2,1)),1)))),1),((((1,((1,((1,3),(65,16))),((9,(5,1)),(1,1)))),1),(1,4)),(1,1))),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((2,(1,(1,((1,3),1)))),1),((((1,((1,((1,1),(67,5))),((5,7),1))),1),(3,4)),1)),1),3))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,4))),1),((((1,((1,((4,1),(48,16))),((3,6),1))),1),(1,3)),1)),1),3))),2)");
v.push_back("((1,(1,((((((1,2),(3,(1,((1,2),1)))),1),((((1,((1,((3,1),(57,10))),((3,3),3))),1),(1,3)),1)),1),1))),2)");
v.push_back("((1,(1,(((((((1,1),1),(1,((2,3),(2,1)))),1),((((1,((1,(2,(46,9))),((4,(2,2)),(1,1)))),1),(2,9)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(2,((1,1),3))),1),((((1,((1,((1,1),(46,5))),((9,3),(2,1)))),1),(2,9)),1)),1),1))),((1,2),1))");
v.push_back("((1,(1,((((((3,1),(1,((1,1),((1,(2,1)),1)))),1),((((1,((1,((3,2),(68,16))),((5,2),(1,1)))),1),7),1)),1),1))),((1,(1,1)),1))");
return v;
}
//---------------------------------------------------------------------------
const std::vector<std::string> GetHardNewicks()
{
std::vector<std::string> v;
v.push_back("((4,4),4)");
v.push_back("(((4,4),4),4)");
v.push_back("((((4,4),4),4),4)");
v.push_back("(((((4,4),4),4),4),4)");
v.push_back("((((((4,4),4),4),4),4),4)");
v.push_back("(((((((4,4),4),4),4),4),4),4)");
v.push_back("((((((((4,4),4),4),4),4),4),4),4)");
v.push_back("(((((((((4,4),4),4),4),4),4),4),4),4)");
v.push_back("((((((((((4,4),4),4),4),4),4),4),4),4),4)");
v.push_back("(((((((((((4,4),4),4),4),4),4),4),4),4),4),4)");
v.push_back("((((((((((((4,4),4),4),4),4),4),4),4),4),4),4),4)");
v.push_back("(((((((((((((4,4),4),4),4),4),4),4),4),4),4),4),4),4)");
v.push_back("((((((((((((((4,4),4),4),4),4),4),4),4),4),4),4),4),4),4)");
v.push_back("(((((((((((((((4,4),4),4),4),4),4),4),4),4),4),4),4),4),4),4)");
v.push_back("((((((((((((((((4,4),4),4),4),4),4),4),4),4),4),4),4),3),3),3),3)");
return v;
}
//---------------------------------------------------------------------------
const std::vector<std::string> GetLightBiologicalNewicks()
{
std::vector<std::string> v;
v.push_back("((1,(1,((((((1,1),(1,1)),1),((((1,((1,(1,(10,3))),((3,2),1))),1),2),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(2,1))),1),((((1,((1,(1,(18,3))),((1,(2,2)),2))),1),1),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,(1,4)),1)))),1),((((1,((1,(2,(11,5))),((1,1),1))),1),2),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,1),1)))),1),((((1,((1,((1,1),(12,6))),(4,1))),1),(1,2)),2)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,((2,1),(1,1)))),1),((((1,((1,(2,(32,6))),((1,2),(1,1)))),1),(1,1)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,2),1),((((1,((1,((1,1),(17,3))),(4,1))),1),7),1)),1),1))),(1,1))");
v.push_back("((1,(1,((((((1,1),(1,(1,2))),1),((((1,((1,(1,(29,3))),((5,1),1))),1),(2,1)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,1)),1),((((1,((1,((1,1),(30,7))),((6,(1,1)),(1,2)))),1),(1,1)),(1,1))),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(1,1))),1),((((1,((1,(2,(19,3))),(4,1))),1),3),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(1,(1,1)))),1),((((1,((1,((1,1),(18,4))),((2,2),1))),1),7),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,(1,2))),1),((((1,((1,(1,(11,7))),((4,(2,1)),1))),1),3),1)),1),1))),1)");
v.push_back("((1,(1,(((((2,(1,((1,2),1))),1),((((1,((1,(2,(22,4))),((1,2),(1,1)))),1),(1,1)),1)),1),1))),2)");
v.push_back("((1,(1,((((2,1),((((1,((1,(1,(16,9))),((2,4),1))),1),2),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((2,(1,(1,(1,1)))),1),((((1,((1,(3,(37,12))),((2,1),1))),1),(1,1)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(2,(1,1)))),1),((((1,((1,((1,1),(19,3))),((3,1),1))),1),(3,3)),(1,1))),1),1))),1)");
v.push_back("((1,(1,(((((((1,1),1),(1,(1,((1,1),1)))),1),((((1,((1,(1,(27,5))),((4,2),1))),1),3),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(2,2))),1),((((1,((1,(2,(37,5))),((2,(2,1)),1))),1),(1,1)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,1),2)))),1),((((1,((1,(1,(23,8))),((3,3),1))),1),(1,2)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(1,(1,2)))),1),((((1,((1,((1,1),(26,4))),((2,3),1))),1),3),1)),1),1))),2)");
v.push_back("((1,(1,((((((1,1),(1,(1,((1,(2,1)),1)))),1),((((1,((1,(1,(13,7))),((2,3),3))),1),(1,2)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(2,((1,1),1)))),1),((((1,((1,(2,(28,5))),((2,1),2))),1),1),2)),1),1))),2)");
v.push_back("((1,(1,(((((1,(2,((1,1),2))),1),((((1,((1,(1,(23,7))),((3,2),1))),1),(1,1)),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(2,((1,(1,1)),1)))),1),((((1,((1,((1,1),(35,7))),((5,1),1))),1),2),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,1))),1),((((1,((1,((2,1),(24,4))),((3,3),1))),1),3),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,(1,(3,1)))),1),((((1,((1,(1,(34,7))),(1,2))),1),7),(1,1))),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,(1,1)))),1),((((1,((1,(2,(26,8))),((4,3),1))),1),1),1)),2),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,2))),1),((((1,((1,(2,(31,7))),((3,2),1))),1),2),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,1))),1),((((1,((1,(1,(29,9))),((3,(1,1)),1))),1),(1,3)),2)),1),2))),1)");
v.push_back("((1,(1,(((((2,(1,(2,2))),1),((((1,((1,(1,(13,7))),((3,1),2))),1),1),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(2,((1,1),1)))),1),((((1,((1,(1,(35,11))),((3,(1,1)),1))),1),(1,2)),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,2)),1),((((1,((1,(1,(32,10))),((3,3),1))),1),1),1)),1),1))),((1,2),1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,2),1)))),1),((((1,((1,(1,(31,9))),((1,3),1))),1),3),2)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,2),1)))),1),((((1,((1,(1,(27,3))),((3,3),1))),1),(1,2)),(1,1))),1),2))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(2,(2,1)))),1),((((1,((1,(2,(23,4))),((3,2),1))),1),3),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(1,(1,1)))),1),((((1,((1,(2,(16,3))),((2,2),(1,1)))),1),(2,3)),3)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(2,2))),1),((((1,((1,(1,(19,7))),((2,2),2))),1),(1,1)),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,(1,((1,(1,1)),1)))),1),((((1,((1,((1,1),(32,5))),((3,6),(1,1)))),1),2),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,((1,1),((1,(1,1)),1)))),1),((((1,((1,(1,(32,13))),((1,(2,2)),1))),1),(3,2)),1)),1),1))),1)");
v.push_back("((1,(1,((((((1,1),(1,(2,1))),1),((((1,((1,(1,(23,4))),((3,4),2))),1),2),1)),1),1))),2)");
v.push_back("((1,(1,(((((((1,1),1),(1,(2,1))),1),((((1,((1,((4,2),(25,2))),((2,1),2))),1),(1,3)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,((1,1),((1,1),1)))),1),((((1,((1,((4,1),(30,9))),((4,3),1))),1),1),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,2))),1),((((1,((1,(2,19)),((5,2),2))),1),4),(1,1))),1),1))),2)");
v.push_back("((1,(1,((((((2,1),(1,(1,(2,1)))),1),((((1,((1,(4,(44,6))),((1,(1,1)),3))),1),(1,1)),(1,1))),1),1))),(1,1))");
v.push_back("((1,(1,(((((2,(1,((1,1),((1,(1,1)),1)))),1),((((1,((1,(1,(31,8))),((6,1),1))),1),1),2)),1),2))),1)");
v.push_back("((1,(1,(((((1,(1,(1,3))),1),((((1,((1,(2,(23,6))),(4,1))),1),2),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,(1,1)),2)))),1),((((1,((1,(1,(27,8))),(4,2))),1),5),1)),1),1))),1)");
v.push_back("((1,(1,(((((((1,2),1),(1,3)),1),((((1,((1,(2,(23,9))),((4,1),1))),1),(1,2)),1)),1),1))),1)");
v.push_back("((1,(1,((((((1,1),(1,((1,1),(2,1)))),1),((((1,((1,(2,(40,10))),((2,4),1))),1),1),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,(1,1)))),1),((((1,((1,((2,2),(35,8))),((2,2),1))),1),(1,4)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(1,((1,2),1)))),1),((((1,((1,((1,2),(27,7))),((2,2),2))),1),(1,1)),1)),1),1))),(2,1))");
v.push_back("((1,(1,((((((1,1),(1,(1,((1,2),1)))),1),((((1,((1,((2,1),(33,5))),((1,(2,1)),1))),1),(2,6)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((2,(1,((1,1),((1,1),1)))),1),((((1,((1,(1,(38,4))),((2,3),(1,3)))),1),(1,3)),(1,1))),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,((1,2),((1,1),1)))),1),((((1,((1,(2,(22,4))),((2,(3,1)),3))),1),(1,3)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,3))),1),((((1,((1,(2,(21,2))),((4,2),2))),1),3),2)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,((2,2),(1,1)))),1),((((1,((1,(1,(36,8))),((2,2),1))),1),2),2)),1),1))),(1,1))");
v.push_back("((1,(1,((((((1,1),(1,(2,((1,2),1)))),1),((((1,((1,(1,(25,9))),((4,1),1))),1),(1,6)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(1,((1,(1,1)),1)))),1),((((1,((1,((1,1),(22,9))),((5,3),1))),1),5),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((3,3),1),((((1,((1,(1,(21,8))),((3,1),3))),1),(1,1)),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,(2,((1,4),1)))),1),((((1,((1,(4,(28,10))),((1,1),1))),1),(1,1)),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(2,((1,(1,1)),1)))),1),((((1,((1,((2,1),(46,3))),((1,4),1))),1),(1,4)),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,(3,(2,1)))),1),((((1,((1,(2,(35,11))),1)),1),(1,2)),(3,1))),1),1))),1)");
v.push_back("((1,(1,(((((3,(1,(1,((1,1),1)))),1),((((1,((1,(2,(25,4))),((2,1),(2,1)))),1),5),1)),1),2))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,1),1)))),1),((((1,((1,(3,(42,6))),((3,3),1))),1),3),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,1))),1),((((1,((1,((1,1),(37,5))),((7,2),1))),1),(1,3)),(3,1))),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((2,(1,(1,1))),1),((((1,((1,(3,(20,7))),((3,2),1))),1),2),2)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,((2,1),2))),1),((((1,((1,((3,1),(18,6))),((4,1),2))),1),(2,1)),(1,1))),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,((1,2),((1,1),1)))),1),((((1,((1,((1,4),(30,6))),((3,1),1))),1),(1,5)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,((1,1),((1,(1,1)),1)))),1),((((1,((1,(2,(26,7))),((5,2),1))),1),7),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((2,(1,(1,((1,2),1)))),1),((((1,((1,((2,1),(31,9))),((2,1),1))),1),(1,2)),2)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,1))),1),((((1,((1,(1,(33,9))),((7,2),2))),1),2),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(2,(1,1)))),1),((((1,((1,(1,(40,12))),((4,1),1))),1),3),1)),1),1))),2)");
v.push_back("((1,(1,((((((1,1),(1,((1,1),1))),1),((((1,((1,(1,(29,8))),((6,3),1))),1),4),1)),1),1))),1)");
v.push_back("((1,(2,((((((2,1),(1,((1,1),((1,(1,1)),1)))),1),((((1,((1,((1,1),(34,6))),((3,(1,1)),(1,1)))),1),3),3)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,4),1)))),1),((((1,((1,((1,1),(44,10))),((1,3),1))),1),5),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,((1,1),1))),1),((((1,((1,((3,1),(44,5))),((2,(3,1)),(3,1)))),1),2),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,2))),1),((((1,((1,(1,(34,7))),((4,(1,3)),1))),1),2),1)),1),2))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,2),1)))),1),((((1,((1,(2,(15,5))),((4,3),2))),1),3),1)),1),1))),1)");
v.push_back("((1,(1,(((((2,(1,(1,2))),1),((((1,((1,(1,(16,4))),((1,(4,1)),(2,2)))),1),5),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,((((((3,1),(1,(1,(3,1)))),1),((((1,((1,(2,(26,5))),((2,2),1))),1),(1,3)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,((1,1),((1,(1,2)),1)))),1),((((1,((1,(1,(42,9))),((3,2),3))),1),(1,2)),(1,1))),1),1))),((1,1),1))");
v.push_back("((1,(1,((((((2,1),(1,(1,((1,(1,1)),1)))),1),((((1,((1,((1,2),(15,5))),((5,3),(1,1)))),1),(1,3)),1)),1),1))),((1,2),1))");
v.push_back("((1,(1,(((((1,(1,(1,(4,1)))),1),((((1,((1,(3,(28,5))),((1,(3,1)),1))),1),2),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,((2,2),(1,2)))),1),((((1,((1,(1,(29,6))),((4,3),1))),1),1),1)),1),1))),((1,(1,1)),1))");
v.push_back("((1,(1,(((((2,(1,(2,2))),1),((((1,((1,(3,(20,5))),(4,1))),1),(3,1)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,((2,2),4))),1),((((1,((1,((1,1),(36,9))),((1,(1,1)),1))),1),3),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(1,1))),1),((((1,((1,((1,1),(33,13))),((5,4),1))),1),2),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(1,(1,1)))),1),((((1,((1,((2,1),(47,10))),((3,(1,1)),1))),1),(1,5)),2)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,2)),1),((((1,((1,((2,1),(13,3))),((5,2),(1,2)))),1),3),2)),1),2))),(1,1))");
v.push_back("((1,(1,(((((2,(1,(1,((1,2),1)))),1),((((1,((1,(1,(30,7))),((3,1),(1,2)))),1),4),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,(1,(2,2)))),1),((((1,((1,(2,(23,8))),((3,1),1))),1),(1,2)),1)),1),1))),(3,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,(2,1)),1)))),1),((((1,((1,((4,1),(42,5))),((4,1),1))),1),(1,4)),1)),1),1))),1)");
v.push_back("((1,(1,(((((1,(1,(2,((1,2),1)))),1),((((1,((1,(2,(21,6))),((6,2),1))),1),3),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,((2,1),2))),1),((((1,((1,(2,(29,6))),((2,2),1))),1),(1,4)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((((1,1),1),(1,(1,((1,2),1)))),1),((((1,((1,(3,(47,6))),((4,1),1))),1),(1,5)),1)),1),1))),(1,1))");
v.push_back("((1,(1,(((((1,(1,1)),1),((((1,((1,(1,(51,10))),((3,2),(1,2)))),1),(2,1)),1)),1),1))),2)");
v.push_back("((1,(1,(((((1,(1,(2,2))),1),((((1,((1,(2,(22,2))),((2,6),1))),1),5),1)),1),1))),2)");
v.push_back("((1,(1,((((((1,1),(1,(1,(1,1)))),1),((((1,((1,(1,(46,10))),((2,2),2))),1),(1,4)),1)),1),1))),(2,1))");
v.push_back("((1,(1,(((((1,(1,(1,((1,3),1)))),1),((((1,((1,((1,1),(18,7))),((6,1),1))),1),(1,3)),1)),1),1))),(3,1))");
v.push_back("((2,(1,(((((1,(1,((1,1),1))),1),((((1,((1,((3,1),(28,8))),((2,(2,2)),3))),1),(1,1)),1)),1),1))),((1,1),1))");
v.push_back("((1,(1,(((((1,(1,(3,(1,1)))),1),((((1,((1,((3,1),(23,7))),((3,2),1))),1),(1,2)),1)),1),1))),(2,1))");
return v;
}
//---------------------------------------------------------------------------
const std::vector<std::string> GetLightNewicks()
{
std::vector<std::string> v;
v.push_back("((2,2),2)");
v.push_back("(((2,2),2),2)");
v.push_back("((((2,2),2),2),2)");
v.push_back("(((((2,2),2),2),2),2)");
v.push_back("((((((2,2),2),2),2),2),2)");
v.push_back("(((((((2,2),2),2),2),2),2),2)");
v.push_back("((((((((2,2),2),2),2),2),2),2),2)");
v.push_back("(((((((((2,2),2),2),2),2),2),2),2),2)");
v.push_back("((((((((((2,2),2),2),2),2),2),2),2),2),2)");
v.push_back("(((((((((((2,2),2),2),2),2),2),2),2),2),2),2)");
v.push_back("((((((((((((2,2),2),2),2),2),2),2),2),2),2),2),2)");
v.push_back("(((((((((((((2,2),2),2),2),2),2),2),2),2),2),2),2),2)");
v.push_back("((((((((((((((2,2),2),2),2),2),2),2),2),2),2),2),2),2),2)");
v.push_back("(((((((((((((((2,2),2),2),2),2),2),2),2),2),2),2),2),2),2),2)");
return v;
}
//---------------------------------------------------------------------------
/*
const std::vector<std::string> GetManyNewicks()
{
std::vector<std::string> v;
{
std::vector<std::string> w = GetLightNewicks();
std::copy(w.begin(),w.end(),std::back_inserter(v));
}
{
std::vector<std::string> w = GetMediumNewicks();
std::copy(w.begin(),w.end(),std::back_inserter(v));
}
{
std::vector<std::string> w = GetHardNewicks();
std::copy(w.begin(),w.end(),std::back_inserter(v));
}
return v;
}
*/
//---------------------------------------------------------------------------
const std::vector<std::string> GetMediumNewicks()
{
std::vector<std::string> v;
v.push_back("((3,3),3)");
v.push_back("(((3,3),3),3)");
v.push_back("((((3,3),3),3),3)");
v.push_back("(((((3,3),3),3),3),3)");
v.push_back("((((((3,3),3),3),3),3),3)");
v.push_back("(((((((3,3),3),3),3),3),3),3)");
v.push_back("((((((((3,3),3),3),3),3),3),3),3)");
v.push_back("(((((((((3,3),3),3),3),3),3),3),3),3)");
v.push_back("((((((((((3,3),3),3),3),3),3),3),3),3),3)");
v.push_back("(((((((((((3,3),3),3),3),3),3),3),3),3),3),3)");
v.push_back("((((((((((((3,3),3),3),3),3),3),3),3),3),3),3),3)");
return v;
}
//---------------------------------------------------------------------------
const std::vector<std::string> GetManyNewicks()
{
std::vector<std::string> v;
v.push_back("((90,1000),100)");
v.push_back("((90,100),1000)");
v.push_back("((90,100),100)");
v.push_back("((80,1000),100)");
v.push_back("((80,100),1000)");
v.push_back("((80,100),100)");
v.push_back("((70,1000),100)");
v.push_back("((70,100),1000)");
v.push_back("((70,100),100)");
v.push_back("((60,1000),100)");
v.push_back("((60,100),1000)");
v.push_back("((60,100),100)");
v.push_back("((50,1000),100)");
v.push_back("((50,100),1000)");
v.push_back("((50,100),100)");
v.push_back("((5,5),5)");
v.push_back("((40,1000),100)");
v.push_back("((40,100),1000)");
v.push_back("((40,100),100)");
v.push_back("((30,1000),100)");
v.push_back("((30,100),1000)");
v.push_back("((30,100),100)");
v.push_back("((3,3),3)");
v.push_back("((20,1000),100)");
v.push_back("((20,100),1000)");
v.push_back("((20,100),100)");
v.push_back("((2,3),3)");
v.push_back("((2,2),3)");
v.push_back("((2,2),2)");
v.push_back("((1000,100),90)");
v.push_back("((1000,100),80)");
v.push_back("((1000,100),70)");
v.push_back("((1000,100),60)");
v.push_back("((1000,100),50)");
v.push_back("((1000,100),40)");
v.push_back("((1000,100),30)");
v.push_back("((1000,100),20)");
v.push_back("((1000,100),100)");
v.push_back("((1000,100),10)");
v.push_back("((100,100),90)");
v.push_back("((100,100),80)");
v.push_back("((100,100),70)");
v.push_back("((100,100),60)");
v.push_back("((100,100),50)");
v.push_back("((100,100),40)");
v.push_back("((100,100),30)");
v.push_back("((100,100),20)");
v.push_back("((100,100),1000)");
v.push_back("((100,100),100)");
v.push_back("((100,100),10)");
v.push_back("((10,1000),100)");
v.push_back("((10,100),1000)");
v.push_back("((10,100),100)");
v.push_back("(((5,5),5),5)");
v.push_back("(((3,3),3),3)");
v.push_back("(((2,3),3),3)");
v.push_back("(((2,2),3),3)");
v.push_back("(((2,2),2),3)");
v.push_back("(((2,2),2),2)");
v.push_back("((((5,5),5),5),5)");
v.push_back("((((3,3),3),3),3)");
v.push_back("((((2,3),3),3),3)");
v.push_back("((((2,2),3),3),3)");
v.push_back("((((2,2),2),3),3)");
v.push_back("((((2,2),2),2),3)");
v.push_back("((((2,2),2),2),2)");
v.push_back("(((((5,5),5),5),5),5)");
v.push_back("(((((3,3),3),3),3),3)");
v.push_back("(((((2,3),3),3),3),3)");
v.push_back("(((((2,2),3),3),3),3)");
v.push_back("(((((2,2),2),3),3),3)");
v.push_back("(((((2,2),2),2),3),3)");
v.push_back("(((((2,2),2),2),2),3)");
v.push_back("(((((2,2),2),2),2),2)");
v.push_back("((((((5,5),5),5),5),5),5)");
v.push_back("((((((3,3),3),3),3),3),3)");
v.push_back("((((((2,3),3),3),3),3),3)");
v.push_back("((((((2,2),3),3),3),3),3)");
v.push_back("((((((2,2),2),3),3),3),3)");
v.push_back("((((((2,2),2),2),3),3),3)");
v.push_back("((((((2,2),2),2),2),3),3)");
v.push_back("((((((2,2),2),2),2),2),3)");
v.push_back("((((((2,2),2),2),2),2),2)");
v.push_back("(((((((5,5),5),5),5),5),5),5)");
v.push_back("(((((((3,3),3),3),3),3),3),3)");
v.push_back("(((((((2,3),3),3),3),3),3),3)");
v.push_back("(((((((2,2),3),3),3),3),3),3)");
v.push_back("(((((((2,2),2),3),3),3),3),3)");
v.push_back("(((((((2,2),2),2),3),3),3),3)");
v.push_back("(((((((2,2),2),2),2),3),3),3)");
v.push_back("(((((((2,2),2),2),2),2),3),3)");
v.push_back("(((((((2,2),2),2),2),2),2),3)");
v.push_back("(((((((2,2),2),2),2),2),2),2)");
v.push_back("((((((((5,5),5),5),5),5),5),5),5)");
v.push_back("((((((((3,3),3),3),3),3),3),3),3)");
v.push_back("((((((((2,3),3),3),3),3),3),3),3)");
v.push_back("((((((((2,2),3),3),3),3),3),3),3)");
v.push_back("((((((((2,2),2),3),3),3),3),3),3)");
v.push_back("((((((((2,2),2),2),3),3),3),3),3)");
v.push_back("((((((((2,2),2),2),2),3),3),3),3)");
v.push_back("((((((((2,2),2),2),2),2),3),3),3)");
v.push_back("((((((((2,2),2),2),2),2),2),3),3)");
v.push_back("((((((((2,2),2),2),2),2),2),2),3)");
v.push_back("((((((((2,2),2),2),2),2),2),2),2)");
v.push_back("(((((((((5,5),5),5),5),5),5),5),5),5)");
v.push_back("(((((((((2,3),3),3),3),3),3),3),3),3)");
v.push_back("(((((((((2,2),3),3),3),3),3),3),3),3)");
v.push_back("(((((((((2,2),2),3),3),3),3),3),3),3)");
v.push_back("(((((((((2,2),2),2),3),3),3),3),3),3)");
v.push_back("(((((((((2,2),2),2),2),3),3),3),3),3)");
v.push_back("(((((((((2,2),2),2),2),2),3),3),3),3)");
v.push_back("(((((((((2,2),2),2),2),2),2),3),3),3)");
v.push_back("(((((((((2,2),2),2),2),2),2),2),3),3)");
v.push_back("(((((((((2,2),2),2),2),2),2),2),2),2)");
v.push_back("((((((((((2,2),3),3),3),3),3),3),3),3),3)");
v.push_back("((((((((((2,2),2),3),3),3),3),3),3),3),3)");
v.push_back("((((((((((2,2),2),2),3),3),3),3),3),3),3)");
v.push_back("((((((((((2,2),2),2),2),3),3),3),3),3),3)");
v.push_back("((((((((((2,2),2),2),2),2),3),3),3),3),3)");
v.push_back("((((((((((2,2),2),2),2),2),2),3),3),3),3)");
v.push_back("((((((((((2,2),2),2),2),2),2),2),3),3),3)");
v.push_back("((((((((((2,2),2),2),2),2),2),2),2),2),2)");
v.push_back("(((((((((((2,2),2),2),2),3),3),3),3),3),3),3)");
v.push_back("(((((((((((2,2),2),2),2),2),3),3),3),3),3),3)");
v.push_back("(((((((((((2,2),2),2),2),2),2),3),3),3),3),3)");
v.push_back("(((((((((((2,2),2),2),2),2),2),2),3),3),3),3)");
v.push_back("(((((((((((2,2),2),2),2),2),2),2),2),2),2),2)");
v.push_back("((((((((((((2,2),2),2),2),2),2),2),3),3),3),3),3)");
v.push_back("((((((((((((2,2),2),2),2),2),2),2),2),2),2),2),2)");
v.push_back("(((((((((((((2,2),2),2),2),2),2),2),2),2),2),2),2),2)");
v.push_back("((((((((((((((2,2),2),2),2),2),2),2),2),2),2),2),2),2),2)");
return v;
}
//---------------------------------------------------------------------------
|