package biocaml

  1. Overview
  2. Docs
The OCaml Bioinformatics Library

Install

Dune Dependency

Authors

Maintainers

Sources

biocaml-0.11.2.tbz
sha256=fae219e66db06f81f3fd7d9e44717ccf2d6d85701adb12004ab4ae6d3359dd2d
sha512=f6abd60dac2e02777be81ce3b5acdc0db23b3fa06731f5b2d0b32e6ecc9305fe64f407bbd95a3a9488b14d0a7ac7c41c73a7e18c329a8f18febfc8fd50eccbc6

doc/src/biocaml.unix/file_mapper.ml.html

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.