UNPKG

sequaljs

Version:

JavaScript/TypeScript library for parsing and manipulating ProForma peptide sequence notation

50 lines (49 loc) 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateMass = calculateMass; const resources_1 = require("./resources"); function calculateMass(seq, massDict, NTerminus = 0, OTerminus = 0, withWater = true) { let mass = 0; if (withWater) { mass += resources_1.H * 2 + resources_1.O; } for (const i of seq) { if (!i.mass) { if (massDict) { if (i.value in massDict) { mass += massDict[i.value]; } else { throw new Error(`Block ${i.value} not found in massDict`); } } else { throw new Error(`Block ${i.value} mass is not available in mass attribute and no additional massDict was supplied`); } } else { mass += i.mass; } if (i.mods) { for (const m of i.mods) { if (m.mass !== 0 && !m.mass) { if (massDict) { if (m.value in massDict) { mass += massDict[m.value]; } else { throw new Error(`Block ${m.value} not found in massDict`); } } else { throw new Error(`Block ${m.value} mass is not available in mass attribute and no additional massDict was supplied`); } } else { mass += m.mass; } } } } return mass + NTerminus + OTerminus; }