def fixGeneral(self): # main logic here bases = re.compile('G|A|T|C') # find boundaries match_obj = bases.search(self.alignedRecords[0].seq.tostring()) start_index = match_obj.start() cdr_len = len(bases.findall(self.alignedRecords[0].seq.tostring())) # copy in original cdr localFixedRecord = ''.join([ self.alignedRecords[1].seq.tostring()[0:start_index], self.alignedRecords[0].seq.tostring()[(start_index):(start_index+cdr_len)], self.alignedRecords[1].seq.tostring()[(start_index+cdr_len):] ]) # remove any '-' from sequence. Possible if alignment created '-' in CDR localFixedRecord = SeqRecord(Seq(localFixedRecord.replace('-',''),DNAAlphabet),id="fixedSequence") if not (localFixedRecord.seq.tostring() == self.fixedRecord.seq.tostring()): self.reportHandle.write('Using alignment between CDR and sequence:\n') self.reportHandle.write(self.alignedRecords[0].seq.tostring()) self.reportHandle.write('\n') self.reportHandle.write(self.alignedRecords[1].seq.tostring()) self.reportHandle.write('\n') self.reportHandle.write('The sequence was corrected to be:\n') self.reportHandle.write(localFixedRecord.seq.tostring()) self.reportHandle.write('\n') self.cdrModifications = True self.fixedRecord = localFixedRecord