docs: def get_dict_with_chain(self, chain, only_keys=None, chain_keys=None, exclude_attributes=None, df_format=False):
          """get_dict method which incorporates attributes found in a specific chain. Does not overwrite any attributes
          in the original StructProp.
  
          Args:
              chain:
              only_keys:
              chain_keys:
              exclude_attributes:
              df_format:
  
          Returns:
              dict: attributes of StructProp + the chain specified
  
          """
  
          # Choose attributes to return, return everything in the object if a list is not specified
          if not only_keys:
              keys = list(self.__dict__.keys())
          else:
              keys = ssbio.utils.force_list(only_keys)
  
          # Remove keys you don't want returned
          if exclude_attributes:
              exclude_attributes = ssbio.utils.force_list(exclude_attributes)
              for x in exclude_attributes:
                  if x in keys:
                      keys.remove(x)
          else:
              exclude_attributes = []
  
          exclude_attributes.extend(['mapped_chains', 'chains'])
  
          final_dict = {k: v for k, v in Object.get_dict(self, only_attributes=keys, exclude_attributes=exclude_attributes,
                                                         df_format=df_format).items()}
  
          chain_prop = self.chains.get_by_id(chain)
          # Filter out keys that show up in StructProp
          if not chain_keys:
              chain_keys = [x for x in chain_prop.get_dict().keys() if x not in final_dict]
  
          chain_dict = chain_prop.get_dict(only_attributes=chain_keys, df_format=df_format)
          final_dict.update(chain_dict)
  
          return final_dict