Ejemplo n.º 1
0
    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)
Ejemplo n.º 3
0
    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))
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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, {})
Ejemplo n.º 7
0
def provideTrack(tn):
    valList = tn[0].split(',')
    return SampleTrack(SampleTV_Num( vals=valList, anchor=[0,len(valList)] ))