Protein

1 problem from Rosalind — Bioinformatics Stronghold. Press Run on any block to execute it in your browser.

PRTM — Calculating Protein Mass

solvedbrowser + CLI Problem statement Open in the workbench Download .bl

Monoisotopic masses, which is what a high-resolution instrument reports when it can resolve individual isotope peaks; low-resolution and high-mass measurements give average masses instead, differing by roughly 0.06 percent. Everything in the mass-spectrometry chapter rests on this sum.

# Rosalind: PRTM — Calculating Protein Mass
# https://rosalind.info/problems/prtm/
#
# Given: A protein string P of length at most 1000 aa.
# Return: The total weight of P, using the monoisotopic mass table.

let protein_string = "SKADYEK"

let monoisotopic = {
    A: 71.03711,  C: 103.00919, D: 115.02694, E: 129.04259, F: 147.06841,
    G: 57.02146,  H: 137.05891, I: 113.08406, K: 128.09496, L: 113.08406,
    M: 131.04049, N: 114.04293, P: 97.05276,  Q: 128.05858, R: 156.10111,
    S: 87.03203,  T: 101.04768, V: 99.06841,  W: 186.07931, Y: 163.06333
}

let result = range(0, len(protein_string))
    |> map(|i| monoisotopic[substr(protein_string, i, 1)])
    |> sum()

println("Result:   " + str(round(result, 3)))
println("Expected: 821.392")

fn test_prtm_protein_mass() {
    assert round(result, 3) == 821.392, "PRTM: got " + str(result)
}