Elixir Genomic Range Query
defmodule GenomicRangeQuery do
def genomic_range_query(s, p, q) do
p
|> Enum.zip(q)
|> Enum.map(fn {pi, qi} ->
substr = String.slice(s, pi, qi - pi + 1)
cond do
String.contains?(substr, "A") -> 1
String.contains?(substr, "C") -> 2
String.contains?(substr, "G") -> 3
true -> 4
end
end)
end
end
This builds prefix counts for each DNA letter so every query can return the minimum impact factor quickly.