def get_fn(self, arity): f = self._arities.get(arity, None) if f is not None: return f if self._rest_fn is not None and arity >= self._required_arity: return self._rest_fn acc = [] sorted = TimSort(self.get_arities()) sorted.sort() for x in sorted.list: acc.append(unicode(str(x))) if self._rest_fn: acc.append(unicode(str(self._rest_fn.required_arity())) + u"+") runtime_error(u"Wrong number of arguments " + unicode(str(arity)) + u" for function '" + unicode(self._name) + u"'. Expected " + join_last(acc, u"or"))
def get_fn(self, arity): f = self._arities.get(arity, None) if f is not None: return f if self._rest_fn is not None and arity >= self._required_arity: return self._rest_fn acc = [] sorted = TimSort(self.get_arities()) sorted.sort() for x in sorted.list: acc.append(unicode(str(x))) if self._rest_fn: acc.append(unicode(str(self._rest_fn.required_arity())) + u"+") runtime_error(u"Wrong number of arguments " + unicode(str(arity)) + u" for function '" + unicode(self._name) + u"'. Expected " + join_last(acc, u"or"), u"pixie.stdlib/InvalidArityException")
def sorttest(lst1): lst2 = lst1[:] TimSort(lst2).sort() assert len(lst1) == len(lst2) assert makeset(lst1) == makeset(lst2) position = {} i = 0 for a in lst1: position.setdefault(id(a), []).append(i) i += 1 for i in range(len(lst2) - 1): a, b = lst2[i], lst2[i + 1] assert a <= b, "resulting list is not sorted" if a == b: assert position[id(a)][0] < position[id(b)][-1], "not stable"
def __init__(self, space, list, listlength=None, sortblock=None): TimSort.__init__(self, list, listlength=listlength) self.space = space self.sortblock = sortblock
def __init__(self, list, listlength=None, compare_fn=None, ctx=None): TimSort.__init__(self, list, listlength) self.compare_fn = compare_fn self.ctx = ctx
def fq2c(qry): ksize = max(2, int(qry[0])) names = qry[1:] D = len(names) scale = 4 #buck = [array('H', [0]) * pow(scale, k) for elem in xrange(D // 2)] #buck = [array('H', [0]) * scale ** k for elem in xrange(D // 2)] #buck = np.zeros((D//2, scale ** k), 'int32') N = int(pow(scale, ksize)) buck = [[r_ushort(0) for elem0 in xrange(N)] for elem1 in xrange(D // 2)] print 'ksize, names, D, N, buck shape', ksize, names, D, N, len(buck), len(buck[0]) flag = 0 itr = 1 init0 = init1 = time() # for name0, name1 in zip(names[0::2], names[1::2]): for i in xrange(0, len(names), 2): name0, name1 = names[i], names[i + 1] print 'qry0', name0, 'qry1', name1 f0 = open(name0, 'r') f1 = open(name1, 'r') seqs0 = parse(f0, 'fastq') #seqs0 = SeqIO.parse(f0, 'fastq') seqs1 = parse(f1, 'fastq') #seqs1 = SeqIO.parse(f1, 'fastq') for seq0, seq1 in izip([seqs0, seqs1]): if seq0.qual.count('N') > 20 or seq1.qual.count('N') > 20: continue kmc(seq0.seq, buck[flag], ksize, scale) kmc(seq1.seq, buck[flag], ksize, scale) # timing if itr % 1000000 == 0: print 'iteration', itr, 'time', time() - init1, 'total time', time() - init0 init1 = time() itr += 1 f0.close() f1.close() flag += 1 # print 'buck', [[intmask(b1) for b1 in b0] for b0 in buck] # convert the each reads to a freq hist flag = 0 itr = 1 init0 = init1 = time() # for name0, name1 in zip(names[0::2], names[1::2]): for i in xrange(0, len(names), 2): name0, name1 = names[i], names[i + 1] print 'qry0', name0, 'qry1', name1 f0 = open(name0, 'r') f1 = open(name1, 'r') seqs0 = parse(f0, 'fastq') #seqs0 = SeqIO.parse(f0, 'fastq') seqs1 = parse(f1, 'fastq') #seqs1 = SeqIO.parse(f1, 'fastq') for seq0, seq1 in izip([seqs0, seqs1]): if seq0.qual.count('N') > 20 or seq1.qual.count('N') > 20: continue output = [] fwd = [intmask(buck[flag][elem]) for elem in seq2n(seq0.seq, ksize, scale, code)] rev = [intmask(buck[flag][elem]) for elem in seq2n(seq1.seq, ksize, scale, code)] med = len(fwd) // 2 step = 16 start, end = max(0, med - step), max(0, med + step) # for test, only keep positive output = fwd[start: end] + rev[start: end] #output = fwd[start: end] # output.sort() TimSort(output).sort() if len(output) < step * 2: output.extend([0] * (step * 2 - len(output))) # print max(output), min(output), mean(output), std(output), output #A, B, C, D = khist(output) # print ' '.join(map(str, A + ['|', B, C, D])) # print ' '.join(map(str, output)) print 'output', ' '.join([str(out) for out in output]) # timing if itr % 1000000 == 0: print 'iteration', itr, 'time', time() - init1, 'total time', time() - init0 init1 = time() itr += 1 f0.close() f1.close() flag += 1 return buck
def run(n, qry): ksize = max(2, n) rg = rrandom.Random() a = [] for i in xrange(n): #b = [r_ushort(int(rg.random() * pow(2, 15) - 1)) for elem0 in xrange(32)] b = [int(rg.random() * pow(2, 15) - 1) for elem0 in xrange(32)] # b.sort() TimSort(b).sort() # a.append(b) a.append([r_ushort(elem) for elem in b]) # a.append(d) #a = [TimSort([r_ushort(int(rg.random() * pow(2, 15) - 1)) for elem0 in xrange(32)]).sort() for elem1 in xrange(n)] # print 'short add', a[0][0] + a[0][0] u = p = 0 Atmp = range(6) dna = 'atgcgc' qsort(Atmp, dna) print 'qsort', Atmp, [dna[elem] for elem in Atmp] for i in xrange(1): x = [0] * 32 y = [0] * 32 # for j in xrange(32): # x[j] = rg.random() # y[j] = rg.random() #x = [rg.random() for elem in xrange(32)] #y = [rg.random() for elem in xrange(32)] #x = [intmask(elem) for elem in [r_ushort(0)] * 32] #x = map(intmask, [0] * 32) y = [intmask(elem) for elem in xrange(32)] #rgs = range(32) #y = map(intmask, rgs) #x = y = [0] * 32 u, p = mannwhitneyu(x, y, True) p = pearson(x, y) print 'p value is', u, p print k2n('ta' * 12), intmask(int('123')) test_seq = 'tgatcgctgtagctgatgctcatgctatgctatcgtagtcgtgctagctagcatcgatcgatcgctagaaacagctgcgtatctatctatatatatattaggagaatgtgagaga' test_n = seq2n(test_seq) # for i in test_n: # print 'seq2n test', i canopy(a) print [r_uint(elem) for elem in test_n] buck = [[r_ushort(0) for elem0 in xrange(pow(scale, ksize))] for elem1 in xrange(len(qry))] f0 = open(qry, 'r') f1 = open(qry, 'r') seqs0 = parse(f0) seqs1 = parse(f1) for seq0, seq1 in izip([seqs0, seqs1]): # print seq0.seq, seq1.seq print 'test seq2n' # print [nb for nb in seq2n(seq0.seq)] kmc(seq0.seq, buck[0], ksize, scale) kmc(seq1.seq, buck[0], ksize, scale) f0.close() f1.close() print [intmask(elem) for elem in buck[0][:15]] '''
def listsort(): lst = [10, 1, 9, 2, 8, 3, 7, 4, 5, 6] TimSort(lst).sort() print lst