def align_and_consensus(chunk): """Wraps functions for alignment and consensus generation. Does not perform alignment for clusters of length 1. """ i, (cluster, rlelist) = chunk if len(cluster) == 1: # no need to align... seq = cluster[0] rle = rlelist[0] if rlelist else None cons = homodecode(seq, rle) if rle else seq.seq else: log.debug('aligning cluster {} len {}'.format(i, len(cluster))) cons = consensus(run_muscle(cluster), rlelist) return cluster, cons
def seq_and_homodecode(seq_rle): seq, rle = seq_rle assert len(seq.seq) == len(rle) return seq, homodecode(seq.seq, rle)
def rlemap(seq): decoded = homodecode(seq.seq, from_ascii(args.rlefile[seq.id])) return SeqLite(seq.id, seq.description, decoded)
def test01(self): seq = 'TCTGGACCGTGTCTTTCAGTTCCAAAGTGTGACTGATCCATCCTCTCAGACC' e, c = sequtils.homoencode(seq) self.assertEquals(seq, sequtils.homodecode(e, c))