docs: def get_sequence_alignment_printer_objects(self, pdb_list = [], reversed = True, width = 80, line_separator = '\n'):
          '''Takes a list, pdb_list, of pdb names e.g. ['Model', 'Scaffold', ...] with which the object was created.
              Using the first element of this list as a base, get the sequence alignments with chains in other members
              of the list. For simplicity, if a chain in the first PDB matches multiple chains in another PDB, we only
              return the alignment for one of the chains. If pdb_list is empty then the function defaults to the object's
              members.
  
              Returns a list of tuples (chain_id, sequence_alignment_printer_object). Each sequence_alignment_printer_object
              can be used to generate a printable version of the sequence alignment. '''
  
          if not pdb_list:
              pdb_list = self.pdb_names
  
          assert(len(set(pdb_list)) == len(pdb_list) and (len(pdb_list) > 1))
          assert(sorted(set(pdb_list).intersection(set(self.pdb_names))) == sorted(set(pdb_list)))
  
          primary_pdb = self.pdb_name_to_structure_mapping[pdb_list[0]]
          primary_pdb_name = pdb_list[0]
          primary_pdb_chains = sorted(primary_pdb.chain_atoms.keys())
  
          sequence_alignment_printer_objects = []
          for primary_pdb_chain in primary_pdb_chains:
  
              sa = SequenceAligner()
  
              # Add the primary PDB's sequence for the chain
              primary_pdb_sequence_type, primary_pdb_sequence = primary_pdb.get_annotated_chain_sequence_string(primary_pdb_chain, self.use_seqres_sequences_if_possible)
              sa.add_sequence('%s_%s' % (primary_pdb_name, primary_pdb_chain), str(primary_pdb_sequence))
              other_chain_types_and_sequences = {}
              for other_pdb_name in pdb_list[1:]:
                  other_pdb = self.pdb_name_to_structure_mapping[other_pdb_name]
                  other_chains = self.get_chain_mapping(primary_pdb_name, other_pdb_name).get(primary_pdb_chain)
                  #other_chain = self.mapping[(primary_pdb_name, other_pdb_name)].get(primary_pdb_chain)
                  if other_chains:
                      other_chain = sorted(other_chains)[0]
                      other_pdb_sequence_type, other_pdb_sequence = other_pdb.get_annotated_chain_sequence_string(other_chain, self.use_seqres_sequences_if_possible)
                      other_chain_types_and_sequences[other_pdb_name] = (other_pdb_sequence_type, other_pdb_sequence)
                      sa.add_sequence('%s_%s' % (other_pdb_name, other_chain), str(other_pdb_sequence))
  
              if len(sa.records) > 1:
                  # If there are no corresponding sequences in any other PDB, do not return the non-alignment
                  sa.align()
  
                  #pdb1_alignment_str = sa._get_alignment_lines()['%s:%s' % (primary_pdb_name, pdb1_chain)]
                  #pdb2_alignment_str = sa._get_alignment_lines()['%s:%s' % (pdb2_name, pdb2_chain)]
  
                  sequence_names, sequences, sequence_tooltips = [], [], []
  
                  sequence_names.append('%s_%s' % (primary_pdb_name, primary_pdb_chain))
                  primary_pdb_alignment_lines = sa._get_alignment_lines()['%s_%s' % (primary_pdb_name, primary_pdb_chain)]
                  sequences.append(primary_pdb_alignment_lines)
                  sequence_tooltips.append(self.get_sequence_tooltips(primary_pdb, primary_pdb_sequence, primary_pdb_sequence_type, primary_pdb_name, primary_pdb_chain, primary_pdb_alignment_lines))
                  for other_pdb_name in pdb_list[1:]:
                      #other_chain = self.mapping[(primary_pdb_name, other_pdb_name)].get(primary_pdb_chain)
                      other_pdb = self.pdb_name_to_structure_mapping[other_pdb_name]
                      other_chains = self.get_chain_mapping(primary_pdb_name, other_pdb_name).get(primary_pdb_chain)
                      if other_chains:
                          other_chain = sorted(other_chains)[0]
                          sequence_names.append('%s_%s' % (other_pdb_name, other_chain))
                          other_pdb_alignment_lines = sa._get_alignment_lines()['%s_%s' % (other_pdb_name, other_chain)]
                          sequences.append(other_pdb_alignment_lines)
                          other_pdb_sequence_type, other_pdb_sequence = other_chain_types_and_sequences[other_pdb_name]
                          sequence_tooltips.append(self.get_sequence_tooltips(other_pdb, other_pdb_sequence, other_pdb_sequence_type, other_pdb_name, other_chain, other_pdb_alignment_lines))
  
                  sap = MultipleSequenceAlignmentPrinter(sequence_names, sequences, sequence_tooltips)
                  sequence_alignment_printer_objects.append((primary_pdb_chain, sap))
  
          return sequence_alignment_printer_objects