docs: def get_combo_subseq_within_2_5D(protein, props, within, filter_resnums=None):
          """Get a subsequence from REPSEQ based on multiple features stored in REPSEQ and within the set distance in REPSTRUCT.REPCHAIN"""
          if not protein.representative_structure:
              log.error('{}: no representative structure, cannot search for subseq'.format(protein.id))
              return {'subseq_len': 0, 'subseq': None, 'subseq_resnums': []}
  
          all_resnums = []
          for prop in props:
              tmp_results = protein.get_generic_subseq_within_2_5D(prop_name=prop, within=within,
                                                           filter_resnums=filter_resnums)
              all_resnums.extend(tmp_results['subseq_resnums'])
          final_resnums = list(set(all_resnums))
          sub_id = '{}-{}->{}_within_{}_{}_extracted'.format(protein.representative_structure.id,
                                                             protein.representative_chain,
                                                             protein.representative_sequence.id,
                                                             within, props)
          new_sp = protein.representative_sequence.get_subsequence(resnums=final_resnums, new_id=sub_id,
                                                                   copy_letter_annotations=False)
          return {'subseq_len': len(final_resnums), 'subseq': new_sp, 'subseq_resnums': final_resnums}