Next version of JABA
[jabaws.git] / binaries / src / muscle / subfams.cpp
1 #include "muscle.h"\r
2 #include "distfunc.h"\r
3 \r
4 const float INFINITY = float(1e29);\r
5 const unsigned NILL = uInsane;\r
6 \r
7 static float *ShortestPathEstimate;\r
8 static unsigned *Predecessor;\r
9 \r
10 static void GetMostDistantPair(DistFunc &DF, unsigned *ptrIndex1, unsigned *ptrIndex2)\r
11         {\r
12         const unsigned uNodeCount = DF.GetCount();\r
13         if (uNodeCount < 2)\r
14                 Quit("GetMostDistantPair: < 2 seqs");\r
15 \r
16         float MaxDist = -1; \r
17         unsigned Index1 = uInsane;\r
18         unsigned Index2 = uInsane;\r
19         for (unsigned i = 0; i < uNodeCount; ++i)\r
20                 {\r
21                 for (unsigned j = i + 1; j < uNodeCount; ++j)\r
22                         {\r
23                         float d = DF.GetDist(i, j);\r
24                         if (d > MaxDist)\r
25                                 {\r
26                                 MaxDist = d;\r
27                                 Index1 = i;\r
28                                 Index2 = j;\r
29                                 }\r
30                         }\r
31                 }\r
32 \r
33         assert(Index1 != uInsane);\r
34         assert(Index2 != uInsane);\r
35 \r
36         *ptrIndex1 = Index1;\r
37         *ptrIndex2 = Index2;\r
38         }\r
39 \r
40 static void InitializeSingleSource(DistFunc &DF, unsigned uIndex)\r
41         {\r
42         const unsigned uNodeCount = 0;\r
43 \r
44         for (unsigned i = 0; i < uNodeCount; ++i)\r
45                 {\r
46                 ShortestPathEstimate[i] = INFINITY;\r
47                 Predecessor[i] = NILL;\r
48                 }\r
49         ShortestPathEstimate[uIndex] = 0;\r
50         }\r
51 \r
52 static void Relax(DistFunc &DF, unsigned u, unsigned v)\r
53         {\r
54         float w = DF.GetDist(u, v);\r
55         float d = ShortestPathEstimate[u] + w;\r
56         if (ShortestPathEstimate[v] > d)\r
57                 {\r
58                 ShortestPathEstimate[v] = d;\r
59                 Predecessor[v] = u;\r
60                 }\r
61         }\r
62 \r
63 void ShortestPath(DistFunc &DF, unsigned uIndex)\r
64         {\r
65         }\r