read_recphyloxml_thickness/
read_recphyloxml_thickness.rs

1// Display a reconciled tree form recPhyloXML format
2
3use light_phylogeny::{
4    get_gtransfer, read_recphyloxml_multi, recphyloxml_processing, ArenaTree, Config, Options,
5};
6use std::env;
7
8fn main() {
9    env::set_var("RUST_LOG", "info");
10    let transfers = vec![];
11    let mut options: Options = Options::new();
12    let mut config: Config = Config::new();
13    options.verbose = true;
14    env::set_var("RUST_LOG", "info");
15
16    config.species_opacity = "0.3".to_string();
17    config.gene_opacity = "0.6".to_string();
18
19    // Version de base
20    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
21    let mut gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
22    let mut global_roots: std::vec::Vec<usize> = Vec::new();
23    read_recphyloxml_multi(
24        "examples/concat.xml".to_string(),
25        &mut sp_tree,
26        &mut gene_trees,
27        &mut global_roots,
28    );
29
30    //  Recupere les transferts
31    let nb_gntree = gene_trees.len().clone();
32    let mut gene_transfers = get_gtransfer(&mut gene_trees[0]);
33    let mut i = 1;
34    while i < nb_gntree {
35        let gene_transfer = get_gtransfer(&mut gene_trees[i]);
36        for val in gene_transfer {
37            gene_transfers.push(val);
38        }
39        i = i + 1;
40    }
41
42    println!("Transfers = {:?}", gene_transfers);
43
44    let mut selected_gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
45    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
46    recphyloxml_processing(
47        &mut sp_tree,
48        &mut gene_trees,
49        &mut options,
50        &config,
51        true,
52        &transfers,
53        "read_recphyloxml_threshold_1.svg".to_string(),
54    );
55    println!("Please open output file 'read_recphyloxml_threshold_1.svg' with your browser");
56
57    // Version opacite
58    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
59    let mut gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
60    let mut global_roots: std::vec::Vec<usize> = Vec::new();
61    read_recphyloxml_multi(
62        "examples/concat.xml".to_string(),
63        &mut sp_tree,
64        &mut gene_trees,
65        &mut global_roots,
66    );
67    options.thickness_flag = true;
68    recphyloxml_processing(
69        &mut sp_tree,
70        &mut selected_gene_trees,
71        &mut options,
72        &config,
73        true,
74        &gene_transfers,
75        "read_recphyloxml_threshold_2.svg".to_string(),
76    );
77    println!("Please open output file 'read_recphyloxml_threshold_2.svg' with your browser");
78
79    // Version opacite et seuil
80    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
81    let mut gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
82    let mut global_roots: std::vec::Vec<usize> = Vec::new();
83    read_recphyloxml_multi(
84        "examples/concat.xml".to_string(),
85        &mut sp_tree,
86        &mut gene_trees,
87        &mut global_roots,
88    );
89    options.thickness_flag = true;
90    options.thickness_thresh = 0;
91    options.thickness_disp_score = true;
92    options.rotate = false;
93    let mut selected_gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
94    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
95    recphyloxml_processing(
96        &mut sp_tree,
97        &mut selected_gene_trees,
98        &mut options,
99        &config,
100        true,
101        &gene_transfers,
102        "read_recphyloxml_threshold_3.svg".to_string(),
103    );
104    println!("Please open output file 'read_recphyloxml_threshold_3.svg' with your browser");
105
106    // Version opacite et seuil
107    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
108    let mut gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
109    let mut global_roots: std::vec::Vec<usize> = Vec::new();
110    read_recphyloxml_multi(
111        "examples/concat.xml".to_string(),
112        &mut sp_tree,
113        &mut gene_trees,
114        &mut global_roots,
115    );
116    options.thickness_flag = true;
117    options.thickness_thresh = 0;
118    options.thickness_disp_score = true;
119    options.rotate = false;
120    options.trans_end = Some("species_17".to_string());
121    let mut selected_gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
122    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
123    recphyloxml_processing(
124        &mut sp_tree,
125        &mut selected_gene_trees,
126        &mut options,
127        &config,
128        true,
129        &gene_transfers,
130        "read_recphyloxml_threshold_4.svg".to_string(),
131    );
132    println!("Please open output file 'read_recphyloxml_threshold_4.svg' with your browser");
133
134    // Version opacite et seuil
135    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
136    let mut gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
137    let mut global_roots: std::vec::Vec<usize> = Vec::new();
138    read_recphyloxml_multi(
139        "examples/concat.xml".to_string(),
140        &mut sp_tree,
141        &mut gene_trees,
142        &mut global_roots,
143    );
144    options.thickness_flag = true;
145    options.thickness_thresh = 0;
146    options.thickness_disp_score = true;
147    options.rotate = false;
148    options.trans_end = Some("species_18".to_string());
149    let mut selected_gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
150    selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
151    recphyloxml_processing(
152        &mut sp_tree,
153        &mut selected_gene_trees,
154        &mut options,
155        &config,
156        true,
157        &gene_transfers,
158        "read_recphyloxml_threshold_5.svg".to_string(),
159    );
160    println!("Please open output file 'read_recphyloxml_threshold_5.svg' with your browser");
161
162    // Version opacite et seuil
163    let mut sp_tree: ArenaTree<String> = ArenaTree::default();
164    let mut gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
165    let mut global_roots: std::vec::Vec<usize> = Vec::new();
166    read_recphyloxml_multi(
167        "examples/concat.xml".to_string(),
168        &mut sp_tree,
169        &mut gene_trees,
170        &mut global_roots,
171    );
172    options.thickness_flag = true;
173    options.thickness_thresh = 0;
174    options.thickness_disp_score = true;
175    options.rotate = false;
176    options.trans_end = None;
177    options.thickness_gene = 0;
178    let mut selected_gene_trees: std::vec::Vec<ArenaTree<String>> = Vec::new();
179    //selected_gene_trees.push(gene_trees.remove(options.thickness_gene));
180    recphyloxml_processing(
181        &mut sp_tree,
182        &mut selected_gene_trees,
183        &mut options,
184        &config,
185        true,
186        &gene_transfers,
187        "read_recphyloxml_threshold_6.svg".to_string(),
188    );
189    println!("Please open output file 'read_recphyloxml_threshold_6.svg' with your browser");
190}