Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Docker-in-Docker (DinD) capabilities of public runners deactivated.
More info
Open sidebar
VEBER Philippe
codepi
Commits
745165b2
Commit
745165b2
authored
Mar 02, 2021
by
Louis Duchemin
Browse files
Code to generate methods calibration report
parent
186a5191
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
193 additions
and
2 deletions
+193
-2
lib/tk/cpt.ml
lib/tk/cpt.ml
+10
-0
lib/tk/cpt.mli
lib/tk/cpt.mli
+3
-0
lib/tk/inhouse_lmm.ml
lib/tk/inhouse_lmm.ml
+3
-1
lib/tk/inhouse_lmm.mli
lib/tk/inhouse_lmm.mli
+2
-0
notes/calibration.ml
notes/calibration.ml
+147
-0
notes/calibration.mli
notes/calibration.mli
+3
-0
notes/calibration.tex
notes/calibration.tex
+23
-0
notes/dune
notes/dune
+1
-1
notes/main.ml
notes/main.ml
+1
-0
No files found.
lib/tk/cpt.ml
View file @
745165b2
...
...
@@ -2,6 +2,8 @@ open Rresult
open
Core_kernel
open
Let_syntax
.
Result
(* FIXME: rewrite based on Dataframe? *)
type
t
=
{
nrows
:
int
;
cols
:
(
string
*
float
option
array
)
list
;
...
...
@@ -30,6 +32,8 @@ let of_file fn =
in
{
nrows
;
cols
}
let
of_file_exn
fn
=
of_file
fn
|>
Rresult
.
R
.
failwith_error_msg
let
columns
x
=
x
.
cols
let
make
=
function
...
...
@@ -58,3 +62,9 @@ let to_file table ~output =
write_row
oc
(
"Sites"
::
List
.
map
table
.
cols
~
f
:
fst
)
;
write_columns
oc
table
)
let
get_col
cpt
colname
=
List
.
Assoc
.
find
~
equal
:
String
.
equal
cpt
.
cols
colname
let
get_col_exn
cpt
colname
=
get_col
cpt
colname
|>
Option
.
value_exn
lib/tk/cpt.mli
View file @
745165b2
...
...
@@ -3,6 +3,7 @@
type
t
val
of_file
:
string
->
(
t
,
[
>
`Msg
of
string
])
result
val
of_file_exn
:
string
->
t
val
to_file
:
t
->
output
:
string
->
unit
val
make
:
...
...
@@ -10,3 +11,5 @@ val make :
(
t
,
[
>
`Msg
of
string
])
result
val
columns
:
t
->
(
string
*
float
option
array
)
list
val
get_col
:
t
->
string
->
float
option
array
option
val
get_col_exn
:
t
->
string
->
float
option
array
\ No newline at end of file
lib/tk/inhouse_lmm.ml
View file @
745165b2
...
...
@@ -4,6 +4,8 @@ module L = Lacaml.D
type
correlations
=
(
string
*
string
*
float
)
list
*
String
.
Set
.
t
let
cpt_tag
=
"HomeLMM"
let
merge_correlations
time_from_ancestor
((
dist_l
,
l
)
:
correlations
)
((
dist_r
,
r
)
:
correlations
)
=
let
dist_lr
=
...
...
@@ -151,5 +153,5 @@ let test ?(cor_estimation=Brownian) ~alignment ~tree () =
let
result_table_of_test
pvals
=
Result_table
.{
oracle
=
None
;
scores_per_meth
=
[
(
"HomeLMM"
,
Array
.
map
pvals
~
f
:
(
Option
.
map
~
f
:
((
-.
)
1
.
)))
]
scores_per_meth
=
[
(
cpt_tag
,
Array
.
map
pvals
~
f
:
(
Option
.
map
~
f
:
((
-.
)
1
.
)))
]
}
lib/tk/inhouse_lmm.mli
View file @
745165b2
...
...
@@ -16,3 +16,5 @@ val test :
float
option
array
val
result_table_of_test
:
float
option
array
->
Result_table
.
t
val
cpt_tag
:
string
\ No newline at end of file
notes/calibration.ml
0 → 100644
View file @
745165b2
open
Core_kernel
open
Bistro
open
Codepi
open
Codepitk
open
Codepi
.
File_formats
type
dataset
=
{
label
:
string
;
tree
:
nhx
file
;
rooted
:
bool
;
branch_scale
:
float
;
ne_s
:
float
*
float
;
}
let
besnard2009
=
{
label
=
"besnard2009"
;
tree
=
Bistro
.
Workflow
.
input
"data/besnard2009/besnard2009.nhx"
;
rooted
=
true
;
branch_scale
=
1
.
;
ne_s
=
4
.,
4
.
;
}
let
_oneline_rodent
=
{
label
=
"online_rodent"
;
tree
=
Bistro
.
Workflow
.
input
"data/online_rodent/online_rodent.nhx"
;
rooted
=
true
;
branch_scale
=
1
.
;
ne_s
=
4
.,
4
.
;
}
let
_rubisco
=
{
label
=
"rubisco"
;
tree
=
Rubisco_dataset
.(
Path
"data/rubisco"
|>
Query
.
tree
~
branch_length_unit
:
`Amino_acid
)
;
rooted
=
false
;
branch_scale
=
1
.
;
ne_s
=
4
.,
4
.
;
}
let
_orthomam_echolocation
()
=
{
label
=
"orthomam_echolocation"
;
tree
=
(
Orthomam
.
tree_of_db
~
branch_length_unit
:
`Amino_acid
~
convergent_species
:
Orthomam
.
species_with_echolocation
(
Codepitk
.
Orthomam_db
.
make
"_runs/omm"
)
)
;
rooted
=
false
;
branch_scale
=
1
.
;
ne_s
=
4
.,
4
.
;
}
let
hist_pval
(
convergence_table
:
cpt
file
)
:
pdf
file
=
let
f
=
fun
%
workflow
dest
->
let
cpt
=
Cpt
.
of_file_exn
[
%
path
convergence_table
]
in
let
pvals
=
Cpt
.
get_col_exn
cpt
Codepitk
.
Inhouse_lmm
.
cpt_tag
|>
Array
.
filter_opt
in
OCamlR_grDevices
.
pdf
dest
;
OCamlR_graphics
.
hist
~
breaks
:
(
`n
60
)
pvals
|>
fun
_
->
OCamlR_grDevices
.
dev_off
()
in
Bistro
.
Workflow
.
path_plugin
~
descr
:
"Calibration.hist_pval"
f
module
Under_mutsel
=
struct
module
Pipeline
=
Codepi
.
Simulation_pipeline
.
Mutsel
let
query
?
(
seed
=
42
)
{
tree
=
t
;
ne_s
;
branch_scale
;
_
}
=
Pipeline
.
query
~
seed
~
tree
:
(
NHX
t
)
~
branch_scale
~
ne_s
~
profiles
:
"example/aa_fitness/263SelectedProfiles.tsv"
~
n_h0
:
1000
~
n_ha
:
0
()
let
lmm
d
=
Pipeline
.
inhouse_lmm
(
query
d
)
|>
hist_pval
end
module
Under_tdg09
=
struct
let
site_simulation
?
(
alpha
=
1
.
)
?
(
scale
=
1
.
)
(
wag
:
Phylogenetics
.
Wag
.
t
)
tree
=
let
open
Codepitk
.
Tdg09
.
Pack
in
let
exchangeability_matrix
=
wag
.
rate_matrix
in
let
stationary_distribution
=
simulate_profile
alpha
in
let
param
=
scale
in
Model1
.
simulate_site
~
exchangeability_matrix
~
stationary_distribution
~
param
tree
let
simulation
?
alpha
wag
tree
nsites
=
Array
.
init
nsites
~
f
:
(
fun
_
->
site_simulation
wag
?
alpha
tree
)
let
load_tree
fn
=
Convergence_tree
.
from_file
fn
|>
Rresult
.
R
.
failwith_error_msg
|>
Codepitk
.
Tdg09
.
Pack
.
convergence_tree
let
run_multinomial
site
=
let
leaves1
,
leaves2
=
Convergence_tree
.
leaves
site
|>
List
.
partition_map
~
f
:
(
function
|
aa
,
`Ancestral
->
Either
.
first
aa
|
aa
,
`Convergent
->
Either
.
second
aa
)
in
let
counts
x
=
(
Phylogenetics
.
Amino_acid
.
counts
(
Sequence
.
of_list
x
)
:>
int
array
)
in
let
x1
=
counts
leaves1
in
let
x2
=
counts
leaves2
in
let
d
=
Multinomial_test
.
data
~
x1
~
x2
in
let
r
=
Multinomial_test
.(
Permutation
.
test
~
statistic
:
LRT
.
likelihood_log_ratio
d
)
in
r
.
pvalue
let
wag
=
Bistro_unix
.
wget
"https://www.ebi.ac.uk/goldman-srv/WAG/wag.dat"
let
run_tdg09
wag
tree
sim
=
let
open
Codepitk
.
Tdg09
.
Pack
in
let
site
=
Phylogenetics
.
Tree
.
leaves
sim
|>
Array
.
of_list
in
let
_
,
_
,
lrt
=
Model3
.
lrt
~
mode
:
`sparse
wag
tree
site
in
lrt
.
pvalue
let
uniformity_test
?
alpha
tree
meth
=
let
f
=
fun
%
workflow
dest
->
let
wag
=
Phylogenetics
.
Wag
.
parse
[
%
path
wag
]
in
let
tree
=
load_tree
[
%
path
tree
]
in
let
f
=
match
[
%
param
meth
]
with
|
`Tdg09
->
run_tdg09
wag
tree
|
`Multinomial
->
run_multinomial
in
let
sites
=
simulation
?
alpha
wag
tree
1_000
in
OCamlR_grDevices
.
pdf
dest
;
Array
.
map
sites
~
f
|>
OCamlR_graphics
.
hist
~
breaks
:
(
`n
60
)
|>
fun
_
->
OCamlR_grDevices
.
dev_off
()
in
Workflow
.
path_plugin
~
descr
:
"tdg09_uniformity_test"
f
end
let
target
()
=
let
tree
=
Workflow
.
input
"data/besnard2009/besnard2009.nhx"
in
let
multinomial_under_tdg09
=
Under_tdg09
.
uniformity_test
tree
`Tdg09
in
let
tdg09_under_tdg09
=
Under_tdg09
.
uniformity_test
tree
`Tdg09
in
let
lmm_under_mutsel_besnard2009
=
Under_mutsel
.
lmm
besnard2009
in
Report
.
pdflatex
[
%
include_script
"notes/calibration.tex"
]
notes/calibration.mli
0 → 100644
View file @
745165b2
open
Bistro
val
target
:
unit
->
pdf
file
\ No newline at end of file
notes/calibration.tex
0 → 100644
View file @
745165b2
\documentclass
{
beamer
}
\title
{}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\begin{frame}
{
Multinomial under tdg09 simulations
}
\includegraphics
{
<<<Report.pdfdep multinomial
_
under
_
tdg09>>>
}
\end{frame}
\begin{frame}
{
Multinomial under tdg09 simulations
}
\includegraphics
{
<<<Report.pdfdep tdg09
_
under
_
tdg09>>>
}
\end{frame}
\begin{frame}
{
LMM under Mutsel simulations
}
\includegraphics
{
<<<Report.pdfdep lmm
_
under
_
mutsel
_
besnard2009>>>
}
\end{frame}
\end{document}
\ No newline at end of file
notes/dune
View file @
745165b2
...
...
@@ -2,4 +2,4 @@
(name codepi_notes)
(libraries codepi)
(preprocess (pps bistro.ppx ppx_jane))
(preprocessor_deps multinomial_and_phylogeny.tex))
(preprocessor_deps
calibration.tex
multinomial_and_phylogeny.tex))
notes/main.ml
View file @
745165b2
...
...
@@ -29,4 +29,5 @@ let make_command f topic =
let
command
=
Command
.
group
~
summary
:
"codepi report generator"
[
"multinomial-and-phylogeny"
,
make_command
Multinomial_and_phylogeny
.
target
"Multinomial and phylogeny"
;
"calibration"
,
make_command
Calibration
.
target
"Calibration tests"
;
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment