def sequence_variant(self, sequence, mutation, strand="+"): """ Return the possible mutation(s) in the sequence due to the sequence. For now, return the original sequence. # TODO: probably not return the original sequence """ # first step: get positive string, standardizing so it's # easier for me to think about if sequence.strand == "-": seq = sequence.reverse_complement() else: seq = sequence if mutation["observed"] == "lengthTooLong": # raise UnknownMutationError, "Could not read the variants for %s SNP %s at chr%s:%s-%s" % (mutation['class'], mutation['name'], mutation['chrom'], mutation['chromStart'], mutation['chromEnd']) sequences = [] dup = self.__class__.duplicate(sequence) dup2 = self.__class__.duplicate(sequence, name=mutation["name"]) xform = TransformedGenomeSequence.replace( dup2, mutation["chromStart"], mutation["chromEnd"], "?" * (mutation["chromEnd"] - mutation["chromStart"] + 1), ) sequences.append(dup) sequences.append(xform) else: klass = mutation["class"].lower().replace("-", "") sequences = getattr(self.__class__, "_%s_sequence_variant" % klass, self.__class__._unknown_variant)( seq, mutation ) if strand == "-": return [reverse_complement(s) for s in sequences] else: return sequences