struct

  type t = {
    name: string;
    input_type: [ `WGS | `WES ];
  }

  let name t = t.name

  let input_type_to_string input_type =
    match input_type with
    | `WGS -> "WGS"
    | `WES -> "WES"

  let to_json {name; input_type} =
    `Assoc [
      "name"`String name;
      "input-type"`String (input_type_to_string input_type);
    ]

  let default input_type =
    let is = input_type_to_string input_type in
    { name = "default-" ^ is; input_type}
    
  let wgs = default `WGS
  let wes = default `WES

end