@@ -518,6 +518,7 @@ pub struct StatsBuilder<H: Hamiltonian, A: AdaptStrategy> {
518
518
gradient : Option < MutableFixedSizeListArray < MutablePrimitiveArray < f64 > > > ,
519
519
hamiltonian : <H :: Stats as ArrowRow >:: Builder ,
520
520
adapt : <A :: Stats as ArrowRow >:: Builder ,
521
+ diverging : MutableBooleanArray ,
521
522
}
522
523
523
524
#[ cfg( feature = "arrow" ) ]
@@ -555,6 +556,7 @@ impl<H: Hamiltonian, A: AdaptStrategy> StatsBuilder<H, A> {
555
556
unconstrained,
556
557
hamiltonian : <H :: Stats as ArrowRow >:: new_builder ( dim, settings) ,
557
558
adapt : <A :: Stats as ArrowRow >:: new_builder ( dim, settings) ,
559
+ diverging : MutableBooleanArray :: with_capacity ( capacity) ,
558
560
}
559
561
}
560
562
}
@@ -571,6 +573,7 @@ impl<H: Hamiltonian, A: AdaptStrategy> ArrowBuilder<NutsSampleStats<H::Stats, A:
571
573
self . energy . push ( Some ( value. energy ) ) ;
572
574
self . chain . push ( Some ( value. chain ) ) ;
573
575
self . draw . push ( Some ( value. draw ) ) ;
576
+ self . diverging . push ( Some ( value. divergence_info ( ) . is_some ( ) ) ) ;
574
577
575
578
if let Some ( store) = self . gradient . as_mut ( ) {
576
579
store
@@ -607,6 +610,7 @@ impl<H: Hamiltonian, A: AdaptStrategy> ArrowBuilder<NutsSampleStats<H::Stats, A:
607
610
Field :: new( "energy" , DataType :: Float64 , false ) ,
608
611
Field :: new( "chain" , DataType :: UInt64 , false ) ,
609
612
Field :: new( "draw" , DataType :: UInt64 , false ) ,
613
+ Field :: new( "diverging" , DataType :: Boolean , false ) ,
610
614
] ;
611
615
612
616
let mut arrays = vec ! [
@@ -617,6 +621,7 @@ impl<H: Hamiltonian, A: AdaptStrategy> ArrowBuilder<NutsSampleStats<H::Stats, A:
617
621
self . energy. as_box( ) ,
618
622
self . chain. as_box( ) ,
619
623
self . draw. as_box( ) ,
624
+ self . diverging. as_box( ) ,
620
625
] ;
621
626
622
627
if let Some ( hamiltonian) = self . hamiltonian . finalize ( ) {
0 commit comments