1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Display a reconciled tree form recPhyloXML format

use light_phylogeny::{ArenaTree,Options,Config,read_recphyloxml_multi,recphyloxml_processing,
    get_gtransfer};
use std::env;

fn main() {
	env::set_var("RUST_LOG", "info");
    let transfers = vec![];
    let mut options: Options = Options::new();
    let mut config: Config = Config::new();
	options.verbose = true; 
	env::set_var("RUST_LOG", "info");

    config.species_opacity = "0.3".to_string();
    config.gene_opacity = "0.6".to_string();

    // Version de base
    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
    let mut gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    let mut global_roots: std::vec::Vec<usize> = Vec::new();
    read_recphyloxml_multi("examples/concat.xml".to_string(),
        &mut sp_tree, &mut gene_trees, &mut global_roots);

    //  Recupere les transferts
    let  nb_gntree =  gene_trees.len().clone();
    let mut gene_transfers = get_gtransfer(&mut gene_trees[0]);
    let mut i = 1;
    while i < nb_gntree {
        let gene_transfer = get_gtransfer(&mut gene_trees[i]);
        for val in gene_transfer {
            gene_transfers.push(val);
        }
        i = i + 1;
    }

    println!("Transfers = {:?}",gene_transfers);

    let mut selected_gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
    recphyloxml_processing(&mut sp_tree, &mut gene_trees, &mut options, &config, true,
         &transfers, "read_recphyloxml_threshold_1.svg".to_string());
    println!("Please open output file 'read_recphyloxml_threshold_1.svg' with your browser");

    // Version opacite
    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
    let mut gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    let mut global_roots: std::vec::Vec<usize> = Vec::new();
    read_recphyloxml_multi("examples/concat.xml".to_string(),
        &mut sp_tree, &mut gene_trees, &mut global_roots);
    options.thickness_flag = true;
    recphyloxml_processing(&mut sp_tree, &mut selected_gene_trees, &mut options, &config, true,
         &gene_transfers, "read_recphyloxml_threshold_2.svg".to_string());
    println!("Please open output file 'read_recphyloxml_threshold_2.svg' with your browser");

    // Version opacite et seuil
    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
    let mut gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    let mut global_roots: std::vec::Vec<usize> = Vec::new();
    read_recphyloxml_multi("examples/concat.xml".to_string(),
        &mut sp_tree, &mut gene_trees, &mut global_roots);
    options.thickness_flag = true;
    options.thickness_thresh = 0;
    options.thickness_disp_score = true;
    options.rotate = false;
    let mut selected_gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
    recphyloxml_processing(&mut sp_tree, &mut selected_gene_trees, &mut options, &config, true,
         &gene_transfers, "read_recphyloxml_threshold_3.svg".to_string());
    println!("Please open output file 'read_recphyloxml_threshold_3.svg' with your browser");


    // Version opacite et seuil
    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
    let mut gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    let mut global_roots: std::vec::Vec<usize> = Vec::new();
    read_recphyloxml_multi("examples/concat.xml".to_string(),
        &mut sp_tree, &mut gene_trees, &mut global_roots);
    options.thickness_flag = true;
    options.thickness_thresh = 0;
    options.thickness_disp_score = true;
    options.rotate = false;
    options.trans_end=Some("species_17".to_string());
    let mut selected_gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
    recphyloxml_processing(&mut sp_tree, &mut selected_gene_trees, &mut options, &config, true,
         &gene_transfers, "read_recphyloxml_threshold_4.svg".to_string());
    println!("Please open output file 'read_recphyloxml_threshold_4.svg' with your browser");

    // Version opacite et seuil
    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
    let mut gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    let mut global_roots: std::vec::Vec<usize> = Vec::new();
    read_recphyloxml_multi("examples/concat.xml".to_string(),
        &mut sp_tree, &mut gene_trees, &mut global_roots);
    options.thickness_flag = true;
    options.thickness_thresh = 0;
    options.thickness_disp_score = true;
    options.rotate = false;
    options.trans_end=Some("species_18".to_string());
    let mut selected_gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
    recphyloxml_processing(&mut sp_tree, &mut selected_gene_trees, &mut options, &config, true,
         &gene_transfers, "read_recphyloxml_threshold_5.svg".to_string());
    println!("Please open output file 'read_recphyloxml_threshold_5.svg' with your browser");


    // Version opacite et seuil
    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
    let mut gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    let mut global_roots: std::vec::Vec<usize> = Vec::new();
    read_recphyloxml_multi("examples/concat.xml".to_string(),
        &mut sp_tree, &mut gene_trees, &mut global_roots);
    options.thickness_flag = true;
    options.thickness_thresh = 0;
    options.thickness_disp_score = true;
    options.rotate = false;
    options.trans_end=None;
    options.thickness_gene = 0;
    let mut selected_gene_trees:std::vec::Vec<ArenaTree<String>> = Vec::new();
    //selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
    recphyloxml_processing(&mut sp_tree, &mut selected_gene_trees, &mut options, &config, true,
         &gene_transfers, "read_recphyloxml_threshold_6.svg".to_string());
    println!("Please open output file 'read_recphyloxml_threshold_6.svg' with your browser");




}