Beispiel #1
0
    def _compareMetadata(self, other, lower, upper, _sigma):
        """Private method for comparing metadata"""

        similar = logDirectCompare(self.names, other.names, 0, 0, 'names')
        similar &= logDirectCompare(self.zais, other.zais, 0, 0, 'zai')
        similar &= logDirectCompare(self.days, other.days, lower, upper,
                                    'days')
        similar &= logDirectCompare(self.burnup, other.burnup, lower, upper,
                                    'burnup')
        return similar
Beispiel #2
0
    def _compareMetadata(self, other, lower, upper, _sigma):
        """Private method for comparing metadata"""

        similar = logDirectCompare(self.metadata['names'],
                                   other.metadata['names'], 0, 0, 'names')
        similar &= logDirectCompare(self.metadata['zai'],
                                    other.metadata['zai'], 0, 0, 'zai')
        similar &= logDirectCompare(self.metadata['days'],
                                    other.metadata['days'], lower, upper,
                                    'days')
        similar &= logDirectCompare(self.metadata['burnup'],
                                    other.metadata['burnup'], lower, upper,
                                    'burnup')
        return similar
    def compareResults(self,
                       other,
                       lower=DEF_COMP_LOWER,
                       upper=DEF_COMP_UPPER,
                       sigma=DEF_COMP_SIGMA,
                       header=False):
        """
        Compare the contents of the results dictionary

        Parameters
        ----------
        other: :class:`ResultsReader`
            Class against which to compare
        {compLimits}
        {sigma}
        {header}

        Returns
        -------
        bool:
            If the results data agree to given tolerances

        Raises
        ------
        {compTypeErr}
        """
        self._checkCompareObj(other)
        if header:
            self._compareLogPreMsg(other, lower, upper, sigma, 'results')
        myRes = self.resdata
        otherR = other.resdata

        commonTypeKeys = getKeyMatchingShapes(myRes, otherR, 'results')

        similar = len(commonTypeKeys) == len(myRes) == len(otherR)

        for key in sorted(commonTypeKeys):
            mine = myRes[key]
            theirs = otherR[key]
            if key in RES_DATA_NO_UNCS:
                similar &= logDirectCompare(mine, theirs, lower, upper, key)
                continue
            myVals, myUncs = splitValsUncs(mine)
            theirVals, theirUncs = splitValsUncs(theirs)
            similar &= getLogOverlaps(key,
                                      myVals,
                                      theirVals,
                                      myUncs,
                                      theirUncs,
                                      sigma,
                                      relative=True)
        return similar
Beispiel #4
0
    def compareAttributes(self,
                          other,
                          lower=DEF_COMP_LOWER,
                          upper=DEF_COMP_UPPER,
                          sigma=DEF_COMP_SIGMA):
        """
        Compare attributes like group structure and burnup. Return the result

        Parameters
        ----------
        other: :class:`HomogUniv`
            Universe against which to compare
        {compLimits}
        {sigma}

        Returns
        -------
        bools:
            ``True`` if the attributes agree within specifications

        Raises
        ------
        {compTypeErr}
        """

        self._checkCompareObj(other)

        myMeta = {}
        otherMeta = {}

        for key in {'bu', 'step', 'groups', 'microGroups', 'reshaped'}:
            for meta, obj in zip((myMeta, otherMeta), (self, other)):
                try:
                    meta[key] = getattr(obj, key)
                except AttributeError:
                    meta[key] = None

        matchingKeys = getKeyMatchingShapes(myMeta, otherMeta, 'metadata')
        similar = len(matchingKeys) == len(myMeta)

        for key in sorted(matchingKeys):
            similar &= logDirectCompare(myMeta[key], otherMeta[key], lower,
                                        upper, key)

        return similar
    def compareMetadata(self, other, header=False):
        """
        Return True if the metadata (settings) are identical.

        Parameters
        ----------
        other: :class:`ResultsReader`
            Class against which to compare
        {header}

        Returns
        -------
        bool:
            If the metadata are identical

        Raises
        ------
        {compTypeErr}
        """

        self._checkCompareObj(other)
        if header:
            self._compareLogPreMsg(other, quantity='metadata')
        myKeys = set(self.metadata.keys())
        otherKeys = set(other.metadata.keys())
        similar = not any(myKeys.symmetric_difference(otherKeys))
        commonKeys = getCommonKeys(myKeys, otherKeys, 'metadata')
        skips = commonKeys.intersection(self.__METADATA_COMP_SKIPS)
        if any(skips):
            info("The following items will be skipped in the comparison\n\t{}".
                 format(', '.join(sorted(skips))))
        for key in sorted(commonKeys):
            if key in self.__METADATA_COMP_SKIPS:
                continue
            selfV = self.metadata[key]
            otherV = other.metadata[key]
            similar &= logDirectCompare(selfV, otherV, 0., 0., key)

        return similar