github.com/vertgenlab/gonomics@v1.0.0/genomeGraph/sort_test.go (about) 1 package genomeGraph 2 3 import ( 4 "testing" 5 6 "github.com/vertgenlab/gonomics/dna" 7 "github.com/vertgenlab/gonomics/dna/dnaTwoBit" 8 ) 9 10 func TestGetSortOrder(t *testing.T) { 11 graph := MakeTestGraph() 12 13 // Just getting two sets of the same nodes to make sure they will separate 14 nodesToSort := append(graph.Nodes) 15 order := breadthFirstSearch(nodesToSort) 16 17 correctOrder := []uint32{0, 1, 2, 3, 4} 18 19 for i := 0; i < len(order); i++ { 20 if order[i] == correctOrder[i] { 21 continue 22 } 23 t.Errorf("Error: Problem with graph sort \n Expected Order : %v \n Received Order : %v", correctOrder, order) 24 } 25 26 var discontiguousGraph *GenomeGraph = MakeDisContigTestGraph() 27 brokenGraph := BreakNonContiguousGraph(discontiguousGraph.Nodes) 28 if len(brokenGraph) != 2 { 29 t.Errorf("ERROR: Problem with breaking up discontigous graph into subgraphs") 30 } 31 } 32 33 // TestGraph Structure 34 // 35 // n2 e0 = 1 36 // e1 \e2 37 // e0 e3 \ e2 = 1 38 // n0 --- n1 n4 39 // / 40 // e4 /e5 e5 = 1 41 // n3 42 // 43 // A 44 // \ 45 // \ 46 // ATG --- CG TAA 47 // / 48 // / 49 // T 50 func MakeDisContigTestGraph() *GenomeGraph { 51 graph := EmptyGraph() 52 53 var n0, n1, n2, n3, n4 Node 54 var f0, f2, f5, r0, r2, r5 Edge 55 56 // Make Nodes 57 n0 = Node{ 58 Id: 0, 59 Seq: dna.StringToBases("ATG")} 60 61 n1 = Node{ 62 Id: 1, 63 Seq: dna.StringToBases("CG")} 64 65 n2 = Node{ 66 Id: 2, 67 Seq: dna.StringToBases("A")} 68 69 n3 = Node{ 70 Id: 3, 71 Seq: dna.StringToBases("T")} 72 73 n4 = Node{ 74 Id: 4, 75 Seq: dna.StringToBases("TAA")} 76 77 // Make Edges 78 f0 = Edge{ 79 Dest: &n1, 80 Prob: 1} 81 82 f2 = Edge{ 83 Dest: &n4, 84 Prob: 1} 85 86 f5 = Edge{ 87 Dest: &n4, 88 Prob: 1} 89 90 r0 = Edge{ 91 Dest: &n0, 92 Prob: 1} 93 94 r2 = Edge{ 95 Dest: &n2, 96 Prob: 1} 97 98 r5 = Edge{ 99 Dest: &n3, 100 Prob: 1} 101 102 // Define Paths 103 n0.Next = append(n0.Next, f0) 104 n1.Prev = append(n1.Prev, r0) 105 n2.Next = append(n2.Next, f2) 106 n3.Next = append(n3.Next, f5) 107 n4.Prev = append(n4.Prev, r2, r5) 108 109 graph.Nodes = append(graph.Nodes, n0, n1, n2, n3, n4) 110 111 for i := 0; i < len(graph.Nodes); i++ { 112 graph.Nodes[i].SeqTwoBit = dnaTwoBit.NewTwoBit(graph.Nodes[i].Seq) 113 } 114 115 return graph 116 }