def __call__(self, garray): if callable(self.gsize): gsize = self.gsize() seqs = self.gsize.seqs else: gsize = self.gsize seqs = self.seqs order = self.order dtype = garray.typecode bar = Bar('Loading sequences', max=len(gsize)) for region, seq in zip(gsize, seqs): indarray = np.asarray(seq2ind(seq), dtype=dtype) if order > 1: # for higher order motifs, this part is used filter_ = np.asarray([ pow(len(seq.seq.alphabet.letters), i) for i in range(order) ]) indarray = np.convolve(indarray, filter_, mode='valid') garray[region, 0] = indarray.reshape(-1, 1) bar.next() bar.finish()
def __call__(self, garray): if callable(self.gsize): gsize = self.gsize() seqs = self.gsize.seqs else: gsize = self.gsize seqs = self.seqs order = self.order bar = Bar('Loading sequences', max=len(gsize)) for region, seq in zip(gsize, seqs): indarray = np.asarray(seq2ind(seq)) if order > 1: # for higher order motifs, this part is used filter_ = np.asarray([ pow(len(seq.seq.alphabet.letters), i) for i in range(order) ]) indarray = np.convolve(indarray, filter_, mode='valid') # the specific type int8 is not irrelevant, as long as # the negative values are maintained correctly. indarray[indarray < np.iinfo('int8').min] = np.iinfo( 'int8').min garray[region, 0] = indarray.reshape(-1, 1) bar.next() bar.finish()
def _seq_loader(cover, seqs, order): print('Convert sequences to index array') for seq in seqs: if cover._full_genome_stored: interval = GenomicInterval(seq.id, 0, len(seq) - order + 1, '.') else: interval = GenomicInterval( *_str_to_iv(seq.id, template_extension=0)) indarray = np.asarray(seq2ind(seq), dtype=dtype) if order > 1: # for higher order motifs, this part is used filter_ = np.asarray([ pow(len(seq.seq.alphabet.letters), i) for i in range(order) ]) indarray = np.convolve(indarray, filter_, mode='valid') cover[interval, 0] = indarray
def __call__(self, garray): seqs = self.seqs order = self.order dtype = garray.typecode print('Convert sequences to index array') for seq in seqs: if garray._full_genome_stored: interval = GenomicInterval(seq.id, 0, len(seq) - order + 1, '.') else: interval = GenomicInterval(*_str_to_iv(seq.id, template_extension=0)) indarray = np.asarray(seq2ind(seq), dtype=dtype) if order > 1: # for higher order motifs, this part is used filter_ = np.asarray([pow(len(seq.seq.alphabet.letters), i) for i in range(order)]) indarray = np.convolve(indarray, filter_, mode='valid') garray[interval, 0] = indarray.reshape(-1, 1)