Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • d50010f360b63862bb058b991e1b62f4d9146520
  • main par défaut protégée
2 résultats

graph_export.ml

Blame
  • 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