convergence_detection.ml 2.81 KB
Newer Older
Carine Rey's avatar
Carine Rey committed
1
open Core
Carine Rey's avatar
Carine Rey committed
2 3 4 5
open Bistro.EDSL
open Bistro.Std
open File_formats
open Bistro_bioinfo.Std
Carine Rey's avatar
Carine Rey committed
6
open Defs
Carine Rey's avatar
Carine Rey committed
7

Philippe Veber's avatar
Philippe Veber committed
8 9 10 11 12
type result = [
  | `Pcoc of [`pcoc] directory workflow
  | `Pcoc_gamma of [`pcoc] directory workflow
  | `Diffsel of [`diffsel] directory workflow
]
Carine Rey's avatar
Carine Rey committed
13

Philippe Veber's avatar
Philippe Veber committed
14 15 16 17
let meth_string_of_result = function
  | `Pcoc _ -> "pcoc"
  | `Pcoc_gamma _ -> "pcoc_gamma"
  | `Diffsel _ -> "diffsel"
Carine Rey's avatar
Carine Rey committed
18 19 20 21

type dataset_res = {
  model_prefix : string ;
  tree_prefix : string ;
Philippe Veber's avatar
Philippe Veber committed
22
  res_by_tools: result list ;
Carine Rey's avatar
Carine Rey committed
23 24
  merged_results : text_file workflow ;
  plot_merged_results : svg workflow ;
Philippe Veber's avatar
Philippe Veber committed
25
}
Carine Rey's avatar
Carine Rey committed
26

Carine Rey's avatar
Carine Rey committed
27
let merge_results ~res_by_tools : text_file workflow =
Carine Rey's avatar
Carine Rey committed
28
  let env = docker_image ~account:"carinerey" ~name:"ete3" ~tag:"3.0.0b35" () in
Carine Rey's avatar
Carine Rey committed
29
  let command = List.map res_by_tools ~f:(fun res ->
Philippe Veber's avatar
Philippe Veber committed
30 31 32
      let w = match res with
        | `Pcoc d
        | `Pcoc_gamma d -> Pcoc.results d
Philippe Veber's avatar
Philippe Veber committed
33
        | `Diffsel d -> Diffsel.selector d
Philippe Veber's avatar
Philippe Veber committed
34 35 36 37 38 39 40 41
      in
      let opt = match res with
        | `Pcoc _ -> string "--pcoc"
        | `Pcoc_gamma _ -> string "--pcoc_gamma"
        | `Diffsel _ -> string "--diffsel"
      in
      seq ~sep:" " [opt; dep w]
    )
Carine Rey's avatar
Carine Rey committed
42 43
  in
  workflow ~descr:"convergence_detection.merge_results" [
Carine Rey's avatar
Carine Rey committed
44
    cmd "python" ~env [
Carine Rey's avatar
Carine Rey committed
45 46 47 48 49 50 51
            file_dump (string Scripts.merge_det_results) ;
            opt "-o" ident dest ;
            seq ~sep:" " command ;
          ] ;
  ]


Carine Rey's avatar
Carine Rey committed
52 53 54 55 56 57
let plot_merge_results ~res_by_tools ~tree ~faa ~tsv : svg workflow =
  let plot_all_sites = true in
  (*let env = docker_image ~account:"carinerey" ~name:"ete3" ~tag:"3.0.0b35" () in*)
  let env = docker_image ~account:"carinerey" ~name:"pcoc" ~tag:"06212018" () in
  (* use of pcoc env due to its working X server for dra plot with ete3 *)
  let meths = List.map res_by_tools ~f:(fun res ->
Philippe Veber's avatar
Philippe Veber committed
58 59 60 61
    let opt = match res with
      | `Pcoc _ -> "PCOC"
      | `Pcoc_gamma _ -> "PCOC_gamma"
      | `Diffsel _ -> "Diffsel"
Carine Rey's avatar
Carine Rey committed
62
    in
Philippe Veber's avatar
Philippe Veber committed
63
    string opt
Carine Rey's avatar
Carine Rey committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
  ) |> seq ~sep:","
  in
  let package_diffsel_script_utils = tmp // "diffsel_script_utils.py" in
  let package_plot_data = tmp // "plot_data.py" in
  let script_plot_convergent_sites = tmp // "plot_convergent_sites.py" in
  let out = dest // "results.svg" in
  workflow ~descr:"convergence_detection.plot_results" [
    docker env (
      and_list [
        mkdir_p tmp ;
        mkdir_p dest ;
        cd tmp ;

        cmd "cp" [ file_dump (string Scripts.diffsel_script_utils) ; package_diffsel_script_utils ] ;
        cmd "cp" [ file_dump (string Scripts.plot_data) ; package_plot_data] ;
        cmd "cp" [ file_dump (string Scripts.plot_convergent_sites); script_plot_convergent_sites ] ;

        cmd "python" [
          string "plot_convergent_sites.py" ;
          opt "-msa" dep faa ;
          opt "-tsv" dep tsv ;
          opt "-tree" dep tree ;
          opt "-out" ident out ;
          opt "-meth" ident meths ;
          flag string "--all_sites" plot_all_sites ;
        ]
      ]
    )
  ]