docs: def get_all_pdbflex_info(self):
          """Gets ALL PDBFlex entries for all mapped structures, then stores the ones that match the repseq length
  
          Ideas:
              - maybe first check for quality of structure and then retrieve the pdbflex entry
              - not sure which sequence is used in pdbflex
  
          """
          # XTODO: documentation
          log.debug('{}: representative sequence length'.format(self.representative_sequence.seq_len))
  
          for s in self.get_experimental_structures():
              log.debug('{};{}: chains matching protein {}'.format(s.id, s.mapped_chains, self.id))
  
              s.download_structure_file(outdir=self.structure_dir, file_type='mmtf')
              # s.parse_structure()
  
              for c in s.mapped_chains:
                  # log.debug('{}: sequence length of chain {}'.format(len(s.chains.get_by_id(c).seq_record), c))
  
                  # Retrieve PDBFlex stats
                  stats = ssbio.databases.pdbflex.get_pdbflex_info(pdb_id=s.id, chain_id=c, outdir=self.structure_dir)
                  parent = stats['parentClusterID']
  
                  if parent:
                      # Retrieve PDBFlex representative PDBs
                      reps = ssbio.databases.pdbflex.get_pdbflex_representatives(pdb_id=s.id, chain_id=c, outdir=self.structure_dir)
  
                      # Store general statistics in annotations
                      parent_stats_key = 'structural_flexibility_stats_{}_parent-pdbflex'.format(parent)
                      parent_reps_key = 'structural_flexibility_representatives_{}_parent-pdbflex'.format(parent)
                      if parent_stats_key not in self.representative_sequence.annotations or parent_reps_key not in self.representative_sequence.annotations:
                          self.representative_sequence.annotations[parent_stats_key] = stats
                          self.representative_sequence.annotations[parent_reps_key] = reps
                          log.debug('{}: stored PDB Flex stats in representative sequence for PDB parent {}'.format(
                              self.representative_sequence.id,
                              parent))
                      else:
                          log.info(
                              '{}: existing PDB Flex stats already in representative sequence for PDB parent {}'.format(
                                  self.representative_sequence.id,
                                  parent))
  
                      # Retrieve PDBFlex RMSDs
                      rmsd = ssbio.databases.pdbflex.get_pdbflex_rmsd_profile(pdb_id=s.id, chain_id=c, outdir=self.structure_dir)
                      log.info('{}: sequence length reported in PDB Flex'.format(len(rmsd['profile'])))
  
                      # Store residue specific RMSDs in letter_annotations
                      parent_key = 'rmsd_{}_parent-pdbflex'.format(parent)
                      if parent_key not in self.representative_sequence.letter_annotations:
                          self.representative_sequence.letter_annotations[parent_key] = rmsd['profile']
                          log.info('{}: stored PDB Flex RMSD in representative sequence for PDB parent {}'.format(
                              self.representative_sequence.id,
                              parent))
                      else:
                          log.info(
                              '{}: existing PDB Flex RMSD already in representative sequence for PDB parent {}'.format(
                                  self.representative_sequence.id,
                                  parent))