def _createStat(self, *args, **kwArgs): assert(isinstance(args[0], TrackView)) tv1 = args[0] if len(args) > 1 and isinstance(args[1], TrackView): tv2 = args[1] assert(tv1.genomeAnchor == tv2.genomeAnchor) #Temporary hack for multiple tracks # if len(args) > 2: extraTrackViews = [arg for arg in args[2:] if isinstance(arg, TrackView)] self.stat = self.CLASS_TO_CREATE(kwArgs['binRegs'] if 'binRegs' in kwArgs else tv1.genomeAnchor, \ SampleTrack(tv1) if kwArgs.get('testWithConverter') != True else SampleTrackWithConverters(tv1),\ SampleTrack(tv2) if kwArgs.get('testWithConverter') != True else SampleTrackWithConverters(tv2),\ *args[2 + len(extraTrackViews):], **kwArgs) #Temporary hack for multiple tracks for tv in extraTrackViews: track = SampleTrack(tv) if kwArgs.get('testWithConverter') != True else SampleTrackWithConverters(tv) if hasattr(self.stat, '_tracks'): self.stat._tracks.append(track) else:#for splittable if 'extraTracks' not in self.stat._kwArgs: self.stat._kwArgs['extraTracks'] = tuple() self.stat._kwArgs['extraTracks'] += tuple([track]) else: self.stat = self.CLASS_TO_CREATE(kwArgs['binRegs'] if 'binRegs' in kwArgs else tv1.genomeAnchor, \ SampleTrack(tv1) if kwArgs.get('testWithConverter') != True else SampleTrackWithConverters(tv1),\ *args[1:], **kwArgs)
def _getSampleTrack(numbers=False): if numbers: return SampleTrack(SampleTV_Num(anchor=[0, 50]), True) else: return SampleTrack( SampleTV(starts=True, ends=True, vals=True, numElements=50, anchor=[0, 1000]), True)
def _doRandTest(self, origTV, randTrackClasses): anchor = [origTV.genomeAnchor.start, origTV.genomeAnchor.end] intensityTV = SampleTV_Num(vals=range(anchor[1] - anchor[0]), anchor=anchor) # fixme: not yet used.. MyPlainTrack._origTV = intensityTV gold.track.SegsSampledByIntensityTrack.PlainTrack = MyPlainTrack origTrack = SampleTrack(origTV) anchorReg = GenomeRegion('TestGenome', 'chr21', anchor[0], anchor[1]) binLen = len(anchorReg) for randClass in randTrackClasses: for i in range(100): randTrack = randClass(origTrack, i, trackNameIntensity='dummy_intensity') randTV = randTrack.getTrackView(anchorReg) self.assertListsOrDicts(sorted(len(el) for el in origTV), sorted(len(el) for el in randTV)) if isinstance(randClass, PermutedSegsAndIntersegsTrack): self.assertEqual(self._getInterSegLens(origTV, binLen), self._getInterSegLens(randTV, binLen)) else: self.assertEqual( sum(self._getInterSegLens(origTV, binLen)), sum(self._getInterSegLens(randTV, binLen))) for el in randTV: assert (0 <= el.start() < el.end() <= binLen) # self.assertEqual(self._createValAndStrandDict(origTV), self._createValAndStrandDict(randTV)) self.assertListsOrDicts(self._createSortedContents(origTV), self._createSortedContents(randTV))
def _doRandTest(self, origTV): origTrack = SampleTrack(origTV) queryReg = GenomeRegion('TestGenome','chr21',100,400) for randClass in [RandomGenomeLocationTrack]: for i in range(10): randTrack = randClass(origTrack, i) randTV = randTrack.getTrackView(queryReg) self.assertEqual(len(queryReg), len(randTV))
def setUp(self): """ Create a fake trackstructure containing empty tracks, this is only used to ensure the randomization pool knows there should be 3 input tracks. """ genomeAnchor = [0, 101] self.amountTracks = 3 self.region = GenomeRegion('TestGenome', 'chr21', genomeAnchor[0], genomeAnchor[1]) self.ts = TrackStructureV2() for i, segmentSet in enumerate([[]] * self.amountTracks): track = SampleTrack( SampleTV(segments=segmentSet, anchor=genomeAnchor)) track.getUniqueKey = MagicMock(return_value=i) self.ts[str(i)] = SingleTrackTS(track, {}) self.shufflePool = ShuffleElementsBetweenTracksPool( self.ts, self.region, None)
def setUp(self): genomeAnchor = [0, 101] self.bins = [ GenomeRegion('TestGenome', 'chr21', 0, 50), GenomeRegion('TestGenome', 'chr21', 50, 101) ] self.ts = defaultdict(TrackStructureV2) allSegmentSetNoOverlap = [[[10, 20]], [[5, 10], [25, 50], [55, 70], [75, 80], [90, 95]], [[5, 15], [20, 30], [45, 55], [75, 80]], [[0, 20], [60, 65], [85, 100]]] allSegmentSetOverlap = [[[10, 25]], [[5, 10], [20, 50], [55, 70], [75, 80], [90, 95]], [[5, 20], [15, 30], [45, 55], [75, 80]], [[0, 20], [60, 65], [85, 100]]] excludedSegments = [[45, 55], [70, 75]] for allowOverlaps, allSegmentSet in \ zip([False, True], [allSegmentSetNoOverlap, allSegmentSetOverlap]): for i, segmentSet in enumerate(allSegmentSet): track = SampleTrack( SampleTV(segments=segmentSet, anchor=genomeAnchor, allowOverlaps=allowOverlaps)) track.getUniqueKey = MagicMock(return_value=i) self.ts[allowOverlaps]['dummy' + str(i)] = SingleTrackTS( track, {}) track = SampleTrack( SampleTV(segments=[], anchor=genomeAnchor, allowOverlaps=allowOverlaps)) track.getUniqueKey = MagicMock(return_value=i + 1) self.ts[allowOverlaps]['emptyTrack'] = SingleTrackTS(track, {}) exclusionTrack = SampleTrack( SampleTV(segments=excludedSegments, anchor=genomeAnchor, allowOverlaps=False)) self.exclusionTs = SingleTrackTS(exclusionTrack, {})
def provideTrack(tn): valList = tn[0].split(',') return SampleTrack(SampleTV_Num( vals=valList, anchor=[0,len(valList)] ))