snark-tool 0.4.0

snark-tool library contains structures and algorithm for (mainly) cubic graph analysis
Documentation
use crate::graph::undirected::simple_graph::graph::SimpleGraph;
use crate::procedure::basic_procedures::chrom_props::chromatic_properties::ChromaticPropsProcedureBuilder;
use crate::procedure::basic_procedures::chrom_props::config::{
    ChromaticPropertiesToCompute, ChromaticPropsProcedureConfig, ParallelizationType,
};
use crate::procedure::basic_procedures::colour::{
    ColourProcedureBuilder, ColourProcedureConfig, ColouriserType,
};
use crate::procedure::basic_procedures::constructions::{
    ConstructionProcedureBuilder, ConstructionProcedureConfig, ConstructionType,
};
use crate::procedure::basic_procedures::counter::{
    CounterProcedureBuilder, CounterProcedureConfig,
};
use crate::procedure::basic_procedures::filter::{FilterProcedureBuilder, FilterProcedureConfig};
use crate::procedure::basic_procedures::read;
use crate::procedure::basic_procedures::read::{ReadProcedureBuilder, ReadProcedureConfig};
use crate::procedure::basic_procedures::write::{WriteProcedureBuilder, WriteProcedureConfig};
use crate::procedure::procedure::{GraphProperties, Procedure};
use crate::procedure::procedure_chain::ProcedureChain;
use crate::tests::test_data::test_data;
use std::collections::HashMap;

#[test]
fn should_create_procedure_chain() {
    let read_config = ReadProcedureConfig::new(
        test_data::GG_30_G05_CYC4_G6_100_FILE_PATH.to_string(),
        read::G6_FORMAT.to_string(),
        None,
    );
    let read = ReadProcedureBuilder::build(read_config);
    let colour_config = ColourProcedureConfig::default();
    let colour = ColourProcedureBuilder::build(colour_config);
    let counter_config = CounterProcedureConfig::new(true);
    let counter = CounterProcedureBuilder::build(counter_config);

    let mut procedures = vec![];
    procedures.push(read);
    procedures.push(colour);
    procedures.push(counter);

    let chain = ProcedureChain::from_procedures(procedures).unwrap();
    let mut graphs_with_properties: Vec<(SimpleGraph, GraphProperties)> = vec![];
    let _result = chain.run(&mut graphs_with_properties);
}

#[test]
fn should_create_procedures() {
    let read_config = ReadProcedureConfig::new(
        test_data::GG_30_G05_CYC4_G6_100_FILE_PATH.to_string(),
        read::G6_FORMAT.to_string(),
        None,
    );
    let read = ReadProcedureBuilder::build(read_config);
    let colour_config = ColourProcedureConfig::default();
    let colour = ColourProcedureBuilder::build(colour_config);
    let counter_config = CounterProcedureConfig::new(true);
    let counter = CounterProcedureBuilder::build(counter_config);
    let construction_config = ConstructionProcedureConfig::new(ConstructionType::IExtension);
    let construction = ConstructionProcedureBuilder::build(construction_config);
    let filter_properties = HashMap::new();
    let filter_config = FilterProcedureConfig::new(filter_properties);
    let filter = FilterProcedureBuilder::build(filter_config);
    let write_config = WriteProcedureConfig::default();
    let write = WriteProcedureBuilder::build(write_config);
    let to_compute = ChromaticPropertiesToCompute::new();
    let chrom_props_config = ChromaticPropsProcedureConfig::new(
        ColouriserType::Dfs,
        ParallelizationType::None,
        to_compute,
        1,
    );
    let chrom_props = ChromaticPropsProcedureBuilder::build(chrom_props_config);

    let mut procedures: Vec<Box<dyn Procedure<SimpleGraph>>> = vec![];
    procedures.push(read);
    procedures.push(colour);
    procedures.push(counter);
    procedures.push(construction);
    procedures.push(filter);
    procedures.push(write);
    procedures.push(chrom_props);
}