From a70b1dd3c46e75901d9de86070f3167aad6ea2be Mon Sep 17 00:00:00 2001 From: nnethercott Date: Thu, 29 May 2025 17:48:23 +0200 Subject: [PATCH 01/10] feat: make normal a Leaf<'_, Distance> --- src/distance/binary_quantized_cosine.rs | 11 +++++----- src/distance/binary_quantized_euclidean.rs | 14 ++++++------- src/distance/binary_quantized_manhattan.rs | 15 +++++++------- src/distance/cosine.rs | 12 ++++------- src/distance/dot_product.rs | 11 +++++----- src/distance/euclidean.rs | 15 +++++++------- src/distance/manhattan.rs | 12 ++++------- src/distance/mod.rs | 24 +++++++--------------- src/node.rs | 21 +++++++++++-------- src/reader.rs | 2 +- 10 files changed, 60 insertions(+), 77 deletions(-) diff --git a/src/distance/binary_quantized_cosine.rs b/src/distance/binary_quantized_cosine.rs index 1fc5f86e..2c9acf6c 100644 --- a/src/distance/binary_quantized_cosine.rs +++ b/src/distance/binary_quantized_cosine.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -72,7 +71,7 @@ impl Distance for BinaryQuantizedCosine { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>> { + ) -> heed::Result> { let [node_p, node_q] = two_means::(rng, children, true)?; let vector: Vec = node_p.vector.iter().zip(node_q.vector.iter()).map(|(p, q)| p - q).collect(); @@ -83,13 +82,13 @@ impl Distance for BinaryQuantizedCosine { }; Self::normalize(&mut normal); - Ok(normal.vector) + Ok(normal) } fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, + p: &Leaf, + q: &Leaf, ) -> f32 { - dot_product_binary_quantized(p, q) + dot_product_binary_quantized(&p.vector, &q.vector) } } diff --git a/src/distance/binary_quantized_euclidean.rs b/src/distance/binary_quantized_euclidean.rs index 2d8e5c2f..7dbc4cea 100644 --- a/src/distance/binary_quantized_euclidean.rs +++ b/src/distance/binary_quantized_euclidean.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -59,17 +58,18 @@ impl Distance for BinaryQuantizedEuclidean { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>> { + ) -> heed::Result> { let [node_p, node_q] = two_means::(rng, children, false)?; let vector: Vec = node_p.vector.iter().zip(node_q.vector.iter()).map(|(p, q)| p - q).collect(); let mut normal = Leaf { header: NodeHeaderBinaryQuantizedEuclidean { bias: 0.0 }, - vector: UnalignedVector::from_slice(&vector), + vector: UnalignedVector::from_vec(vector), }; Self::normalize(&mut normal); + normal.header = Self::new_header(&normal.vector); - Ok(Cow::Owned(normal.vector.into_owned())) + Ok(normal) } fn margin(p: &Leaf, q: &Leaf) -> f32 { @@ -77,10 +77,10 @@ impl Distance for BinaryQuantizedEuclidean { } fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, + p: &Leaf, + q: &Leaf, ) -> f32 { - dot_product_binary_quantized(p, q) + dot_product_binary_quantized(&p.vector, &q.vector) } } diff --git a/src/distance/binary_quantized_manhattan.rs b/src/distance/binary_quantized_manhattan.rs index 8576918d..786dd5d3 100644 --- a/src/distance/binary_quantized_manhattan.rs +++ b/src/distance/binary_quantized_manhattan.rs @@ -1,5 +1,3 @@ -use std::borrow::Cow; - use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -63,17 +61,18 @@ impl Distance for BinaryQuantizedManhattan { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>> { + ) -> heed::Result> { let [node_p, node_q] = two_means::(rng, children, false)?; let vector: Vec = node_p.vector.iter().zip(node_q.vector.iter()).map(|(p, q)| p - q).collect(); let mut normal = Leaf { header: NodeHeaderBinaryQuantizedManhattan { bias: 0.0 }, - vector: UnalignedVector::from_slice(&vector), + vector: UnalignedVector::from_vec(vector), }; Self::normalize(&mut normal); + normal.header = Self::new_header(&normal.vector); - Ok(Cow::Owned(normal.vector.into_owned())) + Ok(normal) } fn margin(p: &Leaf, q: &Leaf) -> f32 { @@ -81,10 +80,10 @@ impl Distance for BinaryQuantizedManhattan { } fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, + p: &Leaf, + q: &Leaf, ) -> f32 { - dot_product_binary_quantized(p, q) + dot_product_binary_quantized(&p.vector, &q.vector) } } diff --git a/src/distance/cosine.rs b/src/distance/cosine.rs index 8db717ba..140a87a8 100644 --- a/src/distance/cosine.rs +++ b/src/distance/cosine.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -68,7 +67,7 @@ impl Distance for Cosine { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>> { + ) -> heed::Result> { let [node_p, node_q] = two_means(rng, children, true)?; let vector: Vec = node_p.vector.iter().zip(node_q.vector.iter()).map(|(p, q)| p - q).collect(); @@ -76,13 +75,10 @@ impl Distance for Cosine { let mut normal = Leaf { header: NodeHeaderCosine { norm: 0.0 }, vector: unaligned_vector }; Self::normalize(&mut normal); - Ok(normal.vector) + Ok(normal) } - fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, - ) -> f32 { - dot_product(p, q) + fn margin_no_header(p: &Leaf, q: &Leaf) -> f32 { + dot_product(&p.vector, &q.vector) } } diff --git a/src/distance/dot_product.rs b/src/distance/dot_product.rs index 6a948c98..53dd818b 100644 --- a/src/distance/dot_product.rs +++ b/src/distance/dot_product.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use bytemuck::{Pod, Zeroable}; use heed::{RwPrefix, RwTxn}; @@ -90,7 +89,7 @@ impl Distance for DotProduct { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>> { + ) -> heed::Result> { let [node_p, node_q] = two_means(rng, children, true)?; let vector: Vec = node_p.vector.iter().zip(node_q.vector.iter()).map(|(p, q)| p - q).collect(); @@ -101,7 +100,7 @@ impl Distance for DotProduct { normal.header.extra_dim = node_p.header.extra_dim - node_q.header.extra_dim; Self::normalize(&mut normal); - Ok(normal.vector) + Ok(normal) } fn margin(p: &Leaf, q: &Leaf) -> f32 { @@ -109,10 +108,10 @@ impl Distance for DotProduct { } fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, + p: &Leaf, + q: &Leaf, ) -> f32 { - dot_product(p, q) + dot_product(&p.vector, &q.vector) } fn preprocess( diff --git a/src/distance/euclidean.rs b/src/distance/euclidean.rs index ccf8ee4f..52759c57 100644 --- a/src/distance/euclidean.rs +++ b/src/distance/euclidean.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -50,7 +49,7 @@ impl Distance for Euclidean { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>> { + ) -> heed::Result> { let [node_p, node_q] = two_means(rng, children, false)?; let vector: Vec<_> = node_p.vector.iter().zip(node_q.vector.iter()).map(|(p, q)| p - q).collect(); @@ -68,17 +67,17 @@ impl Distance for Euclidean { .map(|((n, p), q)| -n * (p + q) / 2.0) .sum(); - Ok(normal.vector) + Ok(normal) } - fn margin(p: &Leaf, q: &Leaf) -> f32 { - p.header.bias + dot_product(&p.vector, &q.vector) + fn margin(n: &Leaf, q: &Leaf) -> f32 { + n.header.bias + dot_product(&n.vector, &q.vector) } fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, + p: &Leaf, + q: &Leaf, ) -> f32 { - dot_product(p, q) + dot_product(&p.vector, &q.vector) } } diff --git a/src/distance/manhattan.rs b/src/distance/manhattan.rs index ae4ba4d5..2bba68a1 100644 --- a/src/distance/manhattan.rs +++ b/src/distance/manhattan.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -53,7 +52,7 @@ impl Distance for Manhattan { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>> { + ) -> heed::Result> { let [node_p, node_q] = two_means(rng, children, false)?; let vector: Vec<_> = node_p.vector.iter().zip(node_q.vector.iter()).map(|(p, q)| p - q).collect(); @@ -71,17 +70,14 @@ impl Distance for Manhattan { .map(|((n, p), q)| -n * (p + q) / 2.0) .sum(); - Ok(normal.vector) + Ok(normal) } fn margin(p: &Leaf, q: &Leaf) -> f32 { p.header.bias + dot_product(&p.vector, &q.vector) } - fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, - ) -> f32 { - dot_product(p, q) + fn margin_no_header(p: &Leaf, q: &Leaf) -> f32 { + dot_product(&p.vector, &q.vector) } } diff --git a/src/distance/mod.rs b/src/distance/mod.rs index 5ac4f21d..9a9f94c1 100644 --- a/src/distance/mod.rs +++ b/src/distance/mod.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use std::fmt; pub use binary_quantized_cosine::{BinaryQuantizedCosine, NodeHeaderBinaryQuantizedCosine}; @@ -97,29 +96,20 @@ pub trait Distance: Send + Sync + Sized + Clone + fmt::Debug + 'static { fn create_split<'a, R: Rng>( children: &'a ImmutableSubsetLeafs, rng: &mut R, - ) -> heed::Result>>; + ) -> heed::Result>; fn margin(p: &Leaf, q: &Leaf) -> f32 { - Self::margin_no_header(&p.vector, &q.vector) + Self::margin_no_header(p, q) } - fn margin_no_header( - p: &UnalignedVector, - q: &UnalignedVector, - ) -> f32; + fn margin_no_header(p: &Leaf, q: &Leaf) -> f32; - fn side( - normal_plane: &UnalignedVector, - node: &Leaf, - rng: &mut R, - ) -> Side { - let dot = Self::margin_no_header(&node.vector, normal_plane); - if dot > 0.0 { + fn side(normal: &Leaf, node: &Leaf, rng: &mut R) -> Side { + let dot = Self::margin_no_header(normal, node); + if dot.is_sign_positive() { Side::Right - } else if dot < 0.0 { - Side::Left } else { - Side::random(rng) + Side::Left } } diff --git a/src/node.rs b/src/node.rs index 18c9c374..89d478c2 100644 --- a/src/node.rs +++ b/src/node.rs @@ -125,7 +125,7 @@ impl fmt::Debug for ItemIds<'_> { pub struct SplitPlaneNormal<'a, D: Distance> { pub left: ItemId, pub right: ItemId, - pub normal: Option>>, + pub normal: Option>, } impl fmt::Debug for SplitPlaneNormal<'_, D> { @@ -154,7 +154,7 @@ pub struct GenericReadSplitPlaneNormal<'a, D: Distance> { pub right: NodeId, // Before version 0.7.0 instead of storing `None` for a missing normal, we were // storing a vector filled with zeros, that will be overwritten while creating this type. - pub normal: Option>>, + pub normal: Option>, } impl fmt::Debug for GenericReadSplitPlaneNormal<'_, D> { @@ -196,7 +196,8 @@ impl<'a, D: Distance> BytesEncode<'a> for NodeCodec { bytes.extend_from_slice(&left.to_be_bytes()); bytes.extend_from_slice(&right.to_be_bytes()); if let Some(normal) = normal { - bytes.extend_from_slice(normal.as_bytes()); + bytes.extend_from_slice(bytes_of(&normal.header)); + bytes.extend_from_slice(normal.vector.as_bytes()); } } Node::Descendants(Descendants { descendants }) => { @@ -228,7 +229,10 @@ impl<'a, D: Distance> BytesDecode<'a> for NodeCodec { let normal = if bytes.is_empty() { None } else { - Some(UnalignedVector::::from_bytes(bytes)?) + let (header_bytes, remaining) = bytes.split_at(size_of::()); + let header = pod_read_unaligned::(header_bytes); + let vector = UnalignedVector::::from_bytes(remaining)?; + Some(Leaf { header, vector }) }; Ok(Node::SplitPlaneNormal(SplitPlaneNormal { normal, left, right })) } @@ -262,11 +266,12 @@ impl<'a, D: Distance> BytesDecode<'a> for GenericReadNodeCodecFromV0_4_0 { let (left, bytes) = NodeId::from_bytes(bytes); let (right, bytes) = NodeId::from_bytes(bytes); // And the normal could not be null, but it could be a vector filled with zeros. - let normal = UnalignedVector::::from_bytes(bytes)?; - let normal = if normal.is_zero() { + let vector = UnalignedVector::::from_bytes(bytes)?; + let normal = if vector.is_zero() { None } else { - Some(normal) + let header = D::new_header(&vector); + Some(Leaf { header, vector }) }; Ok(GenericReadNode::SplitPlaneNormal(GenericReadSplitPlaneNormal { normal, left, right })) } @@ -331,7 +336,7 @@ impl<'a, D: Distance> BytesEncode<'a> for WriteNodeCodecForV0_5_0 { bytes.extend_from_slice(&left.to_bytes()); bytes.extend_from_slice(&right.to_bytes()); match normal { - Some(normal) => bytes.extend_from_slice(normal.as_bytes()), + Some(normal) => bytes.extend_from_slice(normal.vector.as_bytes()), // If the normal is None, we need to write a vector filled with zeros. None => bytes.extend_from_slice(&vec![0; item.1]), } diff --git a/src/reader.rs b/src/reader.rs index ffdcdcdb..ce5a7ea4 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -364,7 +364,7 @@ impl<'t, D: Distance> Reader<'t, D> { right, }) => { let margin = match normal { - Some(normal) => D::margin_no_header(&normal, &query_leaf.vector), + Some(normal) => D::margin_no_header(&normal, &query_leaf), None => 0.0, }; queue.push((OrderedFloat(D::pq_distance(dist, margin, Side::Left)), left)); From ed32f84ab6c338c77a47a09c001a14adf6546998 Mon Sep 17 00:00:00 2001 From: nnethercott Date: Thu, 29 May 2025 17:55:15 +0200 Subject: [PATCH 02/10] kill margin_no_header margin_no_header is a footgun here, since signature for margin is the same its easy to confound the two. this is bad since we may build a tree not using the hyperplane bias but then configure the reader to use it (for instance) --- src/distance/binary_quantized_cosine.rs | 2 +- src/distance/binary_quantized_euclidean.rs | 7 ------- src/distance/binary_quantized_manhattan.rs | 7 ------- src/distance/cosine.rs | 2 +- src/distance/dot_product.rs | 7 ------- src/distance/euclidean.rs | 7 ------- src/distance/manhattan.rs | 4 ---- src/distance/mod.rs | 10 +++------- src/reader.rs | 2 +- src/writer.rs | 4 ++-- 10 files changed, 8 insertions(+), 44 deletions(-) diff --git a/src/distance/binary_quantized_cosine.rs b/src/distance/binary_quantized_cosine.rs index 2c9acf6c..d8f84e1e 100644 --- a/src/distance/binary_quantized_cosine.rs +++ b/src/distance/binary_quantized_cosine.rs @@ -85,7 +85,7 @@ impl Distance for BinaryQuantizedCosine { Ok(normal) } - fn margin_no_header( + fn margin( p: &Leaf, q: &Leaf, ) -> f32 { diff --git a/src/distance/binary_quantized_euclidean.rs b/src/distance/binary_quantized_euclidean.rs index 7dbc4cea..a85fbde1 100644 --- a/src/distance/binary_quantized_euclidean.rs +++ b/src/distance/binary_quantized_euclidean.rs @@ -75,13 +75,6 @@ impl Distance for BinaryQuantizedEuclidean { fn margin(p: &Leaf, q: &Leaf) -> f32 { p.header.bias + dot_product_binary_quantized(&p.vector, &q.vector) } - - fn margin_no_header( - p: &Leaf, - q: &Leaf, - ) -> f32 { - dot_product_binary_quantized(&p.vector, &q.vector) - } } /// For the binary quantized squared euclidean distance: diff --git a/src/distance/binary_quantized_manhattan.rs b/src/distance/binary_quantized_manhattan.rs index 786dd5d3..dc4b822c 100644 --- a/src/distance/binary_quantized_manhattan.rs +++ b/src/distance/binary_quantized_manhattan.rs @@ -78,13 +78,6 @@ impl Distance for BinaryQuantizedManhattan { fn margin(p: &Leaf, q: &Leaf) -> f32 { p.header.bias + dot_product_binary_quantized(&p.vector, &q.vector) } - - fn margin_no_header( - p: &Leaf, - q: &Leaf, - ) -> f32 { - dot_product_binary_quantized(&p.vector, &q.vector) - } } /// For the binary quantized manhattan distance: diff --git a/src/distance/cosine.rs b/src/distance/cosine.rs index 140a87a8..f1dccb09 100644 --- a/src/distance/cosine.rs +++ b/src/distance/cosine.rs @@ -78,7 +78,7 @@ impl Distance for Cosine { Ok(normal) } - fn margin_no_header(p: &Leaf, q: &Leaf) -> f32 { + fn margin(p: &Leaf, q: &Leaf) -> f32 { dot_product(&p.vector, &q.vector) } } diff --git a/src/distance/dot_product.rs b/src/distance/dot_product.rs index 53dd818b..afc64944 100644 --- a/src/distance/dot_product.rs +++ b/src/distance/dot_product.rs @@ -107,13 +107,6 @@ impl Distance for DotProduct { dot_product(&p.vector, &q.vector) + p.header.extra_dim * q.header.extra_dim } - fn margin_no_header( - p: &Leaf, - q: &Leaf, - ) -> f32 { - dot_product(&p.vector, &q.vector) - } - fn preprocess( wtxn: &mut RwTxn, new_iter: impl for<'a> Fn( diff --git a/src/distance/euclidean.rs b/src/distance/euclidean.rs index 52759c57..3c66bc6e 100644 --- a/src/distance/euclidean.rs +++ b/src/distance/euclidean.rs @@ -73,11 +73,4 @@ impl Distance for Euclidean { fn margin(n: &Leaf, q: &Leaf) -> f32 { n.header.bias + dot_product(&n.vector, &q.vector) } - - fn margin_no_header( - p: &Leaf, - q: &Leaf, - ) -> f32 { - dot_product(&p.vector, &q.vector) - } } diff --git a/src/distance/manhattan.rs b/src/distance/manhattan.rs index 2bba68a1..7b4d8e05 100644 --- a/src/distance/manhattan.rs +++ b/src/distance/manhattan.rs @@ -76,8 +76,4 @@ impl Distance for Manhattan { fn margin(p: &Leaf, q: &Leaf) -> f32 { p.header.bias + dot_product(&p.vector, &q.vector) } - - fn margin_no_header(p: &Leaf, q: &Leaf) -> f32 { - dot_product(&p.vector, &q.vector) - } } diff --git a/src/distance/mod.rs b/src/distance/mod.rs index 9a9f94c1..79e9c742 100644 --- a/src/distance/mod.rs +++ b/src/distance/mod.rs @@ -98,14 +98,10 @@ pub trait Distance: Send + Sync + Sized + Clone + fmt::Debug + 'static { rng: &mut R, ) -> heed::Result>; - fn margin(p: &Leaf, q: &Leaf) -> f32 { - Self::margin_no_header(p, q) - } - - fn margin_no_header(p: &Leaf, q: &Leaf) -> f32; + fn margin(p: &Leaf, q: &Leaf) -> f32; - fn side(normal: &Leaf, node: &Leaf, rng: &mut R) -> Side { - let dot = Self::margin_no_header(normal, node); + fn side(normal: &Leaf, node: &Leaf) -> Side { + let dot = Self::margin(normal, node); if dot.is_sign_positive() { Side::Right } else { diff --git a/src/reader.rs b/src/reader.rs index ce5a7ea4..cdb27938 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -364,7 +364,7 @@ impl<'t, D: Distance> Reader<'t, D> { right, }) => { let margin = match normal { - Some(normal) => D::margin_no_header(&normal, &query_leaf), + Some(normal) => D::margin(&normal, &query_leaf), None => 0.0, }; queue.push((OrderedFloat(D::pq_distance(dist, margin, Side::Left)), left)); diff --git a/src/writer.rs b/src/writer.rs index c879572d..5d96f76d 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -1014,7 +1014,7 @@ impl Writer { Some(ref normal) => { for leaf in to_insert { let node = frozen_reader.leafs.get(leaf)?.unwrap(); - match D::side(normal, &node, rng) { + match D::side(normal, &node) { Side::Left => left_ids.insert(leaf), Side::Right => right_ids.insert(leaf), }; @@ -1091,7 +1091,7 @@ impl Writer { let normal = D::create_split(&children, rng)?; for item_id in item_indices.iter() { let node = reader.leafs.get(item_id)?.unwrap(); - match D::side(&normal, &node, rng) { + match D::side(&normal, &node) { Side::Left => children_left.push(item_id), Side::Right => children_right.push(item_id), }; From 4498f5e5fcdfc3e87fd4a5344fbff498e3060f9b Mon Sep 17 00:00:00 2001 From: nnethercott Date: Fri, 30 May 2025 14:49:34 +0200 Subject: [PATCH 03/10] feat: add quantized bias --- src/distance/binary_quantized_euclidean.rs | 10 ++++++++-- src/distance/binary_quantized_manhattan.rs | 9 ++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/distance/binary_quantized_euclidean.rs b/src/distance/binary_quantized_euclidean.rs index a85fbde1..51c7c2f3 100644 --- a/src/distance/binary_quantized_euclidean.rs +++ b/src/distance/binary_quantized_euclidean.rs @@ -1,4 +1,3 @@ - use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -67,7 +66,14 @@ impl Distance for BinaryQuantizedEuclidean { vector: UnalignedVector::from_vec(vector), }; Self::normalize(&mut normal); - normal.header = Self::new_header(&normal.vector); + + normal.header.bias = normal + .vector + .iter() + .zip(UnalignedVector::::from_vec(node_p.vector.to_vec()).iter()) + .zip(UnalignedVector::::from_vec(node_q.vector.to_vec()).iter()) + .map(|((n, p), q)| -n * (p + q) / 2.0) + .sum(); Ok(normal) } diff --git a/src/distance/binary_quantized_manhattan.rs b/src/distance/binary_quantized_manhattan.rs index dc4b822c..f22380d2 100644 --- a/src/distance/binary_quantized_manhattan.rs +++ b/src/distance/binary_quantized_manhattan.rs @@ -70,7 +70,14 @@ impl Distance for BinaryQuantizedManhattan { vector: UnalignedVector::from_vec(vector), }; Self::normalize(&mut normal); - normal.header = Self::new_header(&normal.vector); + + normal.header.bias = normal + .vector + .iter() + .zip(UnalignedVector::::from_vec(node_p.vector.to_vec()).iter()) + .zip(UnalignedVector::::from_vec(node_q.vector.to_vec()).iter()) + .map(|((n, p), q)| -n * (p + q) / 2.0) + .sum(); Ok(normal) } From b0a056f0d058b017ece14d3d3b0d0ab65da3cf68 Mon Sep 17 00:00:00 2001 From: nnethercott Date: Sat, 31 May 2025 16:08:41 +0200 Subject: [PATCH 04/10] cargo fmt --- src/distance/binary_quantized_cosine.rs | 6 +----- src/distance/cosine.rs | 1 - src/distance/dot_product.rs | 1 - src/distance/euclidean.rs | 1 - src/distance/manhattan.rs | 1 - src/distance/mod.rs | 2 +- 6 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/distance/binary_quantized_cosine.rs b/src/distance/binary_quantized_cosine.rs index d8f84e1e..d5f269f1 100644 --- a/src/distance/binary_quantized_cosine.rs +++ b/src/distance/binary_quantized_cosine.rs @@ -1,4 +1,3 @@ - use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -85,10 +84,7 @@ impl Distance for BinaryQuantizedCosine { Ok(normal) } - fn margin( - p: &Leaf, - q: &Leaf, - ) -> f32 { + fn margin(p: &Leaf, q: &Leaf) -> f32 { dot_product_binary_quantized(&p.vector, &q.vector) } } diff --git a/src/distance/cosine.rs b/src/distance/cosine.rs index f1dccb09..c352afa4 100644 --- a/src/distance/cosine.rs +++ b/src/distance/cosine.rs @@ -1,4 +1,3 @@ - use bytemuck::{Pod, Zeroable}; use rand::Rng; diff --git a/src/distance/dot_product.rs b/src/distance/dot_product.rs index afc64944..17e87679 100644 --- a/src/distance/dot_product.rs +++ b/src/distance/dot_product.rs @@ -1,4 +1,3 @@ - use bytemuck::{Pod, Zeroable}; use heed::{RwPrefix, RwTxn}; use rand::Rng; diff --git a/src/distance/euclidean.rs b/src/distance/euclidean.rs index 3c66bc6e..977a65a7 100644 --- a/src/distance/euclidean.rs +++ b/src/distance/euclidean.rs @@ -1,4 +1,3 @@ - use bytemuck::{Pod, Zeroable}; use rand::Rng; diff --git a/src/distance/manhattan.rs b/src/distance/manhattan.rs index 7b4d8e05..f81c064c 100644 --- a/src/distance/manhattan.rs +++ b/src/distance/manhattan.rs @@ -1,4 +1,3 @@ - use bytemuck::{Pod, Zeroable}; use rand::Rng; diff --git a/src/distance/mod.rs b/src/distance/mod.rs index 79e9c742..8696448e 100644 --- a/src/distance/mod.rs +++ b/src/distance/mod.rs @@ -98,7 +98,7 @@ pub trait Distance: Send + Sync + Sized + Clone + fmt::Debug + 'static { rng: &mut R, ) -> heed::Result>; - fn margin(p: &Leaf, q: &Leaf) -> f32; + fn margin(p: &Leaf, q: &Leaf) -> f32; fn side(normal: &Leaf, node: &Leaf) -> Side { let dot = Self::margin(normal, node); From 69b61855f0fd0a08134261ef49c612c2e919903d Mon Sep 17 00:00:00 2001 From: nnethercott Date: Sat, 31 May 2025 16:46:42 +0200 Subject: [PATCH 05/10] bump tests --- src/tests/reader.rs | 5 +- ...pgrade__large_upgrade_v0_6_to_v0_7-10.snap | 98 +++---- ...ite_and_update_lot_of_random_points-2.snap | 272 ++++++++---------- ...write_and_update_lot_of_random_points.snap | 186 +++++------- src/tests/upgrade.rs | 2 +- src/tests/writer.rs | 256 ++++++++--------- 6 files changed, 375 insertions(+), 444 deletions(-) diff --git a/src/tests/reader.rs b/src/tests/reader.rs index 7e23634d..32301b4f 100644 --- a/src/tests/reader.rs +++ b/src/tests/reader.rs @@ -117,7 +117,10 @@ fn two_dimension_on_a_line() { // if we can't look into enough nodes we find some random points let ret = reader.nns(5).search_k(NonZeroUsize::new(1).unwrap()).by_item(&rtxn, 1).unwrap(); - insta::assert_snapshot!(NnsRes(ret), @"id(63): distance(62)"); + insta::assert_snapshot!(NnsRes(ret), @r" + id(1): distance(0) + id(0): distance(1) + "); // if we can look into all the node there is no inifinite loop and it works let ret = diff --git a/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap b/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap index 7784a4ff..bc2970b3 100644 --- a/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap +++ b/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap @@ -8,112 +8,112 @@ Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 9 Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [6, 14, 18, 21, 22, 23, 26, 28, 40, 42, 43, 44, 47, 51, 54, 59, 61, 62, 68, 73, 80, 82, 83, 87, 90] }) Tree 1: Descendants(Descendants { descendants: [8, 10, 15, 17, 20, 24, 34, 37, 46, 49, 53, 55, 57, 66, 71, 75, 77, 79, 92, 95, 98] }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 0, right: 1, normal: [-0.2169, 0.0505, 0.0138, 0.1637, -0.1566, -0.2702, 0.1215, 0.0399, 0.3132, 0.3827, "other ..."] }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 0, right: 1, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2169, 0.0505, 0.0138, 0.1637, -0.1566, -0.2702, 0.1215, 0.0399, 0.3132, 0.3827, "other ..."] } }) Tree 3: Descendants(Descendants { descendants: [9, 12, 29, 31, 32, 35, 36, 64, 89, 93, 96] }) Tree 4: Descendants(Descendants { descendants: [3, 5, 7, 11, 25, 30, 39, 48, 52, 58, 60, 67, 69, 70, 81, 86, 91, 97, 99] }) Tree 5: Descendants(Descendants { descendants: [0, 1, 2, 4, 13, 16, 19, 27, 33, 38, 41, 45, 50, 56, 63, 65, 72, 74, 76, 78, 84, 85, 88, 94] }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: [0.0550, -0.0317, -0.1815, 0.1748, 0.2592, 0.1276, 0.0648, -0.3539, -0.1585, 0.0911, "other ..."] }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: [-0.0346, 0.4691, 0.1765, -0.0148, 0.0259, 0.1307, -0.1240, -0.1665, 0.0875, 0.1291, "other ..."] }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 7, normal: [-0.0833, -0.0190, -0.0905, 0.1619, -0.0567, 0.2069, -0.2559, -0.1137, 0.0169, -0.0864, "other ..."] }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0550, -0.0317, -0.1815, 0.1748, 0.2592, 0.1276, 0.0648, -0.3539, -0.1585, 0.0911, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0346, 0.4691, 0.1765, -0.0148, 0.0259, 0.1307, -0.1240, -0.1665, 0.0875, 0.1291, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 7, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0833, -0.0190, -0.0905, 0.1619, -0.0567, 0.2069, -0.2559, -0.1137, 0.0169, -0.0864, "other ..."] } }) Tree 11: Descendants(Descendants { descendants: [0, 1, 3, 4, 7, 9, 10, 11, 13, 27, 29, 30, 31, 39, 45, 50, 56, 57, 60, 64, 65, 67, 73, 84, 85, 88, 91, 97] }) Tree 14: Descendants(Descendants { descendants: [25, 32, 33, 49, 81, 99] }) -Tree 15: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 14, normal: [-0.3533, -0.1026, 0.1114, 0.1360, -0.1732, 0.1633, -0.0302, -0.1458, -0.0030, -0.2101, "other ..."] }) -Tree 16: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 15, normal: [0.2420, -0.1007, 0.3792, 0.0349, -0.0702, 0.0947, -0.3028, -0.1386, -0.2889, 0.0402, "other ..."] }) -Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 16, normal: [-0.0014, -0.0866, -0.0081, 0.0327, -0.1021, -0.1147, 0.0955, 0.0205, 0.2358, -0.1408, "other ..."] }) +Tree 15: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 14, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.3533, -0.1026, 0.1114, 0.1360, -0.1732, 0.1633, -0.0302, -0.1458, -0.0030, -0.2101, "other ..."] } }) +Tree 16: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 15, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2420, -0.1007, 0.3792, 0.0349, -0.0702, 0.0947, -0.3028, -0.1386, -0.2889, 0.0402, "other ..."] } }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0014, -0.0866, -0.0081, 0.0327, -0.1021, -0.1147, 0.0955, 0.0205, 0.2358, -0.1408, "other ..."] } }) Tree 18: Descendants(Descendants { descendants: [4, 7, 9, 11, 25, 27, 29, 33, 48, 52, 56, 58, 60, 67, 76, 78, 81, 91, 97] }) Tree 19: Descendants(Descendants { descendants: [0, 1, 6, 12, 13, 14, 18, 19, 31, 35, 38, 39, 42, 45, 50, 51, 54, 64, 85, 86, 89, 93, 94, 96] }) -Tree 20: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 19, normal: [-0.0557, -0.0514, -0.1661, -0.1599, 0.0364, -0.1539, 0.0511, -0.1720, -0.0989, -0.0885, "other ..."] }) +Tree 20: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 19, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0557, -0.0514, -0.1661, -0.1599, 0.0364, -0.1539, 0.0511, -0.1720, -0.0989, -0.0885, "other ..."] } }) Tree 21: Descendants(Descendants { descendants: [2, 3, 5, 8, 15, 16, 17, 20, 24, 32, 36, 49, 59, 62, 63, 65, 66, 69, 70, 75, 79, 80, 83, 84, 87, 92] }) -Tree 23: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 106, normal: [0.1147, 0.1494, -0.3442, -0.2764, 0.1638, -0.3154, 0.0552, 0.1184, 0.1290, 0.0611, "other ..."] }) -Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 20, right: 23, normal: [-0.0617, -0.0186, -0.1350, -0.3128, -0.0542, 0.0524, 0.2907, 0.1259, 0.0908, 0.2518, "other ..."] }) +Tree 23: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 106, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1147, 0.1494, -0.3442, -0.2764, 0.1638, -0.3154, 0.0552, 0.1184, 0.1290, 0.0611, "other ..."] } }) +Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 20, right: 23, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0617, -0.0186, -0.1350, -0.3128, -0.0542, 0.0524, 0.2907, 0.1259, 0.0908, 0.2518, "other ..."] } }) Tree 25: Descendants(Descendants { descendants: [] }) Tree 26: Descendants(Descendants { descendants: [5, 16, 18, 22, 36, 43, 44, 49, 59, 83, 84, 96] }) -Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 111, normal: [0.0098, 0.2629, -0.1633, -0.1082, -0.0680, -0.1540, 0.0015, 0.1634, 0.2796, 0.1046, "other ..."] }) +Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 111, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0098, 0.2629, -0.1633, -0.1082, -0.0680, -0.1540, 0.0015, 0.1634, 0.2796, 0.1046, "other ..."] } }) Tree 29: Descendants(Descendants { descendants: [7, 9, 11, 12, 31, 32, 33, 35, 39, 52, 58, 69, 74, 81, 86, 89, 92, 97, 99] }) -Tree 30: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 29, normal: [-0.1005, -0.0667, 0.1734, 0.2457, 0.1330, 0.0145, -0.1141, -0.0260, -0.1916, -0.1144, "other ..."] }) -Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 25, right: 30, normal: [0.0357, 0.2985, -0.2477, -0.0879, 0.2653, 0.2303, 0.1487, 0.0825, -0.0937, 0.1187, "other ..."] }) +Tree 30: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 29, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1005, -0.0667, 0.1734, 0.2457, 0.1330, 0.0145, -0.1141, -0.0260, -0.1916, -0.1144, "other ..."] } }) +Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 25, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0357, 0.2985, -0.2477, -0.0879, 0.2653, 0.2303, 0.1487, 0.0825, -0.0937, 0.1187, "other ..."] } }) Tree 34: Descendants(Descendants { descendants: [0, 1, 2, 4, 13, 19, 24, 25, 27, 29, 41, 42, 45, 51, 56, 57, 60, 63, 64, 65, 77, 85, 91, 93, 94] }) -Tree 35: SplitPlaneNormal(SplitPlaneNormal { left: 31, right: 34, normal: [-0.1861, -0.2141, -0.1520, 0.0974, 0.0900, 0.2616, -0.0688, -0.2960, -0.0378, -0.0949, "other ..."] }) +Tree 35: SplitPlaneNormal(SplitPlaneNormal { left: 31, right: 34, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1861, -0.2141, -0.1520, 0.0974, 0.0900, 0.2616, -0.0688, -0.2960, -0.0378, -0.0949, "other ..."] } }) Tree 36: Descendants(Descendants { descendants: [8, 15, 18, 21, 36, 42, 53, 59, 71, 87, 89, 93, 98] }) Tree 38: Descendants(Descendants { descendants: [4, 11, 23, 33, 48, 52, 54, 63, 64, 66, 69, 74, 75, 88, 90, 99] }) -Tree 39: SplitPlaneNormal(SplitPlaneNormal { left: 114, right: 38, normal: [0.2761, -0.2159, -0.3421, 0.2165, 0.3175, -0.0799, 0.0880, 0.0680, 0.0497, -0.0448, "other ..."] }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 36, right: 39, normal: [-0.0582, 0.0824, 0.2122, 0.1920, 0.2041, -0.0451, -0.0324, 0.0349, 0.0748, 0.2791, "other ..."] }) +Tree 39: SplitPlaneNormal(SplitPlaneNormal { left: 114, right: 38, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2761, -0.2159, -0.3421, 0.2165, 0.3175, -0.0799, 0.0880, 0.0680, 0.0497, -0.0448, "other ..."] } }) +Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 36, right: 39, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0582, 0.0824, 0.2122, 0.1920, 0.2041, -0.0451, -0.0324, 0.0349, 0.0748, 0.2791, "other ..."] } }) Tree 41: Descendants(Descendants { descendants: [1, 2, 3, 6, 22, 29, 40, 41, 43, 44, 45, 47, 49, 50, 65, 72, 73, 77, 80, 82, 83, 85, 92, 94] }) Tree 42: Descendants(Descendants { descendants: [13, 14, 16, 24, 30, 32, 35, 37, 38, 51, 57, 61, 78, 79, 95, 96] }) -Tree 43: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 42, normal: [-0.2362, 0.0074, -0.1011, 0.1902, -0.2410, -0.2179, 0.1000, -0.2451, 0.0583, 0.2037, "other ..."] }) -Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 40, right: 43, normal: [-0.0723, -0.1644, -0.4771, -0.0662, 0.1894, 0.0474, 0.2151, 0.0954, -0.0123, 0.1914, "other ..."] }) +Tree 43: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 42, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2362, 0.0074, -0.1011, 0.1902, -0.2410, -0.2179, 0.1000, -0.2451, 0.0583, 0.2037, "other ..."] } }) +Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 40, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0723, -0.1644, -0.4771, -0.0662, 0.1894, 0.0474, 0.2151, 0.0954, -0.0123, 0.1914, "other ..."] } }) Tree 45: Descendants(Descendants { descendants: [23, 43, 46, 49, 53, 55, 66, 75, 82] }) Tree 46: Descendants(Descendants { descendants: [0, 6, 8, 18, 21, 22, 28, 31, 39, 41, 42, 44, 45, 47, 50, 51, 52, 54, 58, 59, 72, 76, 77, 80, 85, 88, 91, 93, 98] }) Tree 47: Descendants(Descendants { descendants: [10, 13, 19, 27, 37, 40, 67, 71, 73, 86, 87, 90] }) -Tree 48: SplitPlaneNormal(SplitPlaneNormal { left: 46, right: 47, normal: [-0.0763, 0.0885, -0.2724, 0.0145, 0.0947, -0.2347, 0.1067, -0.0488, 0.0689, 0.0441, "other ..."] }) +Tree 48: SplitPlaneNormal(SplitPlaneNormal { left: 46, right: 47, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0763, 0.0885, -0.2724, 0.0145, 0.0947, -0.2347, 0.1067, -0.0488, 0.0689, 0.0441, "other ..."] } }) Tree 49: Descendants(Descendants { descendants: [] }) -Tree 50: SplitPlaneNormal(SplitPlaneNormal { left: 48, right: 49, normal: [-0.0493, 0.0077, 0.1071, 0.2488, -0.0877, -0.1022, -0.1081, -0.0104, 0.0486, -0.0089, "other ..."] }) +Tree 50: SplitPlaneNormal(SplitPlaneNormal { left: 48, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0493, 0.0077, 0.1071, 0.2488, -0.0877, -0.1022, -0.1081, -0.0104, 0.0486, -0.0089, "other ..."] } }) Tree 51: Descendants(Descendants { descendants: [1, 14, 29, 30, 35, 38, 57, 63, 64, 65, 78, 83, 89, 94, 95, 97] }) -Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 117, normal: [-0.2008, 0.1922, 0.3079, -0.0453, -0.3244, 0.1055, -0.0466, -0.1035, 0.1446, -0.0438, "other ..."] }) -Tree 54: SplitPlaneNormal(SplitPlaneNormal { left: 50, right: 53, normal: [-0.2175, -0.1158, -0.0781, 0.0622, -0.2080, 0.0082, 0.1641, 0.0493, -0.0815, 0.2456, "other ..."] }) -Tree 55: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 54, normal: [-0.0297, 0.0635, -0.0090, 0.0742, 0.0765, 0.2930, -0.2378, -0.0111, -0.1069, -0.1084, "other ..."] }) +Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 117, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2008, 0.1922, 0.3079, -0.0453, -0.3244, 0.1055, -0.0466, -0.1035, 0.1446, -0.0438, "other ..."] } }) +Tree 54: SplitPlaneNormal(SplitPlaneNormal { left: 50, right: 53, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2175, -0.1158, -0.0781, 0.0622, -0.2080, 0.0082, 0.1641, 0.0493, -0.0815, 0.2456, "other ..."] } }) +Tree 55: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 54, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0297, 0.0635, -0.0090, 0.0742, 0.0765, 0.2930, -0.2378, -0.0111, -0.1069, -0.1084, "other ..."] } }) Tree 58: Descendants(Descendants { descendants: [1, 3, 4, 7, 11, 14, 27, 29, 30, 33, 39, 50, 52, 56, 57, 67, 68, 81, 86, 88, 93, 94, 95, 97, 99] }) Tree 59: Descendants(Descendants { descendants: [5, 9, 15, 23, 31, 32, 45, 63, 64, 65, 69, 77, 83, 89, 92] }) -Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: [0.1786, -0.1600, -0.2775, -0.0898, 0.1079, 0.1067, -0.0025, 0.0785, -0.0136, -0.0227, "other ..."] }) +Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1786, -0.1600, -0.2775, -0.0898, 0.1079, 0.1067, -0.0025, 0.0785, -0.0136, -0.0227, "other ..."] } }) Tree 61: Descendants(Descendants { descendants: [12, 16, 17, 19, 24, 25, 26, 34, 35, 36, 37, 41, 49, 53, 55, 60, 62, 70, 71, 74, 75, 78, 79, 91, 96, 98] }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 120, normal: [0.0237, 0.2316, 0.0207, 0.0743, 0.2916, 0.2200, 0.0594, 0.0390, -0.4108, -0.0552, "other ..."] }) -Tree 64: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: [-0.0179, -0.0168, -0.2421, -0.1799, -0.1356, 0.0168, 0.1303, -0.2701, 0.3890, -0.1482, "other ..."] }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 120, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0237, 0.2316, 0.0207, 0.0743, 0.2916, 0.2200, 0.0594, 0.0390, -0.4108, -0.0552, "other ..."] } }) +Tree 64: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0179, -0.0168, -0.2421, -0.1799, -0.1356, 0.0168, 0.1303, -0.2701, 0.3890, -0.1482, "other ..."] } }) Tree 65: Descendants(Descendants { descendants: [3, 7, 9, 10, 17, 25, 30, 37, 38, 39, 55, 56, 60, 65, 67, 77, 78, 86, 88, 94, 97] }) Tree 66: Descendants(Descendants { descendants: [1, 4, 11, 13, 19, 27, 42, 54, 58, 73, 76, 85, 87, 91] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: [0.0741, 0.1397, -0.1747, 0.1955, 0.0976, -0.0066, -0.2642, -0.4876, -0.0256, -0.1423, "other ..."] }) +Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0741, 0.1397, -0.1747, 0.1955, 0.0976, -0.0066, -0.2642, -0.4876, -0.0256, -0.1423, "other ..."] } }) Tree 68: Descendants(Descendants { descendants: [12, 32, 35, 75, 99] }) Tree 70: Descendants(Descendants { descendants: [0, 5, 6, 18, 22, 31, 33, 44, 45, 51, 64, 68, 89, 93] }) -Tree 71: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 70, normal: [0.0908, -0.0903, 0.3735, 0.0708, -0.0676, -0.1918, -0.1890, -0.2189, -0.3541, -0.3300, "other ..."] }) +Tree 71: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0908, -0.0903, 0.3735, 0.0708, -0.0676, -0.1918, -0.1890, -0.2189, -0.3541, -0.3300, "other ..."] } }) Tree 72: Descendants(Descendants { descendants: [21, 23, 41, 43, 46, 49, 53, 59, 71, 80] }) -Tree 73: SplitPlaneNormal(SplitPlaneNormal { left: 71, right: 72, normal: [-0.0215, 0.0861, 0.0260, -0.2042, -0.1901, -0.1088, 0.0154, -0.2001, 0.3676, -0.0737, "other ..."] }) -Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 73, normal: [0.1338, 0.3609, -0.1010, -0.1138, 0.0836, 0.0482, -0.0207, 0.0315, 0.1349, 0.1157, "other ..."] }) -Tree 75: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 74, normal: [0.0874, -0.1312, 0.0401, 0.1433, -0.0151, -0.0312, 0.0888, 0.0681, -0.2158, -0.0702, "other ..."] }) +Tree 73: SplitPlaneNormal(SplitPlaneNormal { left: 71, right: 72, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0215, 0.0861, 0.0260, -0.2042, -0.1901, -0.1088, 0.0154, -0.2001, 0.3676, -0.0737, "other ..."] } }) +Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 73, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1338, 0.3609, -0.1010, -0.1138, 0.0836, 0.0482, -0.0207, 0.0315, 0.1349, 0.1157, "other ..."] } }) +Tree 75: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 74, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0874, -0.1312, 0.0401, 0.1433, -0.0151, -0.0312, 0.0888, 0.0681, -0.2158, -0.0702, "other ..."] } }) Tree 80: Descendants(Descendants { descendants: [0, 1, 4, 7, 11, 12, 17, 19, 25, 31, 32, 33, 35, 36, 48, 49, 56, 58, 60, 63, 66, 70, 74, 75, 81, 91, 93, 96, 99] }) Tree 81: Descendants(Descendants { descendants: [27, 85] }) Tree 83: Descendants(Descendants { descendants: [3, 5, 6, 8, 9, 13, 15, 18, 20, 24, 40, 45, 46, 57, 61, 65, 73, 77, 79, 82, 83, 87, 89, 92, 95] }) -Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 83, normal: [-0.0973, 0.2024, -0.0486, 0.1536, -0.0050, 0.0761, -0.0099, -0.1343, -0.3098, 0.2276, "other ..."] }) -Tree 85: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: [0.1433, -0.2044, -0.0819, -0.1305, 0.0272, 0.1805, 0.0805, 0.1128, 0.0279, -0.0258, "other ..."] }) -Tree 86: SplitPlaneNormal(SplitPlaneNormal { left: 80, right: 85, normal: [0.0240, 0.1785, 0.0265, -0.3440, 0.1702, 0.0470, 0.0107, 0.2175, -0.0317, 0.1600, "other ..."] }) +Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 83, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0973, 0.2024, -0.0486, 0.1536, -0.0050, 0.0761, -0.0099, -0.1343, -0.3098, 0.2276, "other ..."] } }) +Tree 85: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1433, -0.2044, -0.0819, -0.1305, 0.0272, 0.1805, 0.0805, 0.1128, 0.0279, -0.0258, "other ..."] } }) +Tree 86: SplitPlaneNormal(SplitPlaneNormal { left: 80, right: 85, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0240, 0.1785, 0.0265, -0.3440, 0.1702, 0.0470, 0.0107, 0.2175, -0.0317, 0.1600, "other ..."] } }) Tree 87: Descendants(Descendants { descendants: [0, 4, 13, 21, 27, 28, 29, 37, 38, 40, 41, 47, 50, 72, 73, 76, 80, 82, 85, 91] }) Tree 88: Descendants(Descendants { descendants: [1, 3, 7, 10, 17, 30, 56, 67, 77, 78, 86, 88] }) Tree 89: Descendants(Descendants { descendants: [8, 20, 24, 46, 49, 61, 62, 66, 70, 75, 79, 81, 92] }) Tree 90: Descendants(Descendants { descendants: [6, 14, 18, 31, 33, 39, 42, 45, 48, 51, 57, 58, 63, 64, 89, 93, 95, 97] }) Tree 91: Descendants(Descendants { descendants: [2, 5, 9, 15, 16, 22, 23, 26, 32, 34, 35, 36, 43, 44, 52, 53, 54, 55, 68, 69, 71, 74, 83, 84, 87, 90, 94, 96, 98, 99] }) -Tree 92: SplitPlaneNormal(SplitPlaneNormal { left: 90, right: 91, normal: [0.1432, -0.2381, -0.0722, -0.2146, -0.0888, -0.0131, 0.0621, 0.2812, 0.2690, -0.0300, "other ..."] }) +Tree 92: SplitPlaneNormal(SplitPlaneNormal { left: 90, right: 91, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1432, -0.2381, -0.0722, -0.2146, -0.0888, -0.0131, 0.0621, 0.2812, 0.2690, -0.0300, "other ..."] } }) Tree 93: Descendants(Descendants { descendants: [11, 12, 19, 25, 59, 60, 65] }) -Tree 94: SplitPlaneNormal(SplitPlaneNormal { left: 92, right: 93, normal: [-0.3120, -0.2834, -0.0907, 0.0227, 0.0090, 0.3812, 0.1933, -0.4350, -0.0939, -0.1180, "other ..."] }) -Tree 95: SplitPlaneNormal(SplitPlaneNormal { left: 89, right: 94, normal: [-0.0200, -0.2200, 0.1948, -0.1418, 0.1112, 0.0083, -0.0510, -0.0801, -0.3187, -0.1000, "other ..."] }) -Tree 96: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 95, normal: [0.0684, -0.2434, -0.1543, 0.0337, 0.1784, 0.1295, 0.3061, -0.0175, -0.0679, -0.1419, "other ..."] }) -Tree 97: SplitPlaneNormal(SplitPlaneNormal { left: 87, right: 96, normal: [-0.0316, -0.1036, 0.3252, -0.0985, -0.1286, -0.4867, -0.0286, 0.1159, -0.0177, 0.2205, "other ..."] }) +Tree 94: SplitPlaneNormal(SplitPlaneNormal { left: 92, right: 93, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.3120, -0.2834, -0.0907, 0.0227, 0.0090, 0.3812, 0.1933, -0.4350, -0.0939, -0.1180, "other ..."] } }) +Tree 95: SplitPlaneNormal(SplitPlaneNormal { left: 89, right: 94, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0200, -0.2200, 0.1948, -0.1418, 0.1112, 0.0083, -0.0510, -0.0801, -0.3187, -0.1000, "other ..."] } }) +Tree 96: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0684, -0.2434, -0.1543, 0.0337, 0.1784, 0.1295, 0.3061, -0.0175, -0.0679, -0.1419, "other ..."] } }) +Tree 97: SplitPlaneNormal(SplitPlaneNormal { left: 87, right: 96, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0316, -0.1036, 0.3252, -0.0985, -0.1286, -0.4867, -0.0286, 0.1159, -0.0177, 0.2205, "other ..."] } }) Tree 98: Descendants(Descendants { descendants: [12, 17, 19, 28, 35, 38, 41, 42, 53, 55, 58, 75, 77, 78, 96, 98] }) Tree 99: Descendants(Descendants { descendants: [14, 22, 37, 40, 47, 51, 61, 66, 70, 72, 76, 79, 82, 87, 90, 95] }) -Tree 100: SplitPlaneNormal(SplitPlaneNormal { left: 98, right: 99, normal: [-0.0078, 0.2489, -0.2359, 0.0425, -0.0624, 0.0527, 0.2042, 0.2301, -0.3498, -0.0920, "other ..."] }) +Tree 100: SplitPlaneNormal(SplitPlaneNormal { left: 98, right: 99, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0078, 0.2489, -0.2359, 0.0425, -0.0624, 0.0527, 0.2042, 0.2301, -0.3498, -0.0920, "other ..."] } }) Tree 101: Descendants(Descendants { descendants: [8, 15, 24, 83, 92, 94] }) Tree 102: Descendants(Descendants { descendants: [2, 5, 6, 16, 18, 20, 21, 23, 26, 34, 36, 43, 44, 46, 48, 52, 54, 59, 62, 63, 68, 69, 71, 74, 80, 86, 89, 93] }) -Tree 103: SplitPlaneNormal(SplitPlaneNormal { left: 101, right: 102, normal: [0.0940, 0.1325, 0.0627, 0.0098, -0.2045, -0.0698, 0.1022, 0.0678, -0.0750, -0.3038, "other ..."] }) +Tree 103: SplitPlaneNormal(SplitPlaneNormal { left: 101, right: 102, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0940, 0.1325, 0.0627, 0.0098, -0.2045, -0.0698, 0.1022, 0.0678, -0.0750, -0.3038, "other ..."] } }) Tree 104: Descendants(Descendants { descendants: [10, 21, 28, 30, 37, 41, 47, 71, 72, 77, 88, 98] }) Tree 105: Descendants(Descendants { descendants: [22, 23, 26, 34, 40, 43, 44, 46, 53, 55, 57, 61, 68, 73, 74, 82, 90, 95, 99] }) -Tree 106: SplitPlaneNormal(SplitPlaneNormal { left: 104, right: 105, normal: [-0.1170, 0.1446, 0.0602, -0.0688, 0.2407, -0.1008, 0.1718, -0.1779, -0.1381, 0.0348, "other ..."] }) +Tree 106: SplitPlaneNormal(SplitPlaneNormal { left: 104, right: 105, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1170, 0.1446, 0.0602, -0.0688, 0.2407, -0.1008, 0.1718, -0.1779, -0.1381, 0.0348, "other ..."] } }) Tree 107: Descendants(Descendants { descendants: [14, 20, 26, 40, 61, 67, 80, 87] }) Tree 108: Descendants(Descendants { descendants: [3, 6, 8, 10, 21, 23, 28, 30, 34, 37, 38, 47, 48, 50, 54, 55, 66, 68, 71, 72, 73, 76, 78, 79, 82, 88, 95, 98] }) -Tree 109: SplitPlaneNormal(SplitPlaneNormal { left: 107, right: 108, normal: [0.2514, -0.1588, -0.0499, 0.1317, -0.2218, -0.1911, 0.0804, 0.1173, 0.2414, 0.2416, "other ..."] }) +Tree 109: SplitPlaneNormal(SplitPlaneNormal { left: 107, right: 108, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2514, -0.1588, -0.0499, 0.1317, -0.2218, -0.1911, 0.0804, 0.1173, 0.2414, 0.2416, "other ..."] } }) Tree 110: Descendants(Descendants { descendants: [15, 17, 46, 53, 62, 70, 75, 90] }) -Tree 111: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: [-0.2031, -0.2079, 0.3738, -0.0426, -0.0746, -0.1377, 0.0392, 0.0958, 0.1932, -0.0802, "other ..."] }) +Tree 111: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2031, -0.2079, 0.3738, -0.0426, -0.0746, -0.1377, 0.0392, 0.0958, 0.1932, -0.0802, "other ..."] } }) Tree 112: Descendants(Descendants { descendants: [0, 5, 7, 9, 10, 12, 17, 19, 20, 25, 27, 31, 34, 39, 46, 55, 56, 58, 60, 67, 68, 76, 81, 84, 86, 91, 97] }) Tree 113: Descendants(Descendants { descendants: [26, 28, 62, 70] }) -Tree 114: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: [-0.1107, 0.0316, 0.0135, -0.1941, -0.1442, 0.1133, -0.1829, 0.0071, 0.2601, -0.1618, "other ..."] }) +Tree 114: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1107, 0.0316, 0.0135, -0.1941, -0.1442, 0.1133, -0.1829, 0.0071, 0.2601, -0.1618, "other ..."] } }) Tree 115: Descendants(Descendants { descendants: [2, 3, 4, 7, 11, 12, 16, 17, 20, 25, 32, 33, 34, 36, 48, 56, 60, 68, 69, 70, 74, 79, 81, 84, 96, 99] }) Tree 116: Descendants(Descendants { descendants: [5, 9, 15, 24, 26, 61, 62, 92] }) -Tree 117: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: [-0.0406, 0.1263, 0.0654, -0.2637, -0.0650, 0.0877, -0.2022, 0.0139, -0.0035, -0.1877, "other ..."] }) +Tree 117: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0406, 0.1263, 0.0654, -0.2637, -0.0650, 0.0877, -0.2022, 0.0139, -0.0035, -0.1877, "other ..."] } }) Tree 118: Descendants(Descendants { descendants: [2, 10, 13, 20, 21, 28, 40, 46, 47, 48, 61, 66, 72, 73, 76, 80, 87, 90] }) Tree 119: Descendants(Descendants { descendants: [0, 6, 8, 18, 22, 38, 42, 43, 44, 51, 54, 58, 59, 82, 84, 85] }) -Tree 120: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 119, normal: [0.2462, -0.2241, 0.3383, -0.2016, 0.0430, -0.0574, 0.1455, -0.2949, -0.0625, 0.0844, "other ..."] }) +Tree 120: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 119, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2462, -0.2241, 0.3383, -0.2016, 0.0430, -0.0574, 0.1455, -0.2949, -0.0625, 0.0844, "other ..."] } }) Tree 121: Descendants(Descendants { descendants: [8, 20, 34, 36, 47, 48, 50, 52, 63, 66, 69, 72, 74, 79, 81, 82, 84, 95, 96, 98] }) Tree 122: Descendants(Descendants { descendants: [2, 14, 15, 16, 24, 26, 28, 29, 40, 57, 61, 62, 70, 83, 90, 92] }) -Tree 123: SplitPlaneNormal(SplitPlaneNormal { left: 121, right: 122, normal: [-0.1843, -0.0871, -0.0603, -0.1272, 0.2035, 0.1519, -0.1754, 0.2246, 0.0560, 0.0408, "other ..."] }) +Tree 123: SplitPlaneNormal(SplitPlaneNormal { left: 121, right: 122, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1843, -0.0871, -0.0603, -0.1272, 0.2035, 0.1519, -0.1754, 0.2246, 0.0560, 0.0408, "other ..."] } }) Tree 124: Descendants(Descendants { descendants: [14, 16, 22, 38, 41, 42, 43, 44, 50, 51, 53, 59, 62, 64, 80, 84] }) Tree 125: Descendants(Descendants { descendants: [2, 10, 21, 23, 26, 28, 29, 30, 34, 37, 39, 47, 52, 54, 55, 67, 68, 69, 71, 72, 76, 78, 86, 88, 90, 94, 97, 98] }) -Tree 126: SplitPlaneNormal(SplitPlaneNormal { left: 124, right: 125, normal: [-0.2156, 0.0925, 0.0242, 0.1246, -0.0758, -0.0672, -0.1816, 0.4853, 0.1643, 0.1418, "other ..."] }) +Tree 126: SplitPlaneNormal(SplitPlaneNormal { left: 124, right: 125, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2156, 0.0925, 0.0242, 0.1246, -0.0758, -0.0672, -0.1816, 0.4853, 0.1643, 0.1418, "other ..."] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5919, 0.9953, 0.7271, 0.7734, 0.5761, 0.8882, 0.8497, 0.0817, 0.3989, 0.3384, "other ..."] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2240, 0.0136, 0.1967, 0.7482, 0.6849, 0.7949, 0.0809, 0.5504, 0.6339, 0.6978, "other ..."] }) diff --git a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap index 88b416d6..ffcbf4f0 100644 --- a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap +++ b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap @@ -6,203 +6,175 @@ expression: handle Dumping index 0 Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 99>, roots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } -Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 16, right: 17, normal: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] }) -Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 27, right: 32, normal: [0.0555, 0.0806, 0.0143, -0.1385, 0.2849, 0.2319, -0.0446, -0.0610, -0.2684, -0.0590, "other ..."] }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 40, right: 41, normal: [0.2392, -0.0605, 0.1095, 0.1468, 0.0647, -0.0015, -0.1760, -0.2809, -0.4246, -0.3074, "other ..."] }) -Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 50, normal: [-0.2405, -0.3118, -0.0317, -0.0871, -0.0980, 0.1809, 0.2828, -0.0609, 0.0089, -0.1538, "other ..."] }) -Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 54, right: 63, normal: [0.0808, 0.1852, -0.0181, 0.2474, 0.1098, 0.0149, -0.3929, -0.0177, 0.1391, 0.0947, "other ..."] }) -Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 71, right: 72, normal: [-0.1497, -0.1444, -0.0162, 0.0031, -0.3458, 0.2424, 0.0059, -0.0709, 0.1749, -0.2611, "other ..."] }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 80, right: 87, normal: [0.0190, 0.2016, 0.2233, 0.2480, 0.0147, 0.1042, -0.3418, 0.0209, -0.1837, -0.1727, "other ..."] }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 93, right: 98, normal: [-0.0858, -0.2186, -0.1017, -0.3086, -0.1670, -0.2561, 0.1200, 0.0407, 0.1944, -0.1870, "other ..."] }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 104, right: 107, normal: [0.1194, 0.1630, 0.2430, 0.2832, 0.0661, 0.0081, -0.4175, -0.1421, -0.1820, -0.2701, "other ..."] }) -Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 117, right: 118, normal: [0.1480, 0.1261, -0.0665, 0.3737, -0.0057, -0.1971, -0.5071, -0.2435, 0.0663, -0.0095, "other ..."] }) -Tree 10: Descendants(Descendants { descendants: [1, 2, 7, 8, 9, 10, 11, 28, 29, 31, 33, 34, 45, 50, 65, 74, 89, 97, 98] }) -Tree 15: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 51, normal: [-0.2138, 0.0571, -0.0776, 0.1494, 0.0759, -0.2498, 0.2368, 0.0106, -0.0278, 0.1747, "other ..."] }) -Tree 16: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 15, normal: [-0.0966, 0.0088, 0.1040, -0.2679, 0.0977, 0.0695, 0.1385, 0.0548, 0.3124, -0.1633, "other ..."] }) -Tree 17: Descendants(Descendants { descendants: [0, 3, 15, 16, 18, 21, 23, 24, 30, 37, 43, 44, 46, 47, 49, 53, 55, 62, 63, 66, 71, 73, 77, 78, 79, 80, 94, 95, 99] }) -Tree 18: Descendants(Descendants { descendants: [14, 19, 27, 32, 39, 40, 41, 48, 54, 58, 59, 68, 70, 72, 76, 84, 85, 88, 91, 93] }) -Tree 27: SplitPlaneNormal(SplitPlaneNormal { left: 73, right: 108, normal: [-0.2787, -0.1965, 0.0814, -0.2043, 0.0431, 0.2778, 0.1541, -0.0291, 0.2142, 0.2871, "other ..."] }) -Tree 32: SplitPlaneNormal(SplitPlaneNormal { left: 120, right: 121, normal: [0.0150, -0.3215, -0.1482, 0.0235, 0.1387, -0.1799, -0.1694, -0.0351, 0.1688, -0.3156, "other ..."] }) -Tree 33: Descendants(Descendants { descendants: [4, 5, 12, 17, 22, 35, 38, 42, 52, 57, 60, 61, 64, 67, 69, 75, 81, 82, 90, 92, 96] }) -Tree 34: Descendants(Descendants { descendants: [17, 20, 21, 22, 23, 37, 42, 46, 47, 53, 54, 55, 62, 67, 71, 73, 77, 81, 82, 90, 92, 93, 99] }) -Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 124, normal: [-0.1304, 0.1195, 0.0237, -0.1315, 0.0979, -0.1541, -0.3484, 0.0547, 0.2803, -0.3469, "other ..."] }) -Tree 38: Descendants(Descendants { descendants: [6, 7, 9, 10, 11, 15, 24, 26, 28, 29, 30, 31, 33, 35, 38, 49, 50, 58, 60, 63, 69, 75, 80, 83] }) -Tree 39: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 38, normal: [0.1761, -0.3237, -0.0771, 0.0829, 0.1048, -0.1838, -0.0306, 0.2495, -0.1249, -0.0092, "other ..."] }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 39, normal: [-0.2772, -0.1070, -0.0457, 0.1794, 0.1804, 0.1983, 0.0126, -0.2826, -0.2110, 0.1753, "other ..."] }) -Tree 41: Descendants(Descendants { descendants: [16, 34, 43, 45, 51, 59, 64, 72, 89, 98] }) -Tree 42: Descendants(Descendants { descendants: [6, 13, 20, 25, 26, 36, 51, 56, 83, 86, 87] }) -Tree 45: SplitPlaneNormal(SplitPlaneNormal { left: 128, right: 129, normal: [-0.3684, 0.0008, -0.0807, 0.0681, -0.1419, -0.0001, -0.0154, 0.1576, 0.0101, 0.0771, "other ..."] }) -Tree 50: SplitPlaneNormal(SplitPlaneNormal { left: 133, right: 134, normal: [-0.3364, 0.0589, -0.0020, -0.0772, -0.1871, -0.0358, -0.0563, -0.1466, -0.1627, 0.1920, "other ..."] }) -Tree 51: SplitPlaneNormal(SplitPlaneNormal { left: 33, right: 42, normal: [0.0068, 0.0769, -0.2111, -0.1734, -0.0700, -0.0432, -0.2098, -0.1988, -0.1991, -0.1307, "other ..."] }) -Tree 54: SplitPlaneNormal(SplitPlaneNormal { left: 138, right: 139, normal: [-0.1643, 0.1602, -0.2199, -0.2451, -0.1178, 0.2557, 0.1298, 0.0327, 0.0103, -0.0055, "other ..."] }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 141, right: 142, normal: [0.0065, -0.0485, -0.0992, -0.0442, 0.2479, 0.0409, 0.0901, -0.3365, -0.1733, 0.1287, "other ..."] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 144, right: 145, normal: [0.1903, -0.0961, 0.1925, -0.2574, -0.2317, 0.0783, 0.1623, 0.2120, -0.0413, 0.1303, "other ..."] }) -Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 147, right: 148, normal: [0.1108, -0.0947, 0.3407, 0.1735, -0.1439, -0.2324, -0.0712, -0.2749, -0.2086, -0.0004, "other ..."] }) -Tree 71: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: [0.0999, 0.1850, -0.1401, -0.1190, -0.1531, -0.1959, 0.0606, 0.0370, 0.3700, 0.1146, "other ..."] }) -Tree 72: Descendants(Descendants { descendants: [1, 5, 9, 11, 19, 25, 28, 30, 35, 49, 50, 58, 66, 69, 75, 81, 88, 91, 99] }) -Tree 73: Descendants(Descendants { descendants: [1, 2, 6, 10, 21, 24, 26, 56, 82, 93] }) -Tree 80: SplitPlaneNormal(SplitPlaneNormal { left: 150, right: 151, normal: [0.2229, -0.3866, 0.2402, 0.0061, 0.1428, -0.0852, 0.2127, -0.0842, -0.0014, -0.2246, "other ..."] }) -Tree 87: SplitPlaneNormal(SplitPlaneNormal { left: 155, right: 156, normal: [-0.1265, -0.0081, -0.0437, -0.3091, -0.2324, 0.3360, 0.1516, 0.0989, -0.0661, 0.2188, "other ..."] }) -Tree 88: Descendants(Descendants { descendants: [0, 3, 8, 12, 14, 15, 30, 32, 36, 37, 43, 50, 54, 55, 57, 62, 66, 69, 76, 77, 79, 84, 86, 92, 94, 95, 99] }) -Tree 91: SplitPlaneNormal(SplitPlaneNormal { left: 160, right: 161, normal: [0.0901, -0.1422, 0.0808, 0.4557, -0.1263, -0.1972, 0.0589, -0.1268, -0.1789, -0.0074, "other ..."] }) -Tree 92: Descendants(Descendants { descendants: [13, 21, 43, 59, 83, 93] }) -Tree 93: SplitPlaneNormal(SplitPlaneNormal { left: 91, right: 92, normal: [0.0186, -0.1006, -0.0831, -0.0214, -0.1000, 0.1422, -0.0251, -0.0633, -0.1181, -0.4053, "other ..."] }) -Tree 98: SplitPlaneNormal(SplitPlaneNormal { left: 163, right: 164, normal: [-0.0601, 0.0890, 0.1118, 0.2139, 0.2523, -0.0009, -0.1579, -0.1218, 0.0301, -0.0263, "other ..."] }) -Tree 99: Descendants(Descendants { descendants: [11, 16, 17, 25, 28, 33, 34, 38, 46, 49, 52, 53, 60, 61, 63, 71, 75, 80, 81, 91] }) -Tree 104: SplitPlaneNormal(SplitPlaneNormal { left: 166, right: 171, normal: [0.1219, 0.3254, -0.0556, -0.1350, -0.1739, 0.2366, -0.0643, 0.2329, 0.0237, 0.3354, "other ..."] }) -Tree 107: SplitPlaneNormal(SplitPlaneNormal { left: 173, right: 174, normal: [0.1504, -0.3915, 0.0231, -0.0543, 0.1723, -0.1227, -0.0455, 0.3143, -0.0455, -0.2603, "other ..."] }) -Tree 108: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 99, normal: [-0.0075, -0.0900, 0.1567, -0.0452, 0.0956, -0.1871, -0.0356, -0.3843, 0.0220, -0.1451, "other ..."] }) -Tree 109: Descendants(Descendants { descendants: [2, 7, 11, 24, 27, 54, 66, 97, 99] }) -Tree 112: SplitPlaneNormal(SplitPlaneNormal { left: 176, right: 177, normal: [-0.2427, -0.2440, -0.0512, 0.0332, -0.0339, 0.4400, -0.0136, -0.0048, -0.0496, -0.1119, "other ..."] }) -Tree 115: SplitPlaneNormal(SplitPlaneNormal { left: 181, right: 182, normal: [0.1186, -0.2680, -0.0303, 0.1575, -0.0871, -0.3020, -0.3436, 0.1199, -0.1731, -0.1377, "other ..."] }) -Tree 116: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 115, normal: [0.1072, 0.2300, -0.0531, -0.0113, 0.0042, -0.0105, -0.0042, 0.1061, -0.1198, -0.1595, "other ..."] }) -Tree 117: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 116, normal: [0.0798, 0.0307, 0.0889, -0.0105, -0.1144, 0.2471, -0.0233, 0.0400, 0.1735, 0.0095, "other ..."] }) -Tree 118: Descendants(Descendants { descendants: [1, 4, 13, 34, 36, 45, 50, 56, 74, 89, 91, 98] }) -Tree 120: Descendants(Descendants { descendants: [7, 9, 18, 27, 40, 42, 44, 47, 64, 67, 68, 73, 78, 87, 96] }) -Tree 121: Descendants(Descendants { descendants: [4, 5, 13, 19, 20, 22, 23, 29, 31, 35, 39, 41, 45, 48, 51, 58, 59, 65, 70, 72, 74, 83, 85, 88, 89, 90, 97, 98] }) -Tree 123: Descendants(Descendants { descendants: [0, 8, 12, 14, 18, 27, 40, 44, 57, 65, 68, 74, 79, 84, 85, 86, 87, 94, 95, 96] }) -Tree 124: Descendants(Descendants { descendants: [1, 2, 3, 4, 5, 13, 19, 25, 32, 36, 39, 41, 48, 52, 56, 61, 66, 70, 76, 78, 88, 91, 97] }) -Tree 126: Descendants(Descendants { descendants: [8, 10, 13, 20, 21, 23, 27, 37, 43, 44, 45, 52, 56, 63, 64, 66, 67, 71, 73, 77, 79, 80, 82, 95, 96, 99] }) -Tree 127: Descendants(Descendants { descendants: [16, 24, 50, 72, 81, 89, 98] }) -Tree 128: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 127, normal: [-0.0325, -0.1206, 0.2451, 0.3714, -0.0099, -0.1293, -0.1042, -0.1818, -0.3650, -0.1787, "other ..."] }) -Tree 129: Descendants(Descendants { descendants: [1, 2, 3, 29, 36, 47, 54, 70, 74, 91, 97] }) -Tree 131: Descendants(Descendants { descendants: [0, 7, 9, 12, 14, 30, 32, 39, 42, 53, 55, 57, 58, 59, 76, 84, 88, 90, 94] }) -Tree 132: Descendants(Descendants { descendants: [4, 11, 19, 22, 31, 41, 48, 62, 65, 68, 69, 75, 78, 92] }) -Tree 133: SplitPlaneNormal(SplitPlaneNormal { left: 131, right: 132, normal: [0.1949, 0.0356, 0.0405, 0.1096, 0.3402, 0.1004, 0.1464, -0.1459, 0.1447, -0.2138, "other ..."] }) -Tree 134: Descendants(Descendants { descendants: [5, 6, 15, 17, 18, 25, 26, 28, 33, 34, 35, 38, 40, 46, 49, 51, 60, 61, 83, 85, 86, 87, 93] }) -Tree 136: Descendants(Descendants { descendants: [5, 15, 17, 35, 46, 49, 53, 55, 69, 71, 75, 78, 88] }) -Tree 137: Descendants(Descendants { descendants: [10, 22, 23, 30, 31, 33, 34, 38, 41, 42, 43, 48, 58, 59, 60, 64, 68, 72, 94, 99] }) -Tree 138: SplitPlaneNormal(SplitPlaneNormal { left: 136, right: 137, normal: [0.3939, -0.1742, 0.1461, 0.1937, 0.3098, 0.1434, 0.0170, -0.1041, -0.3780, -0.2889, "other ..."] }) -Tree 139: Descendants(Descendants { descendants: [0, 6, 12, 18, 20, 25, 44, 47, 51, 57, 61, 67, 73, 83, 86, 87, 90] }) -Tree 141: Descendants(Descendants { descendants: [3, 8, 14, 16, 21, 26, 29, 32, 36, 37, 39, 50, 54, 56, 62, 66, 76, 77, 79, 80, 81, 84, 85, 89, 92, 93, 95] }) -Tree 142: Descendants(Descendants { descendants: [1, 2, 4, 7, 9, 11, 13, 19, 24, 27, 28, 40, 45, 52, 63, 65, 70, 74, 82, 91, 96, 97, 98] }) -Tree 144: Descendants(Descendants { descendants: [2, 4, 8, 12, 13, 34, 36, 63, 64, 67, 84, 89, 92, 96] }) -Tree 145: Descendants(Descendants { descendants: [7, 20, 26, 27, 29, 31, 33, 39, 40, 45, 51, 57, 65, 68, 70, 74, 85, 90, 93, 97, 98] }) -Tree 147: Descendants(Descendants { descendants: [0, 3, 6, 14, 18, 21, 22, 32, 37, 41, 43, 44, 47, 48, 52, 56, 61, 62, 73, 76, 77, 78, 79, 82, 83, 86, 87, 95] }) -Tree 148: Descendants(Descendants { descendants: [10, 15, 16, 17, 23, 24, 38, 42, 46, 53, 54, 55, 59, 60, 71, 72, 80, 94] }) -Tree 150: Descendants(Descendants { descendants: [0, 6, 14, 15, 18, 32, 44, 46, 47, 57, 61, 62, 73, 76, 77, 78, 83, 84, 85, 86, 87] }) -Tree 151: Descendants(Descendants { descendants: [10, 12, 17, 22, 23, 30, 35, 37, 38, 41, 43, 48, 49, 51, 52, 53, 55, 59, 60, 65, 68, 69, 71, 72, 75, 79, 88, 92, 94, 99] }) -Tree 153: Descendants(Descendants { descendants: [16, 24, 34, 81] }) -Tree 154: Descendants(Descendants { descendants: [3, 4, 7, 9, 11, 13, 19, 21, 26, 28, 31, 36, 39, 42, 45, 50, 56, 58, 63, 64, 74, 80, 89, 90, 95, 96, 98] }) -Tree 155: SplitPlaneNormal(SplitPlaneNormal { left: 153, right: 154, normal: [0.0176, -0.1579, -0.0865, -0.1853, 0.2316, 0.1341, -0.0738, 0.2526, 0.0750, -0.2138, "other ..."] }) -Tree 156: Descendants(Descendants { descendants: [1, 2, 5, 8, 20, 25, 27, 29, 33, 40, 54, 66, 67, 70, 82, 91, 93, 97] }) -Tree 158: Descendants(Descendants { descendants: [3, 9, 23, 29, 32, 36, 39, 45, 48, 56, 57, 58, 74, 76, 77, 95] }) -Tree 159: Descendants(Descendants { descendants: [5, 8, 15, 18, 20, 27, 44, 47, 61, 65, 67, 70, 78, 86, 87] }) -Tree 160: SplitPlaneNormal(SplitPlaneNormal { left: 158, right: 159, normal: [-0.0754, 0.0080, 0.0159, -0.0275, -0.2499, 0.2907, 0.3605, -0.1126, -0.1845, 0.2383, "other ..."] }) -Tree 161: Descendants(Descendants { descendants: [2, 7, 10, 16, 24, 30, 33, 34, 42, 50, 54, 60, 63, 64, 68, 72, 79, 80, 81, 89, 90, 94, 96, 97, 98, 99] }) -Tree 163: Descendants(Descendants { descendants: [0, 1, 6, 12, 22, 25, 26, 31, 35, 37, 40, 41, 46, 49, 51, 52, 53, 55, 69, 71, 73, 82, 85, 88] }) -Tree 164: Descendants(Descendants { descendants: [4, 11, 14, 17, 19, 28, 38, 62, 66, 75, 84, 91, 92] }) -Tree 166: Descendants(Descendants { descendants: [10, 22, 28, 31, 35, 38, 42, 43, 46, 49, 52, 59, 60, 75] }) -Tree 167: Descendants(Descendants { descendants: [23, 71, 87] }) -Tree 168: Descendants(Descendants { descendants: [5, 6, 15, 18, 47, 48, 57, 61, 65, 70, 76, 78, 83, 85, 86, 88, 90] }) -Tree 169: Descendants(Descendants { descendants: [0, 7, 9, 12, 14, 17, 24, 30, 37, 40, 44, 53, 54, 55, 62, 68, 69, 73, 79, 84, 95, 99] }) -Tree 170: SplitPlaneNormal(SplitPlaneNormal { left: 168, right: 169, normal: [0.3965, 0.0791, 0.2059, -0.0066, -0.0920, -0.1262, 0.2075, -0.0572, -0.0955, -0.0546, "other ..."] }) -Tree 171: SplitPlaneNormal(SplitPlaneNormal { left: 167, right: 170, normal: [0.1004, -0.2446, 0.0208, 0.1314, -0.1788, 0.1577, 0.2874, 0.2605, 0.1742, -0.0758, "other ..."] }) -Tree 173: Descendants(Descendants { descendants: [1, 2, 3, 8, 13, 16, 19, 20, 21, 25, 27, 33, 45, 63, 66, 67, 74, 80, 81, 82, 91, 96, 97] }) -Tree 174: Descendants(Descendants { descendants: [4, 11, 26, 29, 32, 34, 36, 39, 41, 50, 51, 56, 58, 64, 72, 77, 89, 92, 93, 94, 98] }) -Tree 176: Descendants(Descendants { descendants: [5, 9, 10, 15, 17, 23, 28, 35, 38, 42, 46, 53, 60, 63, 67, 69, 71, 75, 78, 80, 81, 83, 87] }) -Tree 177: Descendants(Descendants { descendants: [12, 14, 19, 25, 30, 33, 49, 58, 59, 62, 65, 76, 84, 86, 88] }) -Tree 179: Descendants(Descendants { descendants: [0, 3, 6, 8, 16, 18, 20, 21, 29, 32, 37, 39, 40, 43, 44, 47, 48, 52, 55, 57, 61, 64, 68, 70, 73, 77, 79, 85, 95, 96] }) -Tree 180: Descendants(Descendants { descendants: [22, 26, 31, 41, 51] }) -Tree 181: SplitPlaneNormal(SplitPlaneNormal { left: 179, right: 180, normal: [0.1642, -0.2747, 0.1580, -0.2108, 0.1010, -0.1329, -0.1718, 0.0274, -0.1044, -0.4669, "other ..."] }) -Tree 182: Descendants(Descendants { descendants: [72, 82, 90, 92, 93, 94] }) -Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4988, 0.5189, 0.0009, 0.2303, 0.1099, 0.9680, 0.9963, 0.8902, 0.9113, 0.9266, "other ..."] }) +Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.21127103 }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) +Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.8344944 }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.44403428 }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) +Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.23276792 }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) +Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.3665943 }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) +Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.52087575 }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.028415337 }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.040909976 }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.29089272 }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) +Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.123433806 }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) +Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 25, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.1661546 }, vector: [-0.0519, 0.2231, 0.1182, 0.0109, -0.2022, 0.0354, 0.0678, -0.0030, -0.3109, 0.1603, "other ..."] } }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 50, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.59460396 }, vector: [0.1047, 0.2410, -0.0902, 0.0647, 0.1430, -0.2137, -0.0107, -0.0124, 0.2128, 0.1156, "other ..."] } }) +Tree 18: Descendants(Descendants { descendants: [0, 10, 12, 13, 18, 19, 30, 32, 35, 39, 40, 41, 45, 46, 48, 51, 52, 59, 61, 62, 67, 74, 78, 85, 86, 89, 93] }) +Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 64, right: 71, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.13855109 }, vector: [-0.0102, -0.1020, -0.0560, 0.0718, 0.1451, 0.3328, -0.2286, -0.0154, -0.2177, -0.0566, "other ..."] } }) +Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 85, right: 86, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.35918173 }, vector: [-0.0512, 0.0756, 0.0280, -0.0180, 0.1238, 0.0996, 0.2939, 0.1854, 0.0852, 0.6036, "other ..."] } }) +Tree 25: Descendants(Descendants { descendants: [1, 5, 7, 9, 11, 24, 25, 27, 29, 31, 33, 34, 38, 50, 58, 60, 64, 65, 82, 84, 90, 91, 97, 98] }) +Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 89, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.38681942 }, vector: [-0.1640, -0.2146, 0.0126, -0.2075, -0.1994, 0.1463, 0.1575, 0.1572, 0.0554, -0.0843, "other ..."] } }) +Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 91, right: 92, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.53070486 }, vector: [-0.2663, 0.0379, -0.0632, -0.1892, -0.0071, -0.2105, -0.0864, 0.1947, 0.2058, 0.0501, "other ..."] } }) +Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 94, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.26665062 }, vector: [-0.0958, -0.0242, 0.1092, 0.0160, -0.1816, -0.2597, -0.0004, -0.1357, -0.4301, -0.0992, "other ..."] } }) +Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 97, right: 98, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.41647437 }, vector: [-0.0057, -0.1511, -0.2314, 0.0720, 0.1749, -0.0576, 0.2961, -0.2325, -0.2903, -0.2986, "other ..."] } }) +Tree 41: Descendants(Descendants { descendants: [4, 8, 14, 20, 21, 28, 36, 37, 42, 43, 47, 49, 54, 55, 56, 66, 70, 76, 80, 83, 88, 94] }) +Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 101, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.34888893 }, vector: [0.1515, 0.0156, -0.3014, 0.0462, 0.4379, 0.1220, 0.3793, -0.0256, -0.0623, 0.3037, "other ..."] } }) +Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 104, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.083485216 }, vector: [-0.0367, -0.1928, 0.0431, 0.1177, 0.0251, -0.1196, -0.0455, 0.0528, -0.1416, 0.0654, "other ..."] } }) +Tree 50: Descendants(Descendants { descendants: [2, 3, 6, 15, 16, 17, 22, 23, 26, 44, 53, 57, 63, 68, 69, 71, 72, 73, 75, 77, 79, 81, 87, 92, 95, 96, 99] }) +Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 106, right: 107, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.08946021 }, vector: [-0.1194, 0.3446, 0.1119, 0.1135, -0.1615, -0.1110, 0.0097, -0.0695, -0.0061, 0.2090, "other ..."] } }) +Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.14039151 }, vector: [-0.0193, 0.1846, -0.3050, 0.1297, 0.3100, -0.0573, 0.0263, -0.2456, 0.0300, -0.3526, "other ..."] } }) +Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.13571428 }, vector: [-0.2756, 0.0160, -0.0605, 0.0628, -0.0225, 0.0531, 0.0111, 0.0590, -0.1294, -0.1152, "other ..."] } }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.64680654 }, vector: [-0.2547, 0.2298, 0.0490, -0.1270, 0.0152, 0.1170, 0.4048, 0.2127, 0.0196, 0.1691, "other ..."] } }) +Tree 64: Descendants(Descendants { descendants: [2, 14, 15, 16, 23, 35, 37, 44, 49, 53, 54, 55, 63, 66, 67, 71, 72, 73, 74, 75, 87, 94, 99] }) +Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 121, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.5314221 }, vector: [-0.1285, 0.0602, 0.1834, 0.2544, 0.1033, -0.0621, -0.0452, 0.0325, -0.0896, -0.0368, "other ..."] } }) +Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 124, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.32338968 }, vector: [0.0794, -0.2799, -0.0493, -0.0013, 0.3183, 0.0950, 0.2586, -0.3268, -0.0581, -0.1079, "other ..."] } }) +Tree 71: Descendants(Descendants { descendants: [0, 4, 8, 10, 12, 13, 18, 21, 28, 32, 41, 42, 43, 45, 47, 51, 56, 57, 58, 59, 61, 70, 76, 77, 78, 80, 83, 84, 86, 88] }) +Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 127, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.16895258 }, vector: [0.0880, 0.1625, -0.0371, 0.2392, -0.0159, -0.1236, -0.0412, -0.1180, 0.0896, -0.4394, "other ..."] } }) +Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 129, right: 130, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.55195147 }, vector: [-0.0060, 0.0332, -0.1613, 0.3228, 0.3786, 0.1748, 0.0208, -0.1438, -0.3069, -0.0429, "other ..."] } }) +Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 132, right: 133, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.47393414 }, vector: [0.0944, -0.1509, -0.0855, -0.1471, -0.2003, -0.2323, -0.0929, 0.0553, -0.0206, -0.0960, "other ..."] } }) +Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 135, right: 136, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.431445 }, vector: [0.0013, 0.2258, -0.0036, -0.0711, 0.0216, -0.0891, 0.0468, 0.1825, 0.1348, 0.1195, "other ..."] } }) +Tree 85: Descendants(Descendants { descendants: [1, 5, 7, 11, 19, 24, 25, 31, 38, 39, 40, 46, 48, 50, 52, 60, 64, 69, 81, 82, 89, 91, 93, 96, 98] }) +Tree 86: Descendants(Descendants { descendants: [3, 6, 9, 17, 20, 22, 26, 27, 29, 30, 33, 34, 36, 62, 65, 68, 79, 85, 90, 92, 95, 97] }) +Tree 88: Descendants(Descendants { descendants: [2, 6, 8, 13, 14, 15, 18, 23, 24, 30, 33, 34, 40, 43, 44, 45, 47, 56, 61, 62, 63, 66, 70, 71, 81, 89, 92, 94, 95] }) +Tree 89: Descendants(Descendants { descendants: [0, 3, 4, 10, 17, 20, 21, 27, 28, 36, 37, 55, 57, 76, 77, 79, 80, 84, 86, 88, 93] }) +Tree 91: Descendants(Descendants { descendants: [1, 11, 12, 19, 31, 41, 46, 48, 49, 50, 53, 54, 58, 59, 60, 64, 65, 69, 78, 82, 90, 91, 96, 97, 98, 99] }) +Tree 92: Descendants(Descendants { descendants: [5, 7, 9, 16, 22, 25, 26, 29, 32, 35, 38, 39, 42, 51, 52, 67, 68, 72, 73, 74, 75, 83, 85, 87] }) +Tree 94: Descendants(Descendants { descendants: [1, 9, 10, 11, 19, 22, 26, 27, 29, 38, 40, 42, 46, 50, 62, 63, 65, 67, 72, 85, 91] }) +Tree 95: Descendants(Descendants { descendants: [7, 13, 25, 31, 33, 35, 39, 45, 48, 60, 64, 78, 84, 86, 89, 90, 93, 97, 98] }) +Tree 97: Descendants(Descendants { descendants: [3, 5, 6, 8, 14, 15, 17, 21, 23, 24, 30, 34, 44, 47, 49, 53, 59, 68, 69, 71, 75, 77, 79, 80, 81, 82, 92, 95, 96, 99] }) +Tree 98: Descendants(Descendants { descendants: [0, 2, 4, 12, 16, 18, 20, 28, 32, 36, 37, 41, 43, 51, 52, 54, 55, 56, 57, 58, 61, 66, 70, 73, 74, 76, 83, 87, 88, 94] }) +Tree 100: Descendants(Descendants { descendants: [1, 3, 8, 14, 21, 24, 32, 36, 37, 39, 40, 41, 42, 44, 48, 51, 55, 60, 64, 66, 70, 74, 76, 77, 78, 86, 88, 89, 91, 93] }) +Tree 101: Descendants(Descendants { descendants: [0, 4, 10, 13, 16, 18, 27, 28, 29, 43, 45, 47, 56, 57, 58, 63, 65, 73, 79, 85, 92, 94, 95] }) +Tree 103: Descendants(Descendants { descendants: [5, 9, 12, 15, 19, 22, 23, 30, 59, 61, 67, 71, 72, 75, 80, 81, 82, 83, 87, 96] }) +Tree 104: Descendants(Descendants { descendants: [2, 6, 7, 11, 17, 20, 25, 26, 31, 33, 34, 35, 38, 46, 49, 50, 52, 53, 54, 62, 68, 69, 84, 90, 97, 98, 99] }) +Tree 106: Descendants(Descendants { descendants: [0, 4, 10, 13, 14, 21, 28, 29, 32, 36, 37, 41, 43, 48, 51, 56, 57, 61, 70, 74, 76, 77, 79, 80, 85, 86, 88, 93] }) +Tree 107: Descendants(Descendants { descendants: [1, 2, 3, 5, 6, 12, 15, 16, 17, 22, 23, 24, 25, 27, 44, 47, 55, 60, 66, 71, 73, 81, 87, 91, 92, 95, 97] }) +Tree 109: Descendants(Descendants { descendants: [7, 8, 9, 20, 26, 30, 33, 34, 38, 39, 49, 53, 59, 68, 82, 84, 89, 90, 94, 99] }) +Tree 110: Descendants(Descendants { descendants: [11, 18, 19, 31, 35, 40, 42, 45, 46, 50, 52, 54, 58, 62, 63, 64, 65, 67, 69, 72, 75, 78, 83, 96, 98] }) +Tree 112: Descendants(Descendants { descendants: [2, 3, 5, 6, 7, 9, 15, 16, 17, 23, 30, 31, 46, 48, 53, 55, 69, 71, 72, 74, 75, 79, 80, 81, 82, 92, 96, 98, 99] }) +Tree 113: Descendants(Descendants { descendants: [1, 8, 11, 14, 20, 24, 25, 26, 29, 33, 34, 35, 38, 39, 44, 49, 50, 57, 60, 62, 68, 84, 89, 90, 93, 94, 95, 97] }) +Tree 115: Descendants(Descendants { descendants: [13, 18, 19, 21, 41, 42, 43, 45, 51, 54, 56, 58, 59, 63, 64, 70, 76, 78, 86, 91] }) +Tree 116: Descendants(Descendants { descendants: [0, 4, 10, 12, 22, 27, 28, 32, 36, 37, 40, 47, 52, 61, 65, 66, 67, 73, 77, 83, 85, 87, 88] }) +Tree 118: Descendants(Descendants { descendants: [2, 4, 10, 12, 17, 23, 25, 32, 35, 36, 37, 39, 47, 48, 49, 53, 55, 58, 60, 61, 66, 67, 69, 71, 73, 80, 85, 91, 94, 97] }) +Tree 119: Descendants(Descendants { descendants: [7, 9, 11, 20, 26, 29, 30, 34, 38, 50, 52, 57, 62, 68, 84, 90] }) +Tree 120: Descendants(Descendants { descendants: [3, 6, 15, 16, 22, 27, 72, 74, 75, 81, 82, 87, 92, 96, 99] }) +Tree 121: SplitPlaneNormal(SplitPlaneNormal { left: 119, right: 120, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.72503346 }, vector: [-0.1530, 0.0626, 0.0674, 0.0365, -0.1789, -0.1138, -0.0100, -0.2155, 0.1527, -0.0635, "other ..."] } }) +Tree 123: Descendants(Descendants { descendants: [1, 8, 13, 14, 18, 21, 24, 28, 33, 40, 42, 43, 44, 56, 64, 70, 77, 79, 86, 88, 89, 93, 95] }) +Tree 124: Descendants(Descendants { descendants: [0, 5, 19, 31, 41, 45, 46, 51, 54, 59, 63, 65, 76, 78, 83, 98] }) +Tree 126: Descendants(Descendants { descendants: [1, 3, 4, 10, 22, 26, 27, 28, 29, 32, 34, 36, 39, 42, 57, 65, 73, 77, 84, 85, 86, 97] }) +Tree 127: Descendants(Descendants { descendants: [5, 6, 7, 9, 11, 19, 25, 35, 38, 40, 46, 48, 50, 54, 64, 67, 69, 72, 87, 90, 91, 92, 96, 98] }) +Tree 129: Descendants(Descendants { descendants: [2, 14, 15, 16, 17, 21, 23, 24, 37, 43, 44, 47, 49, 53, 55, 58, 59, 60, 66, 68, 71, 74, 75, 80, 81, 82, 99] }) +Tree 130: Descendants(Descendants { descendants: [0, 8, 12, 13, 18, 20, 30, 31, 33, 41, 45, 51, 52, 56, 61, 62, 63, 70, 76, 78, 79, 83, 88, 89, 93, 94, 95] }) +Tree 132: Descendants(Descendants { descendants: [5, 9, 10, 13, 15, 18, 19, 22, 27, 29, 30, 31, 33, 40, 42, 45, 46, 52, 56, 58, 61, 63, 64, 65, 67, 78, 87, 92, 98] }) +Tree 133: Descendants(Descendants { descendants: [4, 8, 12, 14, 21, 23, 28, 41, 43, 47, 51, 59, 66, 70, 76, 77, 83, 86, 88, 89, 93] }) +Tree 135: Descendants(Descendants { descendants: [1, 7, 11, 20, 25, 26, 34, 35, 38, 49, 50, 60, 62, 68, 75, 81, 82, 84, 90, 96, 97, 99] }) +Tree 136: Descendants(Descendants { descendants: [0, 2, 3, 6, 16, 17, 24, 32, 36, 37, 39, 44, 48, 53, 54, 55, 57, 69, 71, 72, 73, 74, 79, 80, 85, 91, 94, 95] }) +Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2720, 0.1911, 0.2962, 0.8872, 0.8356, 0.5636, 0.3970, 0.9592, 0.6856, 0.2160, "other ..."] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) -Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0501, 0.7256, 0.0927, 0.8787, 0.0745, 0.4455, 0.1670, 0.5263, 0.3922, 0.6264, "other ..."] }) +Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7062, 0.6998, 0.5514, 0.7874, 0.4402, 0.0478, 0.7386, 0.5093, 0.8964, 0.8248, "other ..."] }) Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) -Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7025, 0.3373, 0.4632, 0.7819, 0.8148, 0.1793, 0.1601, 0.3283, 0.8373, 0.0514, "other ..."] }) +Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3211, 0.3150, 0.5402, 0.0930, 0.6963, 0.4709, 0.5433, 0.8626, 0.7230, 0.6204, "other ..."] }) Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) -Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3716, 0.3733, 0.0372, 0.6661, 0.0060, 0.0835, 0.1023, 0.9889, 0.4997, 0.3133, "other ..."] }) +Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0244, 0.7274, 0.5727, 0.5908, 0.3480, 0.4574, 0.4877, 0.6325, 0.5284, 0.6983, "other ..."] }) Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) -Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9577, 0.1656, 0.3414, 0.9329, 0.4046, 0.9177, 0.2933, 0.5043, 0.1456, 0.5960, "other ..."] }) +Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3477, 0.4107, 0.7384, 0.9005, 0.1528, 0.6780, 0.0267, 0.8021, 0.2981, 0.2717, "other ..."] }) Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) -Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9399, 0.1397, 0.3165, 0.9233, 0.4341, 0.1593, 0.9677, 0.5099, 0.2311, 0.6656, "other ..."] }) +Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4341, 0.3135, 0.0142, 0.3661, 0.4947, 0.7175, 0.9751, 0.4387, 0.0109, 0.5243, "other ..."] }) Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) -Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1980, 0.0291, 0.8259, 0.6539, 0.5040, 0.6432, 0.9540, 0.8003, 0.5856, 0.5106, "other ..."] }) +Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5616, 0.7872, 0.5384, 0.3939, 0.6155, 0.6796, 0.6887, 0.6391, 0.0838, 0.1087, "other ..."] }) Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) -Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8198, 0.7169, 0.1776, 0.3455, 0.4842, 0.9568, 0.4215, 0.1351, 0.8962, 0.4807, "other ..."] }) +Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7518, 0.6721, 0.9863, 0.1919, 0.2958, 0.3867, 0.2424, 0.8564, 0.9043, 0.2347, "other ..."] }) Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) -Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8233, 0.8458, 0.7622, 0.9391, 0.2141, 0.4733, 0.1540, 0.0635, 0.2034, 0.3980, "other ..."] }) +Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2414, 0.5945, 0.2478, 0.4521, 0.4097, 0.2810, 0.8998, 0.1611, 0.6353, 0.3983, "other ..."] }) Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) -Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0440, 0.7657, 0.2987, 0.6865, 0.6893, 0.7138, 0.5424, 0.8816, 0.8798, 0.8051, "other ..."] }) +Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2268, 0.3553, 0.4373, 0.6402, 0.5594, 0.7669, 0.2032, 0.4453, 0.1589, 0.3916, "other ..."] }) Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) -Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6197, 0.4551, 0.7833, 0.2397, 0.0793, 0.5853, 0.5778, 0.2563, 0.0007, 0.1909, "other ..."] }) +Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1264, 0.9795, 0.3150, 0.7733, 0.4131, 0.2242, 0.9078, 0.9045, 0.1001, 0.3298, "other ..."] }) Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) -Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5495, 0.1951, 0.6711, 0.1160, 0.8283, 0.7836, 0.9972, 0.8724, 0.5824, 0.0227, "other ..."] }) +Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0715, 0.9965, 0.9080, 0.4298, 0.5626, 0.8220, 0.9952, 0.2171, 0.9860, 0.8204, "other ..."] }) Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) -Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8996, 0.9406, 0.3020, 0.7528, 0.6198, 0.0976, 0.7705, 0.3189, 0.0909, 0.7571, "other ..."] }) +Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2016, 0.7551, 0.9960, 0.8650, 0.1399, 0.4464, 0.2855, 0.7776, 0.6456, 0.0802, "other ..."] }) Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) -Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6011, 0.2709, 0.5131, 0.2078, 0.4573, 0.5433, 0.0019, 0.9903, 0.2598, 0.2025, "other ..."] }) +Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6829, 0.3333, 0.9681, 0.5077, 0.2901, 0.7233, 0.6496, 0.9653, 0.9827, 0.8165, "other ..."] }) Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) -Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1063, 0.1748, 0.2458, 0.7798, 0.3720, 0.4174, 0.1471, 0.0428, 0.5633, 0.6777, "other ..."] }) +Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6031, 0.1503, 0.2788, 0.3537, 0.6271, 0.9647, 0.4800, 0.9366, 0.2688, 0.9738, "other ..."] }) Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) -Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8072, 0.0892, 0.5923, 0.7761, 0.4024, 0.9081, 0.5860, 0.8422, 0.4884, 0.9159, "other ..."] }) +Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8318, 0.2588, 0.7135, 0.6452, 0.8101, 0.4832, 0.6931, 0.7657, 0.7685, 0.9255, "other ..."] }) Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) -Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3727, 0.6472, 0.0139, 0.0702, 0.3184, 0.1636, 0.0705, 0.9162, 0.4068, 0.2656, "other ..."] }) +Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1375, 0.4302, 0.7004, 0.0251, 0.3941, 0.2518, 0.1463, 0.1808, 0.0052, 0.5310, "other ..."] }) Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) -Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3212, 0.0368, 0.7054, 0.9818, 0.4610, 0.0820, 0.0244, 0.0167, 0.1143, 0.5339, "other ..."] }) +Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1515, 0.5026, 0.8717, 0.4441, 0.3310, 0.8236, 0.2705, 0.5019, 0.7512, 0.8800, "other ..."] }) Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) -Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5610, 0.9772, 0.0580, 0.7507, 0.8983, 0.4885, 0.1873, 0.5225, 0.5751, 0.0231, "other ..."] }) +Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0803, 0.3244, 0.7758, 0.3223, 0.2530, 0.9621, 0.9439, 0.7061, 0.8197, 0.3492, "other ..."] }) Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) -Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5539, 0.1651, 0.6811, 0.5493, 0.9971, 0.0290, 0.3549, 0.0161, 0.3525, 0.1670, "other ..."] }) +Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2646, 0.5441, 0.3387, 0.3728, 0.6653, 0.3646, 0.0483, 0.7737, 0.8912, 0.1113, "other ..."] }) Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) -Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4446, 0.4059, 0.5113, 0.2566, 0.1384, 0.9068, 0.8248, 0.7463, 0.2566, 0.7379, "other ..."] }) +Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1233, 0.9711, 0.6560, 0.8814, 0.5291, 0.9290, 0.0962, 0.5502, 0.5730, 0.1741, "other ..."] }) Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) -Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1071, 0.2066, 0.9711, 0.8793, 0.2194, 0.4553, 0.3941, 0.7292, 0.5579, 0.4599, "other ..."] }) +Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6852, 0.1694, 0.7705, 0.2755, 0.6959, 0.5305, 0.2022, 0.5598, 0.6582, 0.3725, "other ..."] }) Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) -Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8239, 0.7788, 0.5844, 0.5306, 0.1690, 0.9621, 0.5922, 0.4139, 0.2589, 0.8403, "other ..."] }) +Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0037, 0.9615, 0.2896, 0.3061, 0.0181, 0.3056, 0.1931, 0.8086, 0.7679, 0.3605, "other ..."] }) Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) -Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3006, 0.8686, 0.8836, 0.4165, 0.2846, 0.1031, 0.4936, 0.6262, 0.2305, 0.7956, "other ..."] }) +Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8840, 0.2090, 0.9141, 0.4499, 0.8702, 0.9852, 0.4563, 0.2227, 0.9871, 0.2484, "other ..."] }) Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) -Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2364, 0.6117, 0.6229, 0.5530, 0.9892, 0.5707, 0.1225, 0.4371, 0.4740, 0.5488, "other ..."] }) +Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6248, 0.0958, 0.2895, 0.5991, 0.2720, 0.3625, 0.3161, 0.1407, 0.2928, 0.2270, "other ..."] }) Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) -Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7296, 0.4068, 0.9712, 0.8462, 0.0997, 0.0066, 0.1904, 0.9582, 0.0554, 0.2650, "other ..."] }) +Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4229, 0.7688, 0.5902, 0.5877, 0.3512, 0.1669, 0.6660, 0.5638, 0.4550, 0.1102, "other ..."] }) Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) -Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8419, 0.7453, 0.3740, 0.0989, 0.8923, 0.2492, 0.9620, 0.1276, 0.8429, 0.6416, "other ..."] }) +Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5868, 0.7674, 0.3458, 0.6101, 0.9320, 0.5876, 0.9390, 0.7086, 0.4476, 0.0456, "other ..."] }) Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) -Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7219, 0.7828, 0.4664, 0.9112, 0.0509, 0.9751, 0.7915, 0.5914, 0.1674, 0.5170, "other ..."] }) +Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3338, 0.2535, 0.5893, 0.7852, 0.7048, 0.2541, 0.7470, 0.5889, 0.0218, 0.1516, "other ..."] }) Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) -Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8092, 0.6173, 0.9649, 0.1808, 0.4181, 0.1213, 0.1962, 0.3540, 0.7013, 0.1030, "other ..."] }) +Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7028, 0.2429, 0.3110, 0.9131, 0.6252, 0.6485, 0.6008, 0.0272, 0.4856, 0.2410, "other ..."] }) Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) -Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2536, 0.2703, 0.9993, 0.5952, 0.8735, 0.9532, 0.1737, 0.8924, 0.8668, 0.0666, "other ..."] }) +Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6796, 0.2736, 0.0018, 0.5992, 0.2036, 0.6552, 0.7733, 0.6097, 0.3412, 0.0426, "other ..."] }) Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) -Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0026, 0.4216, 0.7622, 0.5439, 0.8554, 0.1796, 0.6987, 0.4025, 0.4228, 0.6281, "other ..."] }) +Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4371, 0.1691, 0.2971, 0.0582, 0.1128, 0.1555, 0.5510, 0.6131, 0.4963, 0.2154, "other ..."] }) Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) -Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5808, 0.7813, 0.2647, 0.6765, 0.3207, 0.2739, 0.9840, 0.8998, 0.8740, 0.1552, "other ..."] }) +Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0071, 0.8556, 0.1484, 0.6902, 0.9932, 0.1037, 0.5844, 0.4486, 0.7230, 0.0373, "other ..."] }) Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) -Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9904, 0.6222, 0.6460, 0.6455, 0.9772, 0.9037, 0.7883, 0.2515, 0.1391, 0.0313, "other ..."] }) +Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4880, 0.7731, 0.6511, 0.2908, 0.1662, 0.5471, 0.1228, 0.0526, 0.1216, 0.4898, "other ..."] }) Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) -Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0790, 0.9025, 0.2829, 0.9626, 0.1784, 0.4087, 0.1928, 0.9560, 0.0659, 0.3717, "other ..."] }) +Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5376, 0.4754, 0.3855, 0.6614, 0.2655, 0.0026, 0.9412, 0.2510, 0.2270, 0.3741, "other ..."] }) Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) -Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9612, 0.0730, 0.9112, 0.5646, 0.4922, 0.6449, 0.8764, 0.1564, 0.2957, 0.6417, "other ..."] }) +Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7924, 0.1561, 0.3198, 0.0339, 0.5919, 0.2482, 0.4291, 0.9912, 0.8506, 0.6688, "other ..."] }) Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) -Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9215, 0.0521, 0.5452, 0.0279, 0.2587, 0.6949, 0.7256, 0.8297, 0.7666, 0.9061, "other ..."] }) +Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2006, 0.5631, 0.6318, 0.4906, 0.2916, 0.4875, 0.1034, 0.7061, 0.1413, 0.9956, "other ..."] }) Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) -Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9326, 0.0457, 0.5946, 0.7477, 0.6199, 0.1108, 0.4471, 0.9398, 0.0752, 0.2719, "other ..."] }) +Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1328, 0.8757, 0.6834, 0.9140, 0.7308, 0.1439, 0.3480, 0.6060, 0.9529, 0.2163, "other ..."] }) Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) -Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9403, 0.8757, 0.3515, 0.4578, 0.4501, 0.3561, 0.3967, 0.1306, 0.5999, 0.3500, "other ..."] }) +Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0929, 0.2278, 0.8567, 0.3831, 0.1889, 0.1941, 0.4218, 0.8952, 0.8072, 0.0287, "other ..."] }) Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) -Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1462, 0.7091, 0.0995, 0.5263, 0.6013, 0.7575, 0.0023, 0.4143, 0.7932, 0.8820, "other ..."] }) +Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6879, 0.2183, 0.3746, 0.1164, 0.1198, 0.6706, 0.1791, 0.1404, 0.2785, 0.8119, "other ..."] }) Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) -Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3603, 0.8546, 0.3370, 0.6774, 0.9610, 0.5030, 0.5232, 0.5720, 0.9014, 0.9452, "other ..."] }) +Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6683, 0.2720, 0.2939, 0.5200, 0.8777, 0.1719, 0.2882, 0.1732, 0.4517, 0.0149, "other ..."] }) Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) -Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9069, 0.8039, 0.9567, 0.7394, 0.1511, 0.2094, 0.0644, 0.3092, 0.4993, 0.7042, "other ..."] }) +Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4497, 0.5538, 0.6738, 0.1492, 0.5969, 0.7824, 0.3278, 0.9153, 0.7957, 0.5507, "other ..."] }) Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) -Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8627, 0.6146, 0.0070, 0.4325, 0.2349, 0.2019, 0.0674, 0.7314, 0.4522, 0.7026, "other ..."] }) +Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4178, 0.2763, 0.3725, 0.2913, 0.2235, 0.4818, 0.8680, 0.6163, 0.2037, 0.0307, "other ..."] }) Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) -Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1394, 0.1883, 0.5325, 0.5892, 0.6697, 0.7687, 0.1885, 0.3976, 0.0690, 0.7557, "other ..."] }) +Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0785, 0.2604, 0.5759, 0.7355, 0.3364, 0.4576, 0.3499, 0.6492, 0.0832, 0.8244, "other ..."] }) Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) -Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0077, 0.4560, 0.1201, 0.5524, 0.2284, 0.4952, 0.7651, 0.4557, 0.0336, 0.8868, "other ..."] }) +Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4218, 0.5100, 0.0525, 0.1769, 0.3114, 0.6073, 0.0920, 0.0003, 0.2920, 0.6187, "other ..."] }) Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) -Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1715, 0.3212, 0.3101, 0.2505, 0.1204, 0.6421, 0.3360, 0.8166, 0.4927, 0.2501, "other ..."] }) +Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1541, 0.0680, 0.1200, 0.6694, 0.1988, 0.4380, 0.8675, 0.3337, 0.5964, 0.1474, "other ..."] }) Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) -Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4935, 0.0936, 0.1667, 0.9665, 0.5290, 0.0019, 0.5783, 0.8122, 0.4687, 0.4643, "other ..."] }) +Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0605, 0.8364, 0.8474, 0.6606, 0.6484, 0.6447, 0.8063, 0.2054, 0.0341, 0.7021, "other ..."] }) Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) -Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7904, 0.0072, 0.4569, 0.6627, 0.9265, 0.1001, 0.5258, 0.5369, 0.7636, 0.1074, "other ..."] }) +Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3382, 0.8151, 0.8856, 0.9063, 0.1357, 0.8357, 0.7017, 0.4752, 0.1846, 0.8894, "other ..."] }) Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) -Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7829, 0.4451, 0.3477, 0.8053, 0.8519, 0.3936, 0.3521, 0.1373, 0.3324, 0.7195, "other ..."] }) +Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3592, 0.9304, 0.2546, 0.5325, 0.5531, 0.3721, 0.9746, 0.6038, 0.3859, 0.8389, "other ..."] }) Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) -Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1876, 0.9623, 0.5111, 0.9887, 0.7561, 0.7959, 0.8554, 0.0285, 0.1988, 0.8901, "other ..."] }) +Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6204, 0.1391, 0.4938, 0.3666, 0.3302, 0.5598, 0.6202, 0.7036, 0.5887, 0.1799, "other ..."] }) Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) -Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9358, 0.4796, 0.9935, 0.8769, 0.5276, 0.4131, 0.0780, 0.0683, 0.1038, 0.6586, "other ..."] }) +Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7096, 0.8502, 0.8403, 0.9631, 0.6439, 0.9033, 0.4150, 0.1315, 0.0109, 0.2784, "other ..."] }) Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) diff --git a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap index e1eb1237..d21f63a8 100644 --- a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap +++ b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap @@ -6,116 +6,82 @@ expression: handle Dumping index 0 Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 99>, roots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } -Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 16, right: 17, normal: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] }) -Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 27, right: 32, normal: [0.0555, 0.0806, 0.0143, -0.1385, 0.2849, 0.2319, -0.0446, -0.0610, -0.2684, -0.0590, "other ..."] }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 40, right: 41, normal: [0.2392, -0.0605, 0.1095, 0.1468, 0.0647, -0.0015, -0.1760, -0.2809, -0.4246, -0.3074, "other ..."] }) -Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 50, normal: [-0.2405, -0.3118, -0.0317, -0.0871, -0.0980, 0.1809, 0.2828, -0.0609, 0.0089, -0.1538, "other ..."] }) -Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 54, right: 63, normal: [0.0808, 0.1852, -0.0181, 0.2474, 0.1098, 0.0149, -0.3929, -0.0177, 0.1391, 0.0947, "other ..."] }) -Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 71, right: 72, normal: [-0.1497, -0.1444, -0.0162, 0.0031, -0.3458, 0.2424, 0.0059, -0.0709, 0.1749, -0.2611, "other ..."] }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 80, right: 87, normal: [0.0190, 0.2016, 0.2233, 0.2480, 0.0147, 0.1042, -0.3418, 0.0209, -0.1837, -0.1727, "other ..."] }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 93, right: 98, normal: [-0.0858, -0.2186, -0.1017, -0.3086, -0.1670, -0.2561, 0.1200, 0.0407, 0.1944, -0.1870, "other ..."] }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 104, right: 107, normal: [0.1194, 0.1630, 0.2430, 0.2832, 0.0661, 0.0081, -0.4175, -0.1421, -0.1820, -0.2701, "other ..."] }) -Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 117, right: 118, normal: [0.1480, 0.1261, -0.0665, 0.3737, -0.0057, -0.1971, -0.5071, -0.2435, 0.0663, -0.0095, "other ..."] }) -Tree 10: Descendants(Descendants { descendants: [1, 7, 9, 10, 11, 14, 26, 29, 31, 33, 36, 45, 48, 50, 62, 65, 70, 86, 89, 90, 96, 97] }) -Tree 11: Descendants(Descendants { descendants: [8, 13, 22, 30, 34, 41, 46, 51, 52, 56, 59, 60, 64, 78, 83, 87, 92, 93] }) -Tree 12: Descendants(Descendants { descendants: [2, 4, 5, 12, 17, 18, 19, 25, 27, 32, 35, 39, 40, 42, 44, 57, 61, 66, 67, 69, 72, 74, 75, 76, 80, 81, 84, 85, 91, 98] }) -Tree 13: Descendants(Descendants { descendants: [0, 28] }) -Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 12, right: 13, normal: [0.2731, -0.0786, -0.1327, 0.3628, 0.2345, -0.2280, -0.2013, -0.0272, -0.0493, -0.2326, "other ..."] }) -Tree 15: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 14, normal: [-0.2567, 0.1567, 0.1493, -0.0293, 0.2374, -0.1484, -0.0445, 0.2906, 0.1958, 0.1779, "other ..."] }) -Tree 16: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 15, normal: [-0.0966, 0.0088, 0.1040, -0.2679, 0.0977, 0.0695, 0.1385, 0.0548, 0.3124, -0.1633, "other ..."] }) -Tree 17: Descendants(Descendants { descendants: [3, 6, 15, 16, 20, 21, 23, 24, 37, 38, 43, 47, 49, 53, 54, 55, 58, 63, 68, 71, 73, 77, 79, 82, 88, 94, 95, 99] }) -Tree 19: Descendants(Descendants { descendants: [3, 6, 21, 26, 28, 37, 62, 68, 77, 90, 91, 95, 96] }) -Tree 20: Descendants(Descendants { descendants: [10, 36, 48] }) -Tree 21: Descendants(Descendants { descendants: [20, 22, 43, 54, 55, 58, 63, 71, 76, 82, 93, 94] }) -Tree 22: Descendants(Descendants { descendants: [4, 15, 17, 18, 25, 32, 33, 38, 49, 53, 57, 60, 61, 69, 74, 75, 79, 84, 88] }) -Tree 23: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 22, normal: [-0.3791, -0.0730, -0.1764, 0.0305, 0.0613, 0.0636, 0.1593, 0.1123, 0.2905, -0.0217, "other ..."] }) -Tree 24: Descendants(Descendants { descendants: [0, 1, 8, 11, 14, 34, 40, 81, 86, 92, 99] }) -Tree 25: SplitPlaneNormal(SplitPlaneNormal { left: 23, right: 24, normal: [0.2076, -0.0553, -0.0089, 0.1387, -0.0785, -0.1300, -0.2254, 0.0608, -0.1784, -0.2486, "other ..."] }) -Tree 26: SplitPlaneNormal(SplitPlaneNormal { left: 20, right: 25, normal: [0.0553, 0.0790, 0.1994, -0.2354, 0.0693, -0.1209, 0.1183, 0.1277, 0.2898, 0.2283, "other ..."] }) -Tree 27: SplitPlaneNormal(SplitPlaneNormal { left: 19, right: 26, normal: [0.0473, -0.3036, 0.0457, -0.1234, 0.1619, 0.1471, 0.2030, 0.0749, -0.0642, -0.1674, "other ..."] }) -Tree 28: Descendants(Descendants { descendants: [2, 23, 27, 29, 47, 65, 67, 73, 78, 85, 87] }) -Tree 29: Descendants(Descendants { descendants: [5, 7, 9, 12, 19, 31, 35, 39, 41, 42, 44, 50, 52, 59, 70, 72, 80, 83, 97, 98] }) -Tree 30: Descendants(Descendants { descendants: [13, 16, 24, 30, 45, 46, 51, 56, 64, 66, 89] }) -Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 29, right: 30, normal: [0.1071, 0.1977, -0.0913, 0.0567, 0.0582, 0.0759, -0.2098, -0.1768, -0.1752, -0.1923, "other ..."] }) -Tree 32: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: [0.1214, -0.1399, 0.2165, 0.3373, 0.0917, -0.0955, -0.3803, -0.1108, 0.0250, -0.3141, "other ..."] }) -Tree 34: Descendants(Descendants { descendants: [4, 6, 8, 12, 17, 18, 21, 23, 28, 37, 47, 52, 53, 55, 67, 71, 73, 74, 77, 78, 81, 82, 86, 93, 96, 99] }) -Tree 35: Descendants(Descendants { descendants: [5, 14, 19, 25, 30, 40, 41, 60, 72, 88, 91, 98] }) -Tree 36: Descendants(Descendants { descendants: [1, 2, 3, 10, 13, 26, 27, 36, 39, 42, 54, 57, 61, 62, 64, 65, 66, 68, 70, 79, 85, 87, 90, 95, 97] }) -Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 35, right: 36, normal: [-0.0634, 0.0493, -0.1593, 0.1795, 0.0751, -0.1612, 0.1902, 0.0103, -0.3135, 0.3654, "other ..."] }) -Tree 38: Descendants(Descendants { descendants: [0, 7, 9, 11, 15, 20, 29, 31, 32, 33, 35, 38, 44, 48, 49, 50, 63, 69, 75, 80, 83, 84, 94] }) -Tree 39: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 38, normal: [0.1761, -0.3237, -0.0771, 0.0829, 0.1048, -0.1838, -0.0306, 0.2495, -0.1249, -0.0092, "other ..."] }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 39, normal: [-0.2772, -0.1070, -0.0457, 0.1794, 0.1804, 0.1983, 0.0126, -0.2826, -0.2110, 0.1753, "other ..."] }) -Tree 41: Descendants(Descendants { descendants: [16, 22, 24, 34, 43, 45, 46, 51, 56, 58, 59, 76, 89, 92] }) -Tree 43: Descendants(Descendants { descendants: [8, 16, 21, 23, 28, 37, 43, 45, 46, 47, 54, 63, 66, 67, 68, 71, 72, 73, 78, 79, 80, 86, 91, 95] }) -Tree 44: Descendants(Descendants { descendants: [1, 2, 3, 6, 13, 26, 27, 29, 36, 40, 42, 44, 48, 50, 77, 81, 89, 90, 96, 97, 98, 99] }) -Tree 45: SplitPlaneNormal(SplitPlaneNormal { left: 43, right: 44, normal: [-0.3525, -0.1849, 0.2208, 0.2373, -0.0069, 0.1022, -0.1489, -0.0255, -0.0529, 0.1189, "other ..."] }) -Tree 46: Descendants(Descendants { descendants: [12, 19, 22, 24, 30, 31, 34, 41, 51, 56, 58, 59, 60, 61, 64, 76, 82, 83, 87, 92, 93] }) -Tree 47: Descendants(Descendants { descendants: [5, 7, 9, 10, 11, 14, 25, 33, 38, 39, 57, 62, 65, 70, 74, 85] }) -Tree 48: Descendants(Descendants { descendants: [0, 4, 15, 17, 18, 20, 32, 35, 49, 52, 53, 55, 69, 75, 84, 88, 94] }) -Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 47, right: 48, normal: [0.2088, -0.0636, -0.0548, 0.0285, 0.0978, -0.2930, 0.1189, 0.1050, 0.3094, -0.3048, "other ..."] }) -Tree 50: SplitPlaneNormal(SplitPlaneNormal { left: 46, right: 49, normal: [-0.1204, -0.0043, 0.1324, -0.1481, -0.0293, -0.3729, 0.1140, 0.3140, 0.2115, 0.2715, "other ..."] }) -Tree 52: Descendants(Descendants { descendants: [2, 4, 5, 17, 18, 25, 31, 32, 33, 35, 38, 49, 53, 55, 57, 59, 60, 67, 69, 73, 74, 75, 76, 84, 88, 94, 99] }) -Tree 53: Descendants(Descendants { descendants: [8, 12, 15, 20, 22, 23, 24, 34, 41, 43, 47, 51, 52, 56, 58, 61, 64, 68, 71, 78, 80, 82, 83, 87, 92] }) -Tree 54: SplitPlaneNormal(SplitPlaneNormal { left: 52, right: 53, normal: [0.3603, 0.0727, -0.1776, -0.1462, 0.0563, -0.1120, -0.3099, -0.1210, -0.0465, 0.0446, "other ..."] }) -Tree 55: Descendants(Descendants { descendants: [0, 3, 7, 9, 29, 48, 70, 81, 96, 97] }) -Tree 56: Descendants(Descendants { descendants: [13, 16, 19] }) -Tree 57: Descendants(Descendants { descendants: [11, 26, 27, 30, 36, 37, 39, 44, 45, 46, 50, 54, 62, 63, 65, 66, 72, 77, 79, 85, 86, 89, 90, 91, 93, 95, 98] }) -Tree 58: Descendants(Descendants { descendants: [1, 10, 14, 40, 42] }) -Tree 59: SplitPlaneNormal(SplitPlaneNormal { left: 57, right: 58, normal: [-0.4605, -0.0650, 0.1659, -0.0975, -0.0184, 0.0644, -0.2423, -0.1028, -0.0656, 0.0266, "other ..."] }) -Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 56, right: 59, normal: [0.2276, -0.1366, 0.1310, -0.1017, -0.2913, -0.0059, 0.1357, 0.4185, 0.1491, 0.2157, "other ..."] }) -Tree 61: Descendants(Descendants { descendants: [6, 21, 28] }) -Tree 62: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 61, normal: [0.4596, 0.0324, -0.1382, 0.0817, -0.0810, -0.2049, -0.0655, 0.1545, 0.0863, -0.1487, "other ..."] }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 55, right: 62, normal: [0.1562, 0.0393, 0.1009, 0.1569, 0.0713, -0.1738, -0.1934, -0.3656, 0.0619, -0.2597, "other ..."] }) -Tree 65: Descendants(Descendants { descendants: [2, 4, 7, 10, 26, 27, 29, 31, 39, 57, 62, 65, 67, 70, 85, 86, 96, 97] }) -Tree 66: Descendants(Descendants { descendants: [13, 28, 30, 33, 36, 42, 45, 46, 50, 51, 56, 63, 66, 72, 89, 93] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: [0.2268, 0.1528, 0.0838, 0.2988, 0.1324, -0.0303, -0.3025, -0.1626, -0.1830, -0.3594, "other ..."] }) -Tree 68: Descendants(Descendants { descendants: [3, 15, 16, 17, 20, 22, 24, 38, 58, 59, 77, 80, 94] }) -Tree 69: Descendants(Descendants { descendants: [6, 8, 12, 18, 21, 23, 37, 41, 43, 47, 52, 53, 54, 55, 61, 64, 68, 71, 73, 78, 79, 83, 87, 90, 95] }) -Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 69, normal: [0.2389, 0.1170, -0.4682, 0.0115, 0.1053, -0.1625, 0.1364, 0.0139, 0.2077, -0.2495, "other ..."] }) -Tree 71: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: [0.0999, 0.1850, -0.1401, -0.1190, -0.1531, -0.1959, 0.0606, 0.0370, 0.3700, 0.1146, "other ..."] }) -Tree 72: Descendants(Descendants { descendants: [0, 1, 5, 9, 11, 14, 19, 25, 32, 34, 35, 40, 44, 48, 49, 60, 69, 74, 75, 76, 81, 82, 84, 88, 91, 92, 98, 99] }) -Tree 74: Descendants(Descendants { descendants: [20, 32, 35, 49, 53, 71, 74, 75, 82, 84, 88, 92, 99] }) -Tree 75: Descendants(Descendants { descendants: [22, 24, 38, 58, 76, 83, 94] }) -Tree 76: Descendants(Descendants { descendants: [4, 12, 15, 17, 18, 23, 41, 43, 47, 51, 54, 55, 57, 59, 60, 61, 64, 65, 68, 69, 77, 78, 79, 85] }) -Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 75, right: 76, normal: [0.1228, 0.1559, -0.1288, -0.2003, -0.1132, -0.1239, -0.1022, 0.1057, 0.4315, 0.0834, "other ..."] }) -Tree 78: Descendants(Descendants { descendants: [8, 37, 52, 73, 87] }) -Tree 79: SplitPlaneNormal(SplitPlaneNormal { left: 77, right: 78, normal: [0.0248, 0.0088, -0.0313, -0.1335, -0.1272, -0.3502, 0.0250, -0.0179, -0.1917, -0.0972, "other ..."] }) -Tree 80: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 79, normal: [0.0049, 0.2249, -0.1543, -0.0146, 0.2885, 0.3349, 0.0730, 0.0682, -0.0736, 0.0251, "other ..."] }) -Tree 81: Descendants(Descendants { descendants: [0, 11, 14, 33, 40, 42, 44, 50, 81, 89, 95] }) -Tree 82: Descendants(Descendants { descendants: [3, 5, 9, 13, 16, 19, 27, 30, 31, 39, 46, 56, 66, 67, 72, 80, 90, 91, 96, 97, 98] }) -Tree 83: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 82, normal: [0.0039, 0.2686, 0.2674, -0.2573, 0.1128, 0.1680, 0.0730, -0.1730, -0.1700, 0.2092, "other ..."] }) -Tree 84: Descendants(Descendants { descendants: [6, 21, 28, 36, 45, 63, 93] }) -Tree 85: SplitPlaneNormal(SplitPlaneNormal { left: 83, right: 84, normal: [0.1692, 0.0824, 0.0545, 0.1043, -0.0712, -0.1564, 0.1346, -0.2054, -0.3574, 0.0227, "other ..."] }) -Tree 86: Descendants(Descendants { descendants: [1, 2, 7, 10, 25, 26, 29, 34, 48, 62, 70, 86] }) -Tree 87: SplitPlaneNormal(SplitPlaneNormal { left: 85, right: 86, normal: [-0.1639, -0.0844, -0.0247, 0.0094, -0.2939, -0.0633, 0.1594, -0.0242, -0.2796, 0.0975, "other ..."] }) -Tree 89: Descendants(Descendants { descendants: [3, 5, 7, 9, 15, 23, 27, 29, 39, 46, 47, 57, 65, 66, 67, 72, 77, 80, 87, 96, 97] }) -Tree 90: Descendants(Descendants { descendants: [2, 6, 20, 26, 28, 33, 36, 38, 44, 45, 50, 54, 61, 63, 68, 79, 81, 82, 86, 88, 89, 94, 95, 99] }) -Tree 91: SplitPlaneNormal(SplitPlaneNormal { left: 89, right: 90, normal: [0.2298, -0.0543, -0.0903, 0.4705, -0.0333, -0.1476, 0.0085, -0.2924, -0.0262, -0.1555, "other ..."] }) -Tree 92: Descendants(Descendants { descendants: [13, 16, 21, 22, 24, 34, 43, 48, 56, 58, 59, 76, 78, 83, 93] }) -Tree 93: SplitPlaneNormal(SplitPlaneNormal { left: 91, right: 92, normal: [0.0186, -0.1006, -0.0831, -0.0214, -0.1000, 0.1422, -0.0251, -0.0633, -0.1181, -0.4053, "other ..."] }) -Tree 94: Descendants(Descendants { descendants: [1, 19, 62, 91] }) -Tree 95: Descendants(Descendants { descendants: [0, 4, 8, 12, 17, 18, 32, 35, 37, 49, 51, 52, 53, 55, 60, 64, 69, 71, 73, 74, 75, 84, 85] }) -Tree 96: Descendants(Descendants { descendants: [10, 11, 14, 25, 30, 31, 40, 41, 42, 70, 90, 92, 98] }) -Tree 97: SplitPlaneNormal(SplitPlaneNormal { left: 95, right: 96, normal: [0.0157, -0.0853, 0.0567, 0.1272, -0.0078, 0.2013, -0.2768, -0.2711, -0.0909, -0.2203, "other ..."] }) -Tree 98: SplitPlaneNormal(SplitPlaneNormal { left: 94, right: 97, normal: [0.0840, -0.0798, 0.1237, -0.0764, -0.0159, -0.2518, 0.3205, 0.2481, 0.0346, 0.0196, "other ..."] }) -Tree 100: Descendants(Descendants { descendants: [12, 15, 17, 18, 32, 37, 38, 47, 49, 53, 55, 57, 60, 61, 64, 65, 68, 69, 70, 73, 74, 75, 79, 84, 85, 87, 88, 94, 95, 99] }) -Tree 101: Descendants(Descendants { descendants: [0, 4, 7, 9, 31, 35, 52] }) -Tree 102: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 101, normal: [0.1985, -0.1880, 0.0307, -0.1037, -0.0564, -0.2396, -0.0511, 0.0306, -0.0198, -0.2910, "other ..."] }) -Tree 103: Descendants(Descendants { descendants: [5, 20, 22, 23, 24, 43, 58, 59, 71, 76, 78, 82, 83] }) -Tree 104: SplitPlaneNormal(SplitPlaneNormal { left: 102, right: 103, normal: [0.0471, -0.0086, -0.0301, -0.0896, -0.0916, 0.1329, -0.2187, -0.3051, 0.0333, -0.1385, "other ..."] }) -Tree 105: Descendants(Descendants { descendants: [8, 13, 14, 16, 19, 21, 25, 30, 34, 39, 40, 41, 42, 44, 46, 51, 56, 66, 67, 72, 80, 91, 92, 98] }) -Tree 106: Descendants(Descendants { descendants: [1, 2, 3, 6, 10, 11, 26, 27, 28, 29, 33, 36, 45, 48, 50, 54, 62, 63, 77, 81, 86, 89, 90, 93, 96, 97] }) -Tree 107: SplitPlaneNormal(SplitPlaneNormal { left: 105, right: 106, normal: [-0.0043, 0.0084, 0.0702, 0.2392, -0.0019, -0.2868, 0.1842, 0.1648, -0.2369, 0.4108, "other ..."] }) -Tree 109: Descendants(Descendants { descendants: [2, 7, 10, 11, 27, 70, 96, 97, 99] }) -Tree 110: Descendants(Descendants { descendants: [0, 5, 12, 14, 17, 19, 25, 33, 34, 35, 40, 44, 48, 49, 60, 69, 71, 74, 75, 81, 84, 88, 92, 98] }) -Tree 111: Descendants(Descendants { descendants: [9, 15, 20, 23, 24, 38, 53, 58, 59, 63, 65, 67, 82, 83, 87, 94] }) -Tree 112: SplitPlaneNormal(SplitPlaneNormal { left: 110, right: 111, normal: [0.2132, 0.0621, 0.0300, -0.2124, 0.1662, 0.0951, 0.0083, -0.0344, -0.1404, 0.3391, "other ..."] }) -Tree 113: Descendants(Descendants { descendants: [16, 29, 30, 31, 41, 43, 46, 50, 51, 56, 64, 72, 76, 78] }) -Tree 114: Descendants(Descendants { descendants: [3, 4, 8, 18, 21, 22, 32, 36, 37, 39, 47, 54, 55, 57, 61, 62, 66, 68, 73, 77, 79, 80, 85, 86, 93, 95] }) -Tree 115: SplitPlaneNormal(SplitPlaneNormal { left: 113, right: 114, normal: [0.0087, 0.0635, 0.0192, 0.0747, -0.2173, -0.3490, 0.0443, 0.1528, 0.1739, 0.3751, "other ..."] }) -Tree 116: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 115, normal: [0.1072, 0.2300, -0.0531, -0.0113, 0.0042, -0.0105, -0.0042, 0.1061, -0.1198, -0.1595, "other ..."] }) -Tree 117: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 116, normal: [0.0798, 0.0307, 0.0889, -0.0105, -0.1144, 0.2471, -0.0233, 0.0400, 0.1735, 0.0095, "other ..."] }) -Tree 118: Descendants(Descendants { descendants: [1, 6, 13, 26, 28, 42, 45, 52, 89, 90, 91] }) +Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.21127103 }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) +Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.8344944 }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.44403428 }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) +Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.23276792 }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) +Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.3665943 }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) +Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.52087575 }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.028415337 }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.040909976 }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.29089272 }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) +Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.123433806 }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) +Tree 10: Descendants(Descendants { descendants: [0, 8, 12, 13, 19, 25, 28, 33, 34, 40, 41, 42, 44, 45, 46, 48, 50, 51, 56, 59, 61, 64, 72, 89, 92, 93] }) +Tree 11: Descendants(Descendants { descendants: [1, 4, 5, 10, 29, 31, 32, 35, 60, 65, 70, 74, 84, 85] }) +Tree 12: Descendants(Descendants { descendants: [2, 7, 9, 11, 14, 27, 30, 36, 39, 52, 62, 66, 67, 86, 91, 97, 98] }) +Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.15621984 }, vector: [0.2450, 0.4678, 0.2972, 0.0609, 0.0131, -0.0330, -0.4319, 0.1331, 0.0558, -0.0869, "other ..."] } }) +Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.17777771 }, vector: [0.0937, 0.0511, 0.0410, -0.2178, -0.2653, -0.0234, 0.2367, 0.1604, 0.1979, 0.1232, "other ..."] } }) +Tree 15: Descendants(Descendants { descendants: [3, 16, 20, 21, 24, 26, 37, 38, 43, 47, 54, 57, 63, 68, 73, 76, 77, 78, 80, 83, 87, 90, 95, 96] }) +Tree 16: Descendants(Descendants { descendants: [6, 15, 17, 18, 22, 23, 49, 53, 55, 58, 69, 71, 75, 79, 81, 82, 88, 94, 99] }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 15, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.8933082 }, vector: [0.0705, -0.1150, 0.2198, -0.0387, 0.0840, -0.0742, 0.0357, 0.1034, 0.1458, 0.2194, "other ..."] } }) +Tree 19: Descendants(Descendants { descendants: [8, 13, 15, 20, 21, 23, 24, 28, 37, 43, 45, 46, 47, 51, 54, 55, 57, 61, 63, 64, 67, 68, 71, 73, 77, 78, 80, 87, 90] }) +Tree 20: Descendants(Descendants { descendants: [12, 16, 18, 22, 35, 40, 41, 48, 49, 53, 56, 58, 59, 60, 75, 76, 82, 83, 94, 99] }) +Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 19, right: 20, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.17993876 }, vector: [-0.0571, -0.3888, 0.0591, -0.0142, -0.0640, 0.3734, 0.0723, -0.0265, 0.1803, -0.2161, "other ..."] } }) +Tree 22: Descendants(Descendants { descendants: [1, 2, 3, 5, 9, 10, 14, 17, 19, 25, 26, 27, 30, 39, 42, 52, 62, 65, 66, 69, 70, 72, 84, 85, 88, 91, 97, 98] }) +Tree 23: Descendants(Descendants { descendants: [0, 4, 6, 7, 11, 29, 31, 32, 33, 34, 36, 38, 44, 50, 74, 79, 81, 86, 89, 92, 93, 95, 96] }) +Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 22, right: 23, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.28782302 }, vector: [0.3689, -0.1553, 0.0362, 0.1793, -0.1797, 0.0002, 0.0719, 0.2119, -0.3339, -0.1851, "other ..."] } }) +Tree 26: Descendants(Descendants { descendants: [13, 20, 24, 28, 32, 33, 36, 38, 43, 45, 48, 50, 57, 58, 61, 63, 68, 76, 80, 81, 86, 89, 90, 95] }) +Tree 27: Descendants(Descendants { descendants: [3, 6, 15, 16, 17, 21, 22, 23, 26, 27, 37, 47, 54, 55, 71, 77, 79, 93, 94, 96] }) +Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 27, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.37947488 }, vector: [-0.0223, 0.1294, 0.2831, -0.2915, -0.1184, 0.1089, 0.0140, 0.1800, 0.1957, 0.1604, "other ..."] } }) +Tree 29: Descendants(Descendants { descendants: [0, 1, 2, 4, 7, 9, 10, 11, 14, 25, 29, 30, 35, 39, 42, 44, 46, 62, 65, 66, 67, 69, 70, 72, 73, 74, 85, 91, 97, 98] }) +Tree 30: Descendants(Descendants { descendants: [5, 8, 12, 18, 19, 31, 34, 40, 41, 49, 51, 52, 53, 56, 59, 60, 64, 75, 78, 82, 83, 84, 87, 88, 92, 99] }) +Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 29, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.14933513 }, vector: [-0.0305, -0.0223, 0.0473, 0.0614, -0.1365, -0.0171, 0.0807, -0.1358, 0.0555, -0.1190, "other ..."] } }) +Tree 33: Descendants(Descendants { descendants: [6, 7, 8, 13, 26, 27, 28, 34, 36, 40, 45, 48, 50, 63, 65, 86, 90, 91, 93, 96] }) +Tree 34: Descendants(Descendants { descendants: [2, 11, 19, 30, 39, 42, 46, 52, 56, 62, 66, 67, 72, 85, 89] }) +Tree 35: Descendants(Descendants { descendants: [0, 1, 4, 9, 10, 14, 25, 29, 31, 33, 35, 44, 70, 74, 92, 97, 98] }) +Tree 36: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 35, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.29608616 }, vector: [0.0371, -0.3670, -0.3289, -0.1016, -0.1519, -0.1960, 0.3900, 0.0432, -0.1701, 0.0501, "other ..."] } }) +Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 33, right: 36, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.5817052 }, vector: [-0.2964, -0.0630, -0.0575, -0.2645, 0.0618, 0.1553, 0.0602, 0.1155, 0.0336, -0.0550, "other ..."] } }) +Tree 38: Descendants(Descendants { descendants: [5, 16, 21, 22, 23, 24, 41, 43, 47, 54, 58, 59, 61, 64, 71, 73, 76, 78, 80, 83, 87, 94] }) +Tree 39: Descendants(Descendants { descendants: [3, 12, 15, 17, 18, 20, 32, 37, 38, 49, 51, 53, 55, 57, 60, 68, 69, 75, 77, 79, 81, 82, 84, 88, 95, 99] }) +Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 38, right: 39, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.21422172 }, vector: [-0.1023, -0.2230, 0.0083, 0.1407, -0.1004, -0.3044, 0.0713, -0.0276, 0.2124, 0.1326, "other ..."] } }) +Tree 42: Descendants(Descendants { descendants: [1, 10, 13, 20, 26, 28, 29, 30, 36, 40, 42, 45, 48, 50, 51, 57, 63, 65, 70, 89, 90] }) +Tree 43: Descendants(Descendants { descendants: [3, 6, 16, 21, 22, 27, 37, 39, 41, 43, 47, 54, 55, 62, 66, 68, 73, 77, 78, 79, 85, 91, 93, 95, 96] }) +Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 42, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.36209315 }, vector: [0.0897, 0.3953, 0.2225, -0.2325, -0.1880, 0.0082, 0.0731, 0.3012, 0.2009, 0.0267, "other ..."] } }) +Tree 45: Descendants(Descendants { descendants: [0, 8, 9, 12, 14, 15, 23, 35, 52, 69, 71, 74, 80, 87, 92, 99] }) +Tree 46: Descendants(Descendants { descendants: [2, 11, 19, 24, 25, 44, 46, 56, 60, 61, 64, 67, 72, 97, 98] }) +Tree 47: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 46, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.27408892 }, vector: [-0.2583, 0.0414, -0.1294, 0.1178, 0.2646, 0.6034, -0.0910, -0.1269, 0.1434, -0.1341, "other ..."] } }) +Tree 48: Descendants(Descendants { descendants: [4, 5, 7, 17, 18, 31, 32, 33, 34, 38, 49, 53, 58, 59, 75, 76, 81, 82, 83, 84, 86, 88, 94] }) +Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 47, right: 48, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.4013598 }, vector: [-0.0198, -0.1386, 0.1034, 0.1370, -0.0919, 0.1695, 0.1783, 0.0528, -0.2236, 0.1003, "other ..."] } }) +Tree 51: Descendants(Descendants { descendants: [1, 2, 5, 10, 12, 13, 17, 25, 29, 40, 41, 51, 57, 60, 61, 64, 70, 85, 97] }) +Tree 52: Descendants(Descendants { descendants: [3, 6, 8, 15, 16, 21, 23, 26, 27, 28, 37, 43, 47, 48, 54, 55, 62, 68, 71, 73, 77, 78, 79, 81, 87, 90, 91, 93, 95, 96] }) +Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 52, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.38717717 }, vector: [0.2850, 0.4609, 0.1505, 0.2411, -0.0887, -0.2256, -0.1911, -0.0215, 0.1505, -0.0688, "other ..."] } }) +Tree 54: Descendants(Descendants { descendants: [7, 9, 11, 14, 19, 20, 22, 24, 30, 31, 35, 36, 39, 42, 45, 46, 50, 52, 63, 66, 67, 69, 72, 80, 86, 89, 92, 98] }) +Tree 55: Descendants(Descendants { descendants: [0, 4, 18, 32, 33, 34, 38, 44, 49, 53, 56, 58, 59, 65, 74, 75, 76, 82, 83, 84, 88, 94, 99] }) +Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 54, right: 55, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.07160753 }, vector: [-0.1284, -0.2950, 0.0308, 0.0293, -0.0542, 0.2148, 0.3359, -0.0002, 0.0949, 0.0805, "other ..."] } }) +Tree 58: Descendants(Descendants { descendants: [1, 2, 5, 9, 10, 12, 14, 15, 25, 26, 31, 33, 34, 35, 38, 44, 48, 49, 69, 70, 71, 74, 75, 81, 84, 88, 92, 99] }) +Tree 59: Descendants(Descendants { descendants: [0, 3, 4, 6, 7, 11, 17, 20, 23, 29, 32, 36, 39, 42, 50, 52, 53, 55, 57, 58, 62, 68, 79, 80, 86, 89, 93, 95, 96, 97] }) +Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.32377142 }, vector: [0.2591, 0.0100, -0.0571, -0.0253, 0.1896, -0.2304, -0.0609, 0.2559, 0.1387, 0.0448, "other ..."] } }) +Tree 61: Descendants(Descendants { descendants: [13, 16, 22, 24, 27, 28, 43, 45, 54, 63, 65, 66, 73, 76, 83, 87, 90, 94] }) +Tree 62: Descendants(Descendants { descendants: [8, 18, 19, 21, 30, 37, 40, 41, 46, 47, 51, 56, 59, 60, 61, 64, 67, 72, 77, 78, 82, 85, 91, 98] }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 62, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.14829761 }, vector: [-0.0019, -0.1048, 0.0858, -0.2124, -0.1620, 0.0902, -0.1483, 0.1343, 0.4031, -0.1357, "other ..."] } }) +Tree 65: Descendants(Descendants { descendants: [3, 8, 12, 15, 17, 23, 27, 30, 37, 46, 52, 53, 55, 57, 60, 64, 66, 68, 71, 72, 73, 75, 78, 80, 81, 85, 87, 88, 99] }) +Tree 66: Descendants(Descendants { descendants: [0, 2, 4, 7, 9, 10, 11, 14, 18, 25, 29, 35, 39, 44, 47, 49, 61, 62, 67, 69, 70, 74, 84, 86, 91, 94, 96, 97, 98] }) +Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.7572273 }, vector: [-0.0285, -0.2195, 0.0099, 0.0241, 0.0176, 0.1916, 0.0077, 0.4518, 0.0405, -0.1638, "other ..."] } }) +Tree 68: Descendants(Descendants { descendants: [1, 6, 13, 19, 20, 26, 28, 31, 32, 33, 34, 36, 40, 41, 42, 45, 48, 51, 56, 63, 89, 90, 92] }) +Tree 69: Descendants(Descendants { descendants: [5, 16, 21, 22, 24, 38, 43, 50, 54, 58, 59, 65, 76, 77, 79, 82, 83, 93, 95] }) +Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 69, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.058642477 }, vector: [0.0331, 0.0877, 0.1279, -0.2862, -0.0502, 0.1851, 0.3474, 0.2736, 0.0653, 0.1438, "other ..."] } }) +Tree 72: Descendants(Descendants { descendants: [0, 1, 2, 3, 4, 7, 9, 10, 11, 14, 18, 26, 27, 28, 29, 35, 39, 57, 62, 65, 69, 70, 73, 74, 85, 96, 97] }) +Tree 73: Descendants(Descendants { descendants: [5, 16, 19, 24, 25, 30, 40, 42, 44, 46, 56, 60, 66, 67, 72, 77, 78, 87, 91, 98] }) +Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 72, right: 73, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.30584538 }, vector: [-0.0798, 0.2641, -0.0135, 0.0698, -0.0244, 0.2822, -0.2006, -0.4188, 0.1026, -0.2267, "other ..."] } }) +Tree 75: Descendants(Descendants { descendants: [15, 17, 20, 31, 32, 33, 34, 38, 48, 49, 53, 58, 59, 75, 76, 79, 81, 82, 83, 84, 86, 88, 94, 99] }) +Tree 76: Descendants(Descendants { descendants: [6, 8, 12, 13, 21, 22, 23, 36, 37, 41, 43, 45, 47, 50, 51, 52, 54, 55, 61, 63, 64, 68, 71, 80, 89, 90, 92, 93, 95] }) +Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 75, right: 76, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.16462666 }, vector: [0.0701, 0.1854, -0.0686, 0.0047, 0.0849, -0.2750, -0.0947, -0.0915, -0.0260, -0.2147, "other ..."] } }) +Tree 79: Descendants(Descendants { descendants: [5, 9, 13, 16, 19, 27, 30, 31, 33, 34, 36, 41, 45, 46, 48, 51, 56, 59, 60, 65, 66, 67, 72, 87, 92, 93] }) +Tree 80: Descendants(Descendants { descendants: [12, 15, 20, 21, 22, 23, 24, 29, 38, 43, 44, 47, 50, 58, 61, 63, 64, 68, 76, 77, 78, 80, 82, 83, 89, 94, 98] }) +Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 79, right: 80, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.16315688 }, vector: [0.0568, 0.0277, -0.1739, -0.0810, 0.0699, -0.2270, 0.0070, 0.4516, 0.0734, 0.2684, "other ..."] } }) +Tree 82: Descendants(Descendants { descendants: [0, 1, 3, 4, 7, 8, 26, 28, 37, 39, 42, 52, 54, 55, 57, 70, 73, 79, 85, 86, 90, 95, 96] }) +Tree 83: Descendants(Descendants { descendants: [2, 6, 10, 11, 14, 17, 18, 25, 32, 35, 40, 49, 53, 62, 69, 71, 74, 75, 81, 84, 88, 91, 97, 99] }) +Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 82, right: 83, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.33374828 }, vector: [-0.2364, -0.0195, 0.0802, -0.0944, -0.1296, 0.0602, 0.0127, -0.1474, 0.1491, -0.1189, "other ..."] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8013, 0.2371, 0.6955, 0.8606, 0.5280, 0.2667, 0.6057, 0.9830, 0.9430, 0.0479, "other ..."] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1040, 0.9647, 0.8238, 0.5344, 0.4903, 0.4420, 0.7937, 0.4028, 0.2083, 0.3315, "other ..."] }) diff --git a/src/tests/upgrade.rs b/src/tests/upgrade.rs index 1caf026e..ab1e37df 100644 --- a/src/tests/upgrade.rs +++ b/src/tests/upgrade.rs @@ -77,7 +77,7 @@ fn simple_upgrade_v0_6_to_v0_7() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 4, normal: [1.0000, 0.0000] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [1, 5] }) Tree 2: Descendants(Descendants { descendants: [3, 4] }) Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 6, normal: "none" }) diff --git a/src/tests/writer.rs b/src/tests/writer.rs index 8f14a7ed..bb3bea9a 100644 --- a/src/tests/writer.rs +++ b/src/tests/writer.rs @@ -281,9 +281,9 @@ fn write_vectors_until_there_is_a_split() { Dumping index 0 Root: Metadata { dimensions: 3, items: RoaringBitmap<[0, 1, 2, 3]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: [0.5774, 0.5774, 0.5774] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 2, 3] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.6152277 }, vector: [0.5774, 0.5774, 0.5774] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 1.0000, 1.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 2.0000, 2.0000] }) @@ -404,13 +404,13 @@ fn overwrite_one_item_incremental() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 3: Descendants(Descendants { descendants: [3, 4] }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [5] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -433,13 +433,13 @@ fn overwrite_one_item_incremental() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) - Tree 7: Descendants(Descendants { descendants: [3, 4] }) - Tree 8: Descendants(Descendants { descendants: [2] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: 5.16018 }, vector: [-1.0000, 0.0000] } }) + Tree 7: Descendants(Descendants { descendants: [3] }) + Tree 8: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -606,9 +606,9 @@ fn delete_one_leaf_in_a_split() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: "none" }) - Tree 1: Descendants(Descendants { descendants: [1] }) - Tree 2: Descendants(Descendants { descendants: [0, 2] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: 1.2666667 }, vector: [-1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [2] }) + Tree 2: Descendants(Descendants { descendants: [0, 1] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -690,13 +690,13 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 3: Descendants(Descendants { descendants: [3, 4] }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [5] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -718,11 +718,11 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 5: Descendants(Descendants { descendants: [2, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 6: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -744,11 +744,9 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 2, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [5] }) - Tree 5: Descendants(Descendants { descendants: [2, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 3: Descendants(Descendants { descendants: [0, 2] }) + Tree 6: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) @@ -856,9 +854,9 @@ fn add_one_item_incrementally_to_create_a_split_node() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: [-1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [1, 2] }) - Tree 2: Descendants(Descendants { descendants: [0] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: 1.2720588 }, vector: [-1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [2] }) + Tree 2: Descendants(Descendants { descendants: [0, 1] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -883,13 +881,13 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 3: Descendants(Descendants { descendants: [3, 4] }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [5] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -911,15 +909,13 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5, 25]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: "none" }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) - Tree 7: Descendants(Descendants { descendants: [4, 25] }) - Tree 8: Descendants(Descendants { descendants: [3] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [5, 25] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -942,17 +938,15 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5, 8, 25]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 9, right: 10, normal: "none" }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: "none" }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) - Tree 7: Descendants(Descendants { descendants: [4, 25] }) - Tree 8: Descendants(Descendants { descendants: [3] }) - Tree 9: Descendants(Descendants { descendants: [8] }) - Tree 10: Descendants(Descendants { descendants: [1, 5] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: 15.694853 }, vector: [-1.0000, 0.0000] } }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) + Tree 7: Descendants(Descendants { descendants: [25] }) + Tree 8: Descendants(Descendants { descendants: [5, 8] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -983,12 +977,12 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 4, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [0, 1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: [-1.0000, 0.0000, 0.0000, 0.0000] }) - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: [1.0000, 0.0000, 0.0000, 0.0000] }) - Tree 2: Descendants(Descendants { descendants: [1, 2, 3, 4] }) - Tree 3: Descendants(Descendants { descendants: [0] }) - Tree 5: Descendants(Descendants { descendants: [0] }) - Tree 6: Descendants(Descendants { descendants: [1, 2, 3, 4] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.7252748 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 2.3133075 }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [0, 1] }) + Tree 3: Descendants(Descendants { descendants: [2, 3, 4] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) @@ -1006,12 +1000,12 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [0, 1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: [-1.0000, 0.0000, 0.0000, 0.0000] }) - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: [1.0000, 0.0000, 0.0000, 0.0000] }) - Tree 2: Descendants(Descendants { descendants: [1, 2, 3, 4] }) - Tree 3: Descendants(Descendants { descendants: [0] }) - Tree 5: Descendants(Descendants { descendants: [0] }) - Tree 6: Descendants(Descendants { descendants: [1, 2, 3, 4] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.7252748 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 2.3133075 }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [0, 1] }) + Tree 3: Descendants(Descendants { descendants: [2, 3, 4] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) @@ -1029,9 +1023,9 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: [1.0000, 0.0000, 0.0000, 0.0000] }) - Tree 5: Descendants(Descendants { descendants: [0] }) - Tree 6: Descendants(Descendants { descendants: [1, 2, 3, 4] }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 2.3133075 }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) @@ -1059,13 +1053,13 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 3: Descendants(Descendants { descendants: [3, 4] }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [5] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -1088,11 +1082,9 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 2, 3, 4]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 5, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 3: Descendants(Descendants { descendants: [3, 4] }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 3: Descendants(Descendants { descendants: [0, 2] }) + Tree 6: Descendants(Descendants { descendants: [3, 4] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) @@ -1110,11 +1102,11 @@ fn create_root_split_node_with_empty_child() { insta::assert_snapshot!(handle, @r#" ================== Dumping index 0 - Root: Metadata { dimensions: 2, items: RoaringBitmap<[2, 3, 4]>, roots: [5], distance: "euclidean" } + Root: Metadata { dimensions: 2, items: RoaringBitmap<[2, 3, 4]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 3: Descendants(Descendants { descendants: [3, 4] }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 3: Descendants(Descendants { descendants: [2] }) + Tree 6: Descendants(Descendants { descendants: [3, 4] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) @@ -1139,13 +1131,13 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 3: Descendants(Descendants { descendants: [3, 4] }) - Tree 4: Descendants(Descendants { descendants: [2] }) - Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [5] }) + Tree 5: Descendants(Descendants { descendants: [3, 4] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -1168,11 +1160,11 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: Descendants(Descendants { descendants: [1, 5] }) - Tree 5: Descendants(Descendants { descendants: [2] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 6: Descendants(Descendants { descendants: [5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -1193,13 +1185,13 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 3: Descendants(Descendants { descendants: [4, 5] }) - Tree 4: Descendants(Descendants { descendants: [1] }) - Tree 5: Descendants(Descendants { descendants: [2, 3] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) + Tree 5: Descendants(Descendants { descendants: [3] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 3.773177 }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) @@ -1220,22 +1212,20 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0, 7], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 6, normal: [1.0000, 0.0000] }) - Tree 1: Descendants(Descendants { descendants: [0] }) - Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: "none" }) - Tree 3: Descendants(Descendants { descendants: [4, 5] }) - Tree 4: Descendants(Descendants { descendants: [1] }) - Tree 5: Descendants(Descendants { descendants: [2, 3] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 5, normal: "none" }) - Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 15, normal: [-1.0000, 0.0000] }) - Tree 8: Descendants(Descendants { descendants: [2] }) - Tree 9: Descendants(Descendants { descendants: [4, 5] }) - Tree 10: SplitPlaneNormal(SplitPlaneNormal { left: 8, right: 9, normal: "none" }) - Tree 11: Descendants(Descendants { descendants: [] }) - Tree 12: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 11, normal: "none" }) - Tree 13: Descendants(Descendants { descendants: [1, 3] }) - Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 12, right: 13, normal: "none" }) - Tree 15: Descendants(Descendants { descendants: [0] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0, 1] }) + Tree 2: Descendants(Descendants { descendants: [2] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) + Tree 5: Descendants(Descendants { descendants: [3] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 3.773177 }, vector: [-1.0000, 0.0000] } }) + Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5116758 }, vector: [1.0000, 0.0000] } }) + Tree 8: Descendants(Descendants { descendants: [0, 1] }) + Tree 9: Descendants(Descendants { descendants: [2] }) + Tree 10: SplitPlaneNormal(SplitPlaneNormal { left: 8, right: 9, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2552449 }, vector: [1.0000, 0.0000] } }) + Tree 11: Descendants(Descendants { descendants: [3] }) + Tree 12: Descendants(Descendants { descendants: [4, 5] }) + Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: -3.7260265 }, vector: [1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) From 633b09770beda929c12b7031428219afe3df517b Mon Sep 17 00:00:00 2001 From: nnethercott Date: Sat, 31 May 2025 18:16:23 +0200 Subject: [PATCH 06/10] add debug impls for all node headers different platforms show varying numbers of digits in f32 debug impl => failing tests on linux vs macos runners. to fix this we ensure only 4 digits are printed --- src/distance/binary_quantized_cosine.rs | 11 ++++++++++- src/distance/binary_quantized_euclidean.rs | 11 ++++++++++- src/distance/binary_quantized_manhattan.rs | 11 ++++++++++- src/distance/cosine.rs | 9 ++++++++- src/distance/dot_product.rs | 12 +++++++++++- src/distance/euclidean.rs | 9 ++++++++- src/distance/manhattan.rs | 9 ++++++++- src/reader.rs | 4 ++-- 8 files changed, 67 insertions(+), 9 deletions(-) diff --git a/src/distance/binary_quantized_cosine.rs b/src/distance/binary_quantized_cosine.rs index d5f269f1..ac7723b5 100644 --- a/src/distance/binary_quantized_cosine.rs +++ b/src/distance/binary_quantized_cosine.rs @@ -1,3 +1,5 @@ +use std::fmt; + use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -18,10 +20,17 @@ pub enum BinaryQuantizedCosine {} /// The header of `BinaryQuantizedCosine` leaf nodes. #[repr(C)] -#[derive(Pod, Zeroable, Debug, Clone, Copy)] +#[derive(Pod, Zeroable, Clone, Copy)] pub struct NodeHeaderBinaryQuantizedCosine { norm: f32, } +impl fmt::Debug for NodeHeaderBinaryQuantizedCosine { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("NodeHeaderBinaryQuantizedCosine") + .field("norm", &format!("{:.4}", self.norm)) + .finish() + } +} impl Distance for BinaryQuantizedCosine { const DEFAULT_OVERSAMPLING: usize = 3; diff --git a/src/distance/binary_quantized_euclidean.rs b/src/distance/binary_quantized_euclidean.rs index 51c7c2f3..c0fa8c55 100644 --- a/src/distance/binary_quantized_euclidean.rs +++ b/src/distance/binary_quantized_euclidean.rs @@ -1,3 +1,5 @@ +use std::fmt; + use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -19,11 +21,18 @@ pub enum BinaryQuantizedEuclidean {} /// The header of `BinaryQuantizedEuclidean` leaf nodes. #[repr(C)] -#[derive(Pod, Zeroable, Debug, Clone, Copy)] +#[derive(Pod, Zeroable, Clone, Copy)] pub struct NodeHeaderBinaryQuantizedEuclidean { /// An extra constant term to determine the offset of the plane bias: f32, } +impl fmt::Debug for NodeHeaderBinaryQuantizedEuclidean { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("NodeHeaderBinaryQuantizedEuclidean") + .field("bias", &format!("{:.4}", self.bias)) + .finish() + } +} impl Distance for BinaryQuantizedEuclidean { const DEFAULT_OVERSAMPLING: usize = 3; diff --git a/src/distance/binary_quantized_manhattan.rs b/src/distance/binary_quantized_manhattan.rs index f22380d2..a4214123 100644 --- a/src/distance/binary_quantized_manhattan.rs +++ b/src/distance/binary_quantized_manhattan.rs @@ -1,3 +1,5 @@ +use std::fmt; + use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -18,11 +20,18 @@ pub enum BinaryQuantizedManhattan {} /// The header of BinaryQuantizedEuclidean leaf nodes. #[repr(C)] -#[derive(Pod, Zeroable, Debug, Clone, Copy)] +#[derive(Pod, Zeroable, Clone, Copy)] pub struct NodeHeaderBinaryQuantizedManhattan { /// An extra constant term to determine the offset of the plane bias: f32, } +impl fmt::Debug for NodeHeaderBinaryQuantizedManhattan { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("NodeHeaderBinaryQuantizedManhattan") + .field("bias", &format!("{:.4}", self.bias)) + .finish() + } +} impl Distance for BinaryQuantizedManhattan { const DEFAULT_OVERSAMPLING: usize = 3; diff --git a/src/distance/cosine.rs b/src/distance/cosine.rs index c352afa4..cdb57894 100644 --- a/src/distance/cosine.rs +++ b/src/distance/cosine.rs @@ -1,3 +1,5 @@ +use std::fmt; + use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -16,10 +18,15 @@ pub enum Cosine {} /// The header of Cosine leaf nodes. #[repr(C)] -#[derive(Pod, Zeroable, Debug, Clone, Copy)] +#[derive(Pod, Zeroable, Clone, Copy)] pub struct NodeHeaderCosine { norm: f32, } +impl fmt::Debug for NodeHeaderCosine { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("NodeHeaderCosine").field("norm", &format!("{:.4}", self.norm)).finish() + } +} impl Distance for Cosine { type Header = NodeHeaderCosine; diff --git a/src/distance/dot_product.rs b/src/distance/dot_product.rs index 17e87679..a48ca962 100644 --- a/src/distance/dot_product.rs +++ b/src/distance/dot_product.rs @@ -1,3 +1,5 @@ +use std::fmt; + use bytemuck::{Pod, Zeroable}; use heed::{RwPrefix, RwTxn}; use rand::Rng; @@ -19,12 +21,20 @@ pub enum DotProduct {} /// The header of DotProduct leaf nodes. #[repr(C)] -#[derive(Pod, Zeroable, Debug, Clone, Copy)] +#[derive(Pod, Zeroable, Clone, Copy)] pub struct NodeHeaderDotProduct { extra_dim: f32, /// An extra constant term to determine the offset of the plane norm: f32, } +impl fmt::Debug for NodeHeaderDotProduct { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("NodeHeaderDotProduct") + .field("extra_dim", &format!("{:.4}", self.extra_dim)) + .field("norm", &format!("{:.4}", self.norm)) + .finish() + } +} impl Distance for DotProduct { type Header = NodeHeaderDotProduct; diff --git a/src/distance/euclidean.rs b/src/distance/euclidean.rs index 977a65a7..ba756a73 100644 --- a/src/distance/euclidean.rs +++ b/src/distance/euclidean.rs @@ -1,3 +1,5 @@ +use std::fmt; + use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -17,11 +19,16 @@ pub enum Euclidean {} /// The header of Euclidean leaf nodes. #[repr(C)] -#[derive(Pod, Zeroable, Debug, Clone, Copy)] +#[derive(Pod, Zeroable, Clone, Copy)] pub struct NodeHeaderEuclidean { /// An extra constant term to determine the offset of the plane bias: f32, } +impl fmt::Debug for NodeHeaderEuclidean { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("NodeHeaderEuclidean").field("bias", &format!("{:.4}", self.bias)).finish() + } +} impl Distance for Euclidean { type Header = NodeHeaderEuclidean; diff --git a/src/distance/manhattan.rs b/src/distance/manhattan.rs index f81c064c..66087d91 100644 --- a/src/distance/manhattan.rs +++ b/src/distance/manhattan.rs @@ -1,3 +1,5 @@ +use std::fmt; + use bytemuck::{Pod, Zeroable}; use rand::Rng; @@ -16,11 +18,16 @@ pub enum Manhattan {} /// The header of Manhattan leaf nodes. #[repr(C)] -#[derive(Pod, Zeroable, Debug, Clone, Copy)] +#[derive(Pod, Zeroable, Clone, Copy)] pub struct NodeHeaderManhattan { /// An extra constant term to determine the offset of the plane bias: f32, } +impl fmt::Debug for NodeHeaderManhattan { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("NodeHeaderManhattan").field("bias", &format!("{:.4}", self.bias)).finish() + } +} impl Distance for Manhattan { type Header = NodeHeaderManhattan; diff --git a/src/reader.rs b/src/reader.rs index cdb27938..f4ab194b 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -347,7 +347,7 @@ impl<'t, D: Distance> Reader<'t, D> { let key = Key::new(self.index, item); match self.database_get(rtxn, &key)?.ok_or(Error::missing_key(key))? { GenericReadNode::Leaf(_) => { - if opt.candidates.map_or(true, |c| c.contains(item.item)) { + if opt.candidates.is_none_or(|c| c.contains(item.item)) { nns.push(item.unwrap_item()); } } @@ -364,7 +364,7 @@ impl<'t, D: Distance> Reader<'t, D> { right, }) => { let margin = match normal { - Some(normal) => D::margin(&normal, &query_leaf), + Some(normal) => D::margin(&normal, query_leaf), None => 0.0, }; queue.push((OrderedFloat(D::pq_distance(dist, margin, Side::Left)), left)); From 86b36030be93f645dbd5d5450d5afa3940a1f9ce Mon Sep 17 00:00:00 2001 From: nnethercott Date: Sat, 31 May 2025 18:23:42 +0200 Subject: [PATCH 07/10] revert clippy fix for this line --- src/reader.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reader.rs b/src/reader.rs index f4ab194b..0f560082 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -347,7 +347,7 @@ impl<'t, D: Distance> Reader<'t, D> { let key = Key::new(self.index, item); match self.database_get(rtxn, &key)?.ok_or(Error::missing_key(key))? { GenericReadNode::Leaf(_) => { - if opt.candidates.is_none_or(|c| c.contains(item.item)) { + if opt.candidates.map_or(true, |c| c.contains(item.item)) { nns.push(item.unwrap_item()); } } From 8b48f833d75079803076022db3a943ae88236400 Mon Sep 17 00:00:00 2001 From: nnethercott Date: Sat, 31 May 2025 18:23:58 +0200 Subject: [PATCH 08/10] reupdate snapshots after new debug impl --- src/tests/binary_quantized.rs | 2 +- ...pgrade__large_upgrade_v0_6_to_v0_7-10.snap | 298 +++++++------- ...ite_and_update_lot_of_random_points-2.snap | 262 ++++++------ ...write_and_update_lot_of_random_points.snap | 266 ++++++------- src/tests/upgrade.rs | 14 +- src/tests/writer.rs | 372 +++++++++--------- 6 files changed, 607 insertions(+), 607 deletions(-) diff --git a/src/tests/binary_quantized.rs b/src/tests/binary_quantized.rs index d1054392..a534dc48 100644 --- a/src/tests/binary_quantized.rs +++ b/src/tests/binary_quantized.rs @@ -50,6 +50,6 @@ fn write_and_retrieve_binary_quantized_vector() { Root: Metadata { dimensions: 16, items: RoaringBitmap<[0]>, roots: [0], distance: "binary quantized euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderBinaryQuantizedEuclidean { bias: 0.0 }, vector: [-1.0000, -1.0000, 1.0000, -1.0000, 1.0000, 1.0000, -1.0000, 1.0000, -1.0000, -1.0000, "other ..."] }) + Item 0: Leaf(Leaf { header: NodeHeaderBinaryQuantizedEuclidean { bias: "0.0000" }, vector: [-1.0000, -1.0000, 1.0000, -1.0000, 1.0000, 1.0000, -1.0000, 1.0000, -1.0000, -1.0000, "other ..."] }) "#); } diff --git a/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap b/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap index bc2970b3..0b450b7d 100644 --- a/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap +++ b/src/tests/snapshots/arroy__tests__upgrade__large_upgrade_v0_6_to_v0_7-10.snap @@ -8,209 +8,209 @@ Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 9 Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [6, 14, 18, 21, 22, 23, 26, 28, 40, 42, 43, 44, 47, 51, 54, 59, 61, 62, 68, 73, 80, 82, 83, 87, 90] }) Tree 1: Descendants(Descendants { descendants: [8, 10, 15, 17, 20, 24, 34, 37, 46, 49, 53, 55, 57, 66, 71, 75, 77, 79, 92, 95, 98] }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 0, right: 1, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2169, 0.0505, 0.0138, 0.1637, -0.1566, -0.2702, 0.1215, 0.0399, 0.3132, 0.3827, "other ..."] } }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 0, right: 1, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.2169, 0.0505, 0.0138, 0.1637, -0.1566, -0.2702, 0.1215, 0.0399, 0.3132, 0.3827, "other ..."] } }) Tree 3: Descendants(Descendants { descendants: [9, 12, 29, 31, 32, 35, 36, 64, 89, 93, 96] }) Tree 4: Descendants(Descendants { descendants: [3, 5, 7, 11, 25, 30, 39, 48, 52, 58, 60, 67, 69, 70, 81, 86, 91, 97, 99] }) Tree 5: Descendants(Descendants { descendants: [0, 1, 2, 4, 13, 16, 19, 27, 33, 38, 41, 45, 50, 56, 63, 65, 72, 74, 76, 78, 84, 85, 88, 94] }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0550, -0.0317, -0.1815, 0.1748, 0.2592, 0.1276, 0.0648, -0.3539, -0.1585, 0.0911, "other ..."] } }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0346, 0.4691, 0.1765, -0.0148, 0.0259, 0.1307, -0.1240, -0.1665, 0.0875, 0.1291, "other ..."] } }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 7, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0833, -0.0190, -0.0905, 0.1619, -0.0567, 0.2069, -0.2559, -0.1137, 0.0169, -0.0864, "other ..."] } }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0550, -0.0317, -0.1815, 0.1748, 0.2592, 0.1276, 0.0648, -0.3539, -0.1585, 0.0911, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0346, 0.4691, 0.1765, -0.0148, 0.0259, 0.1307, -0.1240, -0.1665, 0.0875, 0.1291, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 7, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0833, -0.0190, -0.0905, 0.1619, -0.0567, 0.2069, -0.2559, -0.1137, 0.0169, -0.0864, "other ..."] } }) Tree 11: Descendants(Descendants { descendants: [0, 1, 3, 4, 7, 9, 10, 11, 13, 27, 29, 30, 31, 39, 45, 50, 56, 57, 60, 64, 65, 67, 73, 84, 85, 88, 91, 97] }) Tree 14: Descendants(Descendants { descendants: [25, 32, 33, 49, 81, 99] }) -Tree 15: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 14, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.3533, -0.1026, 0.1114, 0.1360, -0.1732, 0.1633, -0.0302, -0.1458, -0.0030, -0.2101, "other ..."] } }) -Tree 16: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 15, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2420, -0.1007, 0.3792, 0.0349, -0.0702, 0.0947, -0.3028, -0.1386, -0.2889, 0.0402, "other ..."] } }) -Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0014, -0.0866, -0.0081, 0.0327, -0.1021, -0.1147, 0.0955, 0.0205, 0.2358, -0.1408, "other ..."] } }) +Tree 15: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 14, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.3533, -0.1026, 0.1114, 0.1360, -0.1732, 0.1633, -0.0302, -0.1458, -0.0030, -0.2101, "other ..."] } }) +Tree 16: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 15, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2420, -0.1007, 0.3792, 0.0349, -0.0702, 0.0947, -0.3028, -0.1386, -0.2889, 0.0402, "other ..."] } }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0014, -0.0866, -0.0081, 0.0327, -0.1021, -0.1147, 0.0955, 0.0205, 0.2358, -0.1408, "other ..."] } }) Tree 18: Descendants(Descendants { descendants: [4, 7, 9, 11, 25, 27, 29, 33, 48, 52, 56, 58, 60, 67, 76, 78, 81, 91, 97] }) Tree 19: Descendants(Descendants { descendants: [0, 1, 6, 12, 13, 14, 18, 19, 31, 35, 38, 39, 42, 45, 50, 51, 54, 64, 85, 86, 89, 93, 94, 96] }) -Tree 20: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 19, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0557, -0.0514, -0.1661, -0.1599, 0.0364, -0.1539, 0.0511, -0.1720, -0.0989, -0.0885, "other ..."] } }) +Tree 20: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 19, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0557, -0.0514, -0.1661, -0.1599, 0.0364, -0.1539, 0.0511, -0.1720, -0.0989, -0.0885, "other ..."] } }) Tree 21: Descendants(Descendants { descendants: [2, 3, 5, 8, 15, 16, 17, 20, 24, 32, 36, 49, 59, 62, 63, 65, 66, 69, 70, 75, 79, 80, 83, 84, 87, 92] }) -Tree 23: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 106, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1147, 0.1494, -0.3442, -0.2764, 0.1638, -0.3154, 0.0552, 0.1184, 0.1290, 0.0611, "other ..."] } }) -Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 20, right: 23, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0617, -0.0186, -0.1350, -0.3128, -0.0542, 0.0524, 0.2907, 0.1259, 0.0908, 0.2518, "other ..."] } }) +Tree 23: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 106, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1147, 0.1494, -0.3442, -0.2764, 0.1638, -0.3154, 0.0552, 0.1184, 0.1290, 0.0611, "other ..."] } }) +Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 20, right: 23, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0617, -0.0186, -0.1350, -0.3128, -0.0542, 0.0524, 0.2907, 0.1259, 0.0908, 0.2518, "other ..."] } }) Tree 25: Descendants(Descendants { descendants: [] }) Tree 26: Descendants(Descendants { descendants: [5, 16, 18, 22, 36, 43, 44, 49, 59, 83, 84, 96] }) -Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 111, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0098, 0.2629, -0.1633, -0.1082, -0.0680, -0.1540, 0.0015, 0.1634, 0.2796, 0.1046, "other ..."] } }) +Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 111, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0098, 0.2629, -0.1633, -0.1082, -0.0680, -0.1540, 0.0015, 0.1634, 0.2796, 0.1046, "other ..."] } }) Tree 29: Descendants(Descendants { descendants: [7, 9, 11, 12, 31, 32, 33, 35, 39, 52, 58, 69, 74, 81, 86, 89, 92, 97, 99] }) -Tree 30: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 29, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1005, -0.0667, 0.1734, 0.2457, 0.1330, 0.0145, -0.1141, -0.0260, -0.1916, -0.1144, "other ..."] } }) -Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 25, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0357, 0.2985, -0.2477, -0.0879, 0.2653, 0.2303, 0.1487, 0.0825, -0.0937, 0.1187, "other ..."] } }) +Tree 30: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 29, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.1005, -0.0667, 0.1734, 0.2457, 0.1330, 0.0145, -0.1141, -0.0260, -0.1916, -0.1144, "other ..."] } }) +Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 25, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0357, 0.2985, -0.2477, -0.0879, 0.2653, 0.2303, 0.1487, 0.0825, -0.0937, 0.1187, "other ..."] } }) Tree 34: Descendants(Descendants { descendants: [0, 1, 2, 4, 13, 19, 24, 25, 27, 29, 41, 42, 45, 51, 56, 57, 60, 63, 64, 65, 77, 85, 91, 93, 94] }) -Tree 35: SplitPlaneNormal(SplitPlaneNormal { left: 31, right: 34, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1861, -0.2141, -0.1520, 0.0974, 0.0900, 0.2616, -0.0688, -0.2960, -0.0378, -0.0949, "other ..."] } }) +Tree 35: SplitPlaneNormal(SplitPlaneNormal { left: 31, right: 34, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.1861, -0.2141, -0.1520, 0.0974, 0.0900, 0.2616, -0.0688, -0.2960, -0.0378, -0.0949, "other ..."] } }) Tree 36: Descendants(Descendants { descendants: [8, 15, 18, 21, 36, 42, 53, 59, 71, 87, 89, 93, 98] }) Tree 38: Descendants(Descendants { descendants: [4, 11, 23, 33, 48, 52, 54, 63, 64, 66, 69, 74, 75, 88, 90, 99] }) -Tree 39: SplitPlaneNormal(SplitPlaneNormal { left: 114, right: 38, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2761, -0.2159, -0.3421, 0.2165, 0.3175, -0.0799, 0.0880, 0.0680, 0.0497, -0.0448, "other ..."] } }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 36, right: 39, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0582, 0.0824, 0.2122, 0.1920, 0.2041, -0.0451, -0.0324, 0.0349, 0.0748, 0.2791, "other ..."] } }) +Tree 39: SplitPlaneNormal(SplitPlaneNormal { left: 114, right: 38, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2761, -0.2159, -0.3421, 0.2165, 0.3175, -0.0799, 0.0880, 0.0680, 0.0497, -0.0448, "other ..."] } }) +Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 36, right: 39, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0582, 0.0824, 0.2122, 0.1920, 0.2041, -0.0451, -0.0324, 0.0349, 0.0748, 0.2791, "other ..."] } }) Tree 41: Descendants(Descendants { descendants: [1, 2, 3, 6, 22, 29, 40, 41, 43, 44, 45, 47, 49, 50, 65, 72, 73, 77, 80, 82, 83, 85, 92, 94] }) Tree 42: Descendants(Descendants { descendants: [13, 14, 16, 24, 30, 32, 35, 37, 38, 51, 57, 61, 78, 79, 95, 96] }) -Tree 43: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 42, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2362, 0.0074, -0.1011, 0.1902, -0.2410, -0.2179, 0.1000, -0.2451, 0.0583, 0.2037, "other ..."] } }) -Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 40, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0723, -0.1644, -0.4771, -0.0662, 0.1894, 0.0474, 0.2151, 0.0954, -0.0123, 0.1914, "other ..."] } }) +Tree 43: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 42, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.2362, 0.0074, -0.1011, 0.1902, -0.2410, -0.2179, 0.1000, -0.2451, 0.0583, 0.2037, "other ..."] } }) +Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 40, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0723, -0.1644, -0.4771, -0.0662, 0.1894, 0.0474, 0.2151, 0.0954, -0.0123, 0.1914, "other ..."] } }) Tree 45: Descendants(Descendants { descendants: [23, 43, 46, 49, 53, 55, 66, 75, 82] }) Tree 46: Descendants(Descendants { descendants: [0, 6, 8, 18, 21, 22, 28, 31, 39, 41, 42, 44, 45, 47, 50, 51, 52, 54, 58, 59, 72, 76, 77, 80, 85, 88, 91, 93, 98] }) Tree 47: Descendants(Descendants { descendants: [10, 13, 19, 27, 37, 40, 67, 71, 73, 86, 87, 90] }) -Tree 48: SplitPlaneNormal(SplitPlaneNormal { left: 46, right: 47, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0763, 0.0885, -0.2724, 0.0145, 0.0947, -0.2347, 0.1067, -0.0488, 0.0689, 0.0441, "other ..."] } }) +Tree 48: SplitPlaneNormal(SplitPlaneNormal { left: 46, right: 47, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0763, 0.0885, -0.2724, 0.0145, 0.0947, -0.2347, 0.1067, -0.0488, 0.0689, 0.0441, "other ..."] } }) Tree 49: Descendants(Descendants { descendants: [] }) -Tree 50: SplitPlaneNormal(SplitPlaneNormal { left: 48, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0493, 0.0077, 0.1071, 0.2488, -0.0877, -0.1022, -0.1081, -0.0104, 0.0486, -0.0089, "other ..."] } }) +Tree 50: SplitPlaneNormal(SplitPlaneNormal { left: 48, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0493, 0.0077, 0.1071, 0.2488, -0.0877, -0.1022, -0.1081, -0.0104, 0.0486, -0.0089, "other ..."] } }) Tree 51: Descendants(Descendants { descendants: [1, 14, 29, 30, 35, 38, 57, 63, 64, 65, 78, 83, 89, 94, 95, 97] }) -Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 117, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2008, 0.1922, 0.3079, -0.0453, -0.3244, 0.1055, -0.0466, -0.1035, 0.1446, -0.0438, "other ..."] } }) -Tree 54: SplitPlaneNormal(SplitPlaneNormal { left: 50, right: 53, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2175, -0.1158, -0.0781, 0.0622, -0.2080, 0.0082, 0.1641, 0.0493, -0.0815, 0.2456, "other ..."] } }) -Tree 55: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 54, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0297, 0.0635, -0.0090, 0.0742, 0.0765, 0.2930, -0.2378, -0.0111, -0.1069, -0.1084, "other ..."] } }) +Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 117, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.2008, 0.1922, 0.3079, -0.0453, -0.3244, 0.1055, -0.0466, -0.1035, 0.1446, -0.0438, "other ..."] } }) +Tree 54: SplitPlaneNormal(SplitPlaneNormal { left: 50, right: 53, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.2175, -0.1158, -0.0781, 0.0622, -0.2080, 0.0082, 0.1641, 0.0493, -0.0815, 0.2456, "other ..."] } }) +Tree 55: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 54, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0297, 0.0635, -0.0090, 0.0742, 0.0765, 0.2930, -0.2378, -0.0111, -0.1069, -0.1084, "other ..."] } }) Tree 58: Descendants(Descendants { descendants: [1, 3, 4, 7, 11, 14, 27, 29, 30, 33, 39, 50, 52, 56, 57, 67, 68, 81, 86, 88, 93, 94, 95, 97, 99] }) Tree 59: Descendants(Descendants { descendants: [5, 9, 15, 23, 31, 32, 45, 63, 64, 65, 69, 77, 83, 89, 92] }) -Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1786, -0.1600, -0.2775, -0.0898, 0.1079, 0.1067, -0.0025, 0.0785, -0.0136, -0.0227, "other ..."] } }) +Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1786, -0.1600, -0.2775, -0.0898, 0.1079, 0.1067, -0.0025, 0.0785, -0.0136, -0.0227, "other ..."] } }) Tree 61: Descendants(Descendants { descendants: [12, 16, 17, 19, 24, 25, 26, 34, 35, 36, 37, 41, 49, 53, 55, 60, 62, 70, 71, 74, 75, 78, 79, 91, 96, 98] }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 120, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0237, 0.2316, 0.0207, 0.0743, 0.2916, 0.2200, 0.0594, 0.0390, -0.4108, -0.0552, "other ..."] } }) -Tree 64: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0179, -0.0168, -0.2421, -0.1799, -0.1356, 0.0168, 0.1303, -0.2701, 0.3890, -0.1482, "other ..."] } }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 120, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0237, 0.2316, 0.0207, 0.0743, 0.2916, 0.2200, 0.0594, 0.0390, -0.4108, -0.0552, "other ..."] } }) +Tree 64: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0179, -0.0168, -0.2421, -0.1799, -0.1356, 0.0168, 0.1303, -0.2701, 0.3890, -0.1482, "other ..."] } }) Tree 65: Descendants(Descendants { descendants: [3, 7, 9, 10, 17, 25, 30, 37, 38, 39, 55, 56, 60, 65, 67, 77, 78, 86, 88, 94, 97] }) Tree 66: Descendants(Descendants { descendants: [1, 4, 11, 13, 19, 27, 42, 54, 58, 73, 76, 85, 87, 91] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0741, 0.1397, -0.1747, 0.1955, 0.0976, -0.0066, -0.2642, -0.4876, -0.0256, -0.1423, "other ..."] } }) +Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0741, 0.1397, -0.1747, 0.1955, 0.0976, -0.0066, -0.2642, -0.4876, -0.0256, -0.1423, "other ..."] } }) Tree 68: Descendants(Descendants { descendants: [12, 32, 35, 75, 99] }) Tree 70: Descendants(Descendants { descendants: [0, 5, 6, 18, 22, 31, 33, 44, 45, 51, 64, 68, 89, 93] }) -Tree 71: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0908, -0.0903, 0.3735, 0.0708, -0.0676, -0.1918, -0.1890, -0.2189, -0.3541, -0.3300, "other ..."] } }) +Tree 71: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0908, -0.0903, 0.3735, 0.0708, -0.0676, -0.1918, -0.1890, -0.2189, -0.3541, -0.3300, "other ..."] } }) Tree 72: Descendants(Descendants { descendants: [21, 23, 41, 43, 46, 49, 53, 59, 71, 80] }) -Tree 73: SplitPlaneNormal(SplitPlaneNormal { left: 71, right: 72, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0215, 0.0861, 0.0260, -0.2042, -0.1901, -0.1088, 0.0154, -0.2001, 0.3676, -0.0737, "other ..."] } }) -Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 73, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1338, 0.3609, -0.1010, -0.1138, 0.0836, 0.0482, -0.0207, 0.0315, 0.1349, 0.1157, "other ..."] } }) -Tree 75: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 74, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0874, -0.1312, 0.0401, 0.1433, -0.0151, -0.0312, 0.0888, 0.0681, -0.2158, -0.0702, "other ..."] } }) +Tree 73: SplitPlaneNormal(SplitPlaneNormal { left: 71, right: 72, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0215, 0.0861, 0.0260, -0.2042, -0.1901, -0.1088, 0.0154, -0.2001, 0.3676, -0.0737, "other ..."] } }) +Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 73, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1338, 0.3609, -0.1010, -0.1138, 0.0836, 0.0482, -0.0207, 0.0315, 0.1349, 0.1157, "other ..."] } }) +Tree 75: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 74, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0874, -0.1312, 0.0401, 0.1433, -0.0151, -0.0312, 0.0888, 0.0681, -0.2158, -0.0702, "other ..."] } }) Tree 80: Descendants(Descendants { descendants: [0, 1, 4, 7, 11, 12, 17, 19, 25, 31, 32, 33, 35, 36, 48, 49, 56, 58, 60, 63, 66, 70, 74, 75, 81, 91, 93, 96, 99] }) Tree 81: Descendants(Descendants { descendants: [27, 85] }) Tree 83: Descendants(Descendants { descendants: [3, 5, 6, 8, 9, 13, 15, 18, 20, 24, 40, 45, 46, 57, 61, 65, 73, 77, 79, 82, 83, 87, 89, 92, 95] }) -Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 83, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0973, 0.2024, -0.0486, 0.1536, -0.0050, 0.0761, -0.0099, -0.1343, -0.3098, 0.2276, "other ..."] } }) -Tree 85: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1433, -0.2044, -0.0819, -0.1305, 0.0272, 0.1805, 0.0805, 0.1128, 0.0279, -0.0258, "other ..."] } }) -Tree 86: SplitPlaneNormal(SplitPlaneNormal { left: 80, right: 85, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0240, 0.1785, 0.0265, -0.3440, 0.1702, 0.0470, 0.0107, 0.2175, -0.0317, 0.1600, "other ..."] } }) +Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 83, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0973, 0.2024, -0.0486, 0.1536, -0.0050, 0.0761, -0.0099, -0.1343, -0.3098, 0.2276, "other ..."] } }) +Tree 85: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1433, -0.2044, -0.0819, -0.1305, 0.0272, 0.1805, 0.0805, 0.1128, 0.0279, -0.0258, "other ..."] } }) +Tree 86: SplitPlaneNormal(SplitPlaneNormal { left: 80, right: 85, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0240, 0.1785, 0.0265, -0.3440, 0.1702, 0.0470, 0.0107, 0.2175, -0.0317, 0.1600, "other ..."] } }) Tree 87: Descendants(Descendants { descendants: [0, 4, 13, 21, 27, 28, 29, 37, 38, 40, 41, 47, 50, 72, 73, 76, 80, 82, 85, 91] }) Tree 88: Descendants(Descendants { descendants: [1, 3, 7, 10, 17, 30, 56, 67, 77, 78, 86, 88] }) Tree 89: Descendants(Descendants { descendants: [8, 20, 24, 46, 49, 61, 62, 66, 70, 75, 79, 81, 92] }) Tree 90: Descendants(Descendants { descendants: [6, 14, 18, 31, 33, 39, 42, 45, 48, 51, 57, 58, 63, 64, 89, 93, 95, 97] }) Tree 91: Descendants(Descendants { descendants: [2, 5, 9, 15, 16, 22, 23, 26, 32, 34, 35, 36, 43, 44, 52, 53, 54, 55, 68, 69, 71, 74, 83, 84, 87, 90, 94, 96, 98, 99] }) -Tree 92: SplitPlaneNormal(SplitPlaneNormal { left: 90, right: 91, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1432, -0.2381, -0.0722, -0.2146, -0.0888, -0.0131, 0.0621, 0.2812, 0.2690, -0.0300, "other ..."] } }) +Tree 92: SplitPlaneNormal(SplitPlaneNormal { left: 90, right: 91, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1432, -0.2381, -0.0722, -0.2146, -0.0888, -0.0131, 0.0621, 0.2812, 0.2690, -0.0300, "other ..."] } }) Tree 93: Descendants(Descendants { descendants: [11, 12, 19, 25, 59, 60, 65] }) -Tree 94: SplitPlaneNormal(SplitPlaneNormal { left: 92, right: 93, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.3120, -0.2834, -0.0907, 0.0227, 0.0090, 0.3812, 0.1933, -0.4350, -0.0939, -0.1180, "other ..."] } }) -Tree 95: SplitPlaneNormal(SplitPlaneNormal { left: 89, right: 94, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0200, -0.2200, 0.1948, -0.1418, 0.1112, 0.0083, -0.0510, -0.0801, -0.3187, -0.1000, "other ..."] } }) -Tree 96: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0684, -0.2434, -0.1543, 0.0337, 0.1784, 0.1295, 0.3061, -0.0175, -0.0679, -0.1419, "other ..."] } }) -Tree 97: SplitPlaneNormal(SplitPlaneNormal { left: 87, right: 96, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0316, -0.1036, 0.3252, -0.0985, -0.1286, -0.4867, -0.0286, 0.1159, -0.0177, 0.2205, "other ..."] } }) +Tree 94: SplitPlaneNormal(SplitPlaneNormal { left: 92, right: 93, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.3120, -0.2834, -0.0907, 0.0227, 0.0090, 0.3812, 0.1933, -0.4350, -0.0939, -0.1180, "other ..."] } }) +Tree 95: SplitPlaneNormal(SplitPlaneNormal { left: 89, right: 94, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0200, -0.2200, 0.1948, -0.1418, 0.1112, 0.0083, -0.0510, -0.0801, -0.3187, -0.1000, "other ..."] } }) +Tree 96: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0684, -0.2434, -0.1543, 0.0337, 0.1784, 0.1295, 0.3061, -0.0175, -0.0679, -0.1419, "other ..."] } }) +Tree 97: SplitPlaneNormal(SplitPlaneNormal { left: 87, right: 96, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0316, -0.1036, 0.3252, -0.0985, -0.1286, -0.4867, -0.0286, 0.1159, -0.0177, 0.2205, "other ..."] } }) Tree 98: Descendants(Descendants { descendants: [12, 17, 19, 28, 35, 38, 41, 42, 53, 55, 58, 75, 77, 78, 96, 98] }) Tree 99: Descendants(Descendants { descendants: [14, 22, 37, 40, 47, 51, 61, 66, 70, 72, 76, 79, 82, 87, 90, 95] }) -Tree 100: SplitPlaneNormal(SplitPlaneNormal { left: 98, right: 99, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0078, 0.2489, -0.2359, 0.0425, -0.0624, 0.0527, 0.2042, 0.2301, -0.3498, -0.0920, "other ..."] } }) +Tree 100: SplitPlaneNormal(SplitPlaneNormal { left: 98, right: 99, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0078, 0.2489, -0.2359, 0.0425, -0.0624, 0.0527, 0.2042, 0.2301, -0.3498, -0.0920, "other ..."] } }) Tree 101: Descendants(Descendants { descendants: [8, 15, 24, 83, 92, 94] }) Tree 102: Descendants(Descendants { descendants: [2, 5, 6, 16, 18, 20, 21, 23, 26, 34, 36, 43, 44, 46, 48, 52, 54, 59, 62, 63, 68, 69, 71, 74, 80, 86, 89, 93] }) -Tree 103: SplitPlaneNormal(SplitPlaneNormal { left: 101, right: 102, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0940, 0.1325, 0.0627, 0.0098, -0.2045, -0.0698, 0.1022, 0.0678, -0.0750, -0.3038, "other ..."] } }) +Tree 103: SplitPlaneNormal(SplitPlaneNormal { left: 101, right: 102, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0940, 0.1325, 0.0627, 0.0098, -0.2045, -0.0698, 0.1022, 0.0678, -0.0750, -0.3038, "other ..."] } }) Tree 104: Descendants(Descendants { descendants: [10, 21, 28, 30, 37, 41, 47, 71, 72, 77, 88, 98] }) Tree 105: Descendants(Descendants { descendants: [22, 23, 26, 34, 40, 43, 44, 46, 53, 55, 57, 61, 68, 73, 74, 82, 90, 95, 99] }) -Tree 106: SplitPlaneNormal(SplitPlaneNormal { left: 104, right: 105, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1170, 0.1446, 0.0602, -0.0688, 0.2407, -0.1008, 0.1718, -0.1779, -0.1381, 0.0348, "other ..."] } }) +Tree 106: SplitPlaneNormal(SplitPlaneNormal { left: 104, right: 105, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.1170, 0.1446, 0.0602, -0.0688, 0.2407, -0.1008, 0.1718, -0.1779, -0.1381, 0.0348, "other ..."] } }) Tree 107: Descendants(Descendants { descendants: [14, 20, 26, 40, 61, 67, 80, 87] }) Tree 108: Descendants(Descendants { descendants: [3, 6, 8, 10, 21, 23, 28, 30, 34, 37, 38, 47, 48, 50, 54, 55, 66, 68, 71, 72, 73, 76, 78, 79, 82, 88, 95, 98] }) -Tree 109: SplitPlaneNormal(SplitPlaneNormal { left: 107, right: 108, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2514, -0.1588, -0.0499, 0.1317, -0.2218, -0.1911, 0.0804, 0.1173, 0.2414, 0.2416, "other ..."] } }) +Tree 109: SplitPlaneNormal(SplitPlaneNormal { left: 107, right: 108, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2514, -0.1588, -0.0499, 0.1317, -0.2218, -0.1911, 0.0804, 0.1173, 0.2414, 0.2416, "other ..."] } }) Tree 110: Descendants(Descendants { descendants: [15, 17, 46, 53, 62, 70, 75, 90] }) -Tree 111: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2031, -0.2079, 0.3738, -0.0426, -0.0746, -0.1377, 0.0392, 0.0958, 0.1932, -0.0802, "other ..."] } }) +Tree 111: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.2031, -0.2079, 0.3738, -0.0426, -0.0746, -0.1377, 0.0392, 0.0958, 0.1932, -0.0802, "other ..."] } }) Tree 112: Descendants(Descendants { descendants: [0, 5, 7, 9, 10, 12, 17, 19, 20, 25, 27, 31, 34, 39, 46, 55, 56, 58, 60, 67, 68, 76, 81, 84, 86, 91, 97] }) Tree 113: Descendants(Descendants { descendants: [26, 28, 62, 70] }) -Tree 114: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1107, 0.0316, 0.0135, -0.1941, -0.1442, 0.1133, -0.1829, 0.0071, 0.2601, -0.1618, "other ..."] } }) +Tree 114: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.1107, 0.0316, 0.0135, -0.1941, -0.1442, 0.1133, -0.1829, 0.0071, 0.2601, -0.1618, "other ..."] } }) Tree 115: Descendants(Descendants { descendants: [2, 3, 4, 7, 11, 12, 16, 17, 20, 25, 32, 33, 34, 36, 48, 56, 60, 68, 69, 70, 74, 79, 81, 84, 96, 99] }) Tree 116: Descendants(Descendants { descendants: [5, 9, 15, 24, 26, 61, 62, 92] }) -Tree 117: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.0406, 0.1263, 0.0654, -0.2637, -0.0650, 0.0877, -0.2022, 0.0139, -0.0035, -0.1877, "other ..."] } }) +Tree 117: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.0406, 0.1263, 0.0654, -0.2637, -0.0650, 0.0877, -0.2022, 0.0139, -0.0035, -0.1877, "other ..."] } }) Tree 118: Descendants(Descendants { descendants: [2, 10, 13, 20, 21, 28, 40, 46, 47, 48, 61, 66, 72, 73, 76, 80, 87, 90] }) Tree 119: Descendants(Descendants { descendants: [0, 6, 8, 18, 22, 38, 42, 43, 44, 51, 54, 58, 59, 82, 84, 85] }) -Tree 120: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 119, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2462, -0.2241, 0.3383, -0.2016, 0.0430, -0.0574, 0.1455, -0.2949, -0.0625, 0.0844, "other ..."] } }) +Tree 120: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 119, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2462, -0.2241, 0.3383, -0.2016, 0.0430, -0.0574, 0.1455, -0.2949, -0.0625, 0.0844, "other ..."] } }) Tree 121: Descendants(Descendants { descendants: [8, 20, 34, 36, 47, 48, 50, 52, 63, 66, 69, 72, 74, 79, 81, 82, 84, 95, 96, 98] }) Tree 122: Descendants(Descendants { descendants: [2, 14, 15, 16, 24, 26, 28, 29, 40, 57, 61, 62, 70, 83, 90, 92] }) -Tree 123: SplitPlaneNormal(SplitPlaneNormal { left: 121, right: 122, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.1843, -0.0871, -0.0603, -0.1272, 0.2035, 0.1519, -0.1754, 0.2246, 0.0560, 0.0408, "other ..."] } }) +Tree 123: SplitPlaneNormal(SplitPlaneNormal { left: 121, right: 122, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.1843, -0.0871, -0.0603, -0.1272, 0.2035, 0.1519, -0.1754, 0.2246, 0.0560, 0.0408, "other ..."] } }) Tree 124: Descendants(Descendants { descendants: [14, 16, 22, 38, 41, 42, 43, 44, 50, 51, 53, 59, 62, 64, 80, 84] }) Tree 125: Descendants(Descendants { descendants: [2, 10, 21, 23, 26, 28, 29, 30, 34, 37, 39, 47, 52, 54, 55, 67, 68, 69, 71, 72, 76, 78, 86, 88, 90, 94, 97, 98] }) -Tree 126: SplitPlaneNormal(SplitPlaneNormal { left: 124, right: 125, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [-0.2156, 0.0925, 0.0242, 0.1246, -0.0758, -0.0672, -0.1816, 0.4853, 0.1643, 0.1418, "other ..."] } }) -Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5919, 0.9953, 0.7271, 0.7734, 0.5761, 0.8882, 0.8497, 0.0817, 0.3989, 0.3384, "other ..."] }) -Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) -Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2240, 0.0136, 0.1967, 0.7482, 0.6849, 0.7949, 0.0809, 0.5504, 0.6339, 0.6978, "other ..."] }) -Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) -Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7711, 0.4016, 0.1489, 0.9991, 0.5236, 0.5613, 0.4596, 0.2214, 0.5016, 0.1191, "other ..."] }) -Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) -Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7473, 0.3347, 0.9786, 0.4693, 0.3540, 0.1280, 0.9628, 0.2076, 0.3437, 0.4589, "other ..."] }) -Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) -Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1874, 0.7676, 0.9707, 0.5148, 0.7242, 0.4714, 0.1278, 0.2181, 0.2651, 0.5674, "other ..."] }) -Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) -Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3157, 0.8096, 0.5024, 0.5421, 0.4327, 0.3696, 0.6485, 0.7972, 0.9792, 0.9554, "other ..."] }) -Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) -Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1559, 0.1898, 0.2475, 0.4582, 0.5481, 0.5846, 0.1844, 0.4898, 0.2916, 0.2669, "other ..."] }) -Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) -Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1712, 0.6340, 0.2866, 0.6282, 0.9072, 0.7589, 0.6432, 0.8676, 0.2942, 0.4375, "other ..."] }) -Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) -Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8145, 0.6759, 0.1411, 0.7878, 0.3556, 0.8440, 0.5301, 0.2627, 0.7050, 0.4145, "other ..."] }) -Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) -Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4594, 0.9245, 0.5151, 0.7390, 0.6121, 0.5891, 0.5795, 0.6295, 0.0595, 0.6471, "other ..."] }) -Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) -Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5102, 0.8700, 0.3910, 0.0807, 0.1067, 0.0692, 0.7037, 0.4229, 0.0066, 0.1894, "other ..."] }) -Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) -Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8077, 0.3229, 0.5031, 0.0472, 0.6957, 0.9603, 0.8790, 0.2009, 0.3837, 0.1765, "other ..."] }) -Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) -Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1651, 0.4144, 0.2816, 0.0037, 0.3038, 0.2344, 0.3321, 0.1985, 0.4704, 0.3710, "other ..."] }) -Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) -Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7192, 0.5087, 0.9102, 0.0269, 0.7119, 0.7909, 0.0259, 0.6221, 0.9168, 0.1528, "other ..."] }) -Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) -Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5587, 0.8792, 0.9279, 0.4203, 0.9903, 0.7524, 0.0600, 0.9020, 0.8837, 0.1950, "other ..."] }) -Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) -Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9353, 0.1703, 0.1992, 0.7788, 0.4769, 0.5431, 0.4292, 0.5249, 0.7629, 0.9059, "other ..."] }) -Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) -Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3473, 0.1415, 0.1873, 0.7472, 0.3808, 0.6412, 0.1944, 0.5869, 0.0722, 0.3215, "other ..."] }) -Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) -Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4076, 0.8830, 0.7654, 0.5911, 0.3055, 0.0942, 0.7024, 0.9471, 0.9752, 0.4628, "other ..."] }) -Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) -Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6939, 0.0973, 0.2992, 0.4254, 0.0919, 0.8203, 0.3851, 0.0823, 0.4547, 0.4283, "other ..."] }) -Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) -Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7093, 0.6425, 0.0423, 0.0877, 0.7820, 0.6701, 0.4963, 0.1499, 0.8631, 0.8113, "other ..."] }) -Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) -Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0152, 0.9782, 0.0253, 0.6194, 0.6177, 0.6446, 0.8634, 0.8343, 0.1429, 0.6369, "other ..."] }) -Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) -Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5514, 0.2225, 0.8400, 0.2598, 0.5622, 0.6231, 0.5772, 0.0082, 0.8470, 0.9596, "other ..."] }) -Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) -Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9144, 0.0223, 0.5079, 0.6873, 0.5501, 0.2577, 0.9304, 0.3154, 0.1546, 0.3749, "other ..."] }) -Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) -Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5159, 0.9516, 0.6267, 0.1007, 0.4283, 0.1452, 0.9565, 0.4723, 0.4935, 0.7395, "other ..."] }) -Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) -Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3709, 0.3974, 0.5971, 0.7814, 0.2075, 0.5392, 0.4790, 0.5432, 0.4844, 0.3367, "other ..."] }) -Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) -Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7462, 0.9877, 0.0796, 0.4441, 0.9824, 0.6855, 0.0985, 0.0618, 0.0551, 0.5251, "other ..."] }) -Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) -Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8421, 0.8103, 0.5294, 0.6795, 0.9634, 0.3110, 0.8945, 0.1541, 0.5916, 0.1082, "other ..."] }) -Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) -Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8491, 0.4500, 0.8568, 0.1146, 0.7974, 0.5148, 0.0862, 0.6020, 0.7705, 0.6189, "other ..."] }) -Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) -Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2720, 0.7143, 0.6966, 0.9709, 0.4263, 0.7441, 0.8624, 0.1372, 0.0418, 0.7771, "other ..."] }) -Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) -Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4278, 0.5749, 0.9222, 0.8668, 0.5708, 0.7825, 0.1484, 0.1654, 0.7721, 0.1671, "other ..."] }) -Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) -Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5174, 0.1043, 0.5020, 0.7082, 0.0108, 0.7768, 0.2805, 0.5635, 0.1165, 0.3446, "other ..."] }) -Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) -Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7594, 0.3160, 0.8848, 0.2336, 0.2080, 0.9798, 0.2609, 0.3579, 0.9043, 0.5035, "other ..."] }) -Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) -Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7278, 0.0499, 0.4536, 0.3295, 0.8839, 0.5060, 0.5773, 0.3133, 0.2521, 0.6842, "other ..."] }) -Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) -Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3202, 0.9724, 0.0590, 0.9146, 0.0865, 0.5347, 0.9236, 0.5211, 0.4621, 0.4500, "other ..."] }) -Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) -Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7403, 0.1475, 0.8585, 0.3990, 0.5766, 0.0263, 0.2665, 0.6317, 0.8026, 0.0227, "other ..."] }) -Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) -Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0981, 0.2398, 0.2595, 0.6075, 0.1605, 0.7487, 0.1070, 0.8330, 0.7908, 0.0203, "other ..."] }) -Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) -Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9586, 0.8715, 0.0659, 0.6144, 0.4995, 0.6693, 0.1415, 0.7556, 0.9350, 0.9924, "other ..."] }) -Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) -Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9907, 0.6582, 0.3640, 0.9777, 0.6001, 0.3023, 0.3154, 0.2637, 0.7202, 0.7507, "other ..."] }) -Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) -Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6910, 0.9733, 0.3937, 0.8154, 0.2171, 0.7616, 0.3415, 0.4227, 0.6408, 0.0355, "other ..."] }) -Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) -Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8030, 0.0396, 0.0641, 0.3958, 0.3427, 0.9163, 0.0129, 0.4500, 0.8504, 0.8711, "other ..."] }) -Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) -Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6515, 0.6402, 0.4825, 0.1251, 0.1569, 0.9048, 0.3695, 0.0092, 0.1574, 0.1528, "other ..."] }) -Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) -Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5256, 0.7737, 0.1071, 0.1049, 0.5131, 0.1703, 0.7922, 0.1135, 0.4165, 0.0898, "other ..."] }) -Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) -Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7826, 0.2989, 0.7770, 0.4571, 0.1601, 0.9667, 0.6717, 0.1903, 0.1169, 0.8590, "other ..."] }) -Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) -Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0498, 0.3107, 0.7264, 0.3119, 0.9096, 0.1574, 0.0399, 0.6895, 0.0600, 0.7256, "other ..."] }) -Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) -Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8769, 0.4665, 0.6818, 0.3210, 0.8711, 0.3130, 0.2871, 0.8996, 0.6896, 0.5484, "other ..."] }) -Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) -Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4460, 0.4258, 0.3236, 0.3679, 0.9002, 0.2569, 0.4921, 0.9407, 0.7830, 0.2773, "other ..."] }) -Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) -Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3994, 0.3790, 0.3149, 0.3094, 0.6979, 0.4079, 0.0662, 0.5442, 0.6009, 0.6694, "other ..."] }) -Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) -Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1804, 0.0669, 0.8639, 0.6324, 0.8798, 0.3417, 0.1164, 0.5756, 0.9767, 0.7200, "other ..."] }) -Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) -Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1112, 0.3992, 0.0741, 0.7318, 0.9446, 0.2970, 0.9245, 0.1696, 0.6283, 0.9061, "other ..."] }) -Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) -Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5324, 0.0597, 0.9226, 0.4007, 0.0213, 0.2651, 0.8515, 0.9985, 0.8066, 0.3377, "other ..."] }) -Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) +Tree 126: SplitPlaneNormal(SplitPlaneNormal { left: 124, right: 125, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [-0.2156, 0.0925, 0.0242, 0.1246, -0.0758, -0.0672, -0.1816, 0.4853, 0.1643, 0.1418, "other ..."] } }) +Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5919, 0.9953, 0.7271, 0.7734, 0.5761, 0.8882, 0.8497, 0.0817, 0.3989, 0.3384, "other ..."] }) +Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) +Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2240, 0.0136, 0.1967, 0.7482, 0.6849, 0.7949, 0.0809, 0.5504, 0.6339, 0.6978, "other ..."] }) +Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) +Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7711, 0.4016, 0.1489, 0.9991, 0.5236, 0.5613, 0.4596, 0.2214, 0.5016, 0.1191, "other ..."] }) +Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) +Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7473, 0.3347, 0.9786, 0.4693, 0.3540, 0.1280, 0.9628, 0.2076, 0.3437, 0.4589, "other ..."] }) +Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) +Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1874, 0.7676, 0.9707, 0.5148, 0.7242, 0.4714, 0.1278, 0.2181, 0.2651, 0.5674, "other ..."] }) +Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) +Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3157, 0.8096, 0.5024, 0.5421, 0.4327, 0.3696, 0.6485, 0.7972, 0.9792, 0.9554, "other ..."] }) +Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) +Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1559, 0.1898, 0.2475, 0.4582, 0.5481, 0.5846, 0.1844, 0.4898, 0.2916, 0.2669, "other ..."] }) +Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) +Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1712, 0.6340, 0.2866, 0.6282, 0.9072, 0.7589, 0.6432, 0.8676, 0.2942, 0.4375, "other ..."] }) +Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) +Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8145, 0.6759, 0.1411, 0.7878, 0.3556, 0.8440, 0.5301, 0.2627, 0.7050, 0.4145, "other ..."] }) +Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) +Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4594, 0.9245, 0.5151, 0.7390, 0.6121, 0.5891, 0.5795, 0.6295, 0.0595, 0.6471, "other ..."] }) +Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) +Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5102, 0.8700, 0.3910, 0.0807, 0.1067, 0.0692, 0.7037, 0.4229, 0.0066, 0.1894, "other ..."] }) +Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) +Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8077, 0.3229, 0.5031, 0.0472, 0.6957, 0.9603, 0.8790, 0.2009, 0.3837, 0.1765, "other ..."] }) +Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) +Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1651, 0.4144, 0.2816, 0.0037, 0.3038, 0.2344, 0.3321, 0.1985, 0.4704, 0.3710, "other ..."] }) +Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) +Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7192, 0.5087, 0.9102, 0.0269, 0.7119, 0.7909, 0.0259, 0.6221, 0.9168, 0.1528, "other ..."] }) +Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) +Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5587, 0.8792, 0.9279, 0.4203, 0.9903, 0.7524, 0.0600, 0.9020, 0.8837, 0.1950, "other ..."] }) +Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) +Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9353, 0.1703, 0.1992, 0.7788, 0.4769, 0.5431, 0.4292, 0.5249, 0.7629, 0.9059, "other ..."] }) +Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) +Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3473, 0.1415, 0.1873, 0.7472, 0.3808, 0.6412, 0.1944, 0.5869, 0.0722, 0.3215, "other ..."] }) +Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) +Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4076, 0.8830, 0.7654, 0.5911, 0.3055, 0.0942, 0.7024, 0.9471, 0.9752, 0.4628, "other ..."] }) +Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) +Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6939, 0.0973, 0.2992, 0.4254, 0.0919, 0.8203, 0.3851, 0.0823, 0.4547, 0.4283, "other ..."] }) +Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) +Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7093, 0.6425, 0.0423, 0.0877, 0.7820, 0.6701, 0.4963, 0.1499, 0.8631, 0.8113, "other ..."] }) +Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) +Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0152, 0.9782, 0.0253, 0.6194, 0.6177, 0.6446, 0.8634, 0.8343, 0.1429, 0.6369, "other ..."] }) +Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) +Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5514, 0.2225, 0.8400, 0.2598, 0.5622, 0.6231, 0.5772, 0.0082, 0.8470, 0.9596, "other ..."] }) +Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) +Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9144, 0.0223, 0.5079, 0.6873, 0.5501, 0.2577, 0.9304, 0.3154, 0.1546, 0.3749, "other ..."] }) +Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) +Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5159, 0.9516, 0.6267, 0.1007, 0.4283, 0.1452, 0.9565, 0.4723, 0.4935, 0.7395, "other ..."] }) +Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) +Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3709, 0.3974, 0.5971, 0.7814, 0.2075, 0.5392, 0.4790, 0.5432, 0.4844, 0.3367, "other ..."] }) +Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) +Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7462, 0.9877, 0.0796, 0.4441, 0.9824, 0.6855, 0.0985, 0.0618, 0.0551, 0.5251, "other ..."] }) +Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) +Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8421, 0.8103, 0.5294, 0.6795, 0.9634, 0.3110, 0.8945, 0.1541, 0.5916, 0.1082, "other ..."] }) +Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) +Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8491, 0.4500, 0.8568, 0.1146, 0.7974, 0.5148, 0.0862, 0.6020, 0.7705, 0.6189, "other ..."] }) +Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) +Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2720, 0.7143, 0.6966, 0.9709, 0.4263, 0.7441, 0.8624, 0.1372, 0.0418, 0.7771, "other ..."] }) +Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) +Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4278, 0.5749, 0.9222, 0.8668, 0.5708, 0.7825, 0.1484, 0.1654, 0.7721, 0.1671, "other ..."] }) +Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) +Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5174, 0.1043, 0.5020, 0.7082, 0.0108, 0.7768, 0.2805, 0.5635, 0.1165, 0.3446, "other ..."] }) +Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) +Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7594, 0.3160, 0.8848, 0.2336, 0.2080, 0.9798, 0.2609, 0.3579, 0.9043, 0.5035, "other ..."] }) +Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) +Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7278, 0.0499, 0.4536, 0.3295, 0.8839, 0.5060, 0.5773, 0.3133, 0.2521, 0.6842, "other ..."] }) +Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) +Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3202, 0.9724, 0.0590, 0.9146, 0.0865, 0.5347, 0.9236, 0.5211, 0.4621, 0.4500, "other ..."] }) +Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) +Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7403, 0.1475, 0.8585, 0.3990, 0.5766, 0.0263, 0.2665, 0.6317, 0.8026, 0.0227, "other ..."] }) +Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) +Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0981, 0.2398, 0.2595, 0.6075, 0.1605, 0.7487, 0.1070, 0.8330, 0.7908, 0.0203, "other ..."] }) +Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) +Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9586, 0.8715, 0.0659, 0.6144, 0.4995, 0.6693, 0.1415, 0.7556, 0.9350, 0.9924, "other ..."] }) +Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) +Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9907, 0.6582, 0.3640, 0.9777, 0.6001, 0.3023, 0.3154, 0.2637, 0.7202, 0.7507, "other ..."] }) +Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) +Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6910, 0.9733, 0.3937, 0.8154, 0.2171, 0.7616, 0.3415, 0.4227, 0.6408, 0.0355, "other ..."] }) +Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) +Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8030, 0.0396, 0.0641, 0.3958, 0.3427, 0.9163, 0.0129, 0.4500, 0.8504, 0.8711, "other ..."] }) +Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) +Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6515, 0.6402, 0.4825, 0.1251, 0.1569, 0.9048, 0.3695, 0.0092, 0.1574, 0.1528, "other ..."] }) +Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) +Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5256, 0.7737, 0.1071, 0.1049, 0.5131, 0.1703, 0.7922, 0.1135, 0.4165, 0.0898, "other ..."] }) +Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) +Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7826, 0.2989, 0.7770, 0.4571, 0.1601, 0.9667, 0.6717, 0.1903, 0.1169, 0.8590, "other ..."] }) +Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) +Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0498, 0.3107, 0.7264, 0.3119, 0.9096, 0.1574, 0.0399, 0.6895, 0.0600, 0.7256, "other ..."] }) +Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) +Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8769, 0.4665, 0.6818, 0.3210, 0.8711, 0.3130, 0.2871, 0.8996, 0.6896, 0.5484, "other ..."] }) +Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) +Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4460, 0.4258, 0.3236, 0.3679, 0.9002, 0.2569, 0.4921, 0.9407, 0.7830, 0.2773, "other ..."] }) +Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) +Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3994, 0.3790, 0.3149, 0.3094, 0.6979, 0.4079, 0.0662, 0.5442, 0.6009, 0.6694, "other ..."] }) +Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) +Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1804, 0.0669, 0.8639, 0.6324, 0.8798, 0.3417, 0.1164, 0.5756, 0.9767, 0.7200, "other ..."] }) +Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) +Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1112, 0.3992, 0.0741, 0.7318, 0.9446, 0.2970, 0.9245, 0.1696, 0.6283, 0.9061, "other ..."] }) +Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) +Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5324, 0.0597, 0.9226, 0.4007, 0.0213, 0.2651, 0.8515, 0.9985, 0.8066, 0.3377, "other ..."] }) +Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) diff --git a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap index ffcbf4f0..5e8983b3 100644 --- a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap +++ b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap @@ -6,42 +6,42 @@ expression: handle Dumping index 0 Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 99>, roots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } -Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.21127103 }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) -Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.8344944 }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.44403428 }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) -Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.23276792 }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) -Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.3665943 }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) -Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.52087575 }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.028415337 }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.040909976 }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.29089272 }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) -Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.123433806 }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) -Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 25, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.1661546 }, vector: [-0.0519, 0.2231, 0.1182, 0.0109, -0.2022, 0.0354, 0.0678, -0.0030, -0.3109, 0.1603, "other ..."] } }) -Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 50, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.59460396 }, vector: [0.1047, 0.2410, -0.0902, 0.0647, 0.1430, -0.2137, -0.0107, -0.0124, 0.2128, 0.1156, "other ..."] } }) +Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2113" }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) +Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.8345" }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4440" }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) +Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2328" }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) +Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3666" }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) +Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5209" }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0284" }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0409" }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2909" }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) +Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1234" }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) +Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 25, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1662" }, vector: [-0.0519, 0.2231, 0.1182, 0.0109, -0.2022, 0.0354, 0.0678, -0.0030, -0.3109, 0.1603, "other ..."] } }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 50, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5946" }, vector: [0.1047, 0.2410, -0.0902, 0.0647, 0.1430, -0.2137, -0.0107, -0.0124, 0.2128, 0.1156, "other ..."] } }) Tree 18: Descendants(Descendants { descendants: [0, 10, 12, 13, 18, 19, 30, 32, 35, 39, 40, 41, 45, 46, 48, 51, 52, 59, 61, 62, 67, 74, 78, 85, 86, 89, 93] }) -Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 64, right: 71, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.13855109 }, vector: [-0.0102, -0.1020, -0.0560, 0.0718, 0.1451, 0.3328, -0.2286, -0.0154, -0.2177, -0.0566, "other ..."] } }) -Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 85, right: 86, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.35918173 }, vector: [-0.0512, 0.0756, 0.0280, -0.0180, 0.1238, 0.0996, 0.2939, 0.1854, 0.0852, 0.6036, "other ..."] } }) +Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 64, right: 71, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1386" }, vector: [-0.0102, -0.1020, -0.0560, 0.0718, 0.1451, 0.3328, -0.2286, -0.0154, -0.2177, -0.0566, "other ..."] } }) +Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 85, right: 86, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3592" }, vector: [-0.0512, 0.0756, 0.0280, -0.0180, 0.1238, 0.0996, 0.2939, 0.1854, 0.0852, 0.6036, "other ..."] } }) Tree 25: Descendants(Descendants { descendants: [1, 5, 7, 9, 11, 24, 25, 27, 29, 31, 33, 34, 38, 50, 58, 60, 64, 65, 82, 84, 90, 91, 97, 98] }) -Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 89, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.38681942 }, vector: [-0.1640, -0.2146, 0.0126, -0.2075, -0.1994, 0.1463, 0.1575, 0.1572, 0.0554, -0.0843, "other ..."] } }) -Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 91, right: 92, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.53070486 }, vector: [-0.2663, 0.0379, -0.0632, -0.1892, -0.0071, -0.2105, -0.0864, 0.1947, 0.2058, 0.0501, "other ..."] } }) -Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 94, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.26665062 }, vector: [-0.0958, -0.0242, 0.1092, 0.0160, -0.1816, -0.2597, -0.0004, -0.1357, -0.4301, -0.0992, "other ..."] } }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 97, right: 98, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.41647437 }, vector: [-0.0057, -0.1511, -0.2314, 0.0720, 0.1749, -0.0576, 0.2961, -0.2325, -0.2903, -0.2986, "other ..."] } }) +Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 89, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3868" }, vector: [-0.1640, -0.2146, 0.0126, -0.2075, -0.1994, 0.1463, 0.1575, 0.1572, 0.0554, -0.0843, "other ..."] } }) +Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 91, right: 92, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5307" }, vector: [-0.2663, 0.0379, -0.0632, -0.1892, -0.0071, -0.2105, -0.0864, 0.1947, 0.2058, 0.0501, "other ..."] } }) +Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 94, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2667" }, vector: [-0.0958, -0.0242, 0.1092, 0.0160, -0.1816, -0.2597, -0.0004, -0.1357, -0.4301, -0.0992, "other ..."] } }) +Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 97, right: 98, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4165" }, vector: [-0.0057, -0.1511, -0.2314, 0.0720, 0.1749, -0.0576, 0.2961, -0.2325, -0.2903, -0.2986, "other ..."] } }) Tree 41: Descendants(Descendants { descendants: [4, 8, 14, 20, 21, 28, 36, 37, 42, 43, 47, 49, 54, 55, 56, 66, 70, 76, 80, 83, 88, 94] }) -Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 101, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.34888893 }, vector: [0.1515, 0.0156, -0.3014, 0.0462, 0.4379, 0.1220, 0.3793, -0.0256, -0.0623, 0.3037, "other ..."] } }) -Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 104, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.083485216 }, vector: [-0.0367, -0.1928, 0.0431, 0.1177, 0.0251, -0.1196, -0.0455, 0.0528, -0.1416, 0.0654, "other ..."] } }) +Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 101, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3489" }, vector: [0.1515, 0.0156, -0.3014, 0.0462, 0.4379, 0.1220, 0.3793, -0.0256, -0.0623, 0.3037, "other ..."] } }) +Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 104, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0835" }, vector: [-0.0367, -0.1928, 0.0431, 0.1177, 0.0251, -0.1196, -0.0455, 0.0528, -0.1416, 0.0654, "other ..."] } }) Tree 50: Descendants(Descendants { descendants: [2, 3, 6, 15, 16, 17, 22, 23, 26, 44, 53, 57, 63, 68, 69, 71, 72, 73, 75, 77, 79, 81, 87, 92, 95, 96, 99] }) -Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 106, right: 107, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.08946021 }, vector: [-0.1194, 0.3446, 0.1119, 0.1135, -0.1615, -0.1110, 0.0097, -0.0695, -0.0061, 0.2090, "other ..."] } }) -Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.14039151 }, vector: [-0.0193, 0.1846, -0.3050, 0.1297, 0.3100, -0.0573, 0.0263, -0.2456, 0.0300, -0.3526, "other ..."] } }) -Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.13571428 }, vector: [-0.2756, 0.0160, -0.0605, 0.0628, -0.0225, 0.0531, 0.0111, 0.0590, -0.1294, -0.1152, "other ..."] } }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.64680654 }, vector: [-0.2547, 0.2298, 0.0490, -0.1270, 0.0152, 0.1170, 0.4048, 0.2127, 0.0196, 0.1691, "other ..."] } }) +Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 106, right: 107, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0895" }, vector: [-0.1194, 0.3446, 0.1119, 0.1135, -0.1615, -0.1110, 0.0097, -0.0695, -0.0061, 0.2090, "other ..."] } }) +Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1404" }, vector: [-0.0193, 0.1846, -0.3050, 0.1297, 0.3100, -0.0573, 0.0263, -0.2456, 0.0300, -0.3526, "other ..."] } }) +Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1357" }, vector: [-0.2756, 0.0160, -0.0605, 0.0628, -0.0225, 0.0531, 0.0111, 0.0590, -0.1294, -0.1152, "other ..."] } }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6468" }, vector: [-0.2547, 0.2298, 0.0490, -0.1270, 0.0152, 0.1170, 0.4048, 0.2127, 0.0196, 0.1691, "other ..."] } }) Tree 64: Descendants(Descendants { descendants: [2, 14, 15, 16, 23, 35, 37, 44, 49, 53, 54, 55, 63, 66, 67, 71, 72, 73, 74, 75, 87, 94, 99] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 121, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.5314221 }, vector: [-0.1285, 0.0602, 0.1834, 0.2544, 0.1033, -0.0621, -0.0452, 0.0325, -0.0896, -0.0368, "other ..."] } }) -Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 124, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.32338968 }, vector: [0.0794, -0.2799, -0.0493, -0.0013, 0.3183, 0.0950, 0.2586, -0.3268, -0.0581, -0.1079, "other ..."] } }) +Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 121, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5314" }, vector: [-0.1285, 0.0602, 0.1834, 0.2544, 0.1033, -0.0621, -0.0452, 0.0325, -0.0896, -0.0368, "other ..."] } }) +Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 124, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3234" }, vector: [0.0794, -0.2799, -0.0493, -0.0013, 0.3183, 0.0950, 0.2586, -0.3268, -0.0581, -0.1079, "other ..."] } }) Tree 71: Descendants(Descendants { descendants: [0, 4, 8, 10, 12, 13, 18, 21, 28, 32, 41, 42, 43, 45, 47, 51, 56, 57, 58, 59, 61, 70, 76, 77, 78, 80, 83, 84, 86, 88] }) -Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 127, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.16895258 }, vector: [0.0880, 0.1625, -0.0371, 0.2392, -0.0159, -0.1236, -0.0412, -0.1180, 0.0896, -0.4394, "other ..."] } }) -Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 129, right: 130, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.55195147 }, vector: [-0.0060, 0.0332, -0.1613, 0.3228, 0.3786, 0.1748, 0.0208, -0.1438, -0.3069, -0.0429, "other ..."] } }) -Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 132, right: 133, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.47393414 }, vector: [0.0944, -0.1509, -0.0855, -0.1471, -0.2003, -0.2323, -0.0929, 0.0553, -0.0206, -0.0960, "other ..."] } }) -Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 135, right: 136, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.431445 }, vector: [0.0013, 0.2258, -0.0036, -0.0711, 0.0216, -0.0891, 0.0468, 0.1825, 0.1348, 0.1195, "other ..."] } }) +Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 127, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1690" }, vector: [0.0880, 0.1625, -0.0371, 0.2392, -0.0159, -0.1236, -0.0412, -0.1180, 0.0896, -0.4394, "other ..."] } }) +Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 129, right: 130, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5520" }, vector: [-0.0060, 0.0332, -0.1613, 0.3228, 0.3786, 0.1748, 0.0208, -0.1438, -0.3069, -0.0429, "other ..."] } }) +Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 132, right: 133, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4739" }, vector: [0.0944, -0.1509, -0.0855, -0.1471, -0.2003, -0.2323, -0.0929, 0.0553, -0.0206, -0.0960, "other ..."] } }) +Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 135, right: 136, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4314" }, vector: [0.0013, 0.2258, -0.0036, -0.0711, 0.0216, -0.0891, 0.0468, 0.1825, 0.1348, 0.1195, "other ..."] } }) Tree 85: Descendants(Descendants { descendants: [1, 5, 7, 11, 19, 24, 25, 31, 38, 39, 40, 46, 48, 50, 52, 60, 64, 69, 81, 82, 89, 91, 93, 96, 98] }) Tree 86: Descendants(Descendants { descendants: [3, 6, 9, 17, 20, 22, 26, 27, 29, 30, 33, 34, 36, 62, 65, 68, 79, 85, 90, 92, 95, 97] }) Tree 88: Descendants(Descendants { descendants: [2, 6, 8, 13, 14, 15, 18, 23, 24, 30, 33, 34, 40, 43, 44, 45, 47, 56, 61, 62, 63, 66, 70, 71, 81, 89, 92, 94, 95] }) @@ -67,7 +67,7 @@ Tree 116: Descendants(Descendants { descendants: [0, 4, 10, 12, 22, 27, 28, 32, Tree 118: Descendants(Descendants { descendants: [2, 4, 10, 12, 17, 23, 25, 32, 35, 36, 37, 39, 47, 48, 49, 53, 55, 58, 60, 61, 66, 67, 69, 71, 73, 80, 85, 91, 94, 97] }) Tree 119: Descendants(Descendants { descendants: [7, 9, 11, 20, 26, 29, 30, 34, 38, 50, 52, 57, 62, 68, 84, 90] }) Tree 120: Descendants(Descendants { descendants: [3, 6, 15, 16, 22, 27, 72, 74, 75, 81, 82, 87, 92, 96, 99] }) -Tree 121: SplitPlaneNormal(SplitPlaneNormal { left: 119, right: 120, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.72503346 }, vector: [-0.1530, 0.0626, 0.0674, 0.0365, -0.1789, -0.1138, -0.0100, -0.2155, 0.1527, -0.0635, "other ..."] } }) +Tree 121: SplitPlaneNormal(SplitPlaneNormal { left: 119, right: 120, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.7250" }, vector: [-0.1530, 0.0626, 0.0674, 0.0365, -0.1789, -0.1138, -0.0100, -0.2155, 0.1527, -0.0635, "other ..."] } }) Tree 123: Descendants(Descendants { descendants: [1, 8, 13, 14, 18, 21, 24, 28, 33, 40, 42, 43, 44, 56, 64, 70, 77, 79, 86, 88, 89, 93, 95] }) Tree 124: Descendants(Descendants { descendants: [0, 5, 19, 31, 41, 45, 46, 51, 54, 59, 63, 65, 76, 78, 83, 98] }) Tree 126: Descendants(Descendants { descendants: [1, 3, 4, 10, 22, 26, 27, 28, 29, 32, 34, 36, 39, 42, 57, 65, 73, 77, 84, 85, 86, 97] }) @@ -78,103 +78,103 @@ Tree 132: Descendants(Descendants { descendants: [5, 9, 10, 13, 15, 18, 19, 22, Tree 133: Descendants(Descendants { descendants: [4, 8, 12, 14, 21, 23, 28, 41, 43, 47, 51, 59, 66, 70, 76, 77, 83, 86, 88, 89, 93] }) Tree 135: Descendants(Descendants { descendants: [1, 7, 11, 20, 25, 26, 34, 35, 38, 49, 50, 60, 62, 68, 75, 81, 82, 84, 90, 96, 97, 99] }) Tree 136: Descendants(Descendants { descendants: [0, 2, 3, 6, 16, 17, 24, 32, 36, 37, 39, 44, 48, 53, 54, 55, 57, 69, 71, 72, 73, 74, 79, 80, 85, 91, 94, 95] }) -Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2720, 0.1911, 0.2962, 0.8872, 0.8356, 0.5636, 0.3970, 0.9592, 0.6856, 0.2160, "other ..."] }) -Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) -Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7062, 0.6998, 0.5514, 0.7874, 0.4402, 0.0478, 0.7386, 0.5093, 0.8964, 0.8248, "other ..."] }) -Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) -Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3211, 0.3150, 0.5402, 0.0930, 0.6963, 0.4709, 0.5433, 0.8626, 0.7230, 0.6204, "other ..."] }) -Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) -Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0244, 0.7274, 0.5727, 0.5908, 0.3480, 0.4574, 0.4877, 0.6325, 0.5284, 0.6983, "other ..."] }) -Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) -Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3477, 0.4107, 0.7384, 0.9005, 0.1528, 0.6780, 0.0267, 0.8021, 0.2981, 0.2717, "other ..."] }) -Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) -Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4341, 0.3135, 0.0142, 0.3661, 0.4947, 0.7175, 0.9751, 0.4387, 0.0109, 0.5243, "other ..."] }) -Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) -Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5616, 0.7872, 0.5384, 0.3939, 0.6155, 0.6796, 0.6887, 0.6391, 0.0838, 0.1087, "other ..."] }) -Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) -Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7518, 0.6721, 0.9863, 0.1919, 0.2958, 0.3867, 0.2424, 0.8564, 0.9043, 0.2347, "other ..."] }) -Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) -Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2414, 0.5945, 0.2478, 0.4521, 0.4097, 0.2810, 0.8998, 0.1611, 0.6353, 0.3983, "other ..."] }) -Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) -Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2268, 0.3553, 0.4373, 0.6402, 0.5594, 0.7669, 0.2032, 0.4453, 0.1589, 0.3916, "other ..."] }) -Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) -Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1264, 0.9795, 0.3150, 0.7733, 0.4131, 0.2242, 0.9078, 0.9045, 0.1001, 0.3298, "other ..."] }) -Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) -Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0715, 0.9965, 0.9080, 0.4298, 0.5626, 0.8220, 0.9952, 0.2171, 0.9860, 0.8204, "other ..."] }) -Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) -Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2016, 0.7551, 0.9960, 0.8650, 0.1399, 0.4464, 0.2855, 0.7776, 0.6456, 0.0802, "other ..."] }) -Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) -Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6829, 0.3333, 0.9681, 0.5077, 0.2901, 0.7233, 0.6496, 0.9653, 0.9827, 0.8165, "other ..."] }) -Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) -Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6031, 0.1503, 0.2788, 0.3537, 0.6271, 0.9647, 0.4800, 0.9366, 0.2688, 0.9738, "other ..."] }) -Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) -Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8318, 0.2588, 0.7135, 0.6452, 0.8101, 0.4832, 0.6931, 0.7657, 0.7685, 0.9255, "other ..."] }) -Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) -Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1375, 0.4302, 0.7004, 0.0251, 0.3941, 0.2518, 0.1463, 0.1808, 0.0052, 0.5310, "other ..."] }) -Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) -Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1515, 0.5026, 0.8717, 0.4441, 0.3310, 0.8236, 0.2705, 0.5019, 0.7512, 0.8800, "other ..."] }) -Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) -Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0803, 0.3244, 0.7758, 0.3223, 0.2530, 0.9621, 0.9439, 0.7061, 0.8197, 0.3492, "other ..."] }) -Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) -Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2646, 0.5441, 0.3387, 0.3728, 0.6653, 0.3646, 0.0483, 0.7737, 0.8912, 0.1113, "other ..."] }) -Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) -Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1233, 0.9711, 0.6560, 0.8814, 0.5291, 0.9290, 0.0962, 0.5502, 0.5730, 0.1741, "other ..."] }) -Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) -Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6852, 0.1694, 0.7705, 0.2755, 0.6959, 0.5305, 0.2022, 0.5598, 0.6582, 0.3725, "other ..."] }) -Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) -Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0037, 0.9615, 0.2896, 0.3061, 0.0181, 0.3056, 0.1931, 0.8086, 0.7679, 0.3605, "other ..."] }) -Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) -Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8840, 0.2090, 0.9141, 0.4499, 0.8702, 0.9852, 0.4563, 0.2227, 0.9871, 0.2484, "other ..."] }) -Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) -Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6248, 0.0958, 0.2895, 0.5991, 0.2720, 0.3625, 0.3161, 0.1407, 0.2928, 0.2270, "other ..."] }) -Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) -Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4229, 0.7688, 0.5902, 0.5877, 0.3512, 0.1669, 0.6660, 0.5638, 0.4550, 0.1102, "other ..."] }) -Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) -Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5868, 0.7674, 0.3458, 0.6101, 0.9320, 0.5876, 0.9390, 0.7086, 0.4476, 0.0456, "other ..."] }) -Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) -Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3338, 0.2535, 0.5893, 0.7852, 0.7048, 0.2541, 0.7470, 0.5889, 0.0218, 0.1516, "other ..."] }) -Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) -Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7028, 0.2429, 0.3110, 0.9131, 0.6252, 0.6485, 0.6008, 0.0272, 0.4856, 0.2410, "other ..."] }) -Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) -Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6796, 0.2736, 0.0018, 0.5992, 0.2036, 0.6552, 0.7733, 0.6097, 0.3412, 0.0426, "other ..."] }) -Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) -Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4371, 0.1691, 0.2971, 0.0582, 0.1128, 0.1555, 0.5510, 0.6131, 0.4963, 0.2154, "other ..."] }) -Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) -Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0071, 0.8556, 0.1484, 0.6902, 0.9932, 0.1037, 0.5844, 0.4486, 0.7230, 0.0373, "other ..."] }) -Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) -Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4880, 0.7731, 0.6511, 0.2908, 0.1662, 0.5471, 0.1228, 0.0526, 0.1216, 0.4898, "other ..."] }) -Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) -Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5376, 0.4754, 0.3855, 0.6614, 0.2655, 0.0026, 0.9412, 0.2510, 0.2270, 0.3741, "other ..."] }) -Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) -Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7924, 0.1561, 0.3198, 0.0339, 0.5919, 0.2482, 0.4291, 0.9912, 0.8506, 0.6688, "other ..."] }) -Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) -Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2006, 0.5631, 0.6318, 0.4906, 0.2916, 0.4875, 0.1034, 0.7061, 0.1413, 0.9956, "other ..."] }) -Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) -Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1328, 0.8757, 0.6834, 0.9140, 0.7308, 0.1439, 0.3480, 0.6060, 0.9529, 0.2163, "other ..."] }) -Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) -Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0929, 0.2278, 0.8567, 0.3831, 0.1889, 0.1941, 0.4218, 0.8952, 0.8072, 0.0287, "other ..."] }) -Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) -Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6879, 0.2183, 0.3746, 0.1164, 0.1198, 0.6706, 0.1791, 0.1404, 0.2785, 0.8119, "other ..."] }) -Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) -Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6683, 0.2720, 0.2939, 0.5200, 0.8777, 0.1719, 0.2882, 0.1732, 0.4517, 0.0149, "other ..."] }) -Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) -Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4497, 0.5538, 0.6738, 0.1492, 0.5969, 0.7824, 0.3278, 0.9153, 0.7957, 0.5507, "other ..."] }) -Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) -Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4178, 0.2763, 0.3725, 0.2913, 0.2235, 0.4818, 0.8680, 0.6163, 0.2037, 0.0307, "other ..."] }) -Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) -Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0785, 0.2604, 0.5759, 0.7355, 0.3364, 0.4576, 0.3499, 0.6492, 0.0832, 0.8244, "other ..."] }) -Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) -Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4218, 0.5100, 0.0525, 0.1769, 0.3114, 0.6073, 0.0920, 0.0003, 0.2920, 0.6187, "other ..."] }) -Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) -Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1541, 0.0680, 0.1200, 0.6694, 0.1988, 0.4380, 0.8675, 0.3337, 0.5964, 0.1474, "other ..."] }) -Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) -Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0605, 0.8364, 0.8474, 0.6606, 0.6484, 0.6447, 0.8063, 0.2054, 0.0341, 0.7021, "other ..."] }) -Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) -Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3382, 0.8151, 0.8856, 0.9063, 0.1357, 0.8357, 0.7017, 0.4752, 0.1846, 0.8894, "other ..."] }) -Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) -Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3592, 0.9304, 0.2546, 0.5325, 0.5531, 0.3721, 0.9746, 0.6038, 0.3859, 0.8389, "other ..."] }) -Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) -Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6204, 0.1391, 0.4938, 0.3666, 0.3302, 0.5598, 0.6202, 0.7036, 0.5887, 0.1799, "other ..."] }) -Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) -Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7096, 0.8502, 0.8403, 0.9631, 0.6439, 0.9033, 0.4150, 0.1315, 0.0109, 0.2784, "other ..."] }) -Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) +Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2720, 0.1911, 0.2962, 0.8872, 0.8356, 0.5636, 0.3970, 0.9592, 0.6856, 0.2160, "other ..."] }) +Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) +Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7062, 0.6998, 0.5514, 0.7874, 0.4402, 0.0478, 0.7386, 0.5093, 0.8964, 0.8248, "other ..."] }) +Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) +Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3211, 0.3150, 0.5402, 0.0930, 0.6963, 0.4709, 0.5433, 0.8626, 0.7230, 0.6204, "other ..."] }) +Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) +Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0244, 0.7274, 0.5727, 0.5908, 0.3480, 0.4574, 0.4877, 0.6325, 0.5284, 0.6983, "other ..."] }) +Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) +Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3477, 0.4107, 0.7384, 0.9005, 0.1528, 0.6780, 0.0267, 0.8021, 0.2981, 0.2717, "other ..."] }) +Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) +Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4341, 0.3135, 0.0142, 0.3661, 0.4947, 0.7175, 0.9751, 0.4387, 0.0109, 0.5243, "other ..."] }) +Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) +Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5616, 0.7872, 0.5384, 0.3939, 0.6155, 0.6796, 0.6887, 0.6391, 0.0838, 0.1087, "other ..."] }) +Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) +Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7518, 0.6721, 0.9863, 0.1919, 0.2958, 0.3867, 0.2424, 0.8564, 0.9043, 0.2347, "other ..."] }) +Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) +Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2414, 0.5945, 0.2478, 0.4521, 0.4097, 0.2810, 0.8998, 0.1611, 0.6353, 0.3983, "other ..."] }) +Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) +Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2268, 0.3553, 0.4373, 0.6402, 0.5594, 0.7669, 0.2032, 0.4453, 0.1589, 0.3916, "other ..."] }) +Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) +Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1264, 0.9795, 0.3150, 0.7733, 0.4131, 0.2242, 0.9078, 0.9045, 0.1001, 0.3298, "other ..."] }) +Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) +Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0715, 0.9965, 0.9080, 0.4298, 0.5626, 0.8220, 0.9952, 0.2171, 0.9860, 0.8204, "other ..."] }) +Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) +Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2016, 0.7551, 0.9960, 0.8650, 0.1399, 0.4464, 0.2855, 0.7776, 0.6456, 0.0802, "other ..."] }) +Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) +Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6829, 0.3333, 0.9681, 0.5077, 0.2901, 0.7233, 0.6496, 0.9653, 0.9827, 0.8165, "other ..."] }) +Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) +Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6031, 0.1503, 0.2788, 0.3537, 0.6271, 0.9647, 0.4800, 0.9366, 0.2688, 0.9738, "other ..."] }) +Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) +Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8318, 0.2588, 0.7135, 0.6452, 0.8101, 0.4832, 0.6931, 0.7657, 0.7685, 0.9255, "other ..."] }) +Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) +Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1375, 0.4302, 0.7004, 0.0251, 0.3941, 0.2518, 0.1463, 0.1808, 0.0052, 0.5310, "other ..."] }) +Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) +Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1515, 0.5026, 0.8717, 0.4441, 0.3310, 0.8236, 0.2705, 0.5019, 0.7512, 0.8800, "other ..."] }) +Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) +Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0803, 0.3244, 0.7758, 0.3223, 0.2530, 0.9621, 0.9439, 0.7061, 0.8197, 0.3492, "other ..."] }) +Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) +Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2646, 0.5441, 0.3387, 0.3728, 0.6653, 0.3646, 0.0483, 0.7737, 0.8912, 0.1113, "other ..."] }) +Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) +Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1233, 0.9711, 0.6560, 0.8814, 0.5291, 0.9290, 0.0962, 0.5502, 0.5730, 0.1741, "other ..."] }) +Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) +Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6852, 0.1694, 0.7705, 0.2755, 0.6959, 0.5305, 0.2022, 0.5598, 0.6582, 0.3725, "other ..."] }) +Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) +Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0037, 0.9615, 0.2896, 0.3061, 0.0181, 0.3056, 0.1931, 0.8086, 0.7679, 0.3605, "other ..."] }) +Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) +Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8840, 0.2090, 0.9141, 0.4499, 0.8702, 0.9852, 0.4563, 0.2227, 0.9871, 0.2484, "other ..."] }) +Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) +Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6248, 0.0958, 0.2895, 0.5991, 0.2720, 0.3625, 0.3161, 0.1407, 0.2928, 0.2270, "other ..."] }) +Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) +Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4229, 0.7688, 0.5902, 0.5877, 0.3512, 0.1669, 0.6660, 0.5638, 0.4550, 0.1102, "other ..."] }) +Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) +Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5868, 0.7674, 0.3458, 0.6101, 0.9320, 0.5876, 0.9390, 0.7086, 0.4476, 0.0456, "other ..."] }) +Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) +Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3338, 0.2535, 0.5893, 0.7852, 0.7048, 0.2541, 0.7470, 0.5889, 0.0218, 0.1516, "other ..."] }) +Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) +Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7028, 0.2429, 0.3110, 0.9131, 0.6252, 0.6485, 0.6008, 0.0272, 0.4856, 0.2410, "other ..."] }) +Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) +Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6796, 0.2736, 0.0018, 0.5992, 0.2036, 0.6552, 0.7733, 0.6097, 0.3412, 0.0426, "other ..."] }) +Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) +Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4371, 0.1691, 0.2971, 0.0582, 0.1128, 0.1555, 0.5510, 0.6131, 0.4963, 0.2154, "other ..."] }) +Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) +Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0071, 0.8556, 0.1484, 0.6902, 0.9932, 0.1037, 0.5844, 0.4486, 0.7230, 0.0373, "other ..."] }) +Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) +Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4880, 0.7731, 0.6511, 0.2908, 0.1662, 0.5471, 0.1228, 0.0526, 0.1216, 0.4898, "other ..."] }) +Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) +Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5376, 0.4754, 0.3855, 0.6614, 0.2655, 0.0026, 0.9412, 0.2510, 0.2270, 0.3741, "other ..."] }) +Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) +Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7924, 0.1561, 0.3198, 0.0339, 0.5919, 0.2482, 0.4291, 0.9912, 0.8506, 0.6688, "other ..."] }) +Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) +Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2006, 0.5631, 0.6318, 0.4906, 0.2916, 0.4875, 0.1034, 0.7061, 0.1413, 0.9956, "other ..."] }) +Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) +Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1328, 0.8757, 0.6834, 0.9140, 0.7308, 0.1439, 0.3480, 0.6060, 0.9529, 0.2163, "other ..."] }) +Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) +Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0929, 0.2278, 0.8567, 0.3831, 0.1889, 0.1941, 0.4218, 0.8952, 0.8072, 0.0287, "other ..."] }) +Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) +Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6879, 0.2183, 0.3746, 0.1164, 0.1198, 0.6706, 0.1791, 0.1404, 0.2785, 0.8119, "other ..."] }) +Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) +Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6683, 0.2720, 0.2939, 0.5200, 0.8777, 0.1719, 0.2882, 0.1732, 0.4517, 0.0149, "other ..."] }) +Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) +Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4497, 0.5538, 0.6738, 0.1492, 0.5969, 0.7824, 0.3278, 0.9153, 0.7957, 0.5507, "other ..."] }) +Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) +Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4178, 0.2763, 0.3725, 0.2913, 0.2235, 0.4818, 0.8680, 0.6163, 0.2037, 0.0307, "other ..."] }) +Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) +Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0785, 0.2604, 0.5759, 0.7355, 0.3364, 0.4576, 0.3499, 0.6492, 0.0832, 0.8244, "other ..."] }) +Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) +Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4218, 0.5100, 0.0525, 0.1769, 0.3114, 0.6073, 0.0920, 0.0003, 0.2920, 0.6187, "other ..."] }) +Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) +Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1541, 0.0680, 0.1200, 0.6694, 0.1988, 0.4380, 0.8675, 0.3337, 0.5964, 0.1474, "other ..."] }) +Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) +Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0605, 0.8364, 0.8474, 0.6606, 0.6484, 0.6447, 0.8063, 0.2054, 0.0341, 0.7021, "other ..."] }) +Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) +Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3382, 0.8151, 0.8856, 0.9063, 0.1357, 0.8357, 0.7017, 0.4752, 0.1846, 0.8894, "other ..."] }) +Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) +Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3592, 0.9304, 0.2546, 0.5325, 0.5531, 0.3721, 0.9746, 0.6038, 0.3859, 0.8389, "other ..."] }) +Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) +Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6204, 0.1391, 0.4938, 0.3666, 0.3302, 0.5598, 0.6202, 0.7036, 0.5887, 0.1799, "other ..."] }) +Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) +Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7096, 0.8502, 0.8403, 0.9631, 0.6439, 0.9033, 0.4150, 0.1315, 0.0109, 0.2784, "other ..."] }) +Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) diff --git a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap index d21f63a8..e637acf9 100644 --- a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap +++ b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap @@ -6,179 +6,179 @@ expression: handle Dumping index 0 Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 99>, roots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } -Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.21127103 }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) -Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.8344944 }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.44403428 }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) -Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.23276792 }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) -Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.3665943 }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) -Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.52087575 }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.028415337 }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.040909976 }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.29089272 }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) -Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.123433806 }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) +Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2113" }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) +Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.8345" }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4440" }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) +Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2328" }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) +Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3666" }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) +Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5209" }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0284" }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0409" }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2909" }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) +Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1234" }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) Tree 10: Descendants(Descendants { descendants: [0, 8, 12, 13, 19, 25, 28, 33, 34, 40, 41, 42, 44, 45, 46, 48, 50, 51, 56, 59, 61, 64, 72, 89, 92, 93] }) Tree 11: Descendants(Descendants { descendants: [1, 4, 5, 10, 29, 31, 32, 35, 60, 65, 70, 74, 84, 85] }) Tree 12: Descendants(Descendants { descendants: [2, 7, 9, 11, 14, 27, 30, 36, 39, 52, 62, 66, 67, 86, 91, 97, 98] }) -Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.15621984 }, vector: [0.2450, 0.4678, 0.2972, 0.0609, 0.0131, -0.0330, -0.4319, 0.1331, 0.0558, -0.0869, "other ..."] } }) -Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.17777771 }, vector: [0.0937, 0.0511, 0.0410, -0.2178, -0.2653, -0.0234, 0.2367, 0.1604, 0.1979, 0.1232, "other ..."] } }) +Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1562" }, vector: [0.2450, 0.4678, 0.2972, 0.0609, 0.0131, -0.0330, -0.4319, 0.1331, 0.0558, -0.0869, "other ..."] } }) +Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1778" }, vector: [0.0937, 0.0511, 0.0410, -0.2178, -0.2653, -0.0234, 0.2367, 0.1604, 0.1979, 0.1232, "other ..."] } }) Tree 15: Descendants(Descendants { descendants: [3, 16, 20, 21, 24, 26, 37, 38, 43, 47, 54, 57, 63, 68, 73, 76, 77, 78, 80, 83, 87, 90, 95, 96] }) Tree 16: Descendants(Descendants { descendants: [6, 15, 17, 18, 22, 23, 49, 53, 55, 58, 69, 71, 75, 79, 81, 82, 88, 94, 99] }) -Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 15, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.8933082 }, vector: [0.0705, -0.1150, 0.2198, -0.0387, 0.0840, -0.0742, 0.0357, 0.1034, 0.1458, 0.2194, "other ..."] } }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 15, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.8933" }, vector: [0.0705, -0.1150, 0.2198, -0.0387, 0.0840, -0.0742, 0.0357, 0.1034, 0.1458, 0.2194, "other ..."] } }) Tree 19: Descendants(Descendants { descendants: [8, 13, 15, 20, 21, 23, 24, 28, 37, 43, 45, 46, 47, 51, 54, 55, 57, 61, 63, 64, 67, 68, 71, 73, 77, 78, 80, 87, 90] }) Tree 20: Descendants(Descendants { descendants: [12, 16, 18, 22, 35, 40, 41, 48, 49, 53, 56, 58, 59, 60, 75, 76, 82, 83, 94, 99] }) -Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 19, right: 20, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.17993876 }, vector: [-0.0571, -0.3888, 0.0591, -0.0142, -0.0640, 0.3734, 0.0723, -0.0265, 0.1803, -0.2161, "other ..."] } }) +Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 19, right: 20, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1799" }, vector: [-0.0571, -0.3888, 0.0591, -0.0142, -0.0640, 0.3734, 0.0723, -0.0265, 0.1803, -0.2161, "other ..."] } }) Tree 22: Descendants(Descendants { descendants: [1, 2, 3, 5, 9, 10, 14, 17, 19, 25, 26, 27, 30, 39, 42, 52, 62, 65, 66, 69, 70, 72, 84, 85, 88, 91, 97, 98] }) Tree 23: Descendants(Descendants { descendants: [0, 4, 6, 7, 11, 29, 31, 32, 33, 34, 36, 38, 44, 50, 74, 79, 81, 86, 89, 92, 93, 95, 96] }) -Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 22, right: 23, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.28782302 }, vector: [0.3689, -0.1553, 0.0362, 0.1793, -0.1797, 0.0002, 0.0719, 0.2119, -0.3339, -0.1851, "other ..."] } }) +Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 22, right: 23, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2878" }, vector: [0.3689, -0.1553, 0.0362, 0.1793, -0.1797, 0.0002, 0.0719, 0.2119, -0.3339, -0.1851, "other ..."] } }) Tree 26: Descendants(Descendants { descendants: [13, 20, 24, 28, 32, 33, 36, 38, 43, 45, 48, 50, 57, 58, 61, 63, 68, 76, 80, 81, 86, 89, 90, 95] }) Tree 27: Descendants(Descendants { descendants: [3, 6, 15, 16, 17, 21, 22, 23, 26, 27, 37, 47, 54, 55, 71, 77, 79, 93, 94, 96] }) -Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 27, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.37947488 }, vector: [-0.0223, 0.1294, 0.2831, -0.2915, -0.1184, 0.1089, 0.0140, 0.1800, 0.1957, 0.1604, "other ..."] } }) +Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 27, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3795" }, vector: [-0.0223, 0.1294, 0.2831, -0.2915, -0.1184, 0.1089, 0.0140, 0.1800, 0.1957, 0.1604, "other ..."] } }) Tree 29: Descendants(Descendants { descendants: [0, 1, 2, 4, 7, 9, 10, 11, 14, 25, 29, 30, 35, 39, 42, 44, 46, 62, 65, 66, 67, 69, 70, 72, 73, 74, 85, 91, 97, 98] }) Tree 30: Descendants(Descendants { descendants: [5, 8, 12, 18, 19, 31, 34, 40, 41, 49, 51, 52, 53, 56, 59, 60, 64, 75, 78, 82, 83, 84, 87, 88, 92, 99] }) -Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 29, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.14933513 }, vector: [-0.0305, -0.0223, 0.0473, 0.0614, -0.1365, -0.0171, 0.0807, -0.1358, 0.0555, -0.1190, "other ..."] } }) +Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 29, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1493" }, vector: [-0.0305, -0.0223, 0.0473, 0.0614, -0.1365, -0.0171, 0.0807, -0.1358, 0.0555, -0.1190, "other ..."] } }) Tree 33: Descendants(Descendants { descendants: [6, 7, 8, 13, 26, 27, 28, 34, 36, 40, 45, 48, 50, 63, 65, 86, 90, 91, 93, 96] }) Tree 34: Descendants(Descendants { descendants: [2, 11, 19, 30, 39, 42, 46, 52, 56, 62, 66, 67, 72, 85, 89] }) Tree 35: Descendants(Descendants { descendants: [0, 1, 4, 9, 10, 14, 25, 29, 31, 33, 35, 44, 70, 74, 92, 97, 98] }) -Tree 36: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 35, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.29608616 }, vector: [0.0371, -0.3670, -0.3289, -0.1016, -0.1519, -0.1960, 0.3900, 0.0432, -0.1701, 0.0501, "other ..."] } }) -Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 33, right: 36, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.5817052 }, vector: [-0.2964, -0.0630, -0.0575, -0.2645, 0.0618, 0.1553, 0.0602, 0.1155, 0.0336, -0.0550, "other ..."] } }) +Tree 36: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 35, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2961" }, vector: [0.0371, -0.3670, -0.3289, -0.1016, -0.1519, -0.1960, 0.3900, 0.0432, -0.1701, 0.0501, "other ..."] } }) +Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 33, right: 36, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5817" }, vector: [-0.2964, -0.0630, -0.0575, -0.2645, 0.0618, 0.1553, 0.0602, 0.1155, 0.0336, -0.0550, "other ..."] } }) Tree 38: Descendants(Descendants { descendants: [5, 16, 21, 22, 23, 24, 41, 43, 47, 54, 58, 59, 61, 64, 71, 73, 76, 78, 80, 83, 87, 94] }) Tree 39: Descendants(Descendants { descendants: [3, 12, 15, 17, 18, 20, 32, 37, 38, 49, 51, 53, 55, 57, 60, 68, 69, 75, 77, 79, 81, 82, 84, 88, 95, 99] }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 38, right: 39, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.21422172 }, vector: [-0.1023, -0.2230, 0.0083, 0.1407, -0.1004, -0.3044, 0.0713, -0.0276, 0.2124, 0.1326, "other ..."] } }) +Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 38, right: 39, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2142" }, vector: [-0.1023, -0.2230, 0.0083, 0.1407, -0.1004, -0.3044, 0.0713, -0.0276, 0.2124, 0.1326, "other ..."] } }) Tree 42: Descendants(Descendants { descendants: [1, 10, 13, 20, 26, 28, 29, 30, 36, 40, 42, 45, 48, 50, 51, 57, 63, 65, 70, 89, 90] }) Tree 43: Descendants(Descendants { descendants: [3, 6, 16, 21, 22, 27, 37, 39, 41, 43, 47, 54, 55, 62, 66, 68, 73, 77, 78, 79, 85, 91, 93, 95, 96] }) -Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 42, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.36209315 }, vector: [0.0897, 0.3953, 0.2225, -0.2325, -0.1880, 0.0082, 0.0731, 0.3012, 0.2009, 0.0267, "other ..."] } }) +Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 42, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3621" }, vector: [0.0897, 0.3953, 0.2225, -0.2325, -0.1880, 0.0082, 0.0731, 0.3012, 0.2009, 0.0267, "other ..."] } }) Tree 45: Descendants(Descendants { descendants: [0, 8, 9, 12, 14, 15, 23, 35, 52, 69, 71, 74, 80, 87, 92, 99] }) Tree 46: Descendants(Descendants { descendants: [2, 11, 19, 24, 25, 44, 46, 56, 60, 61, 64, 67, 72, 97, 98] }) -Tree 47: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 46, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.27408892 }, vector: [-0.2583, 0.0414, -0.1294, 0.1178, 0.2646, 0.6034, -0.0910, -0.1269, 0.1434, -0.1341, "other ..."] } }) +Tree 47: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 46, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2741" }, vector: [-0.2583, 0.0414, -0.1294, 0.1178, 0.2646, 0.6034, -0.0910, -0.1269, 0.1434, -0.1341, "other ..."] } }) Tree 48: Descendants(Descendants { descendants: [4, 5, 7, 17, 18, 31, 32, 33, 34, 38, 49, 53, 58, 59, 75, 76, 81, 82, 83, 84, 86, 88, 94] }) -Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 47, right: 48, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.4013598 }, vector: [-0.0198, -0.1386, 0.1034, 0.1370, -0.0919, 0.1695, 0.1783, 0.0528, -0.2236, 0.1003, "other ..."] } }) +Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 47, right: 48, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4014" }, vector: [-0.0198, -0.1386, 0.1034, 0.1370, -0.0919, 0.1695, 0.1783, 0.0528, -0.2236, 0.1003, "other ..."] } }) Tree 51: Descendants(Descendants { descendants: [1, 2, 5, 10, 12, 13, 17, 25, 29, 40, 41, 51, 57, 60, 61, 64, 70, 85, 97] }) Tree 52: Descendants(Descendants { descendants: [3, 6, 8, 15, 16, 21, 23, 26, 27, 28, 37, 43, 47, 48, 54, 55, 62, 68, 71, 73, 77, 78, 79, 81, 87, 90, 91, 93, 95, 96] }) -Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 52, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.38717717 }, vector: [0.2850, 0.4609, 0.1505, 0.2411, -0.0887, -0.2256, -0.1911, -0.0215, 0.1505, -0.0688, "other ..."] } }) +Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 52, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3872" }, vector: [0.2850, 0.4609, 0.1505, 0.2411, -0.0887, -0.2256, -0.1911, -0.0215, 0.1505, -0.0688, "other ..."] } }) Tree 54: Descendants(Descendants { descendants: [7, 9, 11, 14, 19, 20, 22, 24, 30, 31, 35, 36, 39, 42, 45, 46, 50, 52, 63, 66, 67, 69, 72, 80, 86, 89, 92, 98] }) Tree 55: Descendants(Descendants { descendants: [0, 4, 18, 32, 33, 34, 38, 44, 49, 53, 56, 58, 59, 65, 74, 75, 76, 82, 83, 84, 88, 94, 99] }) -Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 54, right: 55, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.07160753 }, vector: [-0.1284, -0.2950, 0.0308, 0.0293, -0.0542, 0.2148, 0.3359, -0.0002, 0.0949, 0.0805, "other ..."] } }) +Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 54, right: 55, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0716" }, vector: [-0.1284, -0.2950, 0.0308, 0.0293, -0.0542, 0.2148, 0.3359, -0.0002, 0.0949, 0.0805, "other ..."] } }) Tree 58: Descendants(Descendants { descendants: [1, 2, 5, 9, 10, 12, 14, 15, 25, 26, 31, 33, 34, 35, 38, 44, 48, 49, 69, 70, 71, 74, 75, 81, 84, 88, 92, 99] }) Tree 59: Descendants(Descendants { descendants: [0, 3, 4, 6, 7, 11, 17, 20, 23, 29, 32, 36, 39, 42, 50, 52, 53, 55, 57, 58, 62, 68, 79, 80, 86, 89, 93, 95, 96, 97] }) -Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.32377142 }, vector: [0.2591, 0.0100, -0.0571, -0.0253, 0.1896, -0.2304, -0.0609, 0.2559, 0.1387, 0.0448, "other ..."] } }) +Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3238" }, vector: [0.2591, 0.0100, -0.0571, -0.0253, 0.1896, -0.2304, -0.0609, 0.2559, 0.1387, 0.0448, "other ..."] } }) Tree 61: Descendants(Descendants { descendants: [13, 16, 22, 24, 27, 28, 43, 45, 54, 63, 65, 66, 73, 76, 83, 87, 90, 94] }) Tree 62: Descendants(Descendants { descendants: [8, 18, 19, 21, 30, 37, 40, 41, 46, 47, 51, 56, 59, 60, 61, 64, 67, 72, 77, 78, 82, 85, 91, 98] }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 62, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.14829761 }, vector: [-0.0019, -0.1048, 0.0858, -0.2124, -0.1620, 0.0902, -0.1483, 0.1343, 0.4031, -0.1357, "other ..."] } }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 62, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1483" }, vector: [-0.0019, -0.1048, 0.0858, -0.2124, -0.1620, 0.0902, -0.1483, 0.1343, 0.4031, -0.1357, "other ..."] } }) Tree 65: Descendants(Descendants { descendants: [3, 8, 12, 15, 17, 23, 27, 30, 37, 46, 52, 53, 55, 57, 60, 64, 66, 68, 71, 72, 73, 75, 78, 80, 81, 85, 87, 88, 99] }) Tree 66: Descendants(Descendants { descendants: [0, 2, 4, 7, 9, 10, 11, 14, 18, 25, 29, 35, 39, 44, 47, 49, 61, 62, 67, 69, 70, 74, 84, 86, 91, 94, 96, 97, 98] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.7572273 }, vector: [-0.0285, -0.2195, 0.0099, 0.0241, 0.0176, 0.1916, 0.0077, 0.4518, 0.0405, -0.1638, "other ..."] } }) +Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.7572" }, vector: [-0.0285, -0.2195, 0.0099, 0.0241, 0.0176, 0.1916, 0.0077, 0.4518, 0.0405, -0.1638, "other ..."] } }) Tree 68: Descendants(Descendants { descendants: [1, 6, 13, 19, 20, 26, 28, 31, 32, 33, 34, 36, 40, 41, 42, 45, 48, 51, 56, 63, 89, 90, 92] }) Tree 69: Descendants(Descendants { descendants: [5, 16, 21, 22, 24, 38, 43, 50, 54, 58, 59, 65, 76, 77, 79, 82, 83, 93, 95] }) -Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 69, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.058642477 }, vector: [0.0331, 0.0877, 0.1279, -0.2862, -0.0502, 0.1851, 0.3474, 0.2736, 0.0653, 0.1438, "other ..."] } }) +Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 69, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0586" }, vector: [0.0331, 0.0877, 0.1279, -0.2862, -0.0502, 0.1851, 0.3474, 0.2736, 0.0653, 0.1438, "other ..."] } }) Tree 72: Descendants(Descendants { descendants: [0, 1, 2, 3, 4, 7, 9, 10, 11, 14, 18, 26, 27, 28, 29, 35, 39, 57, 62, 65, 69, 70, 73, 74, 85, 96, 97] }) Tree 73: Descendants(Descendants { descendants: [5, 16, 19, 24, 25, 30, 40, 42, 44, 46, 56, 60, 66, 67, 72, 77, 78, 87, 91, 98] }) -Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 72, right: 73, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.30584538 }, vector: [-0.0798, 0.2641, -0.0135, 0.0698, -0.0244, 0.2822, -0.2006, -0.4188, 0.1026, -0.2267, "other ..."] } }) +Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 72, right: 73, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3058" }, vector: [-0.0798, 0.2641, -0.0135, 0.0698, -0.0244, 0.2822, -0.2006, -0.4188, 0.1026, -0.2267, "other ..."] } }) Tree 75: Descendants(Descendants { descendants: [15, 17, 20, 31, 32, 33, 34, 38, 48, 49, 53, 58, 59, 75, 76, 79, 81, 82, 83, 84, 86, 88, 94, 99] }) Tree 76: Descendants(Descendants { descendants: [6, 8, 12, 13, 21, 22, 23, 36, 37, 41, 43, 45, 47, 50, 51, 52, 54, 55, 61, 63, 64, 68, 71, 80, 89, 90, 92, 93, 95] }) -Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 75, right: 76, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.16462666 }, vector: [0.0701, 0.1854, -0.0686, 0.0047, 0.0849, -0.2750, -0.0947, -0.0915, -0.0260, -0.2147, "other ..."] } }) +Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 75, right: 76, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1646" }, vector: [0.0701, 0.1854, -0.0686, 0.0047, 0.0849, -0.2750, -0.0947, -0.0915, -0.0260, -0.2147, "other ..."] } }) Tree 79: Descendants(Descendants { descendants: [5, 9, 13, 16, 19, 27, 30, 31, 33, 34, 36, 41, 45, 46, 48, 51, 56, 59, 60, 65, 66, 67, 72, 87, 92, 93] }) Tree 80: Descendants(Descendants { descendants: [12, 15, 20, 21, 22, 23, 24, 29, 38, 43, 44, 47, 50, 58, 61, 63, 64, 68, 76, 77, 78, 80, 82, 83, 89, 94, 98] }) -Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 79, right: 80, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.16315688 }, vector: [0.0568, 0.0277, -0.1739, -0.0810, 0.0699, -0.2270, 0.0070, 0.4516, 0.0734, 0.2684, "other ..."] } }) +Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 79, right: 80, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1632" }, vector: [0.0568, 0.0277, -0.1739, -0.0810, 0.0699, -0.2270, 0.0070, 0.4516, 0.0734, 0.2684, "other ..."] } }) Tree 82: Descendants(Descendants { descendants: [0, 1, 3, 4, 7, 8, 26, 28, 37, 39, 42, 52, 54, 55, 57, 70, 73, 79, 85, 86, 90, 95, 96] }) Tree 83: Descendants(Descendants { descendants: [2, 6, 10, 11, 14, 17, 18, 25, 32, 35, 40, 49, 53, 62, 69, 71, 74, 75, 81, 84, 88, 91, 97, 99] }) -Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 82, right: 83, normal: Leaf { header: NodeHeaderEuclidean { bias: -0.33374828 }, vector: [-0.2364, -0.0195, 0.0802, -0.0944, -0.1296, 0.0602, 0.0127, -0.1474, 0.1491, -0.1189, "other ..."] } }) -Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8013, 0.2371, 0.6955, 0.8606, 0.5280, 0.2667, 0.6057, 0.9830, 0.9430, 0.0479, "other ..."] }) -Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) -Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1040, 0.9647, 0.8238, 0.5344, 0.4903, 0.4420, 0.7937, 0.4028, 0.2083, 0.3315, "other ..."] }) -Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) -Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8616, 0.3239, 0.5030, 0.3022, 0.8817, 0.3255, 0.9170, 0.9928, 0.3439, 0.0860, "other ..."] }) -Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) -Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8761, 0.9344, 0.8748, 0.9176, 0.4249, 0.1069, 0.0392, 0.1024, 0.9981, 0.7313, "other ..."] }) -Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) -Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9520, 0.3982, 0.4226, 0.7733, 0.5495, 0.2244, 0.7816, 0.2531, 0.6199, 0.1072, "other ..."] }) -Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) -Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0050, 0.0899, 0.0005, 0.4564, 0.8086, 0.0683, 0.5358, 0.2569, 0.1496, 0.6153, "other ..."] }) -Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) -Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2447, 0.1475, 0.7740, 0.4535, 0.7574, 0.0332, 0.5334, 0.6643, 0.1125, 0.4113, "other ..."] }) -Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) -Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4818, 0.7828, 0.7237, 0.2860, 0.0901, 0.4310, 0.0837, 0.7802, 0.8863, 0.1804, "other ..."] }) -Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) -Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4348, 0.7310, 0.5390, 0.4001, 0.3141, 0.8369, 0.4671, 0.1519, 0.5237, 0.1241, "other ..."] }) -Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) -Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5407, 0.5762, 0.7453, 0.1027, 0.5595, 0.5039, 0.8272, 0.9763, 0.9918, 0.1477, "other ..."] }) -Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) -Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9335, 0.4981, 0.2509, 0.4837, 0.1620, 0.1082, 0.0741, 0.0183, 0.5846, 0.5706, "other ..."] }) -Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) -Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9798, 0.5036, 0.8106, 0.3013, 0.1513, 0.2881, 0.4811, 0.6230, 0.1926, 0.0604, "other ..."] }) -Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) -Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2392, 0.8345, 0.1999, 0.5550, 0.2999, 0.8526, 0.2634, 0.0980, 0.1580, 0.5939, "other ..."] }) -Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) -Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3722, 0.7760, 0.6038, 0.9467, 0.4463, 0.6653, 0.5265, 0.1535, 0.8139, 0.9773, "other ..."] }) -Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) -Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8309, 0.4235, 0.2111, 0.9452, 0.9005, 0.0275, 0.1471, 0.2638, 0.2873, 0.2079, "other ..."] }) -Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) -Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5015, 0.9497, 0.6473, 0.1317, 0.4497, 0.9958, 0.1906, 0.0105, 0.2717, 0.2399, "other ..."] }) -Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) -Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3037, 0.1721, 0.4483, 0.7763, 0.2161, 0.2408, 0.7451, 0.7175, 0.6738, 0.0753, "other ..."] }) -Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) -Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8829, 0.2487, 0.4700, 0.7563, 0.1986, 0.8682, 0.1629, 0.1449, 0.2589, 0.0392, "other ..."] }) -Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) -Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8020, 0.7339, 0.9494, 0.9035, 0.2586, 0.5700, 0.6807, 0.1325, 0.1968, 0.5123, "other ..."] }) -Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) -Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0262, 0.7409, 0.1552, 0.9316, 0.1472, 0.6711, 0.8818, 0.6288, 0.1830, 0.8944, "other ..."] }) -Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) -Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0779, 0.2777, 0.8682, 0.3638, 0.1313, 0.7436, 0.0733, 0.0458, 0.8121, 0.2161, "other ..."] }) -Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) -Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2568, 0.4789, 0.6587, 0.7855, 0.9144, 0.3430, 0.0823, 0.2256, 0.8146, 0.2751, "other ..."] }) -Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) -Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6144, 0.5794, 0.3617, 0.7858, 0.8199, 0.8128, 0.0766, 0.6796, 0.2179, 0.3666, "other ..."] }) -Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) -Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9427, 0.5559, 0.3745, 0.7126, 0.6987, 0.9411, 0.1747, 0.2418, 0.5506, 0.2967, "other ..."] }) -Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) -Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5565, 0.1465, 0.0304, 0.5234, 0.3295, 0.7092, 0.4073, 0.1632, 0.1200, 0.2177, "other ..."] }) -Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) -Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3692, 0.5773, 0.3161, 0.6517, 0.8682, 0.3599, 0.3781, 0.9383, 0.2134, 0.4018, "other ..."] }) -Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) -Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8903, 0.8028, 0.1029, 0.2941, 0.2599, 0.0219, 0.1355, 0.5165, 0.8002, 0.3078, "other ..."] }) -Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) -Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2889, 0.9493, 0.8938, 0.7127, 0.4381, 0.0183, 0.8352, 0.3095, 0.4705, 0.2917, "other ..."] }) -Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) -Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5139, 0.5344, 0.7468, 0.8617, 0.5994, 0.9846, 0.2361, 0.3984, 0.5078, 0.0666, "other ..."] }) -Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) -Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6107, 0.3400, 0.5636, 0.3807, 0.7145, 0.4766, 0.5889, 0.5437, 0.2690, 0.7633, "other ..."] }) -Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) -Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1100, 0.1244, 0.0460, 0.6082, 0.1978, 0.9696, 0.9862, 0.1179, 0.9388, 0.2901, "other ..."] }) -Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) -Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1364, 0.8633, 0.9297, 0.6135, 0.2317, 0.4359, 0.2391, 0.3977, 0.5448, 0.5308, "other ..."] }) -Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) -Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4806, 0.3718, 0.0560, 0.5007, 0.9558, 0.4234, 0.8126, 0.4764, 0.4901, 0.6482, "other ..."] }) -Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) -Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6083, 0.8526, 0.7679, 0.5156, 0.8480, 0.2792, 0.3200, 0.0453, 0.2084, 0.4759, "other ..."] }) -Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) -Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2676, 0.9678, 0.0177, 0.3344, 0.6398, 0.0680, 0.6478, 0.0822, 0.8348, 0.7480, "other ..."] }) -Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) -Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2508, 0.2228, 0.0580, 0.2005, 0.3293, 0.6717, 0.7376, 0.4489, 0.1877, 0.7376, "other ..."] }) -Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) -Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3637, 0.8624, 0.6657, 0.4426, 0.9055, 0.7527, 0.3679, 0.4067, 0.8130, 0.2441, "other ..."] }) -Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) -Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5250, 0.1137, 0.4081, 0.2765, 0.1755, 0.3861, 0.7862, 0.8678, 0.3681, 0.1279, "other ..."] }) -Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) -Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5349, 0.5286, 0.2229, 0.8101, 0.6677, 0.9457, 0.9903, 0.6100, 0.3207, 0.0250, "other ..."] }) -Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) -Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7850, 0.8396, 0.1563, 0.0331, 0.3667, 0.6701, 0.5455, 0.2239, 0.8733, 0.0339, "other ..."] }) -Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) -Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5135, 0.8836, 0.7895, 0.4037, 0.6198, 0.1685, 0.2186, 0.6238, 0.3219, 0.6977, "other ..."] }) -Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) -Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9034, 0.0318, 0.8865, 0.1217, 0.2441, 0.7340, 0.2467, 0.2411, 0.7661, 0.5926, "other ..."] }) -Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) -Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2057, 0.2311, 0.9211, 0.3561, 0.6051, 0.3712, 0.7174, 0.4273, 0.7494, 0.1833, "other ..."] }) -Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) -Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.9871, 0.6448, 0.0883, 0.6999, 0.1526, 0.2259, 0.4263, 0.9240, 0.2756, 0.3507, "other ..."] }) -Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) -Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1525, 0.7012, 0.9764, 0.8845, 0.5382, 0.6827, 0.8005, 0.4046, 0.9374, 0.6809, "other ..."] }) -Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) -Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.4082, 0.6284, 0.5104, 0.7905, 0.1476, 0.2033, 0.4106, 0.2252, 0.8351, 0.3193, "other ..."] }) -Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) -Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.7990, 0.2114, 0.7110, 0.6670, 0.0472, 0.2463, 0.5026, 0.0325, 0.2475, 0.1461, "other ..."] }) -Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) -Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6522, 0.5475, 0.9462, 0.7139, 0.9925, 0.7899, 0.9753, 0.6984, 0.4501, 0.8380, "other ..."] }) -Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) -Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.6829, 0.8851, 0.9375, 0.7638, 0.4942, 0.5561, 0.4220, 0.9060, 0.2907, 0.6102, "other ..."] }) -Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) -Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.5644, 0.3510, 0.4506, 0.6384, 0.6324, 0.5511, 0.5272, 0.8371, 0.9137, 0.4253, "other ..."] }) -Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) +Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 82, right: 83, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3337" }, vector: [-0.2364, -0.0195, 0.0802, -0.0944, -0.1296, 0.0602, 0.0127, -0.1474, 0.1491, -0.1189, "other ..."] } }) +Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8013, 0.2371, 0.6955, 0.8606, 0.5280, 0.2667, 0.6057, 0.9830, 0.9430, 0.0479, "other ..."] }) +Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) +Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1040, 0.9647, 0.8238, 0.5344, 0.4903, 0.4420, 0.7937, 0.4028, 0.2083, 0.3315, "other ..."] }) +Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) +Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8616, 0.3239, 0.5030, 0.3022, 0.8817, 0.3255, 0.9170, 0.9928, 0.3439, 0.0860, "other ..."] }) +Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) +Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8761, 0.9344, 0.8748, 0.9176, 0.4249, 0.1069, 0.0392, 0.1024, 0.9981, 0.7313, "other ..."] }) +Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) +Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9520, 0.3982, 0.4226, 0.7733, 0.5495, 0.2244, 0.7816, 0.2531, 0.6199, 0.1072, "other ..."] }) +Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) +Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0050, 0.0899, 0.0005, 0.4564, 0.8086, 0.0683, 0.5358, 0.2569, 0.1496, 0.6153, "other ..."] }) +Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) +Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2447, 0.1475, 0.7740, 0.4535, 0.7574, 0.0332, 0.5334, 0.6643, 0.1125, 0.4113, "other ..."] }) +Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) +Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4818, 0.7828, 0.7237, 0.2860, 0.0901, 0.4310, 0.0837, 0.7802, 0.8863, 0.1804, "other ..."] }) +Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) +Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4348, 0.7310, 0.5390, 0.4001, 0.3141, 0.8369, 0.4671, 0.1519, 0.5237, 0.1241, "other ..."] }) +Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) +Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5407, 0.5762, 0.7453, 0.1027, 0.5595, 0.5039, 0.8272, 0.9763, 0.9918, 0.1477, "other ..."] }) +Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) +Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9335, 0.4981, 0.2509, 0.4837, 0.1620, 0.1082, 0.0741, 0.0183, 0.5846, 0.5706, "other ..."] }) +Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) +Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9798, 0.5036, 0.8106, 0.3013, 0.1513, 0.2881, 0.4811, 0.6230, 0.1926, 0.0604, "other ..."] }) +Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) +Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2392, 0.8345, 0.1999, 0.5550, 0.2999, 0.8526, 0.2634, 0.0980, 0.1580, 0.5939, "other ..."] }) +Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) +Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3722, 0.7760, 0.6038, 0.9467, 0.4463, 0.6653, 0.5265, 0.1535, 0.8139, 0.9773, "other ..."] }) +Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) +Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8309, 0.4235, 0.2111, 0.9452, 0.9005, 0.0275, 0.1471, 0.2638, 0.2873, 0.2079, "other ..."] }) +Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) +Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5015, 0.9497, 0.6473, 0.1317, 0.4497, 0.9958, 0.1906, 0.0105, 0.2717, 0.2399, "other ..."] }) +Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) +Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3037, 0.1721, 0.4483, 0.7763, 0.2161, 0.2408, 0.7451, 0.7175, 0.6738, 0.0753, "other ..."] }) +Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) +Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8829, 0.2487, 0.4700, 0.7563, 0.1986, 0.8682, 0.1629, 0.1449, 0.2589, 0.0392, "other ..."] }) +Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) +Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8020, 0.7339, 0.9494, 0.9035, 0.2586, 0.5700, 0.6807, 0.1325, 0.1968, 0.5123, "other ..."] }) +Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) +Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0262, 0.7409, 0.1552, 0.9316, 0.1472, 0.6711, 0.8818, 0.6288, 0.1830, 0.8944, "other ..."] }) +Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) +Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0779, 0.2777, 0.8682, 0.3638, 0.1313, 0.7436, 0.0733, 0.0458, 0.8121, 0.2161, "other ..."] }) +Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) +Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2568, 0.4789, 0.6587, 0.7855, 0.9144, 0.3430, 0.0823, 0.2256, 0.8146, 0.2751, "other ..."] }) +Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) +Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6144, 0.5794, 0.3617, 0.7858, 0.8199, 0.8128, 0.0766, 0.6796, 0.2179, 0.3666, "other ..."] }) +Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) +Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9427, 0.5559, 0.3745, 0.7126, 0.6987, 0.9411, 0.1747, 0.2418, 0.5506, 0.2967, "other ..."] }) +Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) +Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5565, 0.1465, 0.0304, 0.5234, 0.3295, 0.7092, 0.4073, 0.1632, 0.1200, 0.2177, "other ..."] }) +Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) +Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3692, 0.5773, 0.3161, 0.6517, 0.8682, 0.3599, 0.3781, 0.9383, 0.2134, 0.4018, "other ..."] }) +Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) +Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8903, 0.8028, 0.1029, 0.2941, 0.2599, 0.0219, 0.1355, 0.5165, 0.8002, 0.3078, "other ..."] }) +Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) +Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2889, 0.9493, 0.8938, 0.7127, 0.4381, 0.0183, 0.8352, 0.3095, 0.4705, 0.2917, "other ..."] }) +Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) +Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5139, 0.5344, 0.7468, 0.8617, 0.5994, 0.9846, 0.2361, 0.3984, 0.5078, 0.0666, "other ..."] }) +Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) +Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6107, 0.3400, 0.5636, 0.3807, 0.7145, 0.4766, 0.5889, 0.5437, 0.2690, 0.7633, "other ..."] }) +Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) +Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1100, 0.1244, 0.0460, 0.6082, 0.1978, 0.9696, 0.9862, 0.1179, 0.9388, 0.2901, "other ..."] }) +Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) +Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1364, 0.8633, 0.9297, 0.6135, 0.2317, 0.4359, 0.2391, 0.3977, 0.5448, 0.5308, "other ..."] }) +Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) +Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4806, 0.3718, 0.0560, 0.5007, 0.9558, 0.4234, 0.8126, 0.4764, 0.4901, 0.6482, "other ..."] }) +Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) +Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6083, 0.8526, 0.7679, 0.5156, 0.8480, 0.2792, 0.3200, 0.0453, 0.2084, 0.4759, "other ..."] }) +Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) +Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2676, 0.9678, 0.0177, 0.3344, 0.6398, 0.0680, 0.6478, 0.0822, 0.8348, 0.7480, "other ..."] }) +Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) +Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2508, 0.2228, 0.0580, 0.2005, 0.3293, 0.6717, 0.7376, 0.4489, 0.1877, 0.7376, "other ..."] }) +Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) +Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3637, 0.8624, 0.6657, 0.4426, 0.9055, 0.7527, 0.3679, 0.4067, 0.8130, 0.2441, "other ..."] }) +Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) +Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5250, 0.1137, 0.4081, 0.2765, 0.1755, 0.3861, 0.7862, 0.8678, 0.3681, 0.1279, "other ..."] }) +Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) +Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5349, 0.5286, 0.2229, 0.8101, 0.6677, 0.9457, 0.9903, 0.6100, 0.3207, 0.0250, "other ..."] }) +Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) +Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7850, 0.8396, 0.1563, 0.0331, 0.3667, 0.6701, 0.5455, 0.2239, 0.8733, 0.0339, "other ..."] }) +Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) +Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5135, 0.8836, 0.7895, 0.4037, 0.6198, 0.1685, 0.2186, 0.6238, 0.3219, 0.6977, "other ..."] }) +Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) +Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9034, 0.0318, 0.8865, 0.1217, 0.2441, 0.7340, 0.2467, 0.2411, 0.7661, 0.5926, "other ..."] }) +Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) +Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2057, 0.2311, 0.9211, 0.3561, 0.6051, 0.3712, 0.7174, 0.4273, 0.7494, 0.1833, "other ..."] }) +Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) +Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9871, 0.6448, 0.0883, 0.6999, 0.1526, 0.2259, 0.4263, 0.9240, 0.2756, 0.3507, "other ..."] }) +Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) +Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1525, 0.7012, 0.9764, 0.8845, 0.5382, 0.6827, 0.8005, 0.4046, 0.9374, 0.6809, "other ..."] }) +Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) +Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4082, 0.6284, 0.5104, 0.7905, 0.1476, 0.2033, 0.4106, 0.2252, 0.8351, 0.3193, "other ..."] }) +Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) +Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7990, 0.2114, 0.7110, 0.6670, 0.0472, 0.2463, 0.5026, 0.0325, 0.2475, 0.1461, "other ..."] }) +Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) +Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6522, 0.5475, 0.9462, 0.7139, 0.9925, 0.7899, 0.9753, 0.6984, 0.4501, 0.8380, "other ..."] }) +Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) +Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6829, 0.8851, 0.9375, 0.7638, 0.4942, 0.5561, 0.4220, 0.9060, 0.2907, 0.6102, "other ..."] }) +Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) +Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5644, 0.3510, 0.4506, 0.6384, 0.6324, 0.5511, 0.5272, 0.8371, 0.9137, 0.4253, "other ..."] }) +Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) diff --git a/src/tests/upgrade.rs b/src/tests/upgrade.rs index ab1e37df..758c7fac 100644 --- a/src/tests/upgrade.rs +++ b/src/tests/upgrade.rs @@ -77,19 +77,19 @@ fn simple_upgrade_v0_6_to_v0_7() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [1, 5] }) Tree 2: Descendants(Descendants { descendants: [3, 4] }) Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 6, normal: "none" }) Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 3, normal: "none" }) Tree 5: Descendants(Descendants { descendants: [0] }) Tree 6: Descendants(Descendants { descendants: [2] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); } diff --git a/src/tests/writer.rs b/src/tests/writer.rs index bb3bea9a..ef3812f8 100644 --- a/src/tests/writer.rs +++ b/src/tests/writer.rs @@ -152,7 +152,7 @@ fn use_u32_max_minus_one_for_a_vec() { Root: Metadata { dimensions: 3, items: RoaringBitmap<[4294967294]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [4294967294] }) - Item 4294967294: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 4294967294: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) "#); } @@ -172,7 +172,7 @@ fn use_u32_max_for_a_vec() { Root: Metadata { dimensions: 3, items: RoaringBitmap<[4294967295]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [4294967295] }) - Item 4294967295: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 4294967295: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) "#); } @@ -192,7 +192,7 @@ fn write_one_vector() { Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) "#); } @@ -212,7 +212,7 @@ fn write_one_vector_in_one_tree() { Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) "#); } @@ -232,7 +232,7 @@ fn write_one_vector_in_multiple_trees() { Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) "#); } @@ -256,9 +256,9 @@ fn write_vectors_until_there_is_a_descendants() { Root: Metadata { dimensions: 3, items: RoaringBitmap<[0, 1, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0, 1, 2] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 1.0000, 1.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 2.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 1.0000, 1.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 2.0000, 2.0000] }) "#); } @@ -281,13 +281,13 @@ fn write_vectors_until_there_is_a_split() { Dumping index 0 Root: Metadata { dimensions: 3, items: RoaringBitmap<[0, 1, 2, 3]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.6152277 }, vector: [0.5774, 0.5774, 0.5774] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.6152" }, vector: [0.5774, 0.5774, 0.5774] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2, 3] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 1.0000, 1.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 2.0000, 2.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 3.0000, 3.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 1.0000, 1.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 2.0000, 2.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 3.0000, 3.0000] }) "#); } @@ -336,31 +336,31 @@ fn write_multiple_indexes() { Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) ================== Dumping index 1 Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) ================== Dumping index 2 Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) ================== Dumping index 3 Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) ================== Dumping index 4 Root: Metadata { dimensions: 3, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 1.0000, 2.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 1.0000, 2.0000] }) "#); } @@ -404,19 +404,19 @@ fn overwrite_one_item_incremental() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [5] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -433,19 +433,19 @@ fn overwrite_one_item_incremental() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: 5.16018 }, vector: [-1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: "5.1602" }, vector: [-1.0000, 0.0000] } }) Tree 7: Descendants(Descendants { descendants: [3] }) Tree 8: Descendants(Descendants { descendants: [4, 5] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [6.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [6.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); } @@ -466,7 +466,7 @@ fn delete_one_item_in_a_one_item_db() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -509,7 +509,7 @@ fn delete_document_in_an_empty_index_74() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -565,8 +565,8 @@ fn delete_one_item_in_a_descendant() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0, 1] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -583,7 +583,7 @@ fn delete_one_item_in_a_descendant() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[1]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [1] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) "#); } @@ -606,12 +606,12 @@ fn delete_one_leaf_in_a_split() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: 1.2666667 }, vector: [-1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.2667" }, vector: [-1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [2] }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -629,8 +629,8 @@ fn delete_one_leaf_in_a_split() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0, 2] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) "#); } @@ -652,7 +652,7 @@ fn delete_one_item_in_a_single_document_database() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0]>, roots: [0], distance: "cosine" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderCosine { norm: 0.0 }, vector: [0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderCosine { norm: "0.0000" }, vector: [0.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -690,19 +690,19 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [5] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -718,16 +718,16 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 6: Descendants(Descendants { descendants: [4, 5] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); // delete the last item in a descendants node @@ -744,13 +744,13 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 2, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 3: Descendants(Descendants { descendants: [0, 2] }) Tree 6: Descendants(Descendants { descendants: [4, 5] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); } @@ -782,7 +782,7 @@ fn add_one_item_incrementally_in_an_empty_db() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) "#); } @@ -802,7 +802,7 @@ fn add_one_item_incrementally_in_a_one_item_db() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -817,8 +817,8 @@ fn add_one_item_incrementally_in_a_one_item_db() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0, 1] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) "#); } @@ -839,8 +839,8 @@ fn add_one_item_incrementally_to_create_a_split_node() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0, 1] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -854,12 +854,12 @@ fn add_one_item_incrementally_to_create_a_split_node() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: 1.2720588 }, vector: [-1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.2721" }, vector: [-1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [2] }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) "#); } @@ -881,19 +881,19 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [5] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -909,20 +909,20 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5, 25]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [5, 25] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) - Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [25.0000, 0.0000] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) + Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [25.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -938,23 +938,23 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5, 8, 25]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) - Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: 15.694853 }, vector: [-1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) + Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: "15.6949" }, vector: [-1.0000, 0.0000] } }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) Tree 7: Descendants(Descendants { descendants: [25] }) Tree 8: Descendants(Descendants { descendants: [5, 8] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) - Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [8.0000, 0.0000] }) - Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [25.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) + Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [8.0000, 0.0000] }) + Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [25.0000, 0.0000] }) "#); } @@ -977,17 +977,17 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 4, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [0, 1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.7252748 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 2.3133075 }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.7253" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "2.3133" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) Tree 3: Descendants(Descendants { descendants: [2, 3, 4] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000, 0.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000, 0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000, 0.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000, 0.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -1000,17 +1000,17 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [0, 1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.7252748 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 2.3133075 }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.7253" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "2.3133" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) Tree 3: Descendants(Descendants { descendants: [2, 3, 4] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000, 0.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000, 0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000, 0.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000, 0.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -1023,14 +1023,14 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: 2.3133075 }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "2.3133" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000, 0.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000, 0.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000, 0.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000, 0.0000, 0.0000] }) "#); } @@ -1053,19 +1053,19 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [5] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -1082,13 +1082,13 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 2, 3, 4]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 3: Descendants(Descendants { descendants: [0, 2] }) Tree 6: Descendants(Descendants { descendants: [3, 4] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -1104,12 +1104,12 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[2, 3, 4]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 3: Descendants(Descendants { descendants: [2] }) Tree 6: Descendants(Descendants { descendants: [3, 4] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) "#); } @@ -1131,19 +1131,19 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [5] }) Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 4.253788 }, vector: [-1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -1160,15 +1160,15 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 6: Descendants(Descendants { descendants: [5] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -1185,19 +1185,19 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [4, 5] }) Tree 5: Descendants(Descendants { descendants: [3] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 3.773177 }, vector: [-1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "3.7732" }, vector: [-1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); @@ -1212,26 +1212,26 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0, 7], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5414658 }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2328244 }, vector: [1.0000, 0.0000] } }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [4, 5] }) Tree 5: Descendants(Descendants { descendants: [3] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: 3.773177 }, vector: [-1.0000, 0.0000] } }) - Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: -2.5116758 }, vector: [1.0000, 0.0000] } }) + Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "3.7732" }, vector: [-1.0000, 0.0000] } }) + Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5117" }, vector: [1.0000, 0.0000] } }) Tree 8: Descendants(Descendants { descendants: [0, 1] }) Tree 9: Descendants(Descendants { descendants: [2] }) - Tree 10: SplitPlaneNormal(SplitPlaneNormal { left: 8, right: 9, normal: Leaf { header: NodeHeaderEuclidean { bias: -1.2552449 }, vector: [1.0000, 0.0000] } }) + Tree 10: SplitPlaneNormal(SplitPlaneNormal { left: 8, right: 9, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2552" }, vector: [1.0000, 0.0000] } }) Tree 11: Descendants(Descendants { descendants: [3] }) Tree 12: Descendants(Descendants { descendants: [4, 5] }) - Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: -3.7260265 }, vector: [1.0000, 0.0000] } }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [1.0000, 0.0000] }) - Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [2.0000, 0.0000] }) - Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [3.0000, 0.0000] }) - Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [4.0000, 0.0000] }) - Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [5.0000, 0.0000] }) + Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.7260" }, vector: [1.0000, 0.0000] } }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) + Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) + Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) + Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) + Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [5.0000, 0.0000] }) "#); } @@ -1274,8 +1274,8 @@ fn append() { Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } Tree 0: Descendants(Descendants { descendants: [0, 1] }) - Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.0000, 0.0000] }) - Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: 0.0 }, vector: [0.1000, 0.1000] }) + Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) + Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1000, 0.1000] }) "#); let mut wtxn = handle.env.write_txn().unwrap(); From 9912f731c4bea345770221a0024873a0450019d3 Mon Sep 17 00:00:00 2001 From: Nate Nethercott <53127799+nnethercott@users.noreply.github.com> Date: Tue, 3 Jun 2025 22:28:07 +0200 Subject: [PATCH 09/10] Apply suggestions from code review Co-authored-by: Tamo --- src/node.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/node.rs b/src/node.rs index 89d478c2..56cf7a4d 100644 --- a/src/node.rs +++ b/src/node.rs @@ -154,6 +154,7 @@ pub struct GenericReadSplitPlaneNormal<'a, D: Distance> { pub right: NodeId, // Before version 0.7.0 instead of storing `None` for a missing normal, we were // storing a vector filled with zeros, that will be overwritten while creating this type. + // We were also storing a simple vector instead of a leaf pub normal: Option>, } From 939ae4ae30c57e5447f859ebc72ec7c940598053 Mon Sep 17 00:00:00 2001 From: nnethercott Date: Wed, 4 Jun 2025 12:21:18 +0200 Subject: [PATCH 10/10] decrease iteration steps --- src/distance/mod.rs | 4 +- ...ite_and_update_lot_of_random_points-2.snap | 270 ++++++++++-------- ...write_and_update_lot_of_random_points.snap | 170 ++++++----- src/tests/writer.rs | 178 ++++++------ 4 files changed, 327 insertions(+), 295 deletions(-) diff --git a/src/distance/mod.rs b/src/distance/mod.rs index 8696448e..318a802f 100644 --- a/src/distance/mod.rs +++ b/src/distance/mod.rs @@ -129,7 +129,7 @@ fn two_means( // points to either one of them. We weight each centroid by the number of points // assigned to it, so to balance it. - const ITERATION_STEPS: usize = 200; + const ITERATION_STEPS: usize = 10; let [leaf_p, leaf_q] = leafs.choose_two(rng)?.unwrap(); let (mut leaf_p, mut leaf_q) = (leaf_p.into_owned(), leaf_q.into_owned()); @@ -179,7 +179,7 @@ pub fn two_means_binary_quantized( // to move, we need to store it as f32. This requires us to convert every binary quantized // vectors to f32 vectors, but the recall suffers too much if we don't do it. - const ITERATION_STEPS: usize = 200; + const ITERATION_STEPS: usize = 10; let [leaf_p, leaf_q] = leafs.choose_two(rng)?.unwrap(); let mut leaf_p: Leaf<'static, NonBqDist> = new_leaf(leaf_p.vector.to_vec()); diff --git a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap index 5e8983b3..ced12906 100644 --- a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap +++ b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points-2.snap @@ -6,175 +6,201 @@ expression: handle Dumping index 0 Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 99>, roots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } -Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2113" }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) -Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.8345" }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4440" }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) -Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2328" }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) -Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3666" }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) -Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5209" }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0284" }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0409" }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2909" }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) -Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1234" }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) -Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 25, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1662" }, vector: [-0.0519, 0.2231, 0.1182, 0.0109, -0.2022, 0.0354, 0.0678, -0.0030, -0.3109, 0.1603, "other ..."] } }) -Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 50, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5946" }, vector: [0.1047, 0.2410, -0.0902, 0.0647, 0.1430, -0.2137, -0.0107, -0.0124, 0.2128, 0.1156, "other ..."] } }) -Tree 18: Descendants(Descendants { descendants: [0, 10, 12, 13, 18, 19, 30, 32, 35, 39, 40, 41, 45, 46, 48, 51, 52, 59, 61, 62, 67, 74, 78, 85, 86, 89, 93] }) -Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 64, right: 71, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1386" }, vector: [-0.0102, -0.1020, -0.0560, 0.0718, 0.1451, 0.3328, -0.2286, -0.0154, -0.2177, -0.0566, "other ..."] } }) -Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 85, right: 86, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3592" }, vector: [-0.0512, 0.0756, 0.0280, -0.0180, 0.1238, 0.0996, 0.2939, 0.1854, 0.0852, 0.6036, "other ..."] } }) -Tree 25: Descendants(Descendants { descendants: [1, 5, 7, 9, 11, 24, 25, 27, 29, 31, 33, 34, 38, 50, 58, 60, 64, 65, 82, 84, 90, 91, 97, 98] }) -Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 89, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3868" }, vector: [-0.1640, -0.2146, 0.0126, -0.2075, -0.1994, 0.1463, 0.1575, 0.1572, 0.0554, -0.0843, "other ..."] } }) -Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 91, right: 92, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5307" }, vector: [-0.2663, 0.0379, -0.0632, -0.1892, -0.0071, -0.2105, -0.0864, 0.1947, 0.2058, 0.0501, "other ..."] } }) -Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 94, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2667" }, vector: [-0.0958, -0.0242, 0.1092, 0.0160, -0.1816, -0.2597, -0.0004, -0.1357, -0.4301, -0.0992, "other ..."] } }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 97, right: 98, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4165" }, vector: [-0.0057, -0.1511, -0.2314, 0.0720, 0.1749, -0.0576, 0.2961, -0.2325, -0.2903, -0.2986, "other ..."] } }) -Tree 41: Descendants(Descendants { descendants: [4, 8, 14, 20, 21, 28, 36, 37, 42, 43, 47, 49, 54, 55, 56, 66, 70, 76, 80, 83, 88, 94] }) -Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 100, right: 101, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3489" }, vector: [0.1515, 0.0156, -0.3014, 0.0462, 0.4379, 0.1220, 0.3793, -0.0256, -0.0623, 0.3037, "other ..."] } }) -Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 103, right: 104, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0835" }, vector: [-0.0367, -0.1928, 0.0431, 0.1177, 0.0251, -0.1196, -0.0455, 0.0528, -0.1416, 0.0654, "other ..."] } }) -Tree 50: Descendants(Descendants { descendants: [2, 3, 6, 15, 16, 17, 22, 23, 26, 44, 53, 57, 63, 68, 69, 71, 72, 73, 75, 77, 79, 81, 87, 92, 95, 96, 99] }) -Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 106, right: 107, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0895" }, vector: [-0.1194, 0.3446, 0.1119, 0.1135, -0.1615, -0.1110, 0.0097, -0.0695, -0.0061, 0.2090, "other ..."] } }) -Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 109, right: 110, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1404" }, vector: [-0.0193, 0.1846, -0.3050, 0.1297, 0.3100, -0.0573, 0.0263, -0.2456, 0.0300, -0.3526, "other ..."] } }) -Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 112, right: 113, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1357" }, vector: [-0.2756, 0.0160, -0.0605, 0.0628, -0.0225, 0.0531, 0.0111, 0.0590, -0.1294, -0.1152, "other ..."] } }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6468" }, vector: [-0.2547, 0.2298, 0.0490, -0.1270, 0.0152, 0.1170, 0.4048, 0.2127, 0.0196, 0.1691, "other ..."] } }) -Tree 64: Descendants(Descendants { descendants: [2, 14, 15, 16, 23, 35, 37, 44, 49, 53, 54, 55, 63, 66, 67, 71, 72, 73, 74, 75, 87, 94, 99] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 121, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5314" }, vector: [-0.1285, 0.0602, 0.1834, 0.2544, 0.1033, -0.0621, -0.0452, 0.0325, -0.0896, -0.0368, "other ..."] } }) -Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 123, right: 124, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3234" }, vector: [0.0794, -0.2799, -0.0493, -0.0013, 0.3183, 0.0950, 0.2586, -0.3268, -0.0581, -0.1079, "other ..."] } }) -Tree 71: Descendants(Descendants { descendants: [0, 4, 8, 10, 12, 13, 18, 21, 28, 32, 41, 42, 43, 45, 47, 51, 56, 57, 58, 59, 61, 70, 76, 77, 78, 80, 83, 84, 86, 88] }) -Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 127, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1690" }, vector: [0.0880, 0.1625, -0.0371, 0.2392, -0.0159, -0.1236, -0.0412, -0.1180, 0.0896, -0.4394, "other ..."] } }) -Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 129, right: 130, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5520" }, vector: [-0.0060, 0.0332, -0.1613, 0.3228, 0.3786, 0.1748, 0.0208, -0.1438, -0.3069, -0.0429, "other ..."] } }) -Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 132, right: 133, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4739" }, vector: [0.0944, -0.1509, -0.0855, -0.1471, -0.2003, -0.2323, -0.0929, 0.0553, -0.0206, -0.0960, "other ..."] } }) -Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 135, right: 136, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4314" }, vector: [0.0013, 0.2258, -0.0036, -0.0711, 0.0216, -0.0891, 0.0468, 0.1825, 0.1348, 0.1195, "other ..."] } }) -Tree 85: Descendants(Descendants { descendants: [1, 5, 7, 11, 19, 24, 25, 31, 38, 39, 40, 46, 48, 50, 52, 60, 64, 69, 81, 82, 89, 91, 93, 96, 98] }) -Tree 86: Descendants(Descendants { descendants: [3, 6, 9, 17, 20, 22, 26, 27, 29, 30, 33, 34, 36, 62, 65, 68, 79, 85, 90, 92, 95, 97] }) -Tree 88: Descendants(Descendants { descendants: [2, 6, 8, 13, 14, 15, 18, 23, 24, 30, 33, 34, 40, 43, 44, 45, 47, 56, 61, 62, 63, 66, 70, 71, 81, 89, 92, 94, 95] }) -Tree 89: Descendants(Descendants { descendants: [0, 3, 4, 10, 17, 20, 21, 27, 28, 36, 37, 55, 57, 76, 77, 79, 80, 84, 86, 88, 93] }) -Tree 91: Descendants(Descendants { descendants: [1, 11, 12, 19, 31, 41, 46, 48, 49, 50, 53, 54, 58, 59, 60, 64, 65, 69, 78, 82, 90, 91, 96, 97, 98, 99] }) -Tree 92: Descendants(Descendants { descendants: [5, 7, 9, 16, 22, 25, 26, 29, 32, 35, 38, 39, 42, 51, 52, 67, 68, 72, 73, 74, 75, 83, 85, 87] }) -Tree 94: Descendants(Descendants { descendants: [1, 9, 10, 11, 19, 22, 26, 27, 29, 38, 40, 42, 46, 50, 62, 63, 65, 67, 72, 85, 91] }) -Tree 95: Descendants(Descendants { descendants: [7, 13, 25, 31, 33, 35, 39, 45, 48, 60, 64, 78, 84, 86, 89, 90, 93, 97, 98] }) -Tree 97: Descendants(Descendants { descendants: [3, 5, 6, 8, 14, 15, 17, 21, 23, 24, 30, 34, 44, 47, 49, 53, 59, 68, 69, 71, 75, 77, 79, 80, 81, 82, 92, 95, 96, 99] }) -Tree 98: Descendants(Descendants { descendants: [0, 2, 4, 12, 16, 18, 20, 28, 32, 36, 37, 41, 43, 51, 52, 54, 55, 56, 57, 58, 61, 66, 70, 73, 74, 76, 83, 87, 88, 94] }) -Tree 100: Descendants(Descendants { descendants: [1, 3, 8, 14, 21, 24, 32, 36, 37, 39, 40, 41, 42, 44, 48, 51, 55, 60, 64, 66, 70, 74, 76, 77, 78, 86, 88, 89, 91, 93] }) -Tree 101: Descendants(Descendants { descendants: [0, 4, 10, 13, 16, 18, 27, 28, 29, 43, 45, 47, 56, 57, 58, 63, 65, 73, 79, 85, 92, 94, 95] }) -Tree 103: Descendants(Descendants { descendants: [5, 9, 12, 15, 19, 22, 23, 30, 59, 61, 67, 71, 72, 75, 80, 81, 82, 83, 87, 96] }) -Tree 104: Descendants(Descendants { descendants: [2, 6, 7, 11, 17, 20, 25, 26, 31, 33, 34, 35, 38, 46, 49, 50, 52, 53, 54, 62, 68, 69, 84, 90, 97, 98, 99] }) -Tree 106: Descendants(Descendants { descendants: [0, 4, 10, 13, 14, 21, 28, 29, 32, 36, 37, 41, 43, 48, 51, 56, 57, 61, 70, 74, 76, 77, 79, 80, 85, 86, 88, 93] }) -Tree 107: Descendants(Descendants { descendants: [1, 2, 3, 5, 6, 12, 15, 16, 17, 22, 23, 24, 25, 27, 44, 47, 55, 60, 66, 71, 73, 81, 87, 91, 92, 95, 97] }) -Tree 109: Descendants(Descendants { descendants: [7, 8, 9, 20, 26, 30, 33, 34, 38, 39, 49, 53, 59, 68, 82, 84, 89, 90, 94, 99] }) -Tree 110: Descendants(Descendants { descendants: [11, 18, 19, 31, 35, 40, 42, 45, 46, 50, 52, 54, 58, 62, 63, 64, 65, 67, 69, 72, 75, 78, 83, 96, 98] }) -Tree 112: Descendants(Descendants { descendants: [2, 3, 5, 6, 7, 9, 15, 16, 17, 23, 30, 31, 46, 48, 53, 55, 69, 71, 72, 74, 75, 79, 80, 81, 82, 92, 96, 98, 99] }) -Tree 113: Descendants(Descendants { descendants: [1, 8, 11, 14, 20, 24, 25, 26, 29, 33, 34, 35, 38, 39, 44, 49, 50, 57, 60, 62, 68, 84, 89, 90, 93, 94, 95, 97] }) -Tree 115: Descendants(Descendants { descendants: [13, 18, 19, 21, 41, 42, 43, 45, 51, 54, 56, 58, 59, 63, 64, 70, 76, 78, 86, 91] }) -Tree 116: Descendants(Descendants { descendants: [0, 4, 10, 12, 22, 27, 28, 32, 36, 37, 40, 47, 52, 61, 65, 66, 67, 73, 77, 83, 85, 87, 88] }) -Tree 118: Descendants(Descendants { descendants: [2, 4, 10, 12, 17, 23, 25, 32, 35, 36, 37, 39, 47, 48, 49, 53, 55, 58, 60, 61, 66, 67, 69, 71, 73, 80, 85, 91, 94, 97] }) -Tree 119: Descendants(Descendants { descendants: [7, 9, 11, 20, 26, 29, 30, 34, 38, 50, 52, 57, 62, 68, 84, 90] }) -Tree 120: Descendants(Descendants { descendants: [3, 6, 15, 16, 22, 27, 72, 74, 75, 81, 82, 87, 92, 96, 99] }) -Tree 121: SplitPlaneNormal(SplitPlaneNormal { left: 119, right: 120, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.7250" }, vector: [-0.1530, 0.0626, 0.0674, 0.0365, -0.1789, -0.1138, -0.0100, -0.2155, 0.1527, -0.0635, "other ..."] } }) -Tree 123: Descendants(Descendants { descendants: [1, 8, 13, 14, 18, 21, 24, 28, 33, 40, 42, 43, 44, 56, 64, 70, 77, 79, 86, 88, 89, 93, 95] }) -Tree 124: Descendants(Descendants { descendants: [0, 5, 19, 31, 41, 45, 46, 51, 54, 59, 63, 65, 76, 78, 83, 98] }) -Tree 126: Descendants(Descendants { descendants: [1, 3, 4, 10, 22, 26, 27, 28, 29, 32, 34, 36, 39, 42, 57, 65, 73, 77, 84, 85, 86, 97] }) -Tree 127: Descendants(Descendants { descendants: [5, 6, 7, 9, 11, 19, 25, 35, 38, 40, 46, 48, 50, 54, 64, 67, 69, 72, 87, 90, 91, 92, 96, 98] }) -Tree 129: Descendants(Descendants { descendants: [2, 14, 15, 16, 17, 21, 23, 24, 37, 43, 44, 47, 49, 53, 55, 58, 59, 60, 66, 68, 71, 74, 75, 80, 81, 82, 99] }) -Tree 130: Descendants(Descendants { descendants: [0, 8, 12, 13, 18, 20, 30, 31, 33, 41, 45, 51, 52, 56, 61, 62, 63, 70, 76, 78, 79, 83, 88, 89, 93, 94, 95] }) -Tree 132: Descendants(Descendants { descendants: [5, 9, 10, 13, 15, 18, 19, 22, 27, 29, 30, 31, 33, 40, 42, 45, 46, 52, 56, 58, 61, 63, 64, 65, 67, 78, 87, 92, 98] }) -Tree 133: Descendants(Descendants { descendants: [4, 8, 12, 14, 21, 23, 28, 41, 43, 47, 51, 59, 66, 70, 76, 77, 83, 86, 88, 89, 93] }) -Tree 135: Descendants(Descendants { descendants: [1, 7, 11, 20, 25, 26, 34, 35, 38, 49, 50, 60, 62, 68, 75, 81, 82, 84, 90, 96, 97, 99] }) -Tree 136: Descendants(Descendants { descendants: [0, 2, 3, 6, 16, 17, 24, 32, 36, 37, 39, 44, 48, 53, 54, 55, 57, 69, 71, 72, 73, 74, 79, 80, 85, 91, 94, 95] }) -Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2720, 0.1911, 0.2962, 0.8872, 0.8356, 0.5636, 0.3970, 0.9592, 0.6856, 0.2160, "other ..."] }) +Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.8587" }, vector: [-0.1204, 0.0883, -0.1193, 0.0487, -0.2937, 0.1358, 0.0452, 0.0063, 0.0002, 0.3049, "other ..."] } }) +Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 26, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5437" }, vector: [-0.3998, -0.0657, -0.1329, -0.0396, 0.0148, 0.1862, -0.0011, 0.0465, 0.1301, 0.1252, "other ..."] } }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 37, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6127" }, vector: [-0.0024, -0.2313, -0.3514, 0.2460, 0.1578, 0.1174, 0.1903, 0.2528, -0.1544, -0.0109, "other ..."] } }) +Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 46, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3197" }, vector: [-0.4323, -0.0243, -0.2204, -0.2440, -0.1659, 0.2287, 0.0464, 0.1377, 0.0778, -0.1993, "other ..."] } }) +Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 56, right: 57, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.9992" }, vector: [0.1629, 0.1656, 0.3348, -0.1713, -0.2520, 0.0814, -0.0464, 0.2963, 0.2613, -0.1932, "other ..."] } }) +Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 63, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2444" }, vector: [-0.3338, 0.1111, 0.3212, 0.0072, -0.3659, 0.2717, 0.0245, -0.1254, -0.0674, 0.0525, "other ..."] } }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 72, right: 75, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0702" }, vector: [0.0110, 0.0447, -0.1004, -0.0082, 0.3757, 0.1258, -0.0217, -0.0066, -0.0891, -0.1647, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 83, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6027" }, vector: [-0.2057, -0.2175, 0.2291, 0.1105, 0.1273, -0.0631, 0.3744, 0.0516, 0.1016, 0.1725, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 91, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1412" }, vector: [-0.1594, -0.1073, 0.0726, 0.0262, -0.0675, -0.0409, 0.2032, -0.0833, 0.0508, 0.1313, "other ..."] } }) +Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 97, right: 102, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1949" }, vector: [0.3612, -0.2770, -0.0294, -0.3396, -0.1454, -0.0856, 0.0828, 0.0365, 0.1651, -0.0627, "other ..."] } }) +Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 18, right: 47, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3583" }, vector: [-0.1507, 0.0936, -0.1410, -0.0426, -0.0272, 0.0549, -0.2374, 0.1346, 0.4567, 0.1029, "other ..."] } }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 76, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5487" }, vector: [-0.0609, -0.1763, 0.1863, -0.1253, 0.0214, 0.1748, -0.3100, 0.0888, 0.0450, -0.0296, "other ..."] } }) +Tree 18: Descendants(Descendants { descendants: [4, 7, 8, 9, 10, 11, 16, 19, 20, 31, 33, 35, 38, 39, 45, 59, 63, 70, 74, 76, 80, 89, 93, 97, 98] }) +Tree 21: Descendants(Descendants { descendants: [6, 8, 9, 10, 11, 12, 18, 31, 34, 39, 43, 45, 51, 52, 53, 59, 64, 69, 70, 72, 73, 74, 75, 76, 79, 80, 87, 91, 98] }) +Tree 22: SplitPlaneNormal(SplitPlaneNormal { left: 92, right: 103, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5808" }, vector: [-0.0861, -0.1813, -0.2528, 0.0210, 0.4075, 0.1035, -0.0114, -0.1078, -0.2045, 0.2059, "other ..."] } }) +Tree 25: SplitPlaneNormal(SplitPlaneNormal { left: 105, right: 106, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.6646" }, vector: [0.0595, 0.0292, 0.2245, 0.1728, -0.0419, 0.2241, -0.1050, -0.4817, -0.2974, -0.1538, "other ..."] } }) +Tree 26: SplitPlaneNormal(SplitPlaneNormal { left: 22, right: 25, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1262" }, vector: [-0.3075, 0.0809, -0.0415, -0.1913, -0.0817, -0.1210, 0.3237, -0.1618, 0.3302, 0.3665, "other ..."] } }) +Tree 27: Descendants(Descendants { descendants: [2, 13, 21, 25, 41, 42, 48, 51, 52, 54, 55, 56, 61, 67, 68, 71, 78, 82, 84, 88, 90] }) +Tree 34: SplitPlaneNormal(SplitPlaneNormal { left: 110, right: 111, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1455" }, vector: [-0.0277, -0.0613, 0.0898, -0.0738, -0.2247, 0.4502, 0.0476, 0.1368, 0.0567, -0.0642, "other ..."] } }) +Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 115, right: 116, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5907" }, vector: [0.2827, 0.1375, 0.0248, -0.0827, -0.0255, 0.1696, -0.0483, 0.0977, -0.0035, 0.0598, "other ..."] } }) +Tree 38: Descendants(Descendants { descendants: [6, 17, 27, 28, 37, 40, 46, 50, 62, 64, 72, 73, 85, 87, 91, 96] }) +Tree 41: SplitPlaneNormal(SplitPlaneNormal { left: 118, right: 119, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5946" }, vector: [-0.0666, 0.2425, 0.2231, -0.0832, 0.0048, 0.1720, -0.3127, 0.3050, 0.2562, -0.1960, "other ..."] } }) +Tree 46: SplitPlaneNormal(SplitPlaneNormal { left: 121, right: 124, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2123" }, vector: [0.1203, 0.0802, 0.0132, -0.0008, -0.0150, -0.1361, 0.1184, 0.0181, -0.3241, 0.0382, "other ..."] } }) +Tree 47: SplitPlaneNormal(SplitPlaneNormal { left: 27, right: 38, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2441" }, vector: [-0.0337, 0.0395, 0.2545, -0.0209, -0.0500, 0.0174, -0.0905, 0.1263, -0.1114, -0.0391, "other ..."] } }) +Tree 52: SplitPlaneNormal(SplitPlaneNormal { left: 126, right: 127, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6694" }, vector: [0.3277, 0.2137, 0.1183, -0.2773, 0.2715, -0.1895, -0.1208, 0.0624, 0.2566, 0.2144, "other ..."] } }) +Tree 55: SplitPlaneNormal(SplitPlaneNormal { left: 131, right: 132, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.8189" }, vector: [0.2277, 0.0114, -0.2483, 0.3118, 0.2174, 0.1382, 0.1920, -0.0382, -0.2836, -0.1416, "other ..."] } }) +Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 52, right: 55, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6438" }, vector: [0.0375, 0.0466, -0.1290, -0.0388, -0.0623, 0.0907, 0.0547, 0.3634, 0.1866, 0.2968, "other ..."] } }) +Tree 57: Descendants(Descendants { descendants: [3, 4, 5, 10, 11, 12, 20, 21, 22, 28, 39, 50, 52, 54, 64, 67, 69, 71, 81, 91, 92] }) +Tree 59: Descendants(Descendants { descendants: [3, 15, 21, 37, 40, 44, 46, 54, 57, 64, 69, 73, 76, 77, 79, 82, 83, 86, 87, 89, 95, 99] }) +Tree 62: SplitPlaneNormal(SplitPlaneNormal { left: 136, right: 137, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.6681" }, vector: [0.0710, -0.3201, -0.2137, 0.0807, 0.1029, 0.1935, 0.0684, 0.0305, -0.3658, 0.0831, "other ..."] } }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 59, right: 62, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1936" }, vector: [0.3169, -0.1754, -0.1837, -0.0504, 0.1379, 0.2769, -0.0601, -0.2512, 0.2685, -0.1864, "other ..."] } }) +Tree 66: SplitPlaneNormal(SplitPlaneNormal { left: 139, right: 140, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0261" }, vector: [-0.0792, -0.0103, -0.1817, 0.0642, -0.0389, 0.0718, -0.1323, -0.0211, 0.0930, 0.1575, "other ..."] } }) +Tree 67: Descendants(Descendants { descendants: [0, 1, 12, 18, 23, 24, 26, 34, 36, 43, 47, 49, 53, 69, 79, 92, 94, 95, 99] }) +Tree 72: SplitPlaneNormal(SplitPlaneNormal { left: 142, right: 143, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1014" }, vector: [-0.2587, 0.1207, 0.1587, 0.2606, 0.2159, -0.3657, -0.0254, 0.1476, -0.1004, 0.0398, "other ..."] } }) +Tree 75: SplitPlaneNormal(SplitPlaneNormal { left: 145, right: 148, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3356" }, vector: [-0.0211, 0.0775, -0.3595, -0.3072, -0.0880, 0.1992, 0.0779, 0.2085, 0.2588, 0.1848, "other ..."] } }) +Tree 76: Descendants(Descendants { descendants: [3, 5, 14, 15, 22, 29, 30, 32, 44, 57, 58, 60, 65, 66, 75, 77, 81, 83, 86] }) +Tree 79: SplitPlaneNormal(SplitPlaneNormal { left: 150, right: 151, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4333" }, vector: [-0.2306, -0.0192, 0.0642, 0.0643, 0.1117, 0.0232, -0.1879, -0.1950, 0.1756, 0.3299, "other ..."] } }) +Tree 82: SplitPlaneNormal(SplitPlaneNormal { left: 153, right: 154, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.7035" }, vector: [-0.1421, -0.0018, 0.1388, 0.2021, -0.0849, -0.1314, -0.2178, 0.0890, -0.1961, -0.2924, "other ..."] } }) +Tree 83: SplitPlaneNormal(SplitPlaneNormal { left: 79, right: 82, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.8187" }, vector: [-0.0254, 0.2078, -0.1625, -0.1171, -0.1369, 0.1272, 0.0764, -0.1323, 0.2202, 0.2376, "other ..."] } }) +Tree 84: Descendants(Descendants { descendants: [0, 4, 17, 18, 23, 33, 43, 48, 49, 53, 55, 56, 59, 64, 65, 69, 75, 76, 79, 82, 84, 90, 97, 98, 99] }) +Tree 88: SplitPlaneNormal(SplitPlaneNormal { left: 156, right: 159, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0409" }, vector: [-0.1687, -0.0628, 0.1602, 0.0723, -0.1128, -0.1952, 0.0614, -0.0014, -0.1617, -0.3672, "other ..."] } }) +Tree 91: SplitPlaneNormal(SplitPlaneNormal { left: 161, right: 164, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3744" }, vector: [0.3148, -0.3027, 0.0198, -0.2564, 0.2014, -0.0346, -0.1262, 0.2663, -0.0236, -0.0206, "other ..."] } }) +Tree 92: Descendants(Descendants { descendants: [0, 1, 4, 20, 21, 25, 40, 41, 50, 60, 62, 77, 78, 89, 93, 94] }) +Tree 97: SplitPlaneNormal(SplitPlaneNormal { left: 166, right: 167, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.9072" }, vector: [-0.0095, 0.0137, 0.0291, -0.0747, 0.1161, 0.2513, -0.0429, 0.1858, -0.2055, -0.3207, "other ..."] } }) +Tree 102: SplitPlaneNormal(SplitPlaneNormal { left: 169, right: 172, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2241" }, vector: [-0.0066, 0.1769, -0.0978, -0.1370, 0.0001, -0.2377, 0.3400, -0.0391, -0.0535, -0.3450, "other ..."] } }) +Tree 103: Descendants(Descendants { descendants: [2, 7, 13, 16, 22, 29, 30, 33, 38, 44, 56, 58, 63, 67, 83, 84, 88, 96] }) +Tree 105: Descendants(Descendants { descendants: [3, 15, 17, 24, 35, 37, 42, 46, 47, 54, 55, 57, 61, 66, 71, 82, 85, 86, 92, 95] }) +Tree 106: Descendants(Descendants { descendants: [5, 14, 19, 23, 26, 27, 28, 32, 36, 48, 49, 65, 68, 81, 90, 97, 99] }) +Tree 108: Descendants(Descendants { descendants: [0, 3, 6, 10, 15, 17, 21, 28, 32, 34, 38, 40, 52, 53, 55, 59, 71, 77, 86, 87, 89] }) +Tree 109: Descendants(Descendants { descendants: [4, 23, 26, 43, 54, 62, 63, 84, 96, 99] }) +Tree 110: SplitPlaneNormal(SplitPlaneNormal { left: 108, right: 109, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0678" }, vector: [0.1832, -0.0604, -0.1903, 0.1249, 0.1529, -0.0436, 0.0464, -0.2818, -0.1328, -0.1161, "other ..."] } }) +Tree 111: Descendants(Descendants { descendants: [5, 12, 14, 25, 27, 36, 46, 67, 72, 73, 85, 88, 91] }) +Tree 113: Descendants(Descendants { descendants: [1, 7, 8, 9, 11, 16, 19, 22, 31, 33, 39, 45, 58, 65, 66, 69, 80, 97] }) +Tree 114: Descendants(Descendants { descendants: [18, 35, 44, 48, 49, 51, 56, 68, 70, 74, 75, 76, 81, 83, 94] }) +Tree 115: SplitPlaneNormal(SplitPlaneNormal { left: 113, right: 114, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.7197" }, vector: [-0.1191, -0.1347, -0.1105, -0.0634, 0.0476, -0.0570, 0.1561, 0.0278, 0.3110, 0.1025, "other ..."] } }) +Tree 116: Descendants(Descendants { descendants: [2, 13, 20, 24, 29, 30, 37, 41, 42, 47, 50, 57, 60, 61, 64, 78, 79, 82, 90, 92, 93, 95, 98] }) +Tree 118: Descendants(Descendants { descendants: [4, 7, 8, 15, 17, 26, 27, 30, 34, 37, 38, 45, 46, 55, 62, 63, 64, 65, 66, 74, 76, 79, 82, 87, 88, 93, 95, 96, 99] }) +Tree 119: Descendants(Descendants { descendants: [3, 6, 21, 23, 24, 28, 40, 54, 67, 72, 73, 77, 91] }) +Tree 121: Descendants(Descendants { descendants: [5, 9, 11, 14, 18, 19, 22, 25, 32, 35, 39, 42, 44, 51, 53, 56, 57, 61, 68, 69, 75, 81, 83, 84, 85, 90, 92] }) +Tree 122: Descendants(Descendants { descendants: [10, 13, 33, 48, 52, 58, 71, 78, 80, 86, 89] }) +Tree 123: Descendants(Descendants { descendants: [0, 1, 2, 12, 16, 20, 29, 31, 36, 41, 43, 47, 49, 50, 59, 60, 70, 94, 97, 98] }) +Tree 124: SplitPlaneNormal(SplitPlaneNormal { left: 122, right: 123, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0070" }, vector: [0.2068, -0.2665, 0.2804, -0.2477, -0.2679, 0.2094, 0.1012, -0.0581, -0.1127, 0.2252, "other ..."] } }) +Tree 126: Descendants(Descendants { descendants: [0, 13, 18, 19, 25, 32, 36, 37, 41, 51, 56, 59, 62, 66, 78, 83, 84, 88, 90, 93, 96, 98] }) +Tree 127: Descendants(Descendants { descendants: [2, 6, 23, 26, 27, 34, 38, 40, 43, 45, 46, 60, 63, 73, 87, 89, 99] }) +Tree 129: Descendants(Descendants { descendants: [1, 8, 14, 30, 47, 48, 49, 57, 61, 70, 74, 75, 85, 94, 95] }) +Tree 130: Descendants(Descendants { descendants: [7, 9, 15, 17, 24, 33, 42, 44, 53, 55, 58, 65, 68, 72, 76, 77, 79, 82, 86, 97] }) +Tree 131: SplitPlaneNormal(SplitPlaneNormal { left: 129, right: 130, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4878" }, vector: [0.1437, -0.0597, 0.1705, -0.1005, 0.2766, -0.0831, -0.1938, 0.2954, -0.1470, 0.0447, "other ..."] } }) +Tree 132: Descendants(Descendants { descendants: [16, 29, 31, 35, 80] }) +Tree 134: Descendants(Descendants { descendants: [13, 19, 20, 23, 39, 42, 43, 45, 60, 63, 74, 75, 96] }) +Tree 135: Descendants(Descendants { descendants: [6, 24, 26, 28, 32, 34, 41, 47, 50, 51, 52, 53, 55, 61, 71, 72, 78, 85, 90, 92] }) +Tree 136: SplitPlaneNormal(SplitPlaneNormal { left: 134, right: 135, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2948" }, vector: [-0.0303, 0.0203, -0.1330, -0.2370, -0.2714, 0.3580, 0.1198, 0.0400, 0.1578, 0.0378, "other ..."] } }) +Tree 137: Descendants(Descendants { descendants: [2, 4, 16, 29, 30, 35, 36, 48, 70, 80, 88] }) +Tree 139: Descendants(Descendants { descendants: [5, 7, 9, 14, 31, 33, 56, 58, 59, 65, 68, 93] }) +Tree 140: Descendants(Descendants { descendants: [0, 1, 8, 10, 11, 12, 17, 18, 22, 25, 27, 38, 49, 62, 66, 67, 81, 84, 91, 94, 97, 98] }) +Tree 142: Descendants(Descendants { descendants: [0, 1, 11, 12, 25, 30, 36, 37, 50, 55, 64, 72, 85, 91, 92, 94] }) +Tree 143: Descendants(Descendants { descendants: [3, 7, 8, 9, 17, 18, 27, 29, 33, 34, 40, 46, 62, 65, 66, 69, 73, 74, 76, 79, 81, 82, 87, 93, 95, 99] }) +Tree 145: Descendants(Descendants { descendants: [2, 4, 10, 13, 16, 19, 20, 31, 35, 38, 39, 45, 52, 54, 58, 59, 60, 63, 67, 70, 80, 84, 89, 97, 98] }) +Tree 146: Descendants(Descendants { descendants: [6, 15, 23, 24, 26, 43, 53, 71, 86] }) +Tree 147: Descendants(Descendants { descendants: [5, 14, 21, 22, 28, 32, 41, 42, 44, 47, 48, 49, 51, 56, 57, 61, 68, 75, 77, 78, 83, 88, 90, 96] }) +Tree 148: SplitPlaneNormal(SplitPlaneNormal { left: 146, right: 147, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5716" }, vector: [-0.2365, 0.0094, -0.0455, 0.1613, -0.1131, 0.2797, 0.0360, -0.1615, -0.1389, -0.1377, "other ..."] } }) +Tree 150: Descendants(Descendants { descendants: [6, 12, 13, 16, 20, 29, 31, 35, 36, 38, 39, 41, 45, 50, 51, 52, 67, 80, 83, 86, 89, 93] }) +Tree 151: Descendants(Descendants { descendants: [2, 25, 42, 46, 60, 61, 63, 74, 88, 96] }) +Tree 153: Descendants(Descendants { descendants: [24, 27, 34, 40, 47, 57, 72, 73, 77, 78, 85, 87, 92] }) +Tree 154: Descendants(Descendants { descendants: [1, 3, 5, 7, 8, 9, 10, 11, 14, 15, 19, 21, 22, 26, 28, 30, 32, 37, 44, 54, 58, 62, 66, 68, 70, 71, 81, 91, 94, 95] }) +Tree 156: Descendants(Descendants { descendants: [3, 6, 23, 24, 27, 30, 34, 36, 40, 47, 62, 72, 73, 77, 79, 85, 91] }) +Tree 157: Descendants(Descendants { descendants: [0, 10, 20, 21, 32, 41, 50, 52, 59, 89, 90, 93] }) +Tree 158: Descendants(Descendants { descendants: [2, 4, 13, 28, 37, 38, 42, 43, 45, 51, 54, 60, 61, 71, 78, 84, 86, 92, 95, 96, 98] }) +Tree 159: SplitPlaneNormal(SplitPlaneNormal { left: 157, right: 158, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0248" }, vector: [-0.0094, 0.1652, -0.3196, -0.0240, 0.2200, -0.1241, 0.0343, 0.0713, 0.1279, 0.2481, "other ..."] } }) +Tree 161: Descendants(Descendants { descendants: [8, 17, 18, 48, 49, 66, 75, 81, 87, 94, 97, 99] }) +Tree 162: Descendants(Descendants { descendants: [1, 9, 12, 16, 19, 25, 26, 31, 35, 39, 55, 56, 65, 69, 70, 74, 80, 82] }) +Tree 163: Descendants(Descendants { descendants: [5, 7, 11, 14, 15, 22, 29, 33, 44, 46, 53, 57, 58, 63, 64, 67, 68, 76, 83, 88] }) +Tree 164: SplitPlaneNormal(SplitPlaneNormal { left: 162, right: 163, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2275" }, vector: [0.1379, 0.1448, 0.0057, -0.0746, 0.1027, 0.3650, -0.1491, 0.0923, 0.0893, -0.0562, "other ..."] } }) +Tree 166: Descendants(Descendants { descendants: [1, 2, 3, 6, 10, 13, 24, 25, 27, 38, 40, 46, 48, 54, 60, 62, 65, 66, 72, 85, 90, 92, 97] }) +Tree 167: Descendants(Descendants { descendants: [8, 11, 16, 19, 28, 29, 33, 39, 45, 51, 57, 58, 61, 63, 67, 77, 80, 83, 87, 88, 89, 93, 95, 96] }) +Tree 169: Descendants(Descendants { descendants: [7, 9, 14, 15, 26, 30, 44, 49, 68, 75, 76, 82, 84] }) +Tree 170: Descendants(Descendants { descendants: [4, 12, 17, 20, 23, 31, 34, 35, 36, 37, 41, 42, 43, 50, 53, 55, 56, 59, 64, 69, 70, 73, 74, 78, 86, 98, 99] }) +Tree 171: Descendants(Descendants { descendants: [0, 5, 18, 21, 22, 32, 47, 52, 71, 79, 81, 91, 94] }) +Tree 172: SplitPlaneNormal(SplitPlaneNormal { left: 170, right: 171, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4343" }, vector: [-0.1736, 0.3073, -0.0470, 0.1472, -0.4490, 0.2965, -0.2401, 0.0550, 0.1695, -0.1494, "other ..."] } }) +Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3709, 0.3974, 0.5971, 0.7814, 0.2075, 0.5392, 0.4790, 0.5432, 0.4844, 0.3367, "other ..."] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) -Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7062, 0.6998, 0.5514, 0.7874, 0.4402, 0.0478, 0.7386, 0.5093, 0.8964, 0.8248, "other ..."] }) +Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7462, 0.9877, 0.0796, 0.4441, 0.9824, 0.6855, 0.0985, 0.0618, 0.0551, 0.5251, "other ..."] }) Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0001, 0.7870, 0.9674, 0.4568, 0.5250, 0.2701, 0.2417, 0.8742, 0.6869, 0.8759, "other ..."] }) -Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3211, 0.3150, 0.5402, 0.0930, 0.6963, 0.4709, 0.5433, 0.8626, 0.7230, 0.6204, "other ..."] }) +Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8421, 0.8103, 0.5294, 0.6795, 0.9634, 0.3110, 0.8945, 0.1541, 0.5916, 0.1082, "other ..."] }) Item 5: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.7778, 0.8818, 0.3427, 0.1293, 0.7240, 0.4773, 0.2871, 0.3988, 0.4014, "other ..."] }) -Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0244, 0.7274, 0.5727, 0.5908, 0.3480, 0.4574, 0.4877, 0.6325, 0.5284, 0.6983, "other ..."] }) +Item 6: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8491, 0.4500, 0.8568, 0.1146, 0.7974, 0.5148, 0.0862, 0.6020, 0.7705, 0.6189, "other ..."] }) Item 7: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5699, 0.5919, 0.7788, 0.3705, 0.3807, 0.1708, 0.3678, 0.5629, 0.0612, 0.4826, "other ..."] }) -Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3477, 0.4107, 0.7384, 0.9005, 0.1528, 0.6780, 0.0267, 0.8021, 0.2981, 0.2717, "other ..."] }) +Item 8: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2720, 0.7143, 0.6966, 0.9709, 0.4263, 0.7441, 0.8624, 0.1372, 0.0418, 0.7771, "other ..."] }) Item 9: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8134, 0.9647, 0.6640, 0.4464, 0.7439, 0.6904, 0.3159, 0.7607, 0.3483, 0.9963, "other ..."] }) -Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4341, 0.3135, 0.0142, 0.3661, 0.4947, 0.7175, 0.9751, 0.4387, 0.0109, 0.5243, "other ..."] }) +Item 10: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4278, 0.5749, 0.9222, 0.8668, 0.5708, 0.7825, 0.1484, 0.1654, 0.7721, 0.1671, "other ..."] }) Item 11: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6560, 0.2343, 0.4079, 0.5972, 0.5766, 0.6739, 0.2985, 0.6167, 0.4834, 0.2818, "other ..."] }) -Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5616, 0.7872, 0.5384, 0.3939, 0.6155, 0.6796, 0.6887, 0.6391, 0.0838, 0.1087, "other ..."] }) +Item 12: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5174, 0.1043, 0.5020, 0.7082, 0.0108, 0.7768, 0.2805, 0.5635, 0.1165, 0.3446, "other ..."] }) Item 13: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1726, 0.7399, 0.0271, 0.8721, 0.8725, 0.4023, 0.1558, 0.1044, 0.2096, 0.2081, "other ..."] }) -Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7518, 0.6721, 0.9863, 0.1919, 0.2958, 0.3867, 0.2424, 0.8564, 0.9043, 0.2347, "other ..."] }) +Item 14: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7594, 0.3160, 0.8848, 0.2336, 0.2080, 0.9798, 0.2609, 0.3579, 0.9043, 0.5035, "other ..."] }) Item 15: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6031, 0.2970, 0.9485, 0.0272, 0.4336, 0.1339, 0.2209, 0.8350, 0.2566, 0.9481, "other ..."] }) -Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2414, 0.5945, 0.2478, 0.4521, 0.4097, 0.2810, 0.8998, 0.1611, 0.6353, 0.3983, "other ..."] }) +Item 16: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7278, 0.0499, 0.4536, 0.3295, 0.8839, 0.5060, 0.5773, 0.3133, 0.2521, 0.6842, "other ..."] }) Item 17: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0819, 0.5362, 0.8215, 0.2263, 0.3109, 0.2738, 0.6133, 0.5147, 0.9334, 0.9877, "other ..."] }) -Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2268, 0.3553, 0.4373, 0.6402, 0.5594, 0.7669, 0.2032, 0.4453, 0.1589, 0.3916, "other ..."] }) +Item 18: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3202, 0.9724, 0.0590, 0.9146, 0.0865, 0.5347, 0.9236, 0.5211, 0.4621, 0.4500, "other ..."] }) Item 19: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1390, 0.7531, 0.3249, 0.8754, 0.9984, 0.7362, 0.0281, 0.2016, 0.9443, 0.1989, "other ..."] }) -Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1264, 0.9795, 0.3150, 0.7733, 0.4131, 0.2242, 0.9078, 0.9045, 0.1001, 0.3298, "other ..."] }) +Item 20: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7403, 0.1475, 0.8585, 0.3990, 0.5766, 0.0263, 0.2665, 0.6317, 0.8026, 0.0227, "other ..."] }) Item 21: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6252, 0.9240, 0.7227, 0.6810, 0.2563, 0.3321, 0.2283, 0.9226, 0.8494, 0.0356, "other ..."] }) -Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0715, 0.9965, 0.9080, 0.4298, 0.5626, 0.8220, 0.9952, 0.2171, 0.9860, 0.8204, "other ..."] }) +Item 22: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0981, 0.2398, 0.2595, 0.6075, 0.1605, 0.7487, 0.1070, 0.8330, 0.7908, 0.0203, "other ..."] }) Item 23: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9915, 0.6886, 0.1976, 0.1725, 0.6776, 0.1356, 0.3842, 0.4424, 0.6939, 0.8016, "other ..."] }) -Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2016, 0.7551, 0.9960, 0.8650, 0.1399, 0.4464, 0.2855, 0.7776, 0.6456, 0.0802, "other ..."] }) +Item 24: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9586, 0.8715, 0.0659, 0.6144, 0.4995, 0.6693, 0.1415, 0.7556, 0.9350, 0.9924, "other ..."] }) Item 25: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0116, 0.5323, 0.3940, 0.1382, 0.1987, 0.7287, 0.4026, 0.1442, 0.5957, 0.0340, "other ..."] }) -Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6829, 0.3333, 0.9681, 0.5077, 0.2901, 0.7233, 0.6496, 0.9653, 0.9827, 0.8165, "other ..."] }) +Item 26: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9907, 0.6582, 0.3640, 0.9777, 0.6001, 0.3023, 0.3154, 0.2637, 0.7202, 0.7507, "other ..."] }) Item 27: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3569, 0.9070, 0.8412, 0.3201, 0.6998, 0.8674, 0.5494, 0.2322, 0.2969, 0.9787, "other ..."] }) -Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6031, 0.1503, 0.2788, 0.3537, 0.6271, 0.9647, 0.4800, 0.9366, 0.2688, 0.9738, "other ..."] }) +Item 28: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6910, 0.9733, 0.3937, 0.8154, 0.2171, 0.7616, 0.3415, 0.4227, 0.6408, 0.0355, "other ..."] }) Item 29: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6021, 0.0690, 0.1080, 0.2535, 0.6817, 0.7899, 0.3297, 0.8656, 0.1566, 0.3560, "other ..."] }) -Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8318, 0.2588, 0.7135, 0.6452, 0.8101, 0.4832, 0.6931, 0.7657, 0.7685, 0.9255, "other ..."] }) +Item 30: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8030, 0.0396, 0.0641, 0.3958, 0.3427, 0.9163, 0.0129, 0.4500, 0.8504, 0.8711, "other ..."] }) Item 31: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7584, 0.3448, 0.7315, 0.5405, 0.6797, 0.3253, 0.8611, 0.0846, 0.0174, 0.0882, "other ..."] }) -Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1375, 0.4302, 0.7004, 0.0251, 0.3941, 0.2518, 0.1463, 0.1808, 0.0052, 0.5310, "other ..."] }) +Item 32: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6515, 0.6402, 0.4825, 0.1251, 0.1569, 0.9048, 0.3695, 0.0092, 0.1574, 0.1528, "other ..."] }) Item 33: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3494, 0.5787, 0.8027, 0.9625, 0.5944, 0.6781, 0.4204, 0.5899, 0.0209, 0.9001, "other ..."] }) -Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1515, 0.5026, 0.8717, 0.4441, 0.3310, 0.8236, 0.2705, 0.5019, 0.7512, 0.8800, "other ..."] }) +Item 34: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5256, 0.7737, 0.1071, 0.1049, 0.5131, 0.1703, 0.7922, 0.1135, 0.4165, 0.0898, "other ..."] }) Item 35: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3281, 0.1178, 0.0533, 0.4172, 0.3990, 0.0395, 0.8533, 0.1435, 0.9799, 0.4063, "other ..."] }) -Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0803, 0.3244, 0.7758, 0.3223, 0.2530, 0.9621, 0.9439, 0.7061, 0.8197, 0.3492, "other ..."] }) +Item 36: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7826, 0.2989, 0.7770, 0.4571, 0.1601, 0.9667, 0.6717, 0.1903, 0.1169, 0.8590, "other ..."] }) Item 37: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6603, 0.3675, 0.1019, 0.2193, 0.3180, 0.0591, 0.9934, 0.8583, 0.7473, 0.3644, "other ..."] }) -Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2646, 0.5441, 0.3387, 0.3728, 0.6653, 0.3646, 0.0483, 0.7737, 0.8912, 0.1113, "other ..."] }) +Item 38: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0498, 0.3107, 0.7264, 0.3119, 0.9096, 0.1574, 0.0399, 0.6895, 0.0600, 0.7256, "other ..."] }) Item 39: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4498, 0.4107, 0.9992, 0.3928, 0.4779, 0.4661, 0.1282, 0.8140, 0.7490, 0.5641, "other ..."] }) -Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1233, 0.9711, 0.6560, 0.8814, 0.5291, 0.9290, 0.0962, 0.5502, 0.5730, 0.1741, "other ..."] }) +Item 40: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8769, 0.4665, 0.6818, 0.3210, 0.8711, 0.3130, 0.2871, 0.8996, 0.6896, 0.5484, "other ..."] }) Item 41: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7821, 0.0623, 0.1168, 0.3609, 0.6040, 0.8336, 0.0911, 0.2181, 0.7485, 0.0281, "other ..."] }) -Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6852, 0.1694, 0.7705, 0.2755, 0.6959, 0.5305, 0.2022, 0.5598, 0.6582, 0.3725, "other ..."] }) +Item 42: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4460, 0.4258, 0.3236, 0.3679, 0.9002, 0.2569, 0.4921, 0.9407, 0.7830, 0.2773, "other ..."] }) Item 43: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8608, 0.8689, 0.4918, 0.2239, 0.9291, 0.0622, 0.6843, 0.4184, 0.4703, 0.3202, "other ..."] }) -Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0037, 0.9615, 0.2896, 0.3061, 0.0181, 0.3056, 0.1931, 0.8086, 0.7679, 0.3605, "other ..."] }) +Item 44: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3994, 0.3790, 0.3149, 0.3094, 0.6979, 0.4079, 0.0662, 0.5442, 0.6009, 0.6694, "other ..."] }) Item 45: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9838, 0.4742, 0.5307, 0.6989, 0.9323, 0.2140, 0.1371, 0.1113, 0.0322, 0.3001, "other ..."] }) -Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8840, 0.2090, 0.9141, 0.4499, 0.8702, 0.9852, 0.4563, 0.2227, 0.9871, 0.2484, "other ..."] }) +Item 46: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1804, 0.0669, 0.8639, 0.6324, 0.8798, 0.3417, 0.1164, 0.5756, 0.9767, 0.7200, "other ..."] }) Item 47: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4506, 0.8658, 0.1164, 0.2339, 0.2266, 0.9050, 0.5849, 0.9792, 0.5951, 0.7706, "other ..."] }) -Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6248, 0.0958, 0.2895, 0.5991, 0.2720, 0.3625, 0.3161, 0.1407, 0.2928, 0.2270, "other ..."] }) +Item 48: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1112, 0.3992, 0.0741, 0.7318, 0.9446, 0.2970, 0.9245, 0.1696, 0.6283, 0.9061, "other ..."] }) Item 49: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1322, 0.0670, 0.3404, 0.5339, 0.0229, 0.5964, 0.5497, 0.3819, 0.6553, 0.7129, "other ..."] }) -Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4229, 0.7688, 0.5902, 0.5877, 0.3512, 0.1669, 0.6660, 0.5638, 0.4550, 0.1102, "other ..."] }) +Item 50: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5324, 0.0597, 0.9226, 0.4007, 0.0213, 0.2651, 0.8515, 0.9985, 0.8066, 0.3377, "other ..."] }) Item 51: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3643, 0.3282, 0.2580, 0.4477, 0.5920, 0.3581, 0.3502, 0.2441, 0.1707, 0.1243, "other ..."] }) -Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5868, 0.7674, 0.3458, 0.6101, 0.9320, 0.5876, 0.9390, 0.7086, 0.4476, 0.0456, "other ..."] }) +Item 52: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8413, 0.5136, 0.9661, 0.4242, 0.3183, 0.6281, 0.1580, 0.7145, 0.7564, 0.3747, "other ..."] }) Item 53: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5928, 0.6267, 0.1717, 0.1604, 0.6506, 0.0302, 0.8289, 0.5930, 0.9304, 0.6067, "other ..."] }) -Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3338, 0.2535, 0.5893, 0.7852, 0.7048, 0.2541, 0.7470, 0.5889, 0.0218, 0.1516, "other ..."] }) +Item 54: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4342, 0.3014, 0.2043, 0.0254, 0.4983, 0.0908, 0.2461, 0.3160, 0.8436, 0.6165, "other ..."] }) Item 55: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6095, 0.6335, 0.4740, 0.0746, 0.3871, 0.1016, 0.6414, 0.3076, 0.5484, 0.7602, "other ..."] }) -Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7028, 0.2429, 0.3110, 0.9131, 0.6252, 0.6485, 0.6008, 0.0272, 0.4856, 0.2410, "other ..."] }) +Item 56: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0281, 0.0875, 0.0095, 0.6868, 0.8335, 0.4665, 0.7833, 0.7046, 0.3141, 0.3595, "other ..."] }) Item 57: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1524, 0.3441, 0.2368, 0.4350, 0.5328, 0.3005, 0.7021, 0.3614, 0.6369, 0.7984, "other ..."] }) -Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6796, 0.2736, 0.0018, 0.5992, 0.2036, 0.6552, 0.7733, 0.6097, 0.3412, 0.0426, "other ..."] }) +Item 58: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4958, 0.8618, 0.1820, 0.6038, 0.6089, 0.2997, 0.1746, 0.9517, 0.0863, 0.1896, "other ..."] }) Item 59: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6227, 0.1202, 0.9715, 0.3936, 0.3423, 0.7479, 0.6526, 0.1867, 0.5568, 0.0922, "other ..."] }) -Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4371, 0.1691, 0.2971, 0.0582, 0.1128, 0.1555, 0.5510, 0.6131, 0.4963, 0.2154, "other ..."] }) +Item 60: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4640, 0.7249, 0.8636, 0.6015, 0.8082, 0.7408, 0.1704, 0.4970, 0.3101, 0.9973, "other ..."] }) Item 61: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1347, 0.7000, 0.0530, 0.4959, 0.8227, 0.9831, 0.5433, 0.5201, 0.7924, 0.3847, "other ..."] }) -Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0071, 0.8556, 0.1484, 0.6902, 0.9932, 0.1037, 0.5844, 0.4486, 0.7230, 0.0373, "other ..."] }) +Item 62: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6358, 0.6999, 0.3624, 0.8972, 0.2007, 0.2002, 0.0201, 0.0121, 0.5644, 0.4314, "other ..."] }) Item 63: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9221, 0.3578, 0.3207, 0.9945, 0.9288, 0.4608, 0.3001, 0.0296, 0.4678, 0.7422, "other ..."] }) -Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4880, 0.7731, 0.6511, 0.2908, 0.1662, 0.5471, 0.1228, 0.0526, 0.1216, 0.4898, "other ..."] }) +Item 64: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8309, 0.1828, 0.5901, 0.0360, 0.8896, 0.6041, 0.9906, 0.9869, 0.6515, 0.7573, "other ..."] }) Item 65: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5677, 0.1247, 0.4928, 0.4097, 0.8433, 0.9238, 0.7848, 0.4437, 0.4696, 0.9886, "other ..."] }) -Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5376, 0.4754, 0.3855, 0.6614, 0.2655, 0.0026, 0.9412, 0.2510, 0.2270, 0.3741, "other ..."] }) +Item 66: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1020, 0.2740, 0.1490, 0.9172, 0.0754, 0.0941, 0.6428, 0.3073, 0.3354, 0.4870, "other ..."] }) Item 67: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5299, 0.5421, 0.8194, 0.1018, 0.5426, 0.9350, 0.3228, 0.7979, 0.7473, 0.1118, "other ..."] }) -Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7924, 0.1561, 0.3198, 0.0339, 0.5919, 0.2482, 0.4291, 0.9912, 0.8506, 0.6688, "other ..."] }) +Item 68: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7906, 0.4598, 0.6650, 0.0958, 0.9495, 0.9751, 0.4430, 0.0334, 0.9154, 0.5768, "other ..."] }) Item 69: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6163, 0.7762, 0.4365, 0.6713, 0.5647, 0.3449, 0.6615, 0.9430, 0.5941, 0.3563, "other ..."] }) -Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2006, 0.5631, 0.6318, 0.4906, 0.2916, 0.4875, 0.1034, 0.7061, 0.1413, 0.9956, "other ..."] }) +Item 70: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4215, 0.0579, 0.3761, 0.6015, 0.0281, 0.1383, 0.8450, 0.4595, 0.9031, 0.1857, "other ..."] }) Item 71: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6478, 0.9371, 0.2378, 0.4279, 0.1400, 0.2146, 0.3193, 0.7330, 0.7932, 0.7295, "other ..."] }) -Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1328, 0.8757, 0.6834, 0.9140, 0.7308, 0.1439, 0.3480, 0.6060, 0.9529, 0.2163, "other ..."] }) +Item 72: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9551, 0.2375, 0.5644, 0.1951, 0.2454, 0.7228, 0.5815, 0.5276, 0.9947, 0.6278, "other ..."] }) Item 73: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4640, 0.7218, 0.0154, 0.0829, 0.4829, 0.5139, 0.4344, 0.5872, 0.2770, 0.3745, "other ..."] }) -Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0929, 0.2278, 0.8567, 0.3831, 0.1889, 0.1941, 0.4218, 0.8952, 0.8072, 0.0287, "other ..."] }) +Item 74: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6041, 0.3629, 0.6610, 0.6124, 0.6909, 0.0379, 0.4711, 0.3341, 0.5966, 0.6614, "other ..."] }) Item 75: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3639, 0.3210, 0.3718, 0.7818, 0.6264, 0.2524, 0.6018, 0.4059, 0.9744, 0.3568, "other ..."] }) -Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6879, 0.2183, 0.3746, 0.1164, 0.1198, 0.6706, 0.1791, 0.1404, 0.2785, 0.8119, "other ..."] }) +Item 76: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5009, 0.1136, 0.6603, 0.2698, 0.1138, 0.2779, 0.5030, 0.9509, 0.2323, 0.9182, "other ..."] }) Item 77: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6003, 0.7202, 0.3803, 0.5052, 0.4006, 0.6708, 0.0438, 0.8432, 0.8772, 0.6849, "other ..."] }) -Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6683, 0.2720, 0.2939, 0.5200, 0.8777, 0.1719, 0.2882, 0.1732, 0.4517, 0.0149, "other ..."] }) +Item 78: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.9992, 0.7691, 0.0377, 0.0207, 0.7633, 0.8107, 0.5643, 0.1879, 0.3600, 0.4194, "other ..."] }) Item 79: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8093, 0.7442, 0.3738, 0.9164, 0.5923, 0.7353, 0.5379, 0.6815, 0.5925, 0.7954, "other ..."] }) -Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4497, 0.5538, 0.6738, 0.1492, 0.5969, 0.7824, 0.3278, 0.9153, 0.7957, 0.5507, "other ..."] }) +Item 80: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7377, 0.4242, 0.0401, 0.9311, 0.7764, 0.7900, 0.9932, 0.2166, 0.1077, 0.4245, "other ..."] }) Item 81: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2370, 0.7334, 0.4755, 0.8921, 0.1448, 0.2971, 0.2116, 0.1124, 0.7297, 0.2965, "other ..."] }) -Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4178, 0.2763, 0.3725, 0.2913, 0.2235, 0.4818, 0.8680, 0.6163, 0.2037, 0.0307, "other ..."] }) +Item 82: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7488, 0.3886, 0.3360, 0.7323, 0.1531, 0.0919, 0.6584, 0.7152, 0.5447, 0.9921, "other ..."] }) Item 83: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3071, 0.2166, 0.0566, 0.5153, 0.8628, 0.9601, 0.6390, 0.4052, 0.2759, 0.4989, "other ..."] }) -Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0785, 0.2604, 0.5759, 0.7355, 0.3364, 0.4576, 0.3499, 0.6492, 0.0832, 0.8244, "other ..."] }) +Item 84: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0920, 0.0212, 0.5221, 0.5551, 0.3172, 0.3603, 0.0231, 0.2973, 0.5497, 0.4320, "other ..."] }) Item 85: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4718, 0.3682, 0.4350, 0.3129, 0.1289, 0.7526, 0.8249, 0.5640, 0.9296, 0.8479, "other ..."] }) -Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4218, 0.5100, 0.0525, 0.1769, 0.3114, 0.6073, 0.0920, 0.0003, 0.2920, 0.6187, "other ..."] }) +Item 86: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7522, 0.8666, 0.5982, 0.0355, 0.9164, 0.3943, 0.6033, 0.9599, 0.6571, 0.0694, "other ..."] }) Item 87: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.2909, 0.8867, 0.3238, 0.4342, 0.3491, 0.4305, 0.8452, 0.0936, 0.1220, 0.3452, "other ..."] }) -Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1541, 0.0680, 0.1200, 0.6694, 0.1988, 0.4380, 0.8675, 0.3337, 0.5964, 0.1474, "other ..."] }) +Item 88: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8770, 0.6135, 0.1378, 0.5732, 0.5669, 0.7852, 0.3687, 0.2821, 0.1570, 0.5212, "other ..."] }) Item 89: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6270, 0.3774, 0.7874, 0.7272, 0.4240, 0.1508, 0.0360, 0.5710, 0.2254, 0.0950, "other ..."] }) -Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0605, 0.8364, 0.8474, 0.6606, 0.6484, 0.6447, 0.8063, 0.2054, 0.0341, 0.7021, "other ..."] }) +Item 90: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5869, 0.4228, 0.7590, 0.8688, 0.9431, 0.8353, 0.2878, 0.4860, 0.9406, 0.6326, "other ..."] }) Item 91: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8560, 0.9670, 0.3969, 0.5008, 0.1567, 0.7420, 0.0072, 0.1891, 0.9690, 0.0387, "other ..."] }) -Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3382, 0.8151, 0.8856, 0.9063, 0.1357, 0.8357, 0.7017, 0.4752, 0.1846, 0.8894, "other ..."] }) +Item 92: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3940, 0.7846, 0.2091, 0.0774, 0.4577, 0.8833, 0.9819, 0.8965, 0.8243, 0.4367, "other ..."] }) Item 93: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5034, 0.4728, 0.9950, 0.7630, 0.0154, 0.4453, 0.6893, 0.6996, 0.0246, 0.0245, "other ..."] }) -Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.3592, 0.9304, 0.2546, 0.5325, 0.5531, 0.3721, 0.9746, 0.6038, 0.3859, 0.8389, "other ..."] }) +Item 94: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1326, 0.5568, 0.0976, 0.1845, 0.0121, 0.5213, 0.5094, 0.1090, 0.3868, 0.1924, "other ..."] }) Item 95: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8157, 0.8688, 0.2659, 0.6080, 0.5274, 0.1883, 0.7562, 0.8511, 0.6928, 0.8151, "other ..."] }) -Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.6204, 0.1391, 0.4938, 0.3666, 0.3302, 0.5598, 0.6202, 0.7036, 0.5887, 0.1799, "other ..."] }) +Item 96: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.5040, 0.4085, 0.6572, 0.9547, 0.6785, 0.0967, 0.1732, 0.1943, 0.4009, 0.1434, "other ..."] }) Item 97: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0850, 0.4087, 0.7257, 0.3157, 0.9526, 0.5290, 0.5818, 0.5460, 0.1906, 0.9422, "other ..."] }) -Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7096, 0.8502, 0.8403, 0.9631, 0.6439, 0.9033, 0.4150, 0.1315, 0.0109, 0.2784, "other ..."] }) +Item 98: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.7849, 0.0672, 0.7446, 0.6176, 0.4259, 0.8941, 0.3356, 0.0410, 0.0297, 0.8411, "other ..."] }) Item 99: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8320, 0.5156, 0.6172, 0.6617, 0.4999, 0.2464, 0.4536, 0.3265, 0.2163, 0.5406, "other ..."] }) diff --git a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap index e637acf9..3c7c9e55 100644 --- a/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap +++ b/src/tests/snapshots/arroy__tests__writer__write_and_update_lot_of_random_points.snap @@ -6,82 +6,100 @@ expression: handle Dumping index 0 Root: Metadata { dimensions: 30, items: RoaringBitmap<100 values between 0 and 99>, roots: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } -Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2113" }, vector: [0.1738, 0.2578, -0.0461, 0.0510, -0.0521, -0.0580, 0.0696, 0.1589, 0.1435, 0.3797, "other ..."] } }) -Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.8345" }, vector: [-0.0326, 0.1008, 0.2702, 0.0676, -0.1315, 0.0823, -0.0684, 0.1071, -0.0486, 0.0555, "other ..."] } }) -Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 31, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4440" }, vector: [0.0736, -0.3070, 0.0229, -0.1871, 0.1383, 0.1607, 0.0012, -0.0691, 0.0881, -0.3260, "other ..."] } }) -Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 37, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2328" }, vector: [-0.0000, 0.0002, -0.0986, -0.0684, -0.0440, -0.1335, 0.2056, 0.1802, 0.0738, 0.2009, "other ..."] } }) -Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3666" }, vector: [0.0089, -0.1490, 0.0264, 0.0240, 0.1814, 0.1339, 0.1548, 0.1487, -0.0609, 0.0026, "other ..."] } }) -Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 56, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5209" }, vector: [0.1142, -0.1030, 0.0720, 0.1379, 0.1954, 0.0532, -0.0409, 0.0771, 0.0886, -0.1860, "other ..."] } }) -Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 63, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0284" }, vector: [0.0426, -0.0662, -0.1421, -0.0980, 0.1894, 0.3734, -0.0240, -0.1555, 0.0560, -0.2369, "other ..."] } }) -Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 67, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0409" }, vector: [0.2364, -0.1525, 0.2205, 0.3219, -0.0565, 0.1400, -0.2765, -0.2710, -0.1346, -0.1346, "other ..."] } }) -Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 74, right: 77, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2909" }, vector: [0.1479, 0.0013, -0.0541, 0.0421, -0.0611, -0.3861, 0.0584, -0.0321, -0.0648, 0.1063, "other ..."] } }) -Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 81, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1234" }, vector: [-0.2112, -0.0367, -0.0096, -0.0676, -0.1991, -0.3649, 0.1871, 0.2711, 0.3248, 0.0856, "other ..."] } }) -Tree 10: Descendants(Descendants { descendants: [0, 8, 12, 13, 19, 25, 28, 33, 34, 40, 41, 42, 44, 45, 46, 48, 50, 51, 56, 59, 61, 64, 72, 89, 92, 93] }) -Tree 11: Descendants(Descendants { descendants: [1, 4, 5, 10, 29, 31, 32, 35, 60, 65, 70, 74, 84, 85] }) -Tree 12: Descendants(Descendants { descendants: [2, 7, 9, 11, 14, 27, 30, 36, 39, 52, 62, 66, 67, 86, 91, 97, 98] }) -Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1562" }, vector: [0.2450, 0.4678, 0.2972, 0.0609, 0.0131, -0.0330, -0.4319, 0.1331, 0.0558, -0.0869, "other ..."] } }) -Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1778" }, vector: [0.0937, 0.0511, 0.0410, -0.2178, -0.2653, -0.0234, 0.2367, 0.1604, 0.1979, 0.1232, "other ..."] } }) -Tree 15: Descendants(Descendants { descendants: [3, 16, 20, 21, 24, 26, 37, 38, 43, 47, 54, 57, 63, 68, 73, 76, 77, 78, 80, 83, 87, 90, 95, 96] }) -Tree 16: Descendants(Descendants { descendants: [6, 15, 17, 18, 22, 23, 49, 53, 55, 58, 69, 71, 75, 79, 81, 82, 88, 94, 99] }) -Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 15, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.8933" }, vector: [0.0705, -0.1150, 0.2198, -0.0387, 0.0840, -0.0742, 0.0357, 0.1034, 0.1458, 0.2194, "other ..."] } }) -Tree 19: Descendants(Descendants { descendants: [8, 13, 15, 20, 21, 23, 24, 28, 37, 43, 45, 46, 47, 51, 54, 55, 57, 61, 63, 64, 67, 68, 71, 73, 77, 78, 80, 87, 90] }) -Tree 20: Descendants(Descendants { descendants: [12, 16, 18, 22, 35, 40, 41, 48, 49, 53, 56, 58, 59, 60, 75, 76, 82, 83, 94, 99] }) -Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 19, right: 20, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1799" }, vector: [-0.0571, -0.3888, 0.0591, -0.0142, -0.0640, 0.3734, 0.0723, -0.0265, 0.1803, -0.2161, "other ..."] } }) -Tree 22: Descendants(Descendants { descendants: [1, 2, 3, 5, 9, 10, 14, 17, 19, 25, 26, 27, 30, 39, 42, 52, 62, 65, 66, 69, 70, 72, 84, 85, 88, 91, 97, 98] }) -Tree 23: Descendants(Descendants { descendants: [0, 4, 6, 7, 11, 29, 31, 32, 33, 34, 36, 38, 44, 50, 74, 79, 81, 86, 89, 92, 93, 95, 96] }) -Tree 24: SplitPlaneNormal(SplitPlaneNormal { left: 22, right: 23, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2878" }, vector: [0.3689, -0.1553, 0.0362, 0.1793, -0.1797, 0.0002, 0.0719, 0.2119, -0.3339, -0.1851, "other ..."] } }) -Tree 26: Descendants(Descendants { descendants: [13, 20, 24, 28, 32, 33, 36, 38, 43, 45, 48, 50, 57, 58, 61, 63, 68, 76, 80, 81, 86, 89, 90, 95] }) -Tree 27: Descendants(Descendants { descendants: [3, 6, 15, 16, 17, 21, 22, 23, 26, 27, 37, 47, 54, 55, 71, 77, 79, 93, 94, 96] }) -Tree 28: SplitPlaneNormal(SplitPlaneNormal { left: 26, right: 27, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3795" }, vector: [-0.0223, 0.1294, 0.2831, -0.2915, -0.1184, 0.1089, 0.0140, 0.1800, 0.1957, 0.1604, "other ..."] } }) -Tree 29: Descendants(Descendants { descendants: [0, 1, 2, 4, 7, 9, 10, 11, 14, 25, 29, 30, 35, 39, 42, 44, 46, 62, 65, 66, 67, 69, 70, 72, 73, 74, 85, 91, 97, 98] }) -Tree 30: Descendants(Descendants { descendants: [5, 8, 12, 18, 19, 31, 34, 40, 41, 49, 51, 52, 53, 56, 59, 60, 64, 75, 78, 82, 83, 84, 87, 88, 92, 99] }) -Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 29, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1493" }, vector: [-0.0305, -0.0223, 0.0473, 0.0614, -0.1365, -0.0171, 0.0807, -0.1358, 0.0555, -0.1190, "other ..."] } }) -Tree 33: Descendants(Descendants { descendants: [6, 7, 8, 13, 26, 27, 28, 34, 36, 40, 45, 48, 50, 63, 65, 86, 90, 91, 93, 96] }) -Tree 34: Descendants(Descendants { descendants: [2, 11, 19, 30, 39, 42, 46, 52, 56, 62, 66, 67, 72, 85, 89] }) -Tree 35: Descendants(Descendants { descendants: [0, 1, 4, 9, 10, 14, 25, 29, 31, 33, 35, 44, 70, 74, 92, 97, 98] }) -Tree 36: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 35, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2961" }, vector: [0.0371, -0.3670, -0.3289, -0.1016, -0.1519, -0.1960, 0.3900, 0.0432, -0.1701, 0.0501, "other ..."] } }) -Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 33, right: 36, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5817" }, vector: [-0.2964, -0.0630, -0.0575, -0.2645, 0.0618, 0.1553, 0.0602, 0.1155, 0.0336, -0.0550, "other ..."] } }) -Tree 38: Descendants(Descendants { descendants: [5, 16, 21, 22, 23, 24, 41, 43, 47, 54, 58, 59, 61, 64, 71, 73, 76, 78, 80, 83, 87, 94] }) -Tree 39: Descendants(Descendants { descendants: [3, 12, 15, 17, 18, 20, 32, 37, 38, 49, 51, 53, 55, 57, 60, 68, 69, 75, 77, 79, 81, 82, 84, 88, 95, 99] }) -Tree 40: SplitPlaneNormal(SplitPlaneNormal { left: 38, right: 39, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2142" }, vector: [-0.1023, -0.2230, 0.0083, 0.1407, -0.1004, -0.3044, 0.0713, -0.0276, 0.2124, 0.1326, "other ..."] } }) -Tree 42: Descendants(Descendants { descendants: [1, 10, 13, 20, 26, 28, 29, 30, 36, 40, 42, 45, 48, 50, 51, 57, 63, 65, 70, 89, 90] }) -Tree 43: Descendants(Descendants { descendants: [3, 6, 16, 21, 22, 27, 37, 39, 41, 43, 47, 54, 55, 62, 66, 68, 73, 77, 78, 79, 85, 91, 93, 95, 96] }) -Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 42, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3621" }, vector: [0.0897, 0.3953, 0.2225, -0.2325, -0.1880, 0.0082, 0.0731, 0.3012, 0.2009, 0.0267, "other ..."] } }) -Tree 45: Descendants(Descendants { descendants: [0, 8, 9, 12, 14, 15, 23, 35, 52, 69, 71, 74, 80, 87, 92, 99] }) -Tree 46: Descendants(Descendants { descendants: [2, 11, 19, 24, 25, 44, 46, 56, 60, 61, 64, 67, 72, 97, 98] }) -Tree 47: SplitPlaneNormal(SplitPlaneNormal { left: 45, right: 46, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2741" }, vector: [-0.2583, 0.0414, -0.1294, 0.1178, 0.2646, 0.6034, -0.0910, -0.1269, 0.1434, -0.1341, "other ..."] } }) -Tree 48: Descendants(Descendants { descendants: [4, 5, 7, 17, 18, 31, 32, 33, 34, 38, 49, 53, 58, 59, 75, 76, 81, 82, 83, 84, 86, 88, 94] }) -Tree 49: SplitPlaneNormal(SplitPlaneNormal { left: 47, right: 48, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4014" }, vector: [-0.0198, -0.1386, 0.1034, 0.1370, -0.0919, 0.1695, 0.1783, 0.0528, -0.2236, 0.1003, "other ..."] } }) -Tree 51: Descendants(Descendants { descendants: [1, 2, 5, 10, 12, 13, 17, 25, 29, 40, 41, 51, 57, 60, 61, 64, 70, 85, 97] }) -Tree 52: Descendants(Descendants { descendants: [3, 6, 8, 15, 16, 21, 23, 26, 27, 28, 37, 43, 47, 48, 54, 55, 62, 68, 71, 73, 77, 78, 79, 81, 87, 90, 91, 93, 95, 96] }) -Tree 53: SplitPlaneNormal(SplitPlaneNormal { left: 51, right: 52, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3872" }, vector: [0.2850, 0.4609, 0.1505, 0.2411, -0.0887, -0.2256, -0.1911, -0.0215, 0.1505, -0.0688, "other ..."] } }) -Tree 54: Descendants(Descendants { descendants: [7, 9, 11, 14, 19, 20, 22, 24, 30, 31, 35, 36, 39, 42, 45, 46, 50, 52, 63, 66, 67, 69, 72, 80, 86, 89, 92, 98] }) -Tree 55: Descendants(Descendants { descendants: [0, 4, 18, 32, 33, 34, 38, 44, 49, 53, 56, 58, 59, 65, 74, 75, 76, 82, 83, 84, 88, 94, 99] }) -Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 54, right: 55, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0716" }, vector: [-0.1284, -0.2950, 0.0308, 0.0293, -0.0542, 0.2148, 0.3359, -0.0002, 0.0949, 0.0805, "other ..."] } }) -Tree 58: Descendants(Descendants { descendants: [1, 2, 5, 9, 10, 12, 14, 15, 25, 26, 31, 33, 34, 35, 38, 44, 48, 49, 69, 70, 71, 74, 75, 81, 84, 88, 92, 99] }) -Tree 59: Descendants(Descendants { descendants: [0, 3, 4, 6, 7, 11, 17, 20, 23, 29, 32, 36, 39, 42, 50, 52, 53, 55, 57, 58, 62, 68, 79, 80, 86, 89, 93, 95, 96, 97] }) -Tree 60: SplitPlaneNormal(SplitPlaneNormal { left: 58, right: 59, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3238" }, vector: [0.2591, 0.0100, -0.0571, -0.0253, 0.1896, -0.2304, -0.0609, 0.2559, 0.1387, 0.0448, "other ..."] } }) -Tree 61: Descendants(Descendants { descendants: [13, 16, 22, 24, 27, 28, 43, 45, 54, 63, 65, 66, 73, 76, 83, 87, 90, 94] }) -Tree 62: Descendants(Descendants { descendants: [8, 18, 19, 21, 30, 37, 40, 41, 46, 47, 51, 56, 59, 60, 61, 64, 67, 72, 77, 78, 82, 85, 91, 98] }) -Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 61, right: 62, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1483" }, vector: [-0.0019, -0.1048, 0.0858, -0.2124, -0.1620, 0.0902, -0.1483, 0.1343, 0.4031, -0.1357, "other ..."] } }) -Tree 65: Descendants(Descendants { descendants: [3, 8, 12, 15, 17, 23, 27, 30, 37, 46, 52, 53, 55, 57, 60, 64, 66, 68, 71, 72, 73, 75, 78, 80, 81, 85, 87, 88, 99] }) -Tree 66: Descendants(Descendants { descendants: [0, 2, 4, 7, 9, 10, 11, 14, 18, 25, 29, 35, 39, 44, 47, 49, 61, 62, 67, 69, 70, 74, 84, 86, 91, 94, 96, 97, 98] }) -Tree 67: SplitPlaneNormal(SplitPlaneNormal { left: 65, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.7572" }, vector: [-0.0285, -0.2195, 0.0099, 0.0241, 0.0176, 0.1916, 0.0077, 0.4518, 0.0405, -0.1638, "other ..."] } }) -Tree 68: Descendants(Descendants { descendants: [1, 6, 13, 19, 20, 26, 28, 31, 32, 33, 34, 36, 40, 41, 42, 45, 48, 51, 56, 63, 89, 90, 92] }) -Tree 69: Descendants(Descendants { descendants: [5, 16, 21, 22, 24, 38, 43, 50, 54, 58, 59, 65, 76, 77, 79, 82, 83, 93, 95] }) -Tree 70: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 69, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0586" }, vector: [0.0331, 0.0877, 0.1279, -0.2862, -0.0502, 0.1851, 0.3474, 0.2736, 0.0653, 0.1438, "other ..."] } }) -Tree 72: Descendants(Descendants { descendants: [0, 1, 2, 3, 4, 7, 9, 10, 11, 14, 18, 26, 27, 28, 29, 35, 39, 57, 62, 65, 69, 70, 73, 74, 85, 96, 97] }) -Tree 73: Descendants(Descendants { descendants: [5, 16, 19, 24, 25, 30, 40, 42, 44, 46, 56, 60, 66, 67, 72, 77, 78, 87, 91, 98] }) -Tree 74: SplitPlaneNormal(SplitPlaneNormal { left: 72, right: 73, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3058" }, vector: [-0.0798, 0.2641, -0.0135, 0.0698, -0.0244, 0.2822, -0.2006, -0.4188, 0.1026, -0.2267, "other ..."] } }) -Tree 75: Descendants(Descendants { descendants: [15, 17, 20, 31, 32, 33, 34, 38, 48, 49, 53, 58, 59, 75, 76, 79, 81, 82, 83, 84, 86, 88, 94, 99] }) -Tree 76: Descendants(Descendants { descendants: [6, 8, 12, 13, 21, 22, 23, 36, 37, 41, 43, 45, 47, 50, 51, 52, 54, 55, 61, 63, 64, 68, 71, 80, 89, 90, 92, 93, 95] }) -Tree 77: SplitPlaneNormal(SplitPlaneNormal { left: 75, right: 76, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1646" }, vector: [0.0701, 0.1854, -0.0686, 0.0047, 0.0849, -0.2750, -0.0947, -0.0915, -0.0260, -0.2147, "other ..."] } }) -Tree 79: Descendants(Descendants { descendants: [5, 9, 13, 16, 19, 27, 30, 31, 33, 34, 36, 41, 45, 46, 48, 51, 56, 59, 60, 65, 66, 67, 72, 87, 92, 93] }) -Tree 80: Descendants(Descendants { descendants: [12, 15, 20, 21, 22, 23, 24, 29, 38, 43, 44, 47, 50, 58, 61, 63, 64, 68, 76, 77, 78, 80, 82, 83, 89, 94, 98] }) -Tree 81: SplitPlaneNormal(SplitPlaneNormal { left: 79, right: 80, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1632" }, vector: [0.0568, 0.0277, -0.1739, -0.0810, 0.0699, -0.2270, 0.0070, 0.4516, 0.0734, 0.2684, "other ..."] } }) -Tree 82: Descendants(Descendants { descendants: [0, 1, 3, 4, 7, 8, 26, 28, 37, 39, 42, 52, 54, 55, 57, 70, 73, 79, 85, 86, 90, 95, 96] }) -Tree 83: Descendants(Descendants { descendants: [2, 6, 10, 11, 14, 17, 18, 25, 32, 35, 40, 49, 53, 62, 69, 71, 74, 75, 81, 84, 88, 91, 97, 99] }) -Tree 84: SplitPlaneNormal(SplitPlaneNormal { left: 82, right: 83, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3337" }, vector: [-0.2364, -0.0195, 0.0802, -0.0944, -0.1296, 0.0602, 0.0127, -0.1474, 0.1491, -0.1189, "other ..."] } }) +Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 14, right: 17, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.8587" }, vector: [-0.1204, 0.0883, -0.1193, 0.0487, -0.2937, 0.1358, 0.0452, 0.0063, 0.0002, 0.3049, "other ..."] } }) +Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 21, right: 26, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5437" }, vector: [-0.3998, -0.0657, -0.1329, -0.0396, 0.0148, 0.1862, -0.0011, 0.0465, 0.1301, 0.1252, "other ..."] } }) +Tree 2: SplitPlaneNormal(SplitPlaneNormal { left: 34, right: 37, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6127" }, vector: [-0.0024, -0.2313, -0.3514, 0.2460, 0.1578, 0.1174, 0.1903, 0.2528, -0.1544, -0.0109, "other ..."] } }) +Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 41, right: 46, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3197" }, vector: [-0.4323, -0.0243, -0.2204, -0.2440, -0.1659, 0.2287, 0.0464, 0.1377, 0.0778, -0.1993, "other ..."] } }) +Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 56, right: 57, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.9992" }, vector: [0.1629, 0.1656, 0.3348, -0.1713, -0.2520, 0.0814, -0.0464, 0.2963, 0.2613, -0.1932, "other ..."] } }) +Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 63, right: 66, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2444" }, vector: [-0.3338, 0.1111, 0.3212, 0.0072, -0.3659, 0.2717, 0.0245, -0.1254, -0.0674, 0.0525, "other ..."] } }) +Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 72, right: 75, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0702" }, vector: [0.0110, 0.0447, -0.1004, -0.0082, 0.3757, 0.1258, -0.0217, -0.0066, -0.0891, -0.1647, "other ..."] } }) +Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 83, right: 84, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6027" }, vector: [-0.2057, -0.2175, 0.2291, 0.1105, 0.1273, -0.0631, 0.3744, 0.0516, 0.1016, 0.1725, "other ..."] } }) +Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 88, right: 91, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1412" }, vector: [-0.1594, -0.1073, 0.0726, 0.0262, -0.0675, -0.0409, 0.2032, -0.0833, 0.0508, 0.1313, "other ..."] } }) +Tree 9: SplitPlaneNormal(SplitPlaneNormal { left: 97, right: 102, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1949" }, vector: [0.3612, -0.2770, -0.0294, -0.3396, -0.1454, -0.0856, 0.0828, 0.0365, 0.1651, -0.0627, "other ..."] } }) +Tree 10: Descendants(Descendants { descendants: [2, 7, 9, 11, 27, 36, 39, 46, 62, 66, 67, 80, 89, 97] }) +Tree 11: Descendants(Descendants { descendants: [0, 4, 8, 17, 18, 21, 25, 32, 37, 50, 55, 56, 59, 61, 64, 71, 72, 73, 74, 78, 84, 85, 86, 93] }) +Tree 12: Descendants(Descendants { descendants: [6, 10, 12, 13, 19, 22, 28, 30, 31, 33, 34, 35, 40, 41, 42, 45, 51, 52, 54, 63, 87, 91, 92, 98] }) +Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.7776" }, vector: [0.1393, -0.0513, -0.0768, 0.1270, 0.0373, -0.2633, -0.2015, -0.4977, -0.2852, 0.1163, "other ..."] } }) +Tree 14: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.6510" }, vector: [0.0688, -0.1157, -0.4195, 0.0549, -0.0075, -0.0146, 0.1418, -0.0685, 0.1387, -0.3440, "other ..."] } }) +Tree 15: Descendants(Descendants { descendants: [1, 5, 14, 16, 20, 26, 29, 38, 43, 44, 47, 48, 49, 53, 57, 58, 60, 70, 75, 76, 81, 82, 88, 90] }) +Tree 16: Descendants(Descendants { descendants: [3, 15, 23, 24, 65, 68, 69, 77, 79, 83, 94, 95, 96, 99] }) +Tree 17: SplitPlaneNormal(SplitPlaneNormal { left: 15, right: 16, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.9388" }, vector: [0.1487, 0.2203, 0.3673, 0.0253, 0.2058, -0.0370, -0.0664, 0.1108, -0.0408, 0.1954, "other ..."] } }) +Tree 19: Descendants(Descendants { descendants: [4, 9, 11, 20, 22, 31, 32, 36, 39, 45, 53, 69, 75, 79, 80, 86, 91, 92, 94] }) +Tree 20: Descendants(Descendants { descendants: [8, 18, 24, 30, 43, 46, 51, 52, 56, 59, 64, 66, 72, 73, 78, 87] }) +Tree 21: SplitPlaneNormal(SplitPlaneNormal { left: 19, right: 20, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.4404" }, vector: [-0.1670, 0.1858, -0.2109, -0.2648, -0.1416, 0.2012, 0.0523, -0.1372, 0.0213, -0.3516, "other ..."] } }) +Tree 22: Descendants(Descendants { descendants: [0, 1, 2, 7, 10, 12, 13, 16, 21, 25, 28, 29, 33, 34, 41, 42, 44, 48, 50, 63, 67, 74, 76, 77, 83, 89, 93, 96, 98] }) +Tree 23: Descendants(Descendants { descendants: [23, 35, 47, 49, 55, 58, 60, 61, 71, 82, 99] }) +Tree 24: Descendants(Descendants { descendants: [3, 5, 6, 14, 15, 17, 19, 26, 27, 37, 38, 40, 54, 57, 62, 65, 68, 70, 81, 84, 85, 88, 90, 95, 97] }) +Tree 25: SplitPlaneNormal(SplitPlaneNormal { left: 23, right: 24, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1497" }, vector: [-0.1334, 0.0228, 0.3475, 0.1570, 0.0302, -0.0366, -0.1385, -0.0532, 0.0307, 0.0044, "other ..."] } }) +Tree 26: SplitPlaneNormal(SplitPlaneNormal { left: 22, right: 25, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1262" }, vector: [-0.3075, 0.0809, -0.0415, -0.1913, -0.0817, -0.1210, 0.3237, -0.1618, 0.3302, 0.3665, "other ..."] } }) +Tree 28: Descendants(Descendants { descendants: [15, 20, 22, 23, 44, 67, 80, 82, 89] }) +Tree 29: Descendants(Descendants { descendants: [2, 3, 5, 12, 16, 21, 24, 25, 30, 43, 54, 56, 60, 63, 66, 71, 73, 78, 87, 88, 92, 94, 99] }) +Tree 30: Descendants(Descendants { descendants: [6, 8, 27, 28, 40, 62, 90, 91] }) +Tree 31: SplitPlaneNormal(SplitPlaneNormal { left: 29, right: 30, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1502" }, vector: [0.0811, 0.0435, -0.0346, 0.2936, -0.0010, -0.2537, -0.3247, -0.0604, 0.1465, 0.0740, "other ..."] } }) +Tree 32: Descendants(Descendants { descendants: [17, 46, 53, 55, 59, 72, 77, 85] }) +Tree 33: SplitPlaneNormal(SplitPlaneNormal { left: 31, right: 32, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3366" }, vector: [0.1309, -0.2229, -0.0815, -0.0774, -0.0238, -0.2149, -0.0611, 0.0292, 0.2175, 0.2365, "other ..."] } }) +Tree 34: SplitPlaneNormal(SplitPlaneNormal { left: 28, right: 33, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2613" }, vector: [-0.2091, 0.1176, -0.1417, 0.3153, 0.0392, 0.0072, 0.2998, -0.2809, 0.0782, 0.1063, "other ..."] } }) +Tree 35: Descendants(Descendants { descendants: [4, 7, 9, 10, 13, 29, 33, 36, 38, 45, 47, 48, 50, 51, 57, 58, 61, 64, 65, 68, 70, 76, 79, 83, 86, 93, 95, 96, 97] }) +Tree 36: Descendants(Descendants { descendants: [0, 1, 11, 14, 18, 19, 26, 31, 32, 34, 35, 37, 39, 41, 42, 49, 52, 69, 74, 75, 81, 84, 98] }) +Tree 37: SplitPlaneNormal(SplitPlaneNormal { left: 35, right: 36, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.3308" }, vector: [0.0388, -0.1794, -0.0309, -0.1356, -0.1757, -0.0890, -0.0417, -0.0318, 0.4685, -0.2420, "other ..."] } }) +Tree 39: Descendants(Descendants { descendants: [6, 16, 21, 22, 23, 28, 36, 37, 45, 48, 62, 63, 65, 67, 73, 79, 90, 91, 93, 95, 96, 99] }) +Tree 40: Descendants(Descendants { descendants: [3, 7, 8, 15, 17, 20, 26, 27, 54, 55, 66, 77, 80, 87, 94] }) +Tree 41: SplitPlaneNormal(SplitPlaneNormal { left: 39, right: 40, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0459" }, vector: [-0.2209, 0.1963, 0.1062, 0.0898, 0.0185, -0.1583, 0.1786, -0.2590, -0.1887, 0.1668, "other ..."] } }) +Tree 42: Descendants(Descendants { descendants: [1, 5, 14, 19, 24, 25, 31, 32, 34, 40, 42, 59, 60, 69, 82, 84, 88, 92] }) +Tree 43: Descendants(Descendants { descendants: [10, 12, 13, 18, 30, 35, 39, 41, 43, 51, 52, 56, 57, 61, 64, 68, 72, 74, 83, 85, 89] }) +Tree 44: SplitPlaneNormal(SplitPlaneNormal { left: 42, right: 43, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2613" }, vector: [0.0889, -0.0106, -0.1512, -0.2271, 0.2004, -0.1394, -0.0955, 0.2163, -0.1615, -0.0438, "other ..."] } }) +Tree 45: Descendants(Descendants { descendants: [0, 2, 4, 9, 11, 29, 33, 38, 44, 46, 47, 49, 50, 53, 58, 70, 71, 75, 76, 78, 81, 86, 97, 98] }) +Tree 46: SplitPlaneNormal(SplitPlaneNormal { left: 44, right: 45, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5807" }, vector: [0.2204, 0.1546, -0.0481, -0.0138, 0.1466, 0.0739, 0.1373, 0.2711, -0.0635, 0.1936, "other ..."] } }) +Tree 48: Descendants(Descendants { descendants: [8, 12, 16, 23, 28, 40, 41, 44, 48, 54, 60, 64, 68, 73, 99] }) +Tree 49: Descendants(Descendants { descendants: [13, 19, 24, 25, 27, 30, 34, 46, 51, 56, 63, 66, 72, 83, 87, 92] }) +Tree 50: SplitPlaneNormal(SplitPlaneNormal { left: 48, right: 49, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.5499" }, vector: [-0.0518, 0.3110, 0.0163, 0.1242, 0.0115, 0.2871, -0.1097, -0.0757, -0.1376, -0.0725, "other ..."] } }) +Tree 51: Descendants(Descendants { descendants: [6, 36, 37, 43, 45, 59, 82, 89, 90, 93] }) +Tree 52: SplitPlaneNormal(SplitPlaneNormal { left: 50, right: 51, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0630" }, vector: [0.2358, -0.1554, 0.3851, 0.2011, -0.2047, -0.2508, -0.0279, 0.1935, -0.1501, -0.1522, "other ..."] } }) +Tree 53: Descendants(Descendants { descendants: [1, 7, 9, 10, 15, 17, 26, 29, 33, 47, 50, 55, 57, 61, 65, 77, 79, 85, 95, 97] }) +Tree 54: Descendants(Descendants { descendants: [0, 4, 20, 31, 32, 35, 38, 42, 49, 52, 53, 58, 70, 75, 76, 84, 88] }) +Tree 55: SplitPlaneNormal(SplitPlaneNormal { left: 53, right: 54, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0744" }, vector: [0.0700, -0.1293, -0.0627, 0.3912, -0.0190, -0.1505, 0.1277, -0.1224, 0.0108, -0.4143, "other ..."] } }) +Tree 56: SplitPlaneNormal(SplitPlaneNormal { left: 52, right: 55, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.6438" }, vector: [0.0375, 0.0466, -0.1290, -0.0388, -0.0623, 0.0907, 0.0547, 0.3634, 0.1866, 0.2968, "other ..."] } }) +Tree 57: Descendants(Descendants { descendants: [2, 3, 5, 11, 14, 18, 21, 22, 39, 62, 67, 69, 71, 74, 78, 80, 81, 86, 91, 94, 96, 98] }) +Tree 59: Descendants(Descendants { descendants: [3, 12, 15, 21, 28, 37, 54, 57, 66, 69, 73, 77, 79, 83, 87, 89, 90, 94, 95, 99] }) +Tree 60: Descendants(Descendants { descendants: [13, 16, 19, 29, 39, 41, 42, 45, 46, 50, 56, 63, 64, 72, 85] }) +Tree 61: Descendants(Descendants { descendants: [0, 4, 8, 18, 20, 22, 23, 24, 35, 43, 47, 51, 52, 53, 55, 58, 61, 68, 71, 75, 76, 78, 80, 82, 86] }) +Tree 62: SplitPlaneNormal(SplitPlaneNormal { left: 60, right: 61, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.9435" }, vector: [0.0581, 0.1085, -0.1341, -0.2348, -0.3228, -0.2522, 0.3097, 0.2076, -0.0093, 0.1565, "other ..."] } }) +Tree 63: SplitPlaneNormal(SplitPlaneNormal { left: 59, right: 62, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.1936" }, vector: [0.3169, -0.1754, -0.1837, -0.0504, 0.1379, 0.2769, -0.0601, -0.2512, 0.2685, -0.1864, "other ..."] } }) +Tree 64: Descendants(Descendants { descendants: [5, 7, 9, 14, 27, 31, 32, 36, 38, 48, 59, 62, 65, 67, 70, 74, 84, 93, 96] }) +Tree 65: Descendants(Descendants { descendants: [1, 2, 6, 10, 11, 17, 25, 26, 30, 33, 34, 40, 44, 49, 60, 81, 88, 91, 92, 97, 98] }) +Tree 66: SplitPlaneNormal(SplitPlaneNormal { left: 64, right: 65, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0309" }, vector: [0.0180, -0.1078, -0.1967, 0.0956, -0.0008, -0.0663, -0.1064, -0.2888, 0.2329, 0.0285, "other ..."] } }) +Tree 68: Descendants(Descendants { descendants: [8, 9, 17, 27, 30, 37, 40, 42, 52, 55, 73, 85, 87, 91] }) +Tree 69: Descendants(Descendants { descendants: [3, 6, 7, 18, 26, 29, 32, 36, 38, 48, 65, 79, 81, 86, 93, 95, 96] }) +Tree 70: Descendants(Descendants { descendants: [0, 1, 2, 10, 11, 14, 25, 33, 62, 69, 70, 74, 84, 88, 99] }) +Tree 71: SplitPlaneNormal(SplitPlaneNormal { left: 69, right: 70, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0118" }, vector: [-0.3279, -0.0715, 0.0546, -0.2410, -0.1629, -0.1665, 0.0214, -0.1654, -0.0215, -0.3053, "other ..."] } }) +Tree 72: SplitPlaneNormal(SplitPlaneNormal { left: 68, right: 71, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.2180" }, vector: [-0.1710, -0.0641, 0.1282, 0.2421, -0.0241, -0.0552, 0.1967, 0.1703, -0.1733, 0.1647, "other ..."] } }) +Tree 73: Descendants(Descendants { descendants: [4, 13, 15, 16, 19, 24, 28, 31, 35, 39, 44, 45, 46, 50, 54, 56, 57, 63, 64, 66, 67, 72, 77, 80, 89, 90, 92, 94, 97, 98] }) +Tree 74: Descendants(Descendants { descendants: [5, 12, 20, 21, 22, 23, 34, 41, 43, 47, 49, 51, 53, 58, 59, 60, 61, 68, 71, 75, 76, 78, 82, 83] }) +Tree 75: SplitPlaneNormal(SplitPlaneNormal { left: 73, right: 74, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0342" }, vector: [0.0119, -0.0391, -0.0191, -0.1374, -0.3241, 0.0455, 0.1109, -0.0617, 0.0776, 0.0513, "other ..."] } }) +Tree 77: Descendants(Descendants { descendants: [8, 18, 20, 29, 31, 39, 41, 45, 50, 51, 56, 61, 63, 64, 66, 67, 72, 76, 80, 83, 93] }) +Tree 78: Descendants(Descendants { descendants: [0, 2, 10, 13, 25, 30, 34, 35, 36, 42, 44, 62, 74, 89, 92] }) +Tree 79: SplitPlaneNormal(SplitPlaneNormal { left: 77, right: 78, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.4580" }, vector: [-0.2811, 0.1602, 0.1534, 0.1554, -0.1615, -0.2227, 0.0627, -0.2144, -0.0981, 0.0526, "other ..."] } }) +Tree 80: Descendants(Descendants { descendants: [6, 11, 14, 19, 26, 27, 28, 40, 52, 86, 91, 96] }) +Tree 81: Descendants(Descendants { descendants: [1, 3, 5, 7, 9, 15, 16, 21, 24, 37, 46, 47, 48, 57, 68, 70, 71, 73, 77, 78, 81, 85, 87, 90, 95, 98] }) +Tree 82: SplitPlaneNormal(SplitPlaneNormal { left: 80, right: 81, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.1230" }, vector: [-0.1801, -0.1814, -0.2144, -0.0675, 0.0791, 0.0581, 0.3301, 0.0860, -0.3168, 0.1403, "other ..."] } }) +Tree 83: SplitPlaneNormal(SplitPlaneNormal { left: 79, right: 82, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.8187" }, vector: [-0.0254, 0.2078, -0.1625, -0.1171, -0.1369, 0.1272, 0.0764, -0.1323, 0.2202, 0.2376, "other ..."] } }) +Tree 84: Descendants(Descendants { descendants: [4, 12, 17, 22, 23, 32, 33, 38, 43, 49, 53, 54, 55, 58, 59, 60, 65, 69, 75, 79, 82, 84, 88, 94, 97, 99] }) +Tree 86: Descendants(Descendants { descendants: [12, 13, 16, 21, 22, 41, 44, 45, 46, 50, 51, 54, 56, 59, 66, 72, 77, 80, 89, 93, 98] }) +Tree 87: Descendants(Descendants { descendants: [3, 6, 8, 23, 27, 28, 37, 40, 43, 47, 61, 64, 68, 71, 73, 78, 79, 85, 91, 95, 96] }) +Tree 88: SplitPlaneNormal(SplitPlaneNormal { left: 86, right: 87, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.3410" }, vector: [-0.0558, 0.1524, -0.2597, -0.1741, -0.0292, -0.1124, 0.1826, -0.0289, 0.2622, 0.4321, "other ..."] } }) +Tree 89: Descendants(Descendants { descendants: [0, 1, 2, 5, 7, 9, 10, 11, 14, 15, 19, 24, 29, 30, 31, 33, 36, 39, 42, 52, 62, 63, 65, 67, 69, 83, 87, 90, 92] }) +Tree 90: Descendants(Descendants { descendants: [4, 17, 18, 20, 25, 26, 32, 34, 35, 38, 48, 49, 53, 55, 57, 58, 60, 70, 74, 75, 76, 81, 82, 84, 86, 88, 94, 97, 99] }) +Tree 91: SplitPlaneNormal(SplitPlaneNormal { left: 89, right: 90, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.6926" }, vector: [-0.1723, -0.3093, -0.2410, 0.0338, -0.1640, -0.0282, 0.1961, -0.2324, 0.2395, -0.0665, "other ..."] } }) +Tree 93: Descendants(Descendants { descendants: [0, 29, 33, 36, 42, 44, 45, 48, 50, 56, 61, 65, 67, 72, 76, 80, 93, 95, 96, 97] }) +Tree 94: Descendants(Descendants { descendants: [1, 10, 11, 13, 16, 19, 24, 25, 28, 30, 39, 40, 46, 51, 54, 62, 63, 66, 77, 89, 90] }) +Tree 95: Descendants(Descendants { descendants: [2, 3, 6, 8, 26, 27, 38, 57, 83, 85, 87] }) +Tree 96: SplitPlaneNormal(SplitPlaneNormal { left: 94, right: 95, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.0383" }, vector: [-0.0480, 0.0431, -0.0749, 0.1977, -0.0936, -0.0084, 0.4198, 0.1228, 0.0345, 0.3257, "other ..."] } }) +Tree 97: SplitPlaneNormal(SplitPlaneNormal { left: 93, right: 96, normal: Leaf { header: NodeHeaderEuclidean { bias: "0.5940" }, vector: [-0.1380, -0.0146, -0.0335, 0.0588, -0.2350, -0.2671, -0.0050, -0.4234, 0.0922, 0.0457, "other ..."] } }) +Tree 98: Descendants(Descendants { descendants: [21, 32, 34, 41, 43, 47, 49, 58, 68, 78, 79, 81, 82, 86] }) +Tree 99: Descendants(Descendants { descendants: [5, 7, 9, 14, 15, 23, 31, 35, 52, 55, 70, 71, 74, 91, 92, 98] }) +Tree 100: Descendants(Descendants { descendants: [4, 12, 17, 18, 20, 22, 37, 53, 59, 60, 64, 69, 73, 75, 84, 88, 94, 99] }) +Tree 101: SplitPlaneNormal(SplitPlaneNormal { left: 99, right: 100, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.2037" }, vector: [-0.1937, -0.0438, 0.1336, 0.0052, 0.0790, 0.1019, 0.2513, -0.0888, 0.1992, -0.1184, "other ..."] } }) +Tree 102: SplitPlaneNormal(SplitPlaneNormal { left: 98, right: 101, normal: Leaf { header: NodeHeaderEuclidean { bias: "-0.0708" }, vector: [0.0469, -0.0452, 0.1103, -0.1461, 0.1633, -0.1284, 0.0917, 0.0132, -0.1658, -0.0299, "other ..."] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.8013, 0.2371, 0.6955, 0.8606, 0.5280, 0.2667, 0.6057, 0.9830, 0.9430, 0.0479, "other ..."] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.4199, 0.2620, 0.2655, 0.8414, 0.0192, 0.3828, 0.2561, 0.2692, 0.0368, 0.4624, "other ..."] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.1040, 0.9647, 0.8238, 0.5344, 0.4903, 0.4420, 0.7937, 0.4028, 0.2083, 0.3315, "other ..."] }) diff --git a/src/tests/writer.rs b/src/tests/writer.rs index ef3812f8..b8c95c46 100644 --- a/src/tests/writer.rs +++ b/src/tests/writer.rs @@ -281,7 +281,7 @@ fn write_vectors_until_there_is_a_split() { Dumping index 0 Root: Metadata { dimensions: 3, items: RoaringBitmap<[0, 1, 2, 3]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.6152" }, vector: [0.5774, 0.5774, 0.5774] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.3506" }, vector: [0.5774, 0.5774, 0.5774] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2, 3] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000] }) @@ -404,13 +404,11 @@ fn overwrite_one_item_incremental() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 4: Descendants(Descendants { descendants: [5] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -433,13 +431,13 @@ fn overwrite_one_item_incremental() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: "5.1602" }, vector: [-1.0000, 0.0000] } }) - Tree 7: Descendants(Descendants { descendants: [3] }) - Tree 8: Descendants(Descendants { descendants: [4, 5] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-5.1571" }, vector: [1.0000, 0.0000] } }) + Tree 5: Descendants(Descendants { descendants: [4, 5] }) + Tree 6: Descendants(Descendants { descendants: [3] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -606,7 +604,7 @@ fn delete_one_leaf_in_a_split() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.2667" }, vector: [-1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.1875" }, vector: [-1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [2] }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) @@ -690,13 +688,11 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 4: Descendants(Descendants { descendants: [5] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -718,11 +714,11 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 6: Descendants(Descendants { descendants: [4, 5] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -744,9 +740,9 @@ fn delete_one_item() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 2, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 3: Descendants(Descendants { descendants: [0, 2] }) - Tree 6: Descendants(Descendants { descendants: [4, 5] }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) @@ -854,7 +850,7 @@ fn add_one_item_incrementally_to_create_a_split_node() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.2721" }, vector: [-1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.2500" }, vector: [-1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [2] }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) @@ -881,13 +877,11 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 4: Descendants(Descendants { descendants: [5] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -909,13 +903,13 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5, 25]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 4: Descendants(Descendants { descendants: [5, 25] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-14.6429" }, vector: [1.0000, 0.0000] } }) + Tree 5: Descendants(Descendants { descendants: [4, 5] }) + Tree 6: Descendants(Descendants { descendants: [25] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -938,15 +932,15 @@ fn add_one_item_incrementally() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5, 8, 25]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: "15.6949" }, vector: [-1.0000, 0.0000] } }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) - Tree 7: Descendants(Descendants { descendants: [25] }) - Tree 8: Descendants(Descendants { descendants: [5, 8] }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-14.6429" }, vector: [1.0000, 0.0000] } }) + Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 7, right: 8, normal: Leaf { header: NodeHeaderEuclidean { bias: "-6.3333" }, vector: [1.0000, 0.0000] } }) + Tree 6: Descendants(Descendants { descendants: [25] }) + Tree 7: Descendants(Descendants { descendants: [4, 5] }) + Tree 8: Descendants(Descendants { descendants: [8] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -977,12 +971,12 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 4, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [0, 1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.7253" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "2.3133" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.9500" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.7333" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) Tree 3: Descendants(Descendants { descendants: [2, 3, 4] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) + Tree 5: Descendants(Descendants { descendants: [2, 3, 4] }) + Tree 6: Descendants(Descendants { descendants: [0, 1] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) @@ -1000,12 +994,12 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [0, 1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.7253" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "2.3133" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 2, right: 3, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.9500" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.7333" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) Tree 2: Descendants(Descendants { descendants: [0, 1] }) Tree 3: Descendants(Descendants { descendants: [2, 3, 4] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) + Tree 5: Descendants(Descendants { descendants: [2, 3, 4] }) + Tree 6: Descendants(Descendants { descendants: [0, 1] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) @@ -1023,9 +1017,9 @@ fn delete_extraneous_tree() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4]>, roots: [1], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "2.3133" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: Descendants(Descendants { descendants: [0, 1, 2] }) + Tree 1: SplitPlaneNormal(SplitPlaneNormal { left: 5, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "1.7333" }, vector: [-1.0000, 0.0000, 0.0000, 0.0000] } }) + Tree 5: Descendants(Descendants { descendants: [2, 3, 4] }) + Tree 6: Descendants(Descendants { descendants: [0, 1] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000, 0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000, 0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000, 0.0000, 0.0000] }) @@ -1053,13 +1047,11 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 4: Descendants(Descendants { descendants: [5] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -1082,9 +1074,11 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 2, 3, 4]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) - Tree 3: Descendants(Descendants { descendants: [0, 2] }) - Tree 6: Descendants(Descendants { descendants: [3, 4] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) + Tree 1: Descendants(Descendants { descendants: [0] }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) @@ -1104,9 +1098,9 @@ fn create_root_split_node_with_empty_child() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[2, 3, 4]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) - Tree 3: Descendants(Descendants { descendants: [2] }) - Tree 6: Descendants(Descendants { descendants: [3, 4] }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) + Tree 3: Descendants(Descendants { descendants: [2, 3] }) + Tree 4: Descendants(Descendants { descendants: [4] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) Item 3: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [3.0000, 0.0000] }) Item 4: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [4.0000, 0.0000] }) @@ -1131,13 +1125,11 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 4: Descendants(Descendants { descendants: [5] }) - Tree 5: Descendants(Descendants { descendants: [3, 4] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "4.2538" }, vector: [-1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [4, 5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -1160,11 +1152,11 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) - Tree 6: Descendants(Descendants { descendants: [5] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) + Tree 4: Descendants(Descendants { descendants: [5] }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -1185,13 +1177,11 @@ fn reuse_node_id() { Dumping index 0 Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [4, 5] }) - Tree 5: Descendants(Descendants { descendants: [3] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "3.7732" }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] }) @@ -1210,22 +1200,20 @@ fn reuse_node_id() { insta::assert_snapshot!(handle, @r#" ================== Dumping index 0 - Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0, 7], distance: "euclidean" } + Root: Metadata { dimensions: 2, items: RoaringBitmap<[0, 1, 2, 3, 4, 5]>, roots: [0, 5], distance: "euclidean" } Version: Version { major: 0, minor: 7, patch: 0 } - Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 6, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5415" }, vector: [1.0000, 0.0000] } }) + Tree 0: SplitPlaneNormal(SplitPlaneNormal { left: 3, right: 4, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.0143" }, vector: [1.0000, 0.0000] } }) Tree 1: Descendants(Descendants { descendants: [0, 1] }) - Tree 2: Descendants(Descendants { descendants: [2] }) - Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2328" }, vector: [1.0000, 0.0000] } }) + Tree 2: Descendants(Descendants { descendants: [2, 3] }) + Tree 3: SplitPlaneNormal(SplitPlaneNormal { left: 1, right: 2, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.5000" }, vector: [1.0000, 0.0000] } }) Tree 4: Descendants(Descendants { descendants: [4, 5] }) - Tree 5: Descendants(Descendants { descendants: [3] }) - Tree 6: SplitPlaneNormal(SplitPlaneNormal { left: 4, right: 5, normal: Leaf { header: NodeHeaderEuclidean { bias: "3.7732" }, vector: [-1.0000, 0.0000] } }) - Tree 7: SplitPlaneNormal(SplitPlaneNormal { left: 10, right: 13, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.5117" }, vector: [1.0000, 0.0000] } }) - Tree 8: Descendants(Descendants { descendants: [0, 1] }) - Tree 9: Descendants(Descendants { descendants: [2] }) - Tree 10: SplitPlaneNormal(SplitPlaneNormal { left: 8, right: 9, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.2552" }, vector: [1.0000, 0.0000] } }) - Tree 11: Descendants(Descendants { descendants: [3] }) - Tree 12: Descendants(Descendants { descendants: [4, 5] }) - Tree 13: SplitPlaneNormal(SplitPlaneNormal { left: 11, right: 12, normal: Leaf { header: NodeHeaderEuclidean { bias: "-3.7260" }, vector: [1.0000, 0.0000] } }) + Tree 5: SplitPlaneNormal(SplitPlaneNormal { left: 8, right: 11, normal: Leaf { header: NodeHeaderEuclidean { bias: "-2.7500" }, vector: [1.0000, 0.0000] } }) + Tree 6: Descendants(Descendants { descendants: [0, 1] }) + Tree 7: Descendants(Descendants { descendants: [2] }) + Tree 8: SplitPlaneNormal(SplitPlaneNormal { left: 6, right: 7, normal: Leaf { header: NodeHeaderEuclidean { bias: "-1.3333" }, vector: [1.0000, 0.0000] } }) + Tree 9: Descendants(Descendants { descendants: [4, 5] }) + Tree 10: Descendants(Descendants { descendants: [3] }) + Tree 11: SplitPlaneNormal(SplitPlaneNormal { left: 9, right: 10, normal: Leaf { header: NodeHeaderEuclidean { bias: "3.7500" }, vector: [-1.0000, 0.0000] } }) Item 0: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [0.0000, 0.0000] }) Item 1: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [1.0000, 0.0000] }) Item 2: Leaf(Leaf { header: NodeHeaderEuclidean { bias: "0.0000" }, vector: [2.0000, 0.0000] })