fn process_batch()

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(())
    }