source: trunk/GDE/MUSCLE/src/subfams.cpp

Last change on this file was 18607, checked in by westram, 4 years ago
File size: 1.4 KB
Line 
1#include "muscle.h"
2#include "distfunc.h"
3
4const float FAR_AWAY_DISTANCE = float(1e29); // fixed by arb (old name was: INFINITY; clashed with math.h on OSX)
5const unsigned NILL = uInsane;
6
7static float *ShortestPathEstimate;
8static unsigned *Predecessor;
9
10static void GetMostDistantPair(DistFunc &DF, unsigned *ptrIndex1, unsigned *ptrIndex2)
11        {
12        const unsigned uNodeCount = DF.GetCount();
13        if (uNodeCount < 2)
14                Quit("GetMostDistantPair: < 2 seqs");
15
16        float MaxDist = -1; 
17        unsigned Index1 = uInsane;
18        unsigned Index2 = uInsane;
19        for (unsigned i = 0; i < uNodeCount; ++i)
20                {
21                for (unsigned j = i + 1; j < uNodeCount; ++j)
22                        {
23                        float d = DF.GetDist(i, j);
24                        if (d > MaxDist)
25                                {
26                                MaxDist = d;
27                                Index1 = i;
28                                Index2 = j;
29                                }
30                        }
31                }
32
33        assert(Index1 != uInsane);
34        assert(Index2 != uInsane);
35
36        *ptrIndex1 = Index1;
37        *ptrIndex2 = Index2;
38        }
39
40static void InitializeSingleSource(DistFunc &DF, unsigned uIndex)
41        {
42        const unsigned uNodeCount = 0;
43
44        for (unsigned i = 0; i < uNodeCount; ++i)
45                {
46                ShortestPathEstimate[i] = FAR_AWAY_DISTANCE;
47                Predecessor[i] = NILL;
48                }
49        ShortestPathEstimate[uIndex] = 0;
50        }
51
52static void Relax(DistFunc &DF, unsigned u, unsigned v)
53        {
54        float w = DF.GetDist(u, v);
55        float d = ShortestPathEstimate[u] + w;
56        if (ShortestPathEstimate[v] > d)
57                {
58                ShortestPathEstimate[v] = d;
59                Predecessor[v] = u;
60                }
61        }
62
63void ShortestPath(DistFunc &DF, unsigned uIndex)
64        {
65        }
Note: See TracBrowser for help on using the repository browser.