diff --git a/ocaml/Block.ml b/ocaml/Block.ml index 36cb482..1d969aa 100644 --- a/ocaml/Block.ml +++ b/ocaml/Block.ml @@ -127,12 +127,11 @@ let update_raw_data ?(locked=true) () = with | End_of_file -> List.rev accu in - List.map (fun filename -> + List.concat_map (fun filename -> let ic = open_in filename in let result = aux ic [] in close_in ic; result ) files - |> List.concat |> transform [] in result diff --git a/ocaml/Input.ml b/ocaml/Input.ml index 16c7d94..efd9292 100644 --- a/ocaml/Input.ml +++ b/ocaml/Input.ml @@ -840,7 +840,8 @@ end = struct let read () = - List.map (fun x -> (x, Property.calc x)) Property.all + List.rev_map (fun x -> (x, Property.calc x)) Property.all + |> List.rev let write l = @@ -848,17 +849,18 @@ end = struct let to_string l = - List.map (fun (x,b) -> + List.rev_map (fun (x,b) -> let ch = if b then "X" else " " in Printf.sprintf "(%s) %s" ch (Property.to_string x)) l + |> List.rev |> String.concat "\n" let of_string s = String.split_on_char '\n' s - |> List.map (fun x -> + |> List.rev_map (fun x -> let (calc,prop) = String.trim x |> String_ext.rsplit2_exn ~on:' ' @@ -874,6 +876,7 @@ end = struct in (prop, calc) ) + |> List.rev end diff --git a/ocaml/Message.ml b/ocaml/Message.ml index a6601ba..1c34cea 100644 --- a/ocaml/Message.ml +++ b/ocaml/Message.ml @@ -56,7 +56,8 @@ let create m = | (0,tail) -> let result = List.rev accu - |> List.map float_of_string + |> List.rev_map float_of_string + |> List.rev |> Array.of_list in (result, tail) diff --git a/ocaml/QmcMd5.ml b/ocaml/QmcMd5.ml index ee09049..ef70acf 100644 --- a/ocaml/QmcMd5.ml +++ b/ocaml/QmcMd5.ml @@ -111,8 +111,8 @@ let hash () = in let md5_string = files_to_track - |> List.map (fun x -> Printf.sprintf "%s/%s" ezfio_filename x) - |> List.map hash_file + |> List.rev_map (fun x -> Printf.sprintf "%s/%s" ezfio_filename x) + |> List.rev_map hash_file |> String.concat "" in diff --git a/ocaml/Qmcchem_dataserver.ml b/ocaml/Qmcchem_dataserver.ml index 2d79c3e..0b3fe53 100644 --- a/ocaml/Qmcchem_dataserver.ml +++ b/ocaml/Qmcchem_dataserver.ml @@ -231,7 +231,8 @@ let run ?(daemon=true) ezfio_filename = Array.map Array.to_list walkers_array |> Array.to_list |> List.concat - |> List.map float_of_string + |> List.rev_map float_of_string + |> List.rev in Ezfio.set_electrons_elec_coord_pool (Ezfio.ezfio_array_of_list ~rank:3 ~dim:[| elec_num+1 ; 3 ; walk_num_tot |] ~data:walkers_list); @@ -631,7 +632,8 @@ let run ?(daemon=true) ezfio_filename = Unix.gettimeofday () in let msg = - List.map String.trim raw_msg + List.rev_map String.trim raw_msg + |> List.rev |> Message.create and msg_size = List.fold_left (fun accu x -> accu + (String.length x)) 0 raw_msg @@ -716,7 +718,8 @@ let run ?(daemon=true) ezfio_filename = Unix.gettimeofday () in let msg = - List.map String.trim raw_msg + List.rev_map String.trim raw_msg + |> List.rev |> Message.create and msg_size = List.fold_left (fun accu x -> accu + (String.length x)) 0 raw_msg diff --git a/ocaml/Qmcchem_edit.ml b/ocaml/Qmcchem_edit.ml index 0258f87..dc700b3 100644 --- a/ocaml/Qmcchem_edit.ml +++ b/ocaml/Qmcchem_edit.ml @@ -83,7 +83,7 @@ let create_temp_file ?temp_filename ezfio_filename fields = | Some name -> name in let out_channel = open_out filename in - (file_header ezfio_filename) :: (List.map get fields) + (file_header ezfio_filename) :: (List.rev @@ List.rev_map get fields) |> String.concat "\n" |> output_string out_channel ; close_out out_channel @@ -210,10 +210,11 @@ let run ~c ?f ?t ?l ?m ?e ?et ?s ?ts ?w ?wt ?n ?j ?p ?input ezfio_filename = in let data = ( List.filter (fun x -> Str.string_match re_data x 0) raw_data - |> List.map String.trim ) @ + |> List.rev_map String.trim |> List.rev ) @ [ List.filter (fun x -> Str.string_match re_prop x 0) raw_data - |> List.map String.trim + |> List.rev_map String.trim + |> List.rev |> String.concat "\n" ] in let open Input in diff --git a/ocaml/Qmcchem_forwarder.ml b/ocaml/Qmcchem_forwarder.ml index 929356b..acca486 100644 --- a/ocaml/Qmcchem_forwarder.ml +++ b/ocaml/Qmcchem_forwarder.ml @@ -309,7 +309,7 @@ let run ezfio_filename dataserver = | head :: tail -> aux (head::header) tail | _ -> failwith "Too many routers in the middle" in - aux [] (List.map String.trim raw_msg) + aux [] (List.rev @@ List.rev_map String.trim raw_msg) in let handle message = match message with @@ -401,7 +401,7 @@ let run ezfio_filename dataserver = | head :: tail -> aux (head::header) tail | _ -> failwith "Too many routers in the middle" in - aux [] (List.map String.trim raw_msg) + aux [] (List.rev @@ List.rev_map String.trim raw_msg) in let handle message = match message with diff --git a/ocaml/Qmcchem_result.ml b/ocaml/Qmcchem_result.ml index d1abdb0..12aa15d 100644 --- a/ocaml/Qmcchem_result.ml +++ b/ocaml/Qmcchem_result.ml @@ -11,7 +11,8 @@ let display_table ~range property = and data = p.Random_variable.data in let results = - List.map2 (fun (val1, err1) (val2,err2) -> (val1, err1, val2, err2)) conv rconv + List.rev_map2 (fun (val1, err1) (val2,err2) -> (val1, err1, val2, err2)) conv rconv + |> List.rev in List.iter2 (fun (val1, err1, val2, err2) block -> Printf.printf "%10.6f %10.6f %10.6f %10.6f %10.6f\n" @@ -116,14 +117,15 @@ let display_histogram ~range property = and norm = 1. /. (sqrt(sigma2 *. 2.*.pi)) in - List.map histo ~f:(fun (x,y) -> + List.rev_map histo ~f:(fun (x,y) -> let g = norm *. exp(-.((x-.mu)*.(x-.mu)*.one_over_2sigma2)) in (x,y,g) ) - |> List.iter ~f:(fun (x,y,g) -> - Printf.printf "%16.10f %16.10f %16.10f\n" x y g) + |> List.rev + |> List.iter ~f:(fun (x,y,g) -> + Printf.printf "%16.10f %16.10f %16.10f\n" x y g) *) diff --git a/ocaml/Qmcchem_run.ml b/ocaml/Qmcchem_run.ml index f2201f9..cb0dcf7 100644 --- a/ocaml/Qmcchem_run.ml +++ b/ocaml/Qmcchem_run.ml @@ -103,7 +103,8 @@ let full_run ?(start_dataserver=true) ezfio_filename = in match launcher |> String.split_on_char ' ' - |> List.map String.trim + |> List.rev_map String.trim + |> List.rev |> List.filter (fun x -> x <> "") with | launcher_exe::launcher_flags -> diff --git a/ocaml/Random_variable.ml b/ocaml/Random_variable.ml index fb0985a..a4632e1 100644 --- a/ocaml/Random_variable.ml +++ b/ocaml/Random_variable.ml @@ -232,7 +232,7 @@ let ave_error { property ; data } = in if (Property.is_scalar property) then - List.map (fun x -> + List.rev_map (fun x -> (Sample.to_float x.Block.value, Weight.to_float x.Block.weight) ) data @@ -247,7 +247,7 @@ let ave_error { property ; data } = in let result = Array.init dim (fun idx -> - List.map (fun x -> + List.rev_map (fun x -> (Sample.to_float ~idx x.Block.value, Weight.to_float x.Block.weight) ) list_of_samples @@ -429,7 +429,8 @@ let merge ~create_key ?update_block_id ?update_value ?update_weight t = if (x>y) then 1 else if (x List.map (fun (x,y) -> y) + |> List.rev_map (fun (x,y) -> y) + |> List.rev } @@ -505,7 +506,7 @@ let error_x_over_y = function (** Create float, variable operators *) let one_variable_operator ~update_value p f = { p with - data = List.map (fun b -> { b with + data = List.rev @@ List.rev_map (fun b -> { b with Block.value = Sample.of_float (update_value (Sample.to_float b.Block.value) ) } ) p.data } @@ -594,7 +595,8 @@ let max_value_per_compute_node t = if (x>y) then 1 else if (x List.map (fun (x,y) -> y) + |> List.rev_map (fun (x,y) -> y) + |> List.rev } @@ -675,7 +677,8 @@ let compress_files () = with | Not_found -> true ) - |> List.map (fun x -> dir_name^x) + |> List.rev_map (fun x -> dir_name^x) + |> List.rev in let out_channel_dir = @@ -774,11 +777,11 @@ let centered_cumulants { property ; data } = |> Average.to_float in let centered_data = - List.map (fun x -> + List.rev_map (fun x -> ( (Weight.to_float x.Block.weight), (Sample.to_float x.Block.value) -. ave ) - ) - data + ) data + |> List.rev in let var = let (num, denom) = @@ -795,11 +798,11 @@ let centered_cumulants { property ; data } = let sigma_inv = 1. /. (sqrt var) in - List.map (fun x -> + List.rev_map (fun x -> ( (Weight.to_float x.Block.weight), ( (Sample.to_float x.Block.value) -. ave ) *. sigma_inv ) - ) - data + ) data + |> List.rev in let (cum3,cum4) = let (cum3, cum4, denom) =