-
Notifications
You must be signed in to change notification settings - Fork 82
/
ScaffoldWalk.h
63 lines (49 loc) · 1.97 KB
/
ScaffoldWalk.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//-----------------------------------------------
// Copyright 2010 Wellcome Trust Sanger Institute
// Written by Jared Simpson (js18@sanger.ac.uk)
// Released under the GPL
//-----------------------------------------------
//
// ScaffoldWalk - a walk through a scaffold graph
//
#ifndef SCAFFOLDWALK_H
#define SCAFFOLDWALK_H
#include <vector>
#include "ScaffoldEdge.h"
typedef std::vector<ScaffoldEdge*> ScaffoldEdgePtrVector;
typedef std::vector<ScaffoldVertex*> ScaffoldVertexPtrVector;
// A walk through the scaffold graph
class ScaffoldWalk
{
public:
ScaffoldWalk(ScaffoldVertex* pStartVertex);
void addEdge(ScaffoldEdge* pEdge);
// Find the index of the first instance of pvertex in the walk
// if pvertex is not found, returns -1
int findVertex(ScaffoldVertex* pVertex) const;
// Find the orientation of the vertex with respect
// to the beginning of the walk. This function assumes
// pVertex is in the walk.
EdgeComp findOrientation(ScaffoldVertex* pVertex) const;
// Returns all the ordered list of vertices in the walk
ScaffoldVertexPtrVector getVertices() const;
ScaffoldEdgePtrVector getEdges() const;
// returns the sum of the gaps plus contig lengths from
// the starting vertex to pVertex.
// Precondition: pVertex is required to be in the walk
int getDistanceToVertex(ScaffoldVertex* pVertex) const;
// Returns the sum of gap distances in the walk
int64_t getGapSum() const;
// Returns the sum of contig lengths
int64_t getContigLengthSum() const;
// Return the last vertex in the walk
ScaffoldVertex* getStartVertex() const;
ScaffoldVertex* getLastVertex() const;
void print() const;
void printDot(std::ostream& out) const;
private:
ScaffoldVertex* m_pStartVertex;
ScaffoldEdgePtrVector m_edges;
};
typedef std::vector<ScaffoldWalk> ScaffoldWalkVector;
#endif