go-hep.org/x/hep@v0.38.1/groot/rarrow/rarrow_example_test.go (about) 1 // Copyright ©2019 The go-hep Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package rarrow_test 6 7 import ( 8 "fmt" 9 "log" 10 11 "go-hep.org/x/hep/groot" 12 "go-hep.org/x/hep/groot/rarrow" 13 "go-hep.org/x/hep/groot/riofs" 14 "go-hep.org/x/hep/groot/rtree" 15 ) 16 17 func ExampleRecordReader() { 18 f, err := groot.Open("../testdata/simple.root") 19 if err != nil { 20 log.Fatal(err) 21 } 22 defer f.Close() 23 24 o, err := riofs.Dir(f).Get("tree") 25 if err != nil { 26 log.Fatal(err) 27 } 28 29 tree := o.(rtree.Tree) 30 31 rr := rarrow.NewRecordReader(tree) 32 defer rr.Release() 33 34 recs := 0 35 for rr.Next() { 36 rec := rr.Record() 37 for i, col := range rec.Columns() { 38 fmt.Printf("rec[%d][%s]: %v\n", recs, rec.Schema().Field(i).Name, col) 39 } 40 recs++ 41 } 42 43 // Output: 44 // rec[0][one]: [1] 45 // rec[0][two]: [1.1] 46 // rec[0][three]: ["uno"] 47 // rec[1][one]: [2] 48 // rec[1][two]: [2.2] 49 // rec[1][three]: ["dos"] 50 // rec[2][one]: [3] 51 // rec[2][two]: [3.3] 52 // rec[2][three]: ["tres"] 53 // rec[3][one]: [4] 54 // rec[3][two]: [4.4] 55 // rec[3][three]: ["quatro"] 56 } 57 58 func ExampleRecordReader_withChunk() { 59 f, err := groot.Open("../testdata/simple.root") 60 if err != nil { 61 log.Fatal(err) 62 } 63 defer f.Close() 64 65 o, err := riofs.Dir(f).Get("tree") 66 if err != nil { 67 log.Fatal(err) 68 } 69 70 tree := o.(rtree.Tree) 71 72 rr := rarrow.NewRecordReader(tree, rarrow.WithChunk(3)) 73 defer rr.Release() 74 75 recs := 0 76 for rr.Next() { 77 rec := rr.Record() 78 for i, col := range rec.Columns() { 79 fmt.Printf("rec[%d][%s]: %v\n", recs, rec.Schema().Field(i).Name, col) 80 } 81 recs++ 82 } 83 84 // Output: 85 // rec[0][one]: [1 2 3] 86 // rec[0][two]: [1.1 2.2 3.3] 87 // rec[0][three]: ["uno" "dos" "tres"] 88 // rec[1][one]: [4] 89 // rec[1][two]: [4.4] 90 // rec[1][three]: ["quatro"] 91 } 92 93 func ExampleRecordReader_allTree() { 94 f, err := groot.Open("../testdata/simple.root") 95 if err != nil { 96 log.Fatal(err) 97 } 98 defer f.Close() 99 100 o, err := riofs.Dir(f).Get("tree") 101 if err != nil { 102 log.Fatal(err) 103 } 104 105 tree := o.(rtree.Tree) 106 107 rr := rarrow.NewRecordReader(tree, rarrow.WithChunk(-1)) 108 defer rr.Release() 109 110 recs := 0 111 for rr.Next() { 112 rec := rr.Record() 113 for i, col := range rec.Columns() { 114 fmt.Printf("rec[%d][%s]: %v\n", recs, rec.Schema().Field(i).Name, col) 115 } 116 recs++ 117 } 118 119 // Output: 120 // rec[0][one]: [1 2 3 4] 121 // rec[0][two]: [1.1 2.2 3.3 4.4] 122 // rec[0][three]: ["uno" "dos" "tres" "quatro"] 123 } 124 125 func ExampleRecordReader_withStart() { 126 f, err := groot.Open("../testdata/simple.root") 127 if err != nil { 128 log.Fatal(err) 129 } 130 defer f.Close() 131 132 o, err := riofs.Dir(f).Get("tree") 133 if err != nil { 134 log.Fatal(err) 135 } 136 137 tree := o.(rtree.Tree) 138 139 rr := rarrow.NewRecordReader(tree, rarrow.WithStart(1)) 140 defer rr.Release() 141 142 recs := 0 143 for rr.Next() { 144 rec := rr.Record() 145 for i, col := range rec.Columns() { 146 fmt.Printf("rec[%d][%s]: %v\n", recs, rec.Schema().Field(i).Name, col) 147 } 148 recs++ 149 } 150 151 // Output: 152 // rec[0][one]: [2] 153 // rec[0][two]: [2.2] 154 // rec[0][three]: ["dos"] 155 // rec[1][one]: [3] 156 // rec[1][two]: [3.3] 157 // rec[1][three]: ["tres"] 158 // rec[2][one]: [4] 159 // rec[2][two]: [4.4] 160 // rec[2][three]: ["quatro"] 161 } 162 163 func ExampleRecordReader_withEnd() { 164 f, err := groot.Open("../testdata/simple.root") 165 if err != nil { 166 log.Fatal(err) 167 } 168 defer f.Close() 169 170 o, err := riofs.Dir(f).Get("tree") 171 if err != nil { 172 log.Fatal(err) 173 } 174 175 tree := o.(rtree.Tree) 176 177 rr := rarrow.NewRecordReader(tree, rarrow.WithEnd(2)) 178 defer rr.Release() 179 180 recs := 0 181 for rr.Next() { 182 rec := rr.Record() 183 for i, col := range rec.Columns() { 184 fmt.Printf("rec[%d][%s]: %v\n", recs, rec.Schema().Field(i).Name, col) 185 } 186 recs++ 187 } 188 189 // Output: 190 // rec[0][one]: [1] 191 // rec[0][two]: [1.1] 192 // rec[0][three]: ["uno"] 193 // rec[1][one]: [2] 194 // rec[1][two]: [2.2] 195 // rec[1][three]: ["dos"] 196 } 197 198 func ExampleRecordReader_withStartEnd() { 199 f, err := groot.Open("../testdata/simple.root") 200 if err != nil { 201 log.Fatal(err) 202 } 203 defer f.Close() 204 205 o, err := riofs.Dir(f).Get("tree") 206 if err != nil { 207 log.Fatal(err) 208 } 209 210 tree := o.(rtree.Tree) 211 212 rr := rarrow.NewRecordReader(tree, rarrow.WithStart(1), rarrow.WithEnd(2)) 213 defer rr.Release() 214 215 recs := 0 216 for rr.Next() { 217 rec := rr.Record() 218 for i, col := range rec.Columns() { 219 fmt.Printf("rec[%d][%s]: %v\n", recs, rec.Schema().Field(i).Name, col) 220 } 221 recs++ 222 } 223 224 // Output: 225 // rec[0][one]: [2] 226 // rec[0][two]: [2.2] 227 // rec[0][three]: ["dos"] 228 } 229 230 func ExampleRecordReader_withChain() { 231 chain, closer, err := rtree.ChainOf("tree", "../testdata/chain.1.root", "../testdata/chain.2.root") 232 if err != nil { 233 log.Fatal(err) 234 } 235 defer func() { 236 err = closer() 237 if err != nil { 238 log.Fatalf("could not close chain: %+v", err) 239 } 240 }() 241 242 rr := rarrow.NewRecordReader(chain, rarrow.WithStart(10), rarrow.WithEnd(20)) 243 defer rr.Release() 244 245 recs := 0 246 for rr.Next() { 247 rec := rr.Record() 248 for i, col := range rec.Columns() { 249 fmt.Printf("rec[%d][%s]: %v\n", recs, rec.Schema().Field(i).Name, col) 250 } 251 recs++ 252 } 253 254 // Output: 255 // rec[0][evt]: {["beg-010"] [10] [[10 10 10 10 10 10 10 10 10 10]] [0] [[]] ["std-010"] [[]] [[]] ["end-010"]} 256 // rec[1][evt]: {["beg-011"] [11] [[11 11 11 11 11 11 11 11 11 11]] [1] [[11]] ["std-011"] [[11]] [["vec-011"]] ["end-011"]} 257 // rec[2][evt]: {["beg-012"] [12] [[12 12 12 12 12 12 12 12 12 12]] [2] [[12 12]] ["std-012"] [[12 12]] [["vec-012" "vec-012"]] ["end-012"]} 258 // rec[3][evt]: {["beg-013"] [13] [[13 13 13 13 13 13 13 13 13 13]] [3] [[13 13 13]] ["std-013"] [[13 13 13]] [["vec-013" "vec-013" "vec-013"]] ["end-013"]} 259 // rec[4][evt]: {["beg-014"] [14] [[14 14 14 14 14 14 14 14 14 14]] [4] [[14 14 14 14]] ["std-014"] [[14 14 14 14]] [["vec-014" "vec-014" "vec-014" "vec-014"]] ["end-014"]} 260 // rec[5][evt]: {["beg-015"] [15] [[15 15 15 15 15 15 15 15 15 15]] [5] [[15 15 15 15 15]] ["std-015"] [[15 15 15 15 15]] [["vec-015" "vec-015" "vec-015" "vec-015" "vec-015"]] ["end-015"]} 261 // rec[6][evt]: {["beg-016"] [16] [[16 16 16 16 16 16 16 16 16 16]] [6] [[16 16 16 16 16 16]] ["std-016"] [[16 16 16 16 16 16]] [["vec-016" "vec-016" "vec-016" "vec-016" "vec-016" "vec-016"]] ["end-016"]} 262 // rec[7][evt]: {["beg-017"] [17] [[17 17 17 17 17 17 17 17 17 17]] [7] [[17 17 17 17 17 17 17]] ["std-017"] [[17 17 17 17 17 17 17]] [["vec-017" "vec-017" "vec-017" "vec-017" "vec-017" "vec-017" "vec-017"]] ["end-017"]} 263 // rec[8][evt]: {["beg-018"] [18] [[18 18 18 18 18 18 18 18 18 18]] [8] [[18 18 18 18 18 18 18 18]] ["std-018"] [[18 18 18 18 18 18 18 18]] [["vec-018" "vec-018" "vec-018" "vec-018" "vec-018" "vec-018" "vec-018" "vec-018"]] ["end-018"]} 264 // rec[9][evt]: {["beg-019"] [19] [[19 19 19 19 19 19 19 19 19 19]] [9] [[19 19 19 19 19 19 19 19 19]] ["std-019"] [[19 19 19 19 19 19 19 19 19]] [["vec-019" "vec-019" "vec-019" "vec-019" "vec-019" "vec-019" "vec-019" "vec-019" "vec-019"]] ["end-019"]} 265 }