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  }