Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,40 @@
(* This program reads from the standard input and writes to standard output.
* Examples of use:
* $ ocaml fasta.ml < fasta_file.txt
* $ ocaml fasta.ml < fasta_file.txt > my_result.txt
*
* The FASTA file is assumed to have a specific format, where the first line
* contains a label in the form of '>blablabla', i.e. with a '>' as the first
* character.
*)
let labelstart = '>'
let is_label s = s.[0] = labelstart
let get_label s = String.sub s 1 (String.length s - 1)
let read_in channel = input_line channel |> String.trim
let print_fasta chan =
let rec doloop currlabel line =
if is_label line then begin
if currlabel <> "" then print_newline ();
let newlabel = get_label line in
print_string (newlabel ^ ": ");
doloop newlabel (read_in chan)
end
else begin
print_string line;
doloop currlabel (read_in chan)
end
in
try
match read_in chan with
| line when is_label line -> doloop "" line
| _ -> failwith "Badly formatted FASTA file?"
with
End_of_file -> print_newline ()
let () =
print_fasta stdin