Improved style [skip ci]
This commit is contained in:
@@ -6,7 +6,7 @@ use std::os::raw::{c_char, c_double, c_float, c_int, c_longlong};
|
|||||||
pub struct MfNode {
|
pub struct MfNode {
|
||||||
pub u: c_int,
|
pub u: c_int,
|
||||||
pub v: c_int,
|
pub v: c_int,
|
||||||
pub r: c_float
|
pub r: c_float,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
@@ -14,7 +14,7 @@ pub struct MfProblem {
|
|||||||
pub m: c_int,
|
pub m: c_int,
|
||||||
pub n: c_int,
|
pub n: c_int,
|
||||||
pub nnz: c_longlong,
|
pub nnz: c_longlong,
|
||||||
pub r: *const MfNode
|
pub r: *const MfNode,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
@@ -34,7 +34,7 @@ pub struct MfParameter {
|
|||||||
pub c: c_float,
|
pub c: c_float,
|
||||||
pub do_nmf: bool,
|
pub do_nmf: bool,
|
||||||
pub quiet: bool,
|
pub quiet: bool,
|
||||||
pub copy_data: bool
|
pub copy_data: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
@@ -45,7 +45,7 @@ pub struct MfModel {
|
|||||||
pub k: c_int,
|
pub k: c_int,
|
||||||
pub b: c_float,
|
pub b: c_float,
|
||||||
pub p: *const c_float,
|
pub p: *const c_float,
|
||||||
pub q: *const c_float
|
pub q: *const c_float,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
@@ -59,7 +59,7 @@ pub enum Loss {
|
|||||||
BinaryL1 = 7,
|
BinaryL1 = 7,
|
||||||
OneClassRow = 10,
|
OneClassRow = 10,
|
||||||
OneClassCol = 11,
|
OneClassCol = 11,
|
||||||
OneClassL2 = 12
|
OneClassL2 = 12,
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use std::fmt;
|
|||||||
pub enum Error {
|
pub enum Error {
|
||||||
Io,
|
Io,
|
||||||
Parameter(String),
|
Parameter(String),
|
||||||
Unknown
|
Unknown,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl error::Error for Error {}
|
impl error::Error for Error {}
|
||||||
|
|||||||
@@ -1,26 +1,28 @@
|
|||||||
use crate::bindings::{MfNode, MfProblem};
|
use crate::bindings::{MfNode, MfProblem};
|
||||||
|
|
||||||
pub struct Matrix {
|
pub struct Matrix {
|
||||||
data: Vec<MfNode>
|
data: Vec<MfNode>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Matrix {
|
impl Matrix {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self { data: Vec::new() }
|
||||||
data: Vec::new()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_capacity(capacity: usize) -> Self {
|
pub fn with_capacity(capacity: usize) -> Self {
|
||||||
Self {
|
Self {
|
||||||
data: Vec::with_capacity(capacity)
|
data: Vec::with_capacity(capacity),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn push(&mut self, row_index: i32, column_index: i32, value: f32) {
|
pub fn push(&mut self, row_index: i32, column_index: i32, value: f32) {
|
||||||
assert!(row_index >= 0);
|
assert!(row_index >= 0);
|
||||||
assert!(column_index >= 0);
|
assert!(column_index >= 0);
|
||||||
self.data.push(MfNode { u: row_index, v: column_index, r: value });
|
self.data.push(MfNode {
|
||||||
|
u: row_index,
|
||||||
|
v: column_index,
|
||||||
|
r: value,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn to_problem(&self) -> MfProblem {
|
pub(crate) fn to_problem(&self) -> MfProblem {
|
||||||
@@ -32,7 +34,7 @@ impl Matrix {
|
|||||||
m,
|
m,
|
||||||
n,
|
n,
|
||||||
nnz: data.len() as i64,
|
nnz: data.len() as i64,
|
||||||
r: data.as_ptr()
|
r: data.as_ptr(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ impl Model {
|
|||||||
pub fn load<P: AsRef<Path>>(path: P) -> Result<Self, Error> {
|
pub fn load<P: AsRef<Path>>(path: P) -> Result<Self, Error> {
|
||||||
// TODO better conversion
|
// TODO better conversion
|
||||||
let cpath = CString::new(path.as_ref().to_str().unwrap())?;
|
let cpath = CString::new(path.as_ref().to_str().unwrap())?;
|
||||||
let model = unsafe { mf_load_model(cpath.as_ptr()) };
|
let model = unsafe { mf_load_model(cpath.as_ptr()) };
|
||||||
if model.is_null() {
|
if model.is_null() {
|
||||||
return Err(Error::Io);
|
return Err(Error::Io);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,16 +2,14 @@ use crate::bindings::*;
|
|||||||
use crate::{Error, Loss, Matrix, Model};
|
use crate::{Error, Loss, Matrix, Model};
|
||||||
|
|
||||||
pub struct Params {
|
pub struct Params {
|
||||||
param: MfParameter
|
param: MfParameter,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Params {
|
impl Params {
|
||||||
pub(crate) fn new() -> Self {
|
pub(crate) fn new() -> Self {
|
||||||
let mut param = unsafe { mf_get_default_param() };
|
let mut param = unsafe { mf_get_default_param() };
|
||||||
param.nr_bins = 25;
|
param.nr_bins = 25;
|
||||||
Self {
|
Self { param }
|
||||||
param
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn loss(&mut self, value: Loss) -> &mut Self {
|
pub fn loss(&mut self, value: Loss) -> &mut Self {
|
||||||
|
|||||||
Reference in New Issue
Block a user