use arrow_array::types::{Float32Type, Float64Type};
use arrow_array::{FixedSizeListArray, PrimitiveArray};
use super::{
ArrowInteropError, complex64_matrix_from_owned, complex64_matrix_view,
complex64_vector_from_owned, fixed_size_list_from_owned, fixed_size_list_view,
primitive_array_from_owned,
};
pub fn column_means_f32(
matrix: &FixedSizeListArray,
) -> Result<PrimitiveArray<Float32Type>, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float32Type>(matrix)?;
Ok(primitive_array_from_owned::<Float32Type>(crate::ml::stats::column_means_view(
&matrix_view,
)))
}
pub fn column_means_f64(
matrix: &FixedSizeListArray,
) -> Result<PrimitiveArray<Float64Type>, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float64Type>(matrix)?;
Ok(primitive_array_from_owned::<Float64Type>(crate::ml::stats::column_means_view(
&matrix_view,
)))
}
pub fn center_columns_f32(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float32Type>(matrix)?;
let output = crate::ml::stats::center_columns_view(&matrix_view);
fixed_size_list_from_owned::<Float32Type>(output)
}
pub fn center_columns_f64(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float64Type>(matrix)?;
let output = crate::ml::stats::center_columns_view(&matrix_view);
fixed_size_list_from_owned::<Float64Type>(output)
}
pub fn covariance_matrix_f32(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float32Type>(matrix)?;
let output = crate::ml::stats::covariance_matrix_view(&matrix_view)?;
fixed_size_list_from_owned::<Float32Type>(output)
}
pub fn covariance_matrix_f64(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float64Type>(matrix)?;
let output = crate::ml::stats::covariance_matrix_view(&matrix_view)?;
fixed_size_list_from_owned::<Float64Type>(output)
}
pub fn correlation_matrix_f32(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float32Type>(matrix)?;
let output = crate::ml::stats::correlation_matrix_view(&matrix_view)?;
fixed_size_list_from_owned::<Float32Type>(output)
}
pub fn correlation_matrix_f64(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = fixed_size_list_view::<Float64Type>(matrix)?;
let output = crate::ml::stats::correlation_matrix_view(&matrix_view)?;
fixed_size_list_from_owned::<Float64Type>(output)
}
pub fn column_means_complex(
matrix: &FixedSizeListArray,
) -> Result<(arrow_schema::Field, FixedSizeListArray), ArrowInteropError> {
let matrix_view = complex64_matrix_view(matrix)?;
complex64_vector_from_owned(
"column_means_complex",
crate::ml::stats::column_means_complex_view(&matrix_view),
)
}
pub fn center_columns_complex(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = complex64_matrix_view(matrix)?;
complex64_matrix_from_owned(crate::ml::stats::center_columns_complex_view(&matrix_view))
}
pub fn covariance_matrix_complex(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = complex64_matrix_view(matrix)?;
complex64_matrix_from_owned(crate::ml::stats::covariance_matrix_complex_view(&matrix_view)?)
}
pub fn correlation_matrix_complex(
matrix: &FixedSizeListArray,
) -> Result<FixedSizeListArray, ArrowInteropError> {
let matrix_view = complex64_matrix_view(matrix)?;
complex64_matrix_from_owned(crate::ml::stats::correlation_matrix_complex_view(&matrix_view)?)
}