docs: def get(self, s, df=None, invert=False, records=('ATOM', 'HETATM')):
          """Filter PDB DataFrames by properties
  
          Parameters
          ----------
          s : str  in {'main chain', 'hydrogen', 'c-alpha', 'heavy'}
              String to specify which entries to return.
  
          df : pandas.DataFrame, default: None
              Optional DataFrame to perform the filter operation on.
              If df=None, filters on self.df['ATOM'].
  
          invert : bool, default: True
              Inverts the search query. For example if s='hydrogen' and
              invert=True, all but hydrogen entries are returned.
  
          records : iterable, default: ('ATOM', 'HETATM')
              Specify which record sections to consider. For example, to consider
              both protein and ligand atoms, set `records=('ATOM', 'HETATM')`.
              This setting is ignored if `df` is not set to None.
              For downward compatibility, a string argument is still supported
              but deprecated and will be removed in future versions.
  
          Returns
          --------
          df : pandas.DataFrame
              Returns a DataFrame view on the filtered entries.
  
          """
          if isinstance(records, str):
              warnings.warn('Using a string as `records` argument is '
                            'deprecated and will not be supported in future'
                            ' versions. Please use a tuple or'
                            ' other iterable instead', DeprecationWarning)
              records = (records,)
  
          if not self._get_dict:
              self._get_dict = self._init_get_dict()
          if s not in self._get_dict.keys():
              raise AttributeError('s must be in %s' % self._get_dict.keys())
          if not df:
              df = pd.concat(objs=[self.df[i] for i in records])
          return self._get_dict[s](df, invert=invert)