package biocaml

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

Source file solexa_score.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


exception Error of string

type t = int

let offset = 64

let to_probability t =
  let z = 10. ** (Float.of_int t /. -10.) in
  z /. (1. +. z)

let to_ascii t =
  let x = t + offset in
  if 33 <= x && x <= 126 then
    Char.of_int_exn x
  else
    Error (sprintf "%d cannot be encoded as a visible ASCII character" t) |> raise

let of_ascii x =
  let c = Char.to_int x in
  if 33 <= c && c <= 126 then
    c - offset
  else
    Error (sprintf "%c is not a valid score" x) |> raise

let of_probability ?(f = Float.iround_nearest_exn) x =
  if Float.(0.0 <= x && x <= 1.0) then
    f (-10. *. Float.log10(x /. (1. -. x)))
  else
    Error (sprintf "invalid probability %0.17g" x) |> raise
OCaml

Innovation. Community. Security.