let reverse_complement a = Array.(
  let n = length a in
  init
    n
    (fun i -> 
      let r = copy a.(n - 1 - i) in
      swap r 0 3 ;
      swap r 1 2 ;
      r)
)