package biocaml

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

Source file file_mapper.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
open CFStream


module B = Biocaml_base

type 'a t = string -> string -> f:('a -> 'a list) -> unit

exception Parse_error of string

let lines inbed outbed ~f =
  In_channel.with_file inbed ~f:(fun ic ->
      Out_channel.with_file outbed ~f:(fun oc ->
          Lines.read ic
          |> Stream.concat_map ~f:(fun x -> Stream.of_list (f x))
          |> Lines.write oc
        )
    )

let line_mapper item_parser item_unparser infile outfile ~f =
  lines infile outfile ~f:(fun line ->
      match item_parser line with
      | Ok item ->
        List.map (f item) ~f:item_unparser
      | Error msg -> raise (Parse_error msg)
    )

let bed5 = B.Bed.Bed5.(line_mapper item_of_line line_of_item)
let bed5_raw = B.Bed.Bed5_raw.(line_mapper item_of_line line_of_item)
OCaml

Innovation. Community. Security.