docs: def get_alignment_df(a_aln_seq, b_aln_seq, a_seq_id=None, b_seq_id=None):
      """Summarize two alignment strings in a dataframe.
  
      Args:
          a_aln_seq (str): Aligned sequence string
          b_aln_seq (str): Aligned sequence string
          a_seq_id (str): Optional ID of a_seq
          b_seq_id (str): Optional ID of b_aln_seq
  
      Returns:
          DataFrame: a per-residue level annotation of the alignment
  
      """
      if len(a_aln_seq) != len(b_aln_seq):
          raise ValueError('Sequence lengths not equal - was an alignment run?')
  
      if not a_seq_id:
          a_seq_id = 'a_seq'
      if not b_seq_id:
          b_seq_id = 'b_seq'
  
      a_aln_seq = ssbio.protein.sequence.utils.cast_to_str(a_aln_seq)
      b_aln_seq = ssbio.protein.sequence.utils.cast_to_str(b_aln_seq)
  
      a_idx = 1
      b_idx = 1
  
      appender = []
  
      for i, (a,b) in enumerate(zip(a_aln_seq, b_aln_seq)):
          to_append = {}
  
          if a == b and a != '-' and b != '-':
              aa_flag = 'match'
          elif a != b and a == '-' and b != '-':
              aa_flag = 'insertion'
          elif a != b and a != '-' and b == '-':
              aa_flag = 'deletion'
          elif a != b and a != '-' and b == 'X':
              aa_flag = 'unresolved'
          elif a != b and b != '-' and a == 'X':
              aa_flag = 'unresolved'
          elif a != b and a != '-' and b != '-':
              aa_flag = 'mutation'
  
          to_append['id_a'] = a_seq_id
          to_append['id_b'] = b_seq_id
          to_append['type'] = aa_flag
  
          if aa_flag == 'match' or aa_flag == 'unresolved' or aa_flag == 'mutation':
              to_append['id_a_aa'] = a
              to_append['id_a_pos'] = int(a_idx)
              to_append['id_b_aa'] = b
              to_append['id_b_pos'] = int(b_idx)
              a_idx += 1
              b_idx += 1
  
          if aa_flag == 'deletion':
              to_append['id_a_aa'] = a
              to_append['id_a_pos'] = int(a_idx)
              a_idx += 1
  
          if aa_flag == 'insertion':
              to_append['id_b_aa'] = b
              to_append['id_b_pos'] = int(b_idx)
              b_idx += 1
  
          appender.append(to_append)
  
      cols = ['id_a', 'id_b', 'type', 'id_a_aa', 'id_a_pos', 'id_b_aa', 'id_b_pos']
      alignment_df = pd.DataFrame.from_records(appender, columns=cols)
      alignment_df = alignment_df.fillna(value=np.nan)
  
      return alignment_df