package core_bench

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file analysis.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
open Core
open Linear_algebra_wrapper
module M = Measurement
module AC = Analysis_config


let analyze_one meas analysis_config =
  let resp = analysis_config.AC.responder in
  let preds = Array.of_list analysis_config.AC.predictors in
  let open Or_error.Monad_infix in
  ols meas ~resp ~preds
  >>= fun coeffs ->
  let r_square =
    if analysis_config.AC.r_square
    then Some (r_square meas ~resp ~preds ~coeffs)
    else None
  in
  let trials = analysis_config.AC.bootstrap_trials in
  (if trials > 0
   then
     bootstrap ~trials meas ~resp ~preds
     >>| fun bs ->
     Array.mapi preds ~f:(fun i predictor ->
       Analysis_result.Coefficient.create ~predictor ~estimate:coeffs.(i) ~ci95:bs.(i) ())
   else
     Ok
       (Array.mapi preds ~f:(fun i predictor ->
          Analysis_result.Coefficient.create ~predictor ~estimate:coeffs.(i) ())))
  >>| fun coefficients ->
  Analysis_result.Regression.create
    ~responder:resp
    ?r_square
    ~coefficients
    ~regression_name:analysis_config.Analysis_config.regression_name
    ()
;;

let analyze meas analysis_configs =
  Or_error.of_exn_result
    (Result.try_with (fun () ->
       Analysis_result.create
         ~name:(M.name meas)
         ~test_name:(M.test_name meas)
         ~file_name:(M.file_name meas)
         ~module_name:(M.module_name meas)
         ~sample_count:(M.sample_count meas)
         ~largest_run:(M.largest_run meas)
         ~regressions:
           (Array.of_list_map analysis_configs ~f:(fun analysis_config ->
              Or_error.ok_exn
                (Or_error.tag (analyze_one meas analysis_config) ~tag:(M.name meas))))))
;;
OCaml

Innovation. Community. Security.