From 8b18c1a5708fa56e8b34e5b91f0747d205b617a4 Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Sun, 20 Nov 2022 17:09:39 +0100 Subject: [PATCH] formatting --- .vscode/settings.json | 3 +++ src/lib.rs | 21 ++++++++++++--------- src/reader.rs | 1 - src/runner.rs | 34 +++++++++++++++++++++++----------- src/spring_model.rs | 14 ++++++-------- src/utils.rs | 2 -- 6 files changed, 44 insertions(+), 31 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ebfde9a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.formatOnSave": true, +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 5dda95c..e6622dd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,17 +1,20 @@ -mod runner; -mod utils; -mod spring_model; mod graph; +mod runner; +mod spring_model; +mod utils; use pyo3::prelude::*; /// Formats the sum of two numbers as string. -#[pyfunction(number_of_nodes, edges, "*", iter=500, threads=0)] -fn layout_from_edge_list(number_of_nodes: usize, edges: Vec<(u32, u32)>, iter: usize, threads: usize) -> PyResult> { +#[pyfunction(number_of_nodes, edges, "*", iter = 500, threads = 0)] +fn layout_from_edge_list( + number_of_nodes: usize, + edges: Vec<(u32, u32)>, + iter: usize, + threads: usize, +) -> PyResult> { let r = runner::Runner::new(iter, threads); - Ok( - r.layout(number_of_nodes, edges) - ) + Ok(r.layout(number_of_nodes, edges)) } /// A Python module implemented in Rust. @@ -19,4 +22,4 @@ fn layout_from_edge_list(number_of_nodes: usize, edges: Vec<(u32, u32)>, iter: u fn graph_force(_py: Python, m: &PyModule) -> PyResult<()> { m.add_function(wrap_pyfunction!(layout_from_edge_list, m)?)?; Ok(()) -} \ No newline at end of file +} diff --git a/src/reader.rs b/src/reader.rs index 0144b8a..e5d2f4d 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -1,4 +1,3 @@ - /** * Read Graph data from file * Format: diff --git a/src/runner.rs b/src/runner.rs index cabff5b..3bd4062 100644 --- a/src/runner.rs +++ b/src/runner.rs @@ -1,9 +1,8 @@ - -use std::sync::{Arc, RwLock}; -use std::thread; -use crate::graph::{EdgeMatrix, new_node_vector, new_edge_matrix}; +use crate::graph::{new_edge_matrix, new_node_vector, EdgeMatrix}; use crate::spring_model; use crate::utils; +use std::sync::{Arc, RwLock}; +use std::thread; pub struct Runner { iterations: usize, @@ -14,8 +13,14 @@ impl Runner { pub fn new(iterations: usize, threads: usize) -> Self { if threads == 0 { match std::thread::available_parallelism() { - Ok(threads) => Runner { iterations, threads: threads.get() }, - Err(_) => Runner { iterations, threads: 1 }, + Ok(threads) => Runner { + iterations, + threads: threads.get(), + }, + Err(_) => Runner { + iterations, + threads: 1, + }, } } else { Runner { @@ -25,14 +30,22 @@ impl Runner { } } - pub fn layout(self: &Self, number_of_nodes: usize, edge_list: Vec<(u32, u32)>) -> Vec<(f32, f32)> { + pub fn layout( + self: &Self, + number_of_nodes: usize, + edge_list: Vec<(u32, u32)>, + ) -> Vec<(f32, f32)> { // let edges = connection_matrix(size); let edges = edge_matrix_from_edge_list(number_of_nodes, edge_list); let mut nodes = new_node_vector(number_of_nodes); let mut nodes_next = new_node_vector(number_of_nodes); // let model = Arc::new(RwLock::new(spring_model::InitialModel::new(edges, number_of_nodes))); - let model = Arc::new(RwLock::new(spring_model::MyModel::new(edges, number_of_nodes, self.iterations))); + let model = Arc::new(RwLock::new(spring_model::MyModel::new( + edges, + number_of_nodes, + self.iterations, + ))); let chunks = utils::gen_chunks(number_of_nodes, self.threads); for _epoch in 0..self.iterations { @@ -45,7 +58,7 @@ impl Runner { let model = model.clone(); let handle = thread::spawn(move || { for n in chunk { - let update = model.read().unwrap().step(&nodes,n); + let update = model.read().unwrap().step(&nodes, n); let mut result = nodes_next[n].write().unwrap(); result.x = update.x; result.y = update.y; @@ -57,7 +70,7 @@ impl Runner { for handle in handles { handle.join().unwrap(); } - + // swap nodes and nodes_next let tmp = nodes.clone(); nodes = nodes_next.clone(); @@ -84,4 +97,3 @@ fn edge_matrix_from_edge_list(number_of_nodes: usize, edge_list: Vec<(u32, u32)> } matrix_ptr } - diff --git a/src/spring_model.rs b/src/spring_model.rs index bdbda5c..94168e1 100644 --- a/src/spring_model.rs +++ b/src/spring_model.rs @@ -1,4 +1,4 @@ -use crate::graph::{EdgeMatrix, NodeVector, Node}; +use crate::graph::{EdgeMatrix, Node, NodeVector}; pub struct MyModel { edges: EdgeMatrix, @@ -9,26 +9,24 @@ pub struct MyModel { } impl MyModel { - pub fn new(edges: EdgeMatrix, size: usize, iterations: usize) -> MyModel { let opt_dist = 1.0; let c = 0.1; - MyModel{ + MyModel { edges, size, opt_dist, c: c, - dc: c / ((iterations + 1) as f32) + dc: c / ((iterations + 1) as f32), } } - pub fn prepare(& mut self, _nodes: &NodeVector) { + pub fn prepare(&mut self, _nodes: &NodeVector) { self.c -= self.dc; } pub fn step(&self, nodes: &NodeVector, i_node: usize) -> Node { - let node = nodes[i_node].read().unwrap(); let edges = self.edges.read().unwrap(); @@ -79,10 +77,10 @@ impl MyModel { let sum_l = (sum_x * sum_x + sum_y * sum_y).sqrt().max(1e-6).recip() * self.c; let sum_x = sum_x * sum_l; let sum_y = sum_y * sum_l; - + Node { x: node_x + sum_x, y: node_y + sum_y, - } + } } } diff --git a/src/utils.rs b/src/utils.rs index 87d8cc9..7be8f55 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -15,7 +15,6 @@ pub fn gen_chunks(n: usize, chunks: usize) -> Vec> { borders } - #[cfg(test)] mod test { use super::*; @@ -37,5 +36,4 @@ mod test { let borders = gen_chunks(10, 1); assert_eq!(borders, vec![(0..10)]); } - }