Le 16/08/2020 à 10:33, Andreas Tille a écrit :
> I've fixed this in Git. However, when trying to build I get:
>
> + ocamlfind ocamlc -c -annot -w Z -package batteries -package csv -package
> xmlm -package gsl -package sqlite3 -package zip -package mcl -thread -I
> pplacer_src -I json_src -I pam_src -I tests -I common_src -I pdprune_src -I
> cdd_src -I tests/rppr -I tests/json -I tests/pplacer -I tests/guppy -o
> pplacer_src/gcat_model.cmo pplacer_src/gcat_model.ml
> File "pplacer_src/gcat_model.ml", line 439, characters 22-73:
> 439 | (Enum.combine (Array.enum model.site_categories, Array.enum
> mask)
>
> ^^^
> Error: This expression has type 'a * 'b
>but an expression was expected of type
> 'weak3 Ppatteries.Enum.t = 'weak3 BatEnum.t
> Command exited with code 2.
>
>
> Any hint how to fix this?
I think this is due to a new version of ocaml-batteries.
The attached patch fixes that.
Cheers,
--
Stéphane
diff --git a/pplacer_src/gcat_model.ml b/pplacer_src/gcat_model.ml
index 525d354..bd16994 100644
--- a/pplacer_src/gcat_model.ml
+++ b/pplacer_src/gcat_model.ml
@@ -436,7 +436,7 @@ struct
* invalid and `check` will raise an error. *)
if Array.length model.site_categories = Array.length mask then begin
model.site_categories <-
-(Enum.combine (Array.enum model.site_categories, Array.enum mask)
+(Enum.combine (Array.enum model.site_categories) (Array.enum mask)
|> Enum.filter_map (function x, true -> Some x | _, false -> None)
|> Array.of_enum);
setup_occupied_rates model
diff --git a/pplacer_src/guppy_cmdobjs.ml b/pplacer_src/guppy_cmdobjs.ml
index 7e04319..44ffc82 100644
--- a/pplacer_src/guppy_cmdobjs.ml
+++ b/pplacer_src/guppy_cmdobjs.ml
@@ -612,7 +612,7 @@ object (self)
method private filter_fal orig_length fal edges =
List.map (Array.filteri (fun i _ -> IntSet.mem i edges)) fal,
-Enum.combine (Enum.range 0, IntSet.enum edges) |> IntMap.of_enum,
+Enum.combine (Enum.range 0) (IntSet.enum edges) |> IntMap.of_enum,
orig_length
method private filter_rep_edges prl fal =
diff --git a/pplacer_src/guppy_mcl.ml b/pplacer_src/guppy_mcl.ml
index 76538d1..39a03f1 100644
--- a/pplacer_src/guppy_mcl.ml
+++ b/pplacer_src/guppy_mcl.ml
@@ -6,7 +6,7 @@ let of_pql ?inflation criterion pql =
let pqa = Array.of_list pql in
let name_map =
Enum.combine
- (Array.enum pqa |> Enum.map Pquery.name, Enum.range 0)
+ (Array.enum pqa |> Enum.map Pquery.name) (Enum.range 0)
|> StringMap.of_enum
in
let count = StringMap.cardinal name_map in
diff --git a/pplacer_src/guppy_rarefact.ml b/pplacer_src/guppy_rarefact.ml
index 80f65cb..0d7171f 100644
--- a/pplacer_src/guppy_rarefact.ml
+++ b/pplacer_src/guppy_rarefact.ml
@@ -66,7 +66,6 @@ object (self)
@ (if is_uniform_mass then [fmt qm] else [""]))
|> begin
if fv variance then
-curry
Enum.combine
(Rarefaction.variance_of_placerun criterion ?k_max pr)
|- Enum.map (fun ((_, uv, rv), sl) -> sl @ [fmt uv; fmt rv])
diff --git a/pplacer_src/pplacer_run.ml b/pplacer_src/pplacer_run.ml
index 65e787d..83f071c 100644
--- a/pplacer_src/pplacer_run.ml
+++ b/pplacer_src/pplacer_run.ml
@@ -85,7 +85,7 @@ let premask ?(discard_nonoverlapped = false) seq_type ref_align query_list =
* informative column of the reference sequence. *)
let overlaps_mask s = String.enum s
|> Enum.map Alignment.informative
-|> curry Enum.combine (Array.enum ref_mask)
+|> Enum.combine (Array.enum ref_mask)
|> Enum.exists (uncurry (&&))
in
let query_list = List.filter