<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)