in data/contact_map_utils.py [0:0]
def idx_align(pdb_seq: str, og_seq: str):
"""Maps indices of original and PDB sequences to mutual alignment
Args:
pdb_seq: Sequence of amino acids as extracted from PDB file
og_seq: Original sequence of amino acids
Returns:
Tuple where the first element is a list of integers containing the indices in
the PDB sequence for which aligned information is available and the second element
is a list of integers containing the indices in the original sequence
for which aligned information is available
"""
alignment = pairwise2.align.globalxx(Seq(og_seq), Seq(pdb_seq))[0]
og_seq_align = alignment.seqA
og_idxs = []
og_offset = 0
pdb_seq_align = alignment.seqB
pdb_idxs = []
pdb_offset = 0
for i in range(len(pdb_seq_align)):
valid = True
pdb_res = pdb_seq_align[i]
og_res = og_seq_align[i]
if pdb_res == "-":
pdb_offset += 1
valid = False
if og_res == "-":
og_offset += 1
valid = False
if valid and (pdb_res == og_res):
pdb_idxs.append(i - pdb_offset)
og_idxs.append(i - og_offset)
return pdb_idxs, og_idxs