From 5fbbb6d304515e49b20c79ab2138cc3011570917 Mon Sep 17 00:00:00 2001 From: Celine Mercier Date: Fri, 5 Jun 2020 16:06:43 +0200 Subject: [PATCH] alignpairedend: fixed a bug when rebuilding joined (unaligned) sequences where only the forward sequence was kept --- python/obitools3/libalign/_solexapairend.pyx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/python/obitools3/libalign/_solexapairend.pyx b/python/obitools3/libalign/_solexapairend.pyx index 5555271..bf391c5 100755 --- a/python/obitools3/libalign/_solexapairend.pyx +++ b/python/obitools3/libalign/_solexapairend.pyx @@ -188,7 +188,7 @@ def buildConsensus(ali, seq, ref_tags=None): seq[b'shift']=ali.shift else: if len(ali[0])>999: # TODO why? - raise AssertionError,"Too long alignemnt" + raise AssertionError,"Too long alignment" ic=IterOnConsensus(ali) @@ -250,11 +250,21 @@ def buildJoinedSequence(ali, reverse, seq, forward=None): quality.extend(reverse.quality) seq.set(forward.id +b"_PairedEnd", s, definition=forward.definition, quality=quality) seq[b"score"]=ali.score - seq[b"ali_direction"]=ali.direction + if len(ali.direction) > 0: + seq[b"ali_direction"]=ali.direction + else: + seq[b"ali_direction"]=None seq[b"mode"]=b"joined" - seq[b"pairedend_limit"]=len(forward) + seq[b"pairedend_limit"]=len(forward) + seq[b"ali_length"] = ali.consensus_len + if ali.consensus_len > 0: + seq[b"score_norm"]=float(ali.score)/ali.consensus_len + else: + seq[b"score_norm"]=0.0 + for tag in forward: - if tag != REVERSE_SEQUENCE_COLUMN and tag != REVERSE_QUALITY_COLUMN: + if tag != REVERSE_SEQUENCE_COLUMN and tag != REVERSE_QUALITY_COLUMN and \ + tag != NUC_SEQUENCE_COLUMN and tag != QUALITY_COLUMN: seq[tag] = forward[tag] return seq