diff --git a/modules/seq/alg/pymod/__init__.py b/modules/seq/alg/pymod/__init__.py index bd108a603824b5e3379c34c440131a405da781af..63157ea31e84892007da778d3ac09c00c51c52df 100644 --- a/modules/seq/alg/pymod/__init__.py +++ b/modules/seq/alg/pymod/__init__.py @@ -85,6 +85,10 @@ def AlignToSEQRES(chain, seqres, try_resnum_first=False, validate=True): :returns: The alignment of the residues in the chain and the SEQRES entries. :rtype: :class:`~ost.seq.AlignmentHandle` """ + + def IsEqual(olc1, olc2): + return olc1 in ('X', '?') or olc2 in ('X', '?') or olc1 == olc2 + from ost import seq from ost import mol from ost import LogWarning @@ -96,7 +100,7 @@ def AlignToSEQRES(chain, seqres, try_resnum_first=False, validate=True): aln_seq = seq.CreateSequence('atoms', '-'*len(seqres)) for r1 in residues: if r1.number.num <= len(seqres) and r1.number.num > 0: - if seqres[r1.number.num - 1] == r1.one_letter_code: + if IsEqual(seqres[r1.number.num - 1], r1.one_letter_code): aln_seq[r1.number.num - 1] = r1.one_letter_code else: LogWarning('Sequence mismatch: chain has "' + r1.one_letter_code +