def createNmerChains(self, n): for chr in GenomeInfo.getChrList(self._genome): print 'Creating chains of nmers of length ', n, ' for chromosome ', chr chrLen = GenomeInfo.getChrLen(self._genome,chr) chrReg = GenomeRegion( self._genome, chr, 0, chrLen ) seqTV = PlainTrack( GenomeInfo.getSequenceTrackName(self._genome) ).getTrackView(chrReg) #nmersAsInts = NmerAsIntSlidingWindow(n, FuncValTvWrapper(seqTV)) nmersAsInts = NmerAsIntSlidingWindow(n, seqTV.valsAsNumpyArray()) SameValueIndexChainsFactory.generate( nmersAsInts, chrLen, 4**n, self._createPath(n), chr )
def createNmerChains(self, n): for chr in GenomeInfo.getChrList(self._genome): print 'Creating chains of nmers of length ', n, ' for chromosome ', chr chrLen = GenomeInfo.getChrLen(self._genome, chr) chrReg = GenomeRegion(self._genome, chr, 0, chrLen) seqTV = PlainTrack(GenomeInfo.getSequenceTrackName( self._genome)).getTrackView(chrReg) #nmersAsInts = NmerAsIntSlidingWindow(n, FuncValTvWrapper(seqTV)) nmersAsInts = NmerAsIntSlidingWindow(n, seqTV.valsAsNumpyArray()) SameValueIndexChainsFactory.generate(nmersAsInts, chrLen, 4**n, self._createPath(n), chr)
def _createRandomizedNumpyArrays(self, binLen, starts, ends, vals, strands, ids, edges, weights, extras, region): intensityTV = PlainTrack(self._trackNameIntensity).getTrackView(region) if len(intensityTV.valsAsNumpyArray()) == 0: raise InvalidRunSpecException('Error: No intensity data available for sampling randomized locations in region' + \ str(region) + \ '. Please check that the intensity track was created with the same main track that is being randomized in this analysis.') #intensityTV = PlainTrack(self._trackNameIntensity).getTrackView(self._origRegion) #Dependence on origRegion is not nice, but not a big problem.. if intensityTV.trackFormat.isDense(): assert intensityTV.trackFormat.isValued('number') return self._createRandomizedNumpyArraysFromIntensityFunction(binLen, starts, ends, vals, strands, ids, edges, \ weights, extras, intensityTV) else: raise NotImplementedError
def _createRandomizedNumpyArrays(self, binLen, starts, ends, vals, strands, ids, edges, weights, extras, origTrackFormat, region): if self._minimal: return numpy.array([]), None, None, None, None, None, None, OrderedDict() intensityTV = PlainTrack(self._trackNameIntensity).getTrackView(region) if len(intensityTV.valsAsNumpyArray())==0: raise InvalidRunSpecException('Error: No intensity data available for sampling randomized locations in region' + \ str(region) + \ '. Please check that the intensity track was created with the same main track that is being randomized in this analysis.') #intensityTV = PlainTrack(self._trackNameIntensity).getTrackView(self._origRegion) #Dependence on origRegion is not nice, but not a big problem.. if intensityTV.trackFormat.isDense(): assert intensityTV.trackFormat.isValued('number') return self._createRandomizedNumpyArraysFromIntensityFunction(binLen, starts, ends, vals, strands, ids, edges, weights, extras, intensityTV) else: raise NotImplementedError
def _createRandomizedNumpyArrays(self, binLen, starts, ends, vals, strands, ids, edges, weights, extras, region): referenceTV = PlainTrack(self._trackNameIntensity).getTrackView( region ) #self._trackNameIntensity based on naming convenience wrt. inheritance if len(referenceTV.valsAsNumpyArray()) == 0: raise InvalidRunSpecException('Error: No reference data available for sampling randomized locations in region' + \ str(region) + \ '. Please check that the reference track was created with the same main track that is being randomized in this analysis.') if referenceTV.trackFormat.isDense(): raise InvalidRunSpecException( 'Error: Cannot sample by distance to reference if reference is a dense track' ) else: return self._createRandomizedNumpyArraysFromDistanceToReference( binLen, starts, ends, vals, strands, ids, edges, weights, extras, referenceTV)