Adapt MergeBubbleVertex to new graph structure. TODO: check if bubble flip and merge all metadata except kmer
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/.txt.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/.txt.crc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/.txt.crc
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-0.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-0.crc
new file mode 100644
index 0000000..95b77c7
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-0.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-1.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-1.crc
new file mode 100644
index 0000000..abcbef3
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-1.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-2.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-2.crc
new file mode 100644
index 0000000..3442925
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-2.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-3.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-3.crc
new file mode 100644
index 0000000..07c5a22
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-3.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-4.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-4.crc
new file mode 100644
index 0000000..0bbcdc7
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-4.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-5.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-5.crc
new file mode 100644
index 0000000..9acb7e8
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-5.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-6.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-6.crc
new file mode 100644
index 0000000..d586ca1
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-6.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-7.crc b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-7.crc
new file mode 100644
index 0000000..8cf5625
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/.part-7.crc
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-0 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-0
new file mode 100755
index 0000000..0e3bb1c
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-1 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-1
new file mode 100755
index 0000000..3dea02e
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-2 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-2
new file mode 100755
index 0000000..0a02ad0
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-3 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-3
new file mode 100755
index 0000000..552db50
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-4 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-4
new file mode 100755
index 0000000..af3baae
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-4
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-5 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-5
new file mode 100755
index 0000000..1e484f5
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-5
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-6 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-6
new file mode 100755
index 0000000..315acfa
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-6
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-7 b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-7
new file mode 100755
index 0000000..af45025
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/bin/part-7
Binary files differ
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/graphviz/result.ps b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/graphviz/result.ps
new file mode 100644
index 0000000..61fa3e4
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/graphviz/result.ps
@@ -0,0 +1,767 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 656 326
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 620 290 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% GAA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 14 moveto
+0 144 lineto
+56 144 lineto
+56 14 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+12 127.4 moveto 32 (GAA) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 118 moveto
+56 118 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+14 101.4 moveto 28 (5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 92 moveto
+56 92 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+8 75.4 moveto 40 (~5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 66 moveto
+56 66 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+16.5 49.4 moveto 23 (1.0) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 40 moveto
+56 40 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+12 23.4 moveto 32 (GAA) alignedtext
+grestore
+% AGA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 140 14 moveto
+140 144 lineto
+196 144 lineto
+196 14 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+152.5 127.4 moveto 31 (AGA) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 140 118 moveto
+196 118 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+154 101.4 moveto 28 (5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 140 92 moveto
+196 92 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+148 75.4 moveto 40 (~5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 140 66 moveto
+196 66 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+156.5 49.4 moveto 23 (1.0) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 140 40 moveto
+196 40 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+152.5 23.4 moveto 31 (AGA) alignedtext
+grestore
+% GAA->AGA
+gsave
+1 setlinewidth
+0 1 1 edgecolor
+newpath 56.33 79 moveto
+77.39 79 106.37 79 129.53 79 curveto
+stroke
+0 1 1 edgecolor
+newpath 129.71 82.5 moveto
+139.71 79 lineto
+129.71 75.5 lineto
+closepath fill
+1 setlinewidth
+solid
+0 1 1 edgecolor
+newpath 129.71 82.5 moveto
+139.71 79 lineto
+129.71 75.5 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+74 84.4 moveto 48 (RR: [1]) alignedtext
+grestore
+% AGA->GAA
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 139.51 62.99 moveto
+133.87 60.51 127.87 58.33 122 57 curveto
+101.2 52.28 94.8 52.28 74 57 curveto
+71.34 57.6 68.65 58.38 65.99 59.28 curveto
+stroke
+0 0 0 edgecolor
+newpath 64.53 56.09 moveto
+56.49 62.99 lineto
+67.08 62.61 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 64.53 56.09 moveto
+56.49 62.99 lineto
+67.08 62.61 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+75.5 62.4 moveto 45 (FF: [1]) alignedtext
+grestore
+% CTA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 556 0 moveto
+556 130 lineto
+612 130 lineto
+612 0 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+570 113.4 moveto 28 (CTA) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 556 104 moveto
+612 104 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+570 87.4 moveto 28 (5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 556 78 moveto
+612 78 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+564 61.4 moveto 40 (~5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 556 52 moveto
+612 52 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+572.5 35.4 moveto 23 (1.0) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 556 26 moveto
+612 26 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+570 9.4 moveto 28 (CTA) alignedtext
+grestore
+% AGA->CTA
+gsave
+1 setlinewidth
+0.33333 1 1 edgecolor
+newpath 196.27 78.05 moveto
+269.06 75.6 463.02 69.07 545.75 66.29 curveto
+stroke
+0.33333 1 1 edgecolor
+newpath 546.09 69.78 moveto
+555.97 65.94 lineto
+545.86 62.78 lineto
+closepath fill
+1 setlinewidth
+solid
+0.33333 1 1 edgecolor
+newpath 546.09 69.78 moveto
+555.97 65.94 lineto
+545.86 62.78 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+352 77.4 moveto 46 (RF: [1]) alignedtext
+grestore
+% GTA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 278 91 moveto
+278 221 lineto
+334 221 lineto
+334 91 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+291.5 204.4 moveto 29 (GTA) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 278 195 moveto
+334 195 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+292 178.4 moveto 28 (5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 278 169 moveto
+334 169 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+286 152.4 moveto 40 (~5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 278 143 moveto
+334 143 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+294.5 126.4 moveto 23 (0.0) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 278 117 moveto
+334 117 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+292 100.4 moveto 28 (CTA) alignedtext
+grestore
+% AGA->GTA
+gsave
+1 setlinewidth
+0.33333 1 1 edgecolor
+newpath 196.25 114.72 moveto
+201.7 120.06 207.69 125.08 214 129 curveto
+230.31 139.14 250.6 145.62 267.97 149.69 curveto
+stroke
+0.33333 1 1 edgecolor
+newpath 267.3 153.12 moveto
+277.81 151.81 lineto
+268.78 146.28 lineto
+closepath fill
+1 setlinewidth
+solid
+0.33333 1 1 edgecolor
+newpath 267.3 153.12 moveto
+277.81 151.81 lineto
+268.78 146.28 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+214 152.4 moveto 46 (RF: [0]) alignedtext
+grestore
+% ATA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 416 101 moveto
+416 231 lineto
+472 231 lineto
+472 101 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+430 214.4 moveto 28 (ATA) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 416 205 moveto
+472 205 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+430 188.4 moveto 28 (5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 416 179 moveto
+472 179 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+424 162.4 moveto 40 (~5':[]) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 416 153 moveto
+472 153 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+432.5 136.4 moveto 23 (1.0) alignedtext
+1 setlinewidth
+0 0 0 nodecolor
+newpath 416 127 moveto
+472 127 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+430 110.4 moveto 28 (ATA) alignedtext
+grestore
+% ATA->CTA
+gsave
+1 setlinewidth
+0.66667 1 1 edgecolor
+newpath 472.11 115.15 moveto
+477.4 108.41 483.38 102.09 490 97 curveto
+506.26 84.5 527.71 76.71 546.01 71.95 curveto
+stroke
+0.66667 1 1 edgecolor
+newpath 546.89 75.33 moveto
+555.8 69.6 lineto
+545.26 68.53 lineto
+closepath fill
+1 setlinewidth
+solid
+0.66667 1 1 edgecolor
+newpath 546.89 75.33 moveto
+555.8 69.6 lineto
+545.26 68.53 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+491 102.4 moveto 46 (FR: [1]) alignedtext
+grestore
+% ATA->GTA
+gsave
+1 setlinewidth
+0.66667 1 1 edgecolor
+newpath 415.89 151.63 moveto
+410.11 149.3 403.97 147.24 398 146 curveto
+380.54 142.37 360.94 143.77 344.32 146.51 curveto
+stroke
+0.66667 1 1 edgecolor
+newpath 343.59 143.09 moveto
+334.41 148.36 lineto
+344.88 149.97 lineto
+closepath fill
+1 setlinewidth
+solid
+0.66667 1 1 edgecolor
+newpath 343.59 143.09 moveto
+334.41 148.36 lineto
+344.88 149.97 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+352 151.4 moveto 46 (FR: [0]) alignedtext
+grestore
+% AAT
+gsave
+0 0 0.75294 nodecolor
+newpath 556 152 moveto
+556 282 lineto
+612 282 lineto
+612 152 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 556 152 moveto
+556 282 lineto
+612 282 lineto
+612 152 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+569.5 265.4 moveto 29 (AAT) alignedtext
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 556 256 moveto
+612 256 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+565.5 239.4 moveto 37 (5':[1]) alignedtext
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 556 230 moveto
+612 230 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+564 213.4 moveto 40 (~5':[]) alignedtext
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 556 204 moveto
+612 204 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+572.5 187.4 moveto 23 (1.0) alignedtext
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 556 178 moveto
+612 178 lineto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+569.5 161.4 moveto 29 (AAT) alignedtext
+grestore
+% ATA->AAT
+gsave
+1 setlinewidth
+0 1 1 edgecolor
+newpath 472.23 187.46 moveto
+477.9 191.06 483.97 194.44 490 197 curveto
+507.43 204.39 527.87 209.16 545.23 212.18 curveto
+stroke
+0 1 1 edgecolor
+newpath 545.16 215.71 moveto
+555.59 213.84 lineto
+546.27 208.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0 1 1 edgecolor
+newpath 545.16 215.71 moveto
+555.59 213.84 lineto
+546.27 208.8 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+490 215.4 moveto 48 (RR: [1]) alignedtext
+grestore
+% CTA->AGA
+gsave
+1 setlinewidth
+0.33333 1 1 edgecolor
+newpath 555.99 54.5 moveto
+550.1 52.51 543.88 50.56 538 49 curveto
+457.32 27.61 435.11 15.24 352 23 curveto
+289.86 28.8 271.91 25.73 214 49 curveto
+210.99 50.21 207.97 51.63 205 53.17 curveto
+stroke
+0.33333 1 1 edgecolor
+newpath 203.22 50.16 moveto
+196.25 58.14 lineto
+206.68 56.24 lineto
+closepath fill
+1 setlinewidth
+solid
+0.33333 1 1 edgecolor
+newpath 203.22 50.16 moveto
+196.25 58.14 lineto
+206.68 56.24 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+352 28.4 moveto 46 (RF: [1]) alignedtext
+grestore
+% CTA->ATA
+gsave
+1 setlinewidth
+0.66667 1 1 edgecolor
+newpath 556 98.57 moveto
+550.35 104.4 544.23 110.14 538 115 curveto
+532.87 119 505.2 133.89 481.2 146.56 curveto
+stroke
+0.66667 1 1 edgecolor
+newpath 479.45 143.53 moveto
+472.24 151.28 lineto
+482.72 149.72 lineto
+closepath fill
+1 setlinewidth
+solid
+0.66667 1 1 edgecolor
+newpath 479.45 143.53 moveto
+472.24 151.28 lineto
+482.72 149.72 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+491 146.4 moveto 46 (FR: [1]) alignedtext
+grestore
+% GTA->AGA
+gsave
+1 setlinewidth
+0.33333 1 1 edgecolor
+newpath 277.95 124.85 moveto
+272.36 119.75 266.27 114.88 260 111 curveto
+243.54 100.8 223.39 93.32 206.15 88.17 curveto
+stroke
+0.33333 1 1 edgecolor
+newpath 206.96 84.77 moveto
+196.39 85.41 lineto
+205.06 91.5 lineto
+closepath fill
+1 setlinewidth
+solid
+0.33333 1 1 edgecolor
+newpath 206.96 84.77 moveto
+196.39 85.41 lineto
+205.06 91.5 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+214 116.4 moveto 46 (RF: [1]) alignedtext
+grestore
+% GTA->ATA
+gsave
+1 setlinewidth
+0.66667 1 1 edgecolor
+newpath 334.13 161.58 moveto
+340.01 162.55 346.19 163.43 352 164 curveto
+369.48 165.7 388.91 166.31 405.39 166.45 curveto
+stroke
+0.66667 1 1 edgecolor
+newpath 405.74 169.95 moveto
+415.75 166.48 lineto
+405.76 162.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.66667 1 1 edgecolor
+newpath 405.74 169.95 moveto
+415.75 166.48 lineto
+405.76 162.95 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+352 171.4 moveto 46 (FR: [1]) alignedtext
+grestore
+% AAT->ATA
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 555.86 186.3 moveto
+550.36 181.84 544.33 177.81 538 175 curveto
+520.88 167.4 500.31 164.79 482.78 164.23 curveto
+stroke
+0 0 0 edgecolor
+newpath 482.36 160.73 moveto
+472.32 164.12 lineto
+482.29 167.73 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 482.36 160.73 moveto
+472.32 164.12 lineto
+482.29 167.73 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+491.5 180.4 moveto 45 (FF: [1]) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 656 326
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/txt b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/txt
new file mode 100755
index 0000000..e5b5c58
--- /dev/null
+++ b/genomix/genomix-pregelix/data/TestSet/BubbleMerge/CTA_GTA_FR_RF/txt
@@ -0,0 +1,6 @@
+GAA {[] [] [] [{AGA:[1]}] {5':[], ~5':[]}GAA 1.0x}
+ATA {[] [{CTA:[1]}, {GTA:[0]}] [] [{AAT:[1]}] {5':[], ~5':[]}ATA 1.0x}
+GTA {[] [{ATA:[1]}] [{AGA:[1]}] [] {5':[], ~5':[]}CTA 0.0x}
+CTA {[] [{ATA:[1]}] [{AGA:[1]}] [] {5':[], ~5':[]}CTA 1.0x}
+AGA {[{GAA:[1]}] [] [{CTA:[1]}, {GTA:[0]}] [] {5':[], ~5':[]}AGA 1.0x}
+AAT {[{ATA:[1]}] [] [] [] {5':[(1-0_0)], ~5':[]}AAT 1.0x}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BubbleMergeMessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BubbleMergeMessageWritable.java
index 2650b18..43506bc 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BubbleMergeMessageWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BubbleMergeMessageWritable.java
@@ -3,6 +3,7 @@
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
+import java.util.Comparator;
import edu.uci.ics.genomix.type.NodeWritable;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
@@ -18,6 +19,13 @@
node = new NodeWritable();
}
+ public void set(BubbleMergeMessageWritable msg){
+ this.setSourceVertexId(msg.getSourceVertexId());
+ this.setFlag(msg.getFlag());
+ this.setMajorVertexId(msg.getMajorVertexId());
+ this.setNode(msg.node);
+ }
+
public void reset(){
super.reset();
majorVertexId.reset(0);
@@ -54,4 +62,11 @@
majorVertexId.write(out);
node.write(out);
}
+
+ public static class SortByCoverage implements Comparator<BubbleMergeMessageWritable> {
+ @Override
+ public int compare(BubbleMergeMessageWritable left, BubbleMergeMessageWritable right) {
+ return Float.compare(left.node.getAverageCoverage(), right.node.getAverageCoverage());
+ }
+ }
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
index 07fb389..ab62877 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
@@ -24,6 +24,15 @@
flag = 0;
}
+ @Override
+ public String toString(){
+ StringBuilder sbuilder = new StringBuilder();
+ sbuilder.append('{');
+ sbuilder.append(sourceVertexId.toString());
+ sbuilder.append('}');
+ return sbuilder.toString();
+ }
+
public VKmerBytesWritable getSourceVertexId() {
return sourceVertexId;
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
index 166be51..0b9e58c 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
@@ -8,15 +8,12 @@
import java.util.Map;
import java.util.Set;
-import org.apache.hadoop.io.NullWritable;
-
import edu.uci.ics.genomix.type.VKmerBytesWritable;
import edu.uci.ics.pregelix.api.job.PregelixJob;
import edu.uci.ics.genomix.pregelix.client.Client;
import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
import edu.uci.ics.genomix.pregelix.io.BubbleMergeMessageWritable;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
import edu.uci.ics.genomix.pregelix.type.MessageFlag;
@@ -44,7 +41,7 @@
if (maxIteration < 0)
maxIteration = getContext().getConfiguration().getInt(ITERATIONS, 1000000);
if(dissimilarThreshold == -1)
- dissimilarThreshold = getContext().getConfiguration().getFloat(DISSIMILARITY_THRESHOLD, (float) 0.05);
+ dissimilarThreshold = getContext().getConfiguration().getFloat(DISSIMILARITY_THRESHOLD, (float) 0.5);
if(incomingMsg == null)
incomingMsg = new BubbleMergeMessageWritable();
if(outgoingMsg == null)
@@ -62,21 +59,21 @@
switch(neighborToMeDir){
case MessageFlag.DIR_RF:
case MessageFlag.DIR_RR:
- if(hasNextDest()){
+ if(getVertexValue().hasNextDest()){
outgoingMsg.setMajorVertexId(incomingMsg.getSourceVertexId());
outgoingMsg.setSourceVertexId(getVertexId());
- outgoingMsg.setInternalKmer(getVertexValue().getInternalKmer());
+ outgoingMsg.setNode(getVertexValue().getNode());
destVertexId.setAsCopy(getNextDestVertexId());
sendMsg(destVertexId, outgoingMsg);
}
break;
case MessageFlag.DIR_FF:
case MessageFlag.DIR_FR:
- if(hasPrevDest()){
+ if(getVertexValue().hasPrevDest()){
outgoingMsg.setMajorVertexId(incomingMsg.getSourceVertexId());
outgoingMsg.setSourceVertexId(getVertexId());
- outgoingMsg.setInternalKmer(getVertexValue().getInternalKmer());
- destVertexId.setAsCopy();
+ outgoingMsg.setNode(getVertexValue().getNode());
+ destVertexId.setAsCopy(getPrevDestVertexId());
sendMsg(destVertexId, outgoingMsg);
}
break;
@@ -90,13 +87,13 @@
if(!receivedMsgMap.containsKey(incomingMsg.getMajorVertexId())){
receivedMsgList.clear();
receivedMsgList.add(incomingMsg);
- receivedMsgMap.put(incomingMsg.getMajorVertexId(), (ArrayList<MessageWritable>)receivedMsgList.clone());
+ receivedMsgMap.put(incomingMsg.getMajorVertexId(), (ArrayList<BubbleMergeMessageWritable>)receivedMsgList.clone());
}
else{
receivedMsgList.clear();
receivedMsgList.addAll(receivedMsgMap.get(incomingMsg.getMajorVertexId()));
receivedMsgList.add(incomingMsg);
- receivedMsgMap.put(incomingMsg.getMajorVertexId(), (ArrayList<MessageWritable>)receivedMsgList.clone());
+ receivedMsgMap.put(incomingMsg.getMajorVertexId(), (ArrayList<BubbleMergeMessageWritable>)receivedMsgList.clone());
}
}
}
@@ -104,20 +101,20 @@
public void processSimilarSetToUnchangeSetAndDeletedSet(){
unchangedSet.clear();
deletedSet.clear();
- MessageWritable topCoverageMessage = new MessageWritable();
- MessageWritable tmpMessage = new MessageWritable();
- Iterator<MessageWritable> it;
+ BubbleMergeMessageWritable topCoverageMessage = new BubbleMergeMessageWritable();
+ BubbleMergeMessageWritable tmpMessage = new BubbleMergeMessageWritable();
+ Iterator<BubbleMergeMessageWritable> it;
while(!receivedMsgList.isEmpty()){
it = receivedMsgList.iterator();
topCoverageMessage.set(it.next());
it.remove(); //delete topCoverage node
while(it.hasNext()){
tmpMessage.set(it.next());
- //compute the similarity
+ //compute the similarity TODO take care of if flip
float fracDissimilar = topCoverageMessage.getSourceVertexId().fracDissimilar(tmpMessage.getSourceVertexId());
if(fracDissimilar < dissimilarThreshold){ //If similar with top node, delete this node and put it in deletedSet
//add coverage to top node
- topCoverageMessage.mergeCoverage(tmpMessage);
+ topCoverageMessage.getNode().mergeCoverage(tmpMessage.getNode());
deletedSet.add(tmpMessage);
it.remove();
}
@@ -127,16 +124,16 @@
}
public void processUnchangedSet(){
- for(MessageWritable msg : unchangedSet){
+ for(BubbleMergeMessageWritable msg : unchangedSet){
outFlag = MessageFlag.UNCHANGE;
outgoingMsg.setFlag(outFlag);
- outgoingMsg.setAverageCoverage(msg.getAverageCoverage());
+ outgoingMsg.setNode(msg.getNode());
sendMsg(msg.getSourceVertexId(), outgoingMsg);
}
}
public void processDeletedSet(){
- for(MessageWritable msg : deletedSet){
+ for(BubbleMergeMessageWritable msg : deletedSet){
outFlag = MessageFlag.KILL;
outgoingMsg.setFlag(outFlag);
sendMsg(msg.getSourceVertexId(), outgoingMsg);
@@ -163,10 +160,9 @@
/** aggregate bubble nodes and grouped by major vertex **/
aggregateBubbleNodesByMajorNode(msgIterator);
-
for(VKmerBytesWritable prevId : receivedMsgMap.keySet()){
if(receivedMsgList.size() > 1){ // filter bubble
- /** for each startVertex, sort the node by decreasing order of coverage **/
+ /** for each majorVertex, sort the node by decreasing order of coverage **/
receivedMsgList = receivedMsgMap.get(prevId);
Collections.sort(receivedMsgList, new BubbleMergeMessageWritable.SortByCoverage());
@@ -185,7 +181,7 @@
broadcaseKillself();
} else if(incomingMsg.getFlag() == MessageFlag.UNCHANGE){
/** update average coverage **/
- getVertexValue().setAvgCoverage(incomingMsg.getAverageCoverage());
+ getVertexValue().setAvgCoverage(incomingMsg.getNode().getAverageCoverage());
}
}
} else if(getSuperstep() == 5){
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BubbleMergeSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BubbleMergeSmallTestSuite.java
deleted file mode 100644
index eb8e268..0000000
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BubbleMergeSmallTestSuite.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.genomix.pregelix.JobRun;
-
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Logger;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.pregelix.core.jobgen.clusterconfig.ClusterConfig;
-import edu.uci.ics.pregelix.core.util.PregelixHyracksIntegrationUtil;
-
-@SuppressWarnings("deprecation")
-public class BubbleMergeSmallTestSuite extends TestSuite {
- private static final Logger LOGGER = Logger.getLogger(BubbleMergeSmallTestSuite.class.getName());
-
- public static final String PreFix = "data/actual/bubbleadd/BubbleAddGraph/bin";
- public static final String[] TestDir = { PreFix + File.separator
- + "5"};
- private static final String ACTUAL_RESULT_DIR = "data/actual/bubblemerge";
- private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
- private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
- private static final String PATH_TO_CLUSTER_PROPERTIES = "src/test/resources/cluster/cluster.properties";
- private static final String PATH_TO_JOBS = "src/test/resources/jobs/";
- private static final String PATH_TO_ONLY = "src/test/resources/only_bubblemerge.txt";
-
- public static final String HDFS_INPUTPATH = "/PathTestSet";
-
- private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR + File.separator + "conf.xml";
- private MiniDFSCluster dfsCluster;
-
- private JobConf conf = new JobConf();
- private int numberOfNC = 2;
-
- public void setUp() throws Exception {
- ClusterConfig.setStorePath(PATH_TO_CLUSTER_STORE);
- ClusterConfig.setClusterPropertiesPath(PATH_TO_CLUSTER_PROPERTIES);
- cleanupStores();
- PregelixHyracksIntegrationUtil.init();
- LOGGER.info("Hyracks mini-cluster started");
- FileUtils.forceMkdir(new File(ACTUAL_RESULT_DIR));
- FileUtils.cleanDirectory(new File(ACTUAL_RESULT_DIR));
- startHDFS();
- }
-
- private void startHDFS() throws IOException {
- conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
- conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
- conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
- FileSystem lfs = FileSystem.getLocal(new Configuration());
- lfs.delete(new Path("build"), true);
- System.setProperty("hadoop.log.dir", "logs");
- dfsCluster = new MiniDFSCluster(conf, numberOfNC, true, null);
- FileSystem dfs = FileSystem.get(conf);
-
- for (String testDir : TestDir) {
- File src = new File(testDir);
- Path dest = new Path(HDFS_INPUTPATH + File.separator + src.getName());
- dfs.mkdirs(dest);
- //src.listFiles()
- //src.listFiles((FilenameFilter)(new WildcardFileFilter("part*")))
- for (File f : src.listFiles()) {
- dfs.copyFromLocalFile(new Path(f.getAbsolutePath()), dest);
- }
- }
-
- DataOutputStream confOutput = new DataOutputStream(new FileOutputStream(new File(HADOOP_CONF_PATH)));
- conf.writeXml(confOutput);
- confOutput.flush();
- confOutput.close();
- }
-
- private void cleanupStores() throws IOException {
- FileUtils.forceMkdir(new File("teststore"));
- FileUtils.forceMkdir(new File("build"));
- FileUtils.cleanDirectory(new File("teststore"));
- FileUtils.cleanDirectory(new File("build"));
- }
-
- /**
- * cleanup hdfs cluster
- */
- private void cleanupHDFS() throws Exception {
- dfsCluster.shutdown();
- }
-
- public void tearDown() throws Exception {
- PregelixHyracksIntegrationUtil.deinit();
- LOGGER.info("Hyracks mini-cluster shut down");
- cleanupHDFS();
- }
-
- public static Test suite() throws Exception {
- List<String> onlys = getFileList(PATH_TO_ONLY);
- File testData = new File(PATH_TO_JOBS);
- File[] queries = testData.listFiles();
- BubbleMergeSmallTestSuite testSuite = new BubbleMergeSmallTestSuite();
- testSuite.setUp();
- boolean onlyEnabled = false;
- FileSystem dfs = FileSystem.get(testSuite.conf);
-
- if (onlys.size() > 0) {
- onlyEnabled = true;
- }
-
- for (File qFile : queries) {
- if (qFile.isFile()) {
- if (onlyEnabled && !isInList(onlys, qFile.getName())) {
- continue;
- } else {
- for (String testPathStr : TestDir) {
- File testDir = new File(testPathStr);
- String resultFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
- + File.separator + "bin" + File.separator + testDir.getName();
- String textFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
- + File.separator + "txt" + File.separator + testDir.getName();
- String graphvizFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
- + File.separator + "graphviz" + File.separator + testDir.getName();
- testSuite.addTest(new BasicSmallTestCase(HADOOP_CONF_PATH, qFile.getName(), qFile
- .getAbsolutePath().toString(), dfs,
- HDFS_INPUTPATH + File.separator + testDir.getName(), resultFileName, textFileName, graphvizFileName));
- }
- }
- }
- }
- return testSuite;
- }
-
- /**
- * Runs the tests and collects their result in a TestResult.
- */
- @Override
- public void run(TestResult result) {
- try {
- int testCount = countTestCases();
- for (int i = 0; i < testCount; i++) {
- // cleanupStores();
- Test each = this.testAt(i);
- if (result.shouldStop())
- break;
- runTest(each, result);
- }
- tearDown();
- } catch (Exception e) {
- throw new IllegalStateException(e);
- }
- }
-
- protected static List<String> getFileList(String ignorePath) throws FileNotFoundException, IOException {
- BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
- String s = null;
- List<String> ignores = new ArrayList<String>();
- while ((s = reader.readLine()) != null) {
- ignores.add(s);
- }
- reader.close();
- return ignores;
- }
-
- private static String jobExtToResExt(String fname) {
- int dot = fname.lastIndexOf('.');
- return fname.substring(0, dot);
- }
-
- private static boolean isInList(List<String> onlys, String name) {
- for (String only : onlys)
- if (name.indexOf(only) >= 0)
- return true;
- return false;
- }
-
-}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BubbleMergeTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BubbleMergeTestSuite.java
new file mode 100644
index 0000000..f0f4b91
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BubbleMergeTestSuite.java
@@ -0,0 +1,14 @@
+package edu.uci.ics.genomix.pregelix.JobRun;
+
+import junit.framework.Test;
+
+public class BubbleMergeTestSuite extends BasicGraphCleanTestSuite{
+
+ public static Test suite() throws Exception {
+ String pattern ="BubbleMerge";
+ String testSet[] = {"CTA_GTA_FR_RF"};
+ init(pattern, testSet);
+ BasicGraphCleanTestSuite testSuite = new BasicGraphCleanTestSuite();
+ return makeTestSuite(testSuite);
+ }
+}