def testExtra(self): tf = TrackFormat.createInstanceFromPrefixList(['start', 'a', 'b', 'c'], 'float64', 1, 'float64', 1) self.assertTrue(tf.hasExtra(specificExtra='a')) self.assertFalse(tf.hasExtra(specificExtra='d')) self.assertEqual(['a','b','c'], tf.getExtraNames()) tfq = TrackFormatReq(interval=False, extra=['a','b']) self.assertFalse(tfq.isCompatibleWith(tf))
def testMerge(self): mergedTFR = TrackFormatReq.merge( TrackFormatReq(dense=False), TrackFormatReq(interval=True) ) self.assertFalse(mergedTFR.isDense()) self.assertTrue(mergedTFR.isInterval()) mergedTFR = TrackFormatReq.merge( TrackFormatReq(dense=False, val='tc'), TrackFormatReq(interval=True, val='number') ) self.assertEqual(None, mergedTFR) mergedTFR = TrackFormatReq.merge( TrackFormatReq(dense=False, weights='tc'), TrackFormatReq(interval=True, weights='number') ) self.assertEqual(None, mergedTFR)
def _assertConvertSegmentToPoint(self, targetStarts, sourceTv, converterCls): pointFormat = TrackFormatReq(interval=False, dense=False) self.assertTrue(converterCls.canHandle(sourceTv.trackFormat, pointFormat)) targetTv = converterCls.convert(sourceTv) self.assertTrue(pointFormat.isCompatibleWith(targetTv.trackFormat)) self.assertEqual(targetStarts, [el.start() for el in targetTv]) for el in targetTv: self.assertEqual(el.start() + 1, el.end())
def testWeightTypes(self): tf = TrackFormat.createInstanceFromPrefixList(['id', 'edges', 'weights'], 'float64', 1, 'S8', 3) self.assertTrue(tf.isWeighted(specificWeightType='category_vector')) self.assertFalse(tf.isWeighted(specificWeightType='number')) self.assertEqual('Vector of categories', tf.getWeightTypeName()) self.assertEqual('Linked base pairs', tf.getFormatName()) tfq = TrackFormatReq(linked=True, weights='number') self.assertFalse(tfq.isCompatibleWith(tf))
def testValTypes(self): tf = TrackFormat.createInstanceFromPrefixList(['start', 'val'], 'float128', 2, 'float64', 1) self.assertTrue(tf.isValued(specificValType='mean_sd')) self.assertFalse(tf.isValued(specificValType='number')) self.assertEqual('Mean and std.dev.', tf.getValTypeName()) self.assertEqual('Valued points', tf.getFormatName()) tfq = TrackFormatReq(interval=False, val='tc') self.assertFalse(tfq.isCompatibleWith(tf))
def addFormatReq(self, requestedTrackFormat): prevFormatReq = self._trackFormatReq self._trackFormatReq = TrackFormatReq.merge(self._trackFormatReq, requestedTrackFormat) if self._trackFormatReq is None: raise IncompatibleTracksError( str(prevFormatReq) + " is incompatible with additional " + str(requestedTrackFormat) )