Calculate the exact mass for ``Sii`` elements from the
        ``Sii.peptide`` sequence.

        :param specfiles: the name of an ms-run file or a list of names. If None
            all specfiles are selected.
        :param guessCharge: bool, True if the charge should be guessed if the
            attribute ``charge`` is missing from ``Sii``. Uses the calculated
            peptide mass and the observed m/z value to calculate the charge.
        :param obsMzKey: attribute name of the observed m/z value in ``Sii``.

def calcMz(self, specfiles=None, guessCharge=True, obsMzKey='obsMz'):
        """Calculate the exact mass for ``Sii`` elements from the
        ``Sii.peptide`` sequence.

        :param specfiles: the name of an ms-run file or a list of names. If None
            all specfiles are selected.
        :param guessCharge: bool, True if the charge should be guessed if the
            attribute ``charge`` is missing from ``Sii``. Uses the calculated
            peptide mass and the observed m/z value to calculate the charge.
        :param obsMzKey: attribute name of the observed m/z value in ``Sii``.
        """
        #TODO: important to test function, since changes were made
        _calcMass = maspy.peptidemethods.calcPeptideMass
        _calcMzFromMass = maspy.peptidemethods.calcMzFromMass
        _massProton = maspy.constants.atomicMassProton
        _guessCharge = lambda mass, mz: round(mass / (mz - _massProton), 0)

        if specfiles is None:
            specfiles = [_ for _ in viewkeys(self.info)]
        else:
            specfiles = aux.toList(specfiles)

        tempMasses = dict()
        for specfile in specfiles:
            if specfile not in self.info:
                warntext = 'Error while calling "SiiContainer.calcMz()": '\
                           '"%s" is not present in "SiiContainer.info"!'\
                            % (specfile, )
                warnings.warn(warntext)
            else:
                for sii in self.getItems(specfiles=specfile):
                    peptide = sii.peptide
                    if peptide not in tempMasses:
                        if hasattr(sii, 'diPeptide'):
                            tempMasses[peptide] = (_calcMass(sii.peptide1) +
                                                   _calcMass(sii.peptide2)
                                                   )
                        else:
                            tempMasses[peptide] = _calcMass(peptide)
                    peptideMass = tempMasses[peptide]
                    if sii.charge is not None:
                        sii.excMz = _calcMzFromMass(peptideMass, sii.charge)
                    elif guessCharge:
                        guessedCharge = _guessCharge(peptideMass,
                                                     getattr(sii, obsMzKey)
                                                     )
                        sii.excMz = _calcMzFromMass(peptideMass, guessedCharge)
                        sii.charge = guessedCharge
                    else:
                        sii.excMz = None
        del(tempMasses)