scaffoldStarts

Get a range of ContigNodes where full contig walks should start.

scaffoldStarts
(
T
)
(
,
Scaffold!T.IncidentEdgesCache incidentEdgesCache = Scaffold!T.IncidentEdgesCache.init
)

Examples

1 alias Payload = int;
2 alias J = Join!Payload;
3 alias S = Scaffold!Payload;
4 alias CN = ContigNode;
5 alias CP = ContigPart;
6 //   contig 1      contig 2
7 //
8 //  o        o     o        o
9 //                         / e4
10 //    o -- o ------- o -- o
11 //              e3
12 //
13 //    o -- o         o -- o         o -- o
14 //                         \ e7 e8 /      \ e9
15 //  o        o     o        o     o        o
16 //
17 //   contig 5       contig 4      contig 3
18 //
19 auto scaffold1 = buildScaffold!(sumPayloads!Payload, Payload)(5, [
20     J(CN(1, CP.end), CN(2, CP.begin), 1), // e3
21     J(CN(2, CP.end), CN(2, CP.post ), 1), // e4
22     J(CN(4, CP.end), CN(4, CP.post ), 1), // e7
23     J(CN(3, CP.pre), CN(3, CP.begin), 1), // e8
24     J(CN(3, CP.end), CN(3, CP.post ), 1), // e9
25 ]);
26 
27 assert(equal(scaffoldStarts!Payload(scaffold1), [
28     CN(1, CP.begin),
29     CN(3, CP.pre),
30     CN(4, CP.begin),
31     CN(5, CP.begin),
32 ]));
33 
34 //   contig 1      contig 2
35 //
36 //  o        o     o        o
37 //
38 //              e1
39 //    o -- o ------- o -- o
40 //     \_________________/
41 //              e2
42 //
43 auto scaffold2 = buildScaffold!(sumPayloads!Payload, Payload)(2, [
44     J(CN(1, CP.end), CN(2, CP.begin), 1), // e1
45     J(CN(2, CP.end), CN(1, CP.begin ), 1), // e2
46 ]);
47 
48 assert(equal(scaffoldStarts!Payload(scaffold2), [
49     CN(1, CP.begin),
50 ]));

Meta