docstr: 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.
docstr_tok: ["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","."]
code: 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(f"s must be in {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)
  
imports: import gzip
  import sys
  import warnings
  from typing import Dict, List, Optional
  from urllib.error import HTTPError, URLError
  from urllib.request import urlopen
  import numpy
  import pandas
  from looseversion import LooseVersion
  from ..pdb.engines import amino3to1dict
  from ..pdb.pandas_pdb import PandasPdb
  from .engines import ANISOU_DF_COLUMNS, MMCIF_PDB_COLUMN_MAP, MMCIF_PDB_NONEFIELDS, PDB_COLUMN_ORDER, mmcif_col_types
  from .mmcif_parser import load_cif_data
label_desc: Use image node_id 10 for calling the PandasMmcif obj's underlying member method code with example usage: obj.get(s, df, invert, records) and returns: self