def __call__(self, read1: DnaSequence, read2: DnaSequence, info1: ModificationInfo, info2: ModificationInfo) -> Tuple[DnaSequence, DnaSequence]: id1, comment1 = Renamer.parse_name(read1.name) id2, comment2 = Renamer.parse_name(read2.name) if not record_names_match(read1.name, read2.name): raise ValueError( "Input read IDs not identical: '{}' != '{}'".format(id1, id2)) name1, name2 = self.get_new_headers( id1=id1, id2=id2, comment1=comment1, comment2=comment2, header1=read1.name, header2=read2.name, info1=info1, info2=info2, ) new_id1 = Renamer.parse_name(name1)[0] new_id2 = Renamer.parse_name(name2)[0] if not record_names_match(name1, name2): raise InvalidTemplate( "After renaming R1 and R2, their IDs are no longer identical: " "'{}' != '{}'. Original read ID: '{}'. ".format( new_id1, new_id2, id1)) read1.name = name1 read2.name = name2 return read1, read2
def __call__(self, read: DnaSequence, info: ModificationInfo) -> DnaSequence: id_, comment = self.parse_name(read.name) read.name = self._template.format( header=read.name, id=id_, comment=comment, cut_prefix=info.cut_prefix if info.cut_prefix else "", cut_suffix=info.cut_suffix if info.cut_suffix else "", adapter_name=info.matches[-1].adapter.name if info.matches else "no_adapter", rc="rc" if info.is_rc else "", ) return read