<
b?
a:
b;
129 for(
int i=0;
i<nnodes; ++
i) {
156 if(idmin == jdmin) {
157cerr <<
"Error: You cannot join node "<< idmin <<
" to itself.\n";
161 if(idmin < 0 || idmin > maxIndex || jdmin < 0 || jdmin > maxIndex || m_nextNode < 0 || m_nextNode > maxIndex+1) {
165cerr <<
"Warning: Out of range index in Join: "<< idmin <<
" " 166<< jdmin <<
" "<<
m_nextNode<<
" Max allowed index: "<< maxIndex << endl;
180 while(tmpi == idmin || tmpi == jdmin) {
185cit->distance = tmpd;
189tmpi = -(idmin+jdmin);
190cerr <<
"Error: iterator found (id= "<< cit->rowID <<
") not attached to hub.\n";
193 m_items[tmpi]->distance = tmpd;
199cit->distance = tmpd;
201tmpi = -(idmin+jdmin);
202cerr <<
"Error: iterator found (id= "<< cit->rowID <<
") not attached to hub for last nodes.\n";
205 m_items[tmpi]->distance = tmpd;
210tmpi = (tmpi==idmin) ? jdmin : -(idmin+jdmin);
219 int* indexMap =
new int[
m_nseqs];
221indexMap[
i] =
i+1;
223 for(it=1; it<=
m_nseqs-1; ++it) {
247 intimin = 0, jmin = 0;
252 stringnewickStr =
"";
262}
else if(!
m_dm) {
274 double* internalDistCorrection =
new double[
m_nseqs];
279 int* indexMap =
new int[
m_nseqs]{ 0 };
283 if(indexMap == 0 || internalDistCorrection == 0) {
289indexMap[
i] =
i+1;
290internalDistCorrection[
i] = 0.0;
299ppDists =
new double*[
m_nseqs];
301ppDists[
i] =
new double[
m_nseqs];
312 for(
intit=1; it<=
m_nseqs-1; ++it) {
319 for(
i=0;
i<j; ++
i) {
321 if(ppDists[j][
i] < minval) {
322minval = ppDists[j][
i];
332pFunc(
count, total);
334idmin = indexMap[imin];
335jdmin = indexMap[jmin];
345ilen = 0.5*ppDists[imin][jmin] - internalDistCorrection[imin];
346jlen = 0.5*ppDists[imin][jmin] - internalDistCorrection[jmin];
363 Join(idmin, jdmin, ilen, jlen);
365internalDistCorrection[imin] = 0.5*ppDists[imin][jmin];
372ppDists[k][imin] =
myMin(ppDists[k][imin], ppDists[k][jmin]);
373ppDists[k][jmin] = 0.0;
374ppDists[jmin][k] = 0.0;
375ppDists[imin][k] = ppDists[k][imin];
378ppDists[imin][imin] = 0.0;
392 delete[] ppDists[
i];
397 delete[] internalDistCorrection;
double FastGet(const int RowIndex, const int ColIndex) const
static std::string toNestedString(const SeqTree &seqTree)
virtual void ComputeTree(SeqTree *tree, pProgressFunction pFunc)
virtual long GetNumLoopsForTreeCalc()
int numChildren(const TSeqIt &sit)
static const DistanceMatrix::TMatType INIT_MINIMA
static const ETreeMethod MY_TREE_METHOD
vector< SeqItem * > m_items
static const double REPLACE_NEG_DIST
virtual ~SLC_TreeAlgorithm()
static const int BAD_INDEX
virtual void SetDistMat(DistanceMatrix *dm)
static const Rootedness MY_ROOTEDNESS
static const int USED_ROW
virtual string toString()
void Join(int inode1, int inode2, double len1, double len2)
void midpointRootIfNeeded()
iter append_child(iter position)
pre_order_iterator begin() const
iter insert(iter position, const T &x)
unsigned int number_of_children(const iterator_base &) const
iter reparent(iter position, sibling_iterator begin, sibling_iterator end)
void(* pProgressFunction)(int Num, int Total)
double myMin(double a, double b)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4