package biocaml
The OCaml Bioinformatics Library
Install
Dune Dependency
Authors
Maintainers
Sources
biocaml-0.11.2.tbz
sha256=fae219e66db06f81f3fd7d9e44717ccf2d6d85701adb12004ab4ae6d3359dd2d
sha512=f6abd60dac2e02777be81ce3b5acdc0db23b3fa06731f5b2d0b32e6ecc9305fe64f407bbd95a3a9488b14d0a7ac7c41c73a7e18c329a8f18febfc8fd50eccbc6
doc/src/biocaml.base/macs2.ml.html
Source file macs2.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 53 54 55 56 57 58 59 60 61 62 63 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 93
open Rresult let parse_field f field x = try R.ok (f x) with _ -> R.error_msgf "Failed to parse field %s" field let parse_int = parse_field Int.of_string let parse_float = parse_field Float.of_string module Xls = struct type item = [ | `Comment of string | `Record of record | `Header ] and record = { chr : string ; start : int ; end_ : int ; length : int ; abs_summit : int ; pileup : float ; log10pvalue : float ; fold_enrichment : float ; log10qvalue : float ; name : string ; } let header = "chr\tstart\tend\tlength\tabs_summit\tpileup\t-log10(pvalue)\tfold_enrichment\t-log10(qvalue)\tname" let parse line = match (line : Line.t :> string) with | "" -> R.ok (`Comment "") | line when String.(line = header) -> R.ok `Header | line -> if Char.(line.[0] = '#') then R.ok (`Comment (String.sub line ~pos:1 ~len:(String.length line - 1))) else match String.split ~on:'\t' line with | [ chr ; start ; end_ ; length ; abs_summit ; pileup ; log10pvalue ; fold_enrichment ; log10qvalue ; name ] -> parse_int "start" start >>= fun start -> parse_int "end" end_ >>= fun end_ -> parse_int "length" length >>= fun length -> parse_int "abs_summit" abs_summit >>= fun abs_summit -> parse_float "pileup" pileup >>= fun pileup -> parse_float "log10pvalue" log10pvalue >>= fun log10pvalue -> parse_float "log10qvalue" log10qvalue >>= fun log10qvalue -> parse_float "fold_enrichment" fold_enrichment >>| fun fold_enrichment -> `Record { chr ; start ; end_ ; length ; abs_summit ; pileup ; log10pvalue ; fold_enrichment ; log10qvalue ; name ; } | _ -> R.error_msg "Wrong number of fields" end module Broad_peaks = struct type item = { chr : string ; chr_start : int ; chr_end : int ; name : string ; score : int ; strand : string ; fold_change : float ; log10pvalue : float ; log10qvalue : float ; } let parse line = match Line.split ~on:'\t' line with | [ chr ; chr_start ; chr_end ; name ; score ; strand ; fold_change ; log10pvalue ; log10qvalue ] -> parse_int "start" chr_start >>= fun chr_start -> parse_int "end" chr_end >>= fun chr_end -> parse_int "score" score >>= fun score -> parse_float "log10pvalue" log10pvalue >>= fun log10pvalue -> parse_float "log10qvalue" log10qvalue >>= fun log10qvalue -> parse_float "fold_change" fold_change >>| fun fold_change -> { chr ; chr_start ; chr_end ; name ; score ; strand ; log10pvalue ; fold_change ; log10qvalue ; } | _ -> R.error_msg "Wrong number of fields" end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>