in src/dachshund/core_transformer.rs [64:92]
fn process_batch(
&mut self,
graph_id: GraphId,
output: &Sender<(Option<String>, bool)>,
) -> CLQResult<()> {
let tuples: Vec<(i64, i64)> = self.batch.iter().map(|x| x.as_tuple()).collect();
let mut builder = SimpleUndirectedGraphBuilder {};
let graph = builder.from_vector(tuples)?;
let (coreness_map, anomaly_map) = CoreTransformer::compute_coreness_and_anomalies(&graph);
let original_id = self
.line_processor
.get_original_id(graph_id.value() as usize);
let mut coreness: Vec<(NodeId, usize)> = coreness_map.into_iter().collect();
coreness.sort_by_key(|(_node_id, coreness)| *coreness);
for (node_id, node_coreness) in coreness {
let degree = graph.get_node_degree(node_id);
let anomaly = anomaly_map.get(&node_id).unwrap();
let line: String = format!(
"{}\t{}\t{}\t{}\t{}",
original_id,
node_id.value(),
node_coreness,
degree,
anomaly
);
output.send((Some(line), false)).unwrap();
}
Ok(())
}