Files
2025-04-18 17:33:55 +02:00

22 lines
621 B
TypeScript

const nucleotides = ['A', 'C', 'G', 'T'] as const
type Nucleotide = typeof nucleotides[number]
type NucleotideCounts = Record<Nucleotide, number>
function isNucleotide(char: string): char is Nucleotide {
return (nucleotides as readonly string[]).includes(char)
}
export const nucleotideCounts = (nucleotide: string): NucleotideCounts =>
nucleotide.split("").map(char =>
(!isNucleotide(char))
? (() => { throw new Error('Invalid nucleotide in strand')})()
: char
).reduce((result, char) => ({
...result, [char]: result[char] + 1
}), {
A: 0,
C: 0,
G: 0,
T: 0,
})