Skip to content
Extraits de code Groupes Projets
Valider ae116fd7 rédigé par Thomas MESLIN's avatar Thomas MESLIN
Parcourir les fichiers

Generation des nodes et edges pour faire un graphe

parent 041baa4f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -52,6 +52,10 @@ let merge_column rand_csv col_name1 col_name2 new_col_name f = ...@@ -52,6 +52,10 @@ let merge_column rand_csv col_name1 col_name2 new_col_name f =
{column_name = new_col_name;data = new_data} {column_name = new_col_name;data = new_data}
let del_column csv nom_col =
merge_column csv nom_col nom_col "" (fun a b -> "")
let map rand_csv col_name f = begin let map rand_csv col_name f = begin
let idx = trouve_indice rand_csv.column_name col_name in let idx = trouve_indice rand_csv.column_name col_name in
let new_data = List.map let new_data = List.map
...@@ -122,5 +126,55 @@ let create_line csv l = ...@@ -122,5 +126,55 @@ let create_line csv l =
set_arg l; set_arg l;
add_line csv arr add_line csv arr
let to_graph csv col_name_label =
let nodes = create ["Id";"Label"] in
let edges = create ["Source";"Target";"Type";"Id";"Weight"] in
let hash_node = Hashtbl.create (List.length csv.column_name) in
let rec ajoute_assos node k nom_assos = match nom_assos with
|[] -> node,k
|nom_assos :: tl ->
if nom_assos <> "" && not (String.equal nom_assos col_name_label) then begin
Hashtbl.add hash_node nom_assos (string_of_int k);
ajoute_assos (add_line node [|string_of_int k;nom_assos|]) (k+1) tl
end
else
ajoute_assos node k tl
in
let nodes,k = ajoute_assos nodes 0 csv.column_name in
let id = trouve_indice csv.column_name col_name_label in
let ajoute_label node k =
let id = trouve_indice csv.column_name col_name_label in
let node,k = List.fold_left (fun (node,acc) arr ->
let label = arr.(id) in
Hashtbl.add hash_node label (string_of_int acc);
(add_line node [|string_of_int acc;label|],acc + 1)
)
(node,k) csv.data
in
node,k
in
let nodes,k = ajoute_label nodes k in
let ajoute_arete edge label assos k poids =
add_line edge [|Hashtbl.find hash_node label;Hashtbl.find hash_node assos;"Undirected";k;poids|]
in
let ajoute_arete_ligne edge arr k_i =
let label = arr.(id) in
let edge,k,_ = List.fold_left (fun (edge,k,i) nom_col ->
if arr.(i) = "" || nom_col = "" || String.equal nom_col col_name_label
then
(edge,k,i+1)
else
(ajoute_arete edge label nom_col (string_of_int k) arr.(i),k+1,i+1))
(edge,k_i,0) csv.column_name
in
edge,k
in
let edges,k = List.fold_left (fun (edge,k) arr -> ajoute_arete_ligne edge arr k) (edges,0) csv.data in
edges,nodes
...@@ -25,7 +25,16 @@ let () = begin ...@@ -25,7 +25,16 @@ let () = begin
let _ = apply_coef coef_asso points_assos in let _ = apply_coef coef_asso points_assos in
let _ = apply_coef coef_liste points_assos in let _ = apply_coef coef_liste points_assos in
Csv.save points_assos "../../res_script/point_assos_re_coefficiente.csv"
Csv.save points_assos "../../res_script/point_assos_re_coefficiente.csv";
let points_assos = Csv.merge_column points_assos "NOM" "Prénom" "Nom Prenom" (fun a b -> a ^ " " ^b) in
let points_assos = Csv.del_column points_assos "Formation" in
let points_assos = Csv.del_column points_assos "Total" in
let points_assos = Csv.del_column points_assos "Assos" in
let edges,nodes= Csv.to_graph points_assos "Nom Prenom" in
Csv.save nodes "../../res_script/nodes.csv";
Csv.save edges "../../res_script/edges.csv";
print_endline "Graphe généré avec succès !"
end end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter