Sélectionner une révision Git
-
Thomas MESLIN a rédigéThomas MESLIN a rédigé
graph_export.ml 3,17 Kio
let create_gexf path node_data edge_data =
let oc = open_out path in
let date = "2025-04-08" in (*yyyy-mm-dd*)
(*Création de l'HEADER*)
output_string oc "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
output_string oc
("<gexf xmlns=\"http://gexf.net/1.3\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://gexf.net/1.3
http://gexf.net/1.3/gexf.xsd\"
version=\"1.3\">
<meta lastmodifieddate=\""^date^"\">
<creator>Me</creator>
<description>A test file</description>
</meta>\n");
(*End_HEADER*)
(*Start graph*)
output_string oc " <graph defaultedgetype=\"undirected\">\n";
(*Ajout de la categorie*)
output_string oc
" <attributes class=\"node\">
<attribute id=\"0\" title=\"cat\" type=\"string\">
<default>Eleve</default>
</attribute>
</attributes>\n";
(*start nodes*)
output_string oc " <nodes>\n";
Csv.iter_line node_data
(fun htab ->
let id = Hashtbl.find htab "Id" in
let label = Hashtbl.find htab "Label" in
let cat = Hashtbl.find htab "Categorie" in
let nouvelle_ligne =
if cat = "Eleve" then
Printf.sprintf " <node id=\"%s\" label=\"%s\"/>\n" id label
else
Printf.sprintf
" <node id=\"%s\" label=\"%s\">
<attvalues>
<attvalue for=\"0\" value=\"%s\"/>
</attvalues>
</node>\n" id label cat
in
output_string oc nouvelle_ligne
);
(*end nodes*)
output_string oc " </nodes>\n";
(*start edges*)
output_string oc " <edges>\n";
Csv.iter_line edge_data
(fun htab ->
let id = Hashtbl.find htab "Id" in
let src = Hashtbl.find htab "Source" in
let tgt = Hashtbl.find htab "Target" in
let weight = Hashtbl.find htab "Weight" in
let nouvelle_ligne = Printf.sprintf " <edge id=\"%s\" source=\"%s\" target=\"%s\" weight=\"%s\"/>\n" id src tgt weight in
output_string oc nouvelle_ligne
);
(*end edges*)
output_string oc " </edges>\n";
(*End graph*)
output_string oc " </graph>\n";
output_string oc "</gexf>\n";
close_out oc
let () = begin
let node_data = Csv.open_as_csv "../../res_script/nodes_avec_fantome.csv" in
(*Id,Label,Categorie*)
let edge_data = Csv.open_as_csv "../../res_script/edges_avec_fantome.csv" in
(*Source,Target,Type,Id,Weight*)
create_gexf "../../res_script/mynetwork.gexf" node_data edge_data;
print_endline "Graphes exporté au bon format avec succès"
end