def testCompareDifferentLimitPerLandmark(self): """ The compare method must return a description of parameter differences when two parameter instances have different limit per landmark. """ dbParams1 = DatabaseParameters(limitPerLandmark=10) dbParams2 = DatabaseParameters(limitPerLandmark=20) expected = ("Summary of differences:\n" " Param 'limitPerLandmark' values 10 and 20 differ.") self.assertEqual(expected, dbParams1.compare(dbParams2))
def testCompareDifferentMinDistance(self): """ The compare method must return a description of parameter differences when two parameter instances have different min distances. """ dbParams1 = DatabaseParameters(minDistance=10) dbParams2 = DatabaseParameters(minDistance=20) expected = ("Summary of differences:\n" " Param 'minDistance' values 10 and 20 differ.") self.assertEqual(expected, dbParams1.compare(dbParams2))
def testCompareDifferentFeatureLengthBase(self): """ The compare method must return a description of parameter differences when two parameter instances have different featureLength bases. """ dbParams1 = DatabaseParameters(featureLengthBase=1.0) dbParams2 = DatabaseParameters(featureLengthBase=2.0) expected = ("Summary of differences:\n" " Param 'featureLengthBase' values 1.0 and 2.0 differ.") self.assertEqual(expected, dbParams1.compare(dbParams2))
def testCompareDifferentMaxDistanceAndMinDistance(self): """ The compare method must return a description of parameter differences when two parameter instances have multiple different attributes. """ dbParams1 = DatabaseParameters(maxDistance=10, minDistance=30) dbParams2 = DatabaseParameters(maxDistance=20, minDistance=40) expected = ("Summary of differences:\n" " Param 'maxDistance' values 10 and 20 differ.\n" " Param 'minDistance' values 30 and 40 differ.") self.assertEqual(expected, dbParams1.compare(dbParams2))
def testCompareDifferentTrigPointFinders(self): """ The compare method must return a description of parameter differences when two parameter instances have different trig point finders. """ dbParams1 = DatabaseParameters(trigPoints=[Peaks, Troughs]) dbParams2 = DatabaseParameters(trigPoints=[Peaks]) expected = ("Summary of differences:\n" " Param 'trigPoints' values " "['Peaks', 'Troughs'] and ['Peaks'] differ.") self.assertEqual(expected, dbParams1.compare(dbParams2))
def testCompareDifferentLandmarkFinders(self): """ The compare method must return a description of parameter differences when two parameter instances have different landmark finders. """ dbParams1 = DatabaseParameters(landmarks=[AlphaHelix, BetaStrand]) dbParams2 = DatabaseParameters(landmarks=[AlphaHelix]) expected = ("Summary of differences:\n" " Param 'landmarks' values " "['AlphaHelix', 'BetaStrand'] and ['AlphaHelix'] differ.") self.assertEqual(expected, dbParams1.compare(dbParams2))
def testCompareDifferentRandomTrigPointDensity(self): """ The compare method must return a description of parameter differences when two parameter instances have different randomTrigPointDensity values. """ dbParams1 = DatabaseParameters(randomTrigPointDensity=0.2) dbParams2 = DatabaseParameters(randomTrigPointDensity=0.4) expected = ( "Summary of differences:\n" " Param 'randomTrigPointDensity' values 0.2 and 0.4 differ.") self.assertEqual(expected, dbParams1.compare(dbParams2))
def testSaveRestoreWithNonDefaultParameters(self): """ When asked to save and then restore a backend with non-default parameters, a backend with the correct parameters must result. """ dbParams = DatabaseParameters(landmarks=[], trigPoints=[], limitPerLandmark=16, maxDistance=17, minDistance=18, distanceBase=19.0) be = Backend() be.configure(dbParams) fp = StringIO() be.save(fp) fp.seek(0) result = be.restore(fp) self.assertIs(None, dbParams.compare(result.dbParams))
def testSaveRestoreEmpty(self): """ When asked to save and then restore an empty database, the correct database must result. """ dbParams = DatabaseParameters(landmarks=[AlphaHelix], trigPoints=[Peaks]) db = Database(dbParams) fp = StringIO() db.save(fp) fp.seek(0) result = db.restore(fp) self.assertEqual(0, result.subjectCount()) self.assertEqual(0, result.totalCoveredResidues()) self.assertEqual(0, result.totalResidues()) self.assertIs(None, dbParams.compare(result.dbParams))
def testSaveContentHasFourParts(self): """ When a simple database saves, its content must include parts for the database parameters, the database state, the backend parameters and the backend state. """ dbParams = DatabaseParameters(landmarks=[AlphaHelix], trigPoints=[Peaks]) db = Database(dbParams) fp = StringIO() db.save(fp) fp.seek(0) dbParams = DatabaseParameters.restore(fp) loads(fp.readline()[:-1]) backendParams = DatabaseParameters.restore(fp) loads(fp.readline()[:-1]) self.assertIs(None, dbParams.compare(backendParams))
def testSaveRestoreNonEmpty(self): """ When asked to save and then restore a non-empty database, the correct database must result. """ dbParams = DatabaseParameters(landmarks=[AlphaHelix, BetaStrand], trigPoints=[Peaks, Troughs]) db = Database(dbParams) db.addSubject(AARead('id', 'FRRRFRRRFASAASA')) fp = StringIO() db.save(fp) fp.seek(0) result = db.restore(fp) self.assertIs(None, dbParams.compare(result.dbParams)) self.assertEqual(db.subjectCount(), result.subjectCount()) self.assertEqual(db.totalCoveredResidues(), result.totalCoveredResidues()) self.assertEqual(db.totalResidues(), result.totalResidues()) self.assertEqual(db.checksum(), result.checksum())
def testCompareIdentical(self): """ The compare method must return None when two parameter instances have the same values. """ dbParams1 = DatabaseParameters(landmarks=[AlphaHelix, BetaStrand], trigPoints=[Peaks, Troughs], distanceBase=3.0, featureLengthBase=3.9, limitPerLandmark=10, maxDistance=77, minDistance=66, randomLandmarkDensity=0.1, randomTrigPointDensity=0.2) dbParams2 = DatabaseParameters(landmarks=[AlphaHelix, BetaStrand], trigPoints=[Peaks, Troughs], distanceBase=3.0, featureLengthBase=3.9, limitPerLandmark=10, maxDistance=77, minDistance=66, randomLandmarkDensity=0.1, randomTrigPointDensity=0.2) self.assertIs(None, dbParams1.compare(dbParams2))