docs: def df_homology_models(self):
          """DataFrame: Get a dataframe of I-TASSER homology model results"""
  
          # TODO: add definitions of column names
          # model_date	Date the model was created
          # difficulty	Difficulty level of the modeling run (easy, medium, hard)
          # top_template_pdb	Top template used to model the protein (PDB ID)
          # top_template_chain	Chain of the top template used to model the protein
          # c_score	Confidence score of the homology model from [-5,2]
          # tm_score	Structural similarity score to best template
          # tm_score_err	Standard error of TM score
          # rmsd	RMSD to best template
          # rmsd_err	Standard error of RMSD
          # top_bsite_site_num	Cluster which contained the consensus binding site
          # top_bsite_c_score	Confidence score of the consensus binding site prediction from [0,1]
          # top_bsite_cluster_size	Number of predictions within this cluster
          # top_bsite_binding_residues	Residue numbers of top ranked binding site prediction
          # top_bsite_binding_location_coords	Cartesian coordinates of top ranked binding site prediction
          # top_bsite_pdb_ligand	Top predicted ligand to bind
          # top_bsite_ligand_cluster_counts	Number of predictions for all ligands
          # top_bsite_algorithm	Algorithm used for top ranked binding site prediction
          # top_bsite_c_score_method	Confidence score of just the top algorithm's binding site prediction from [0,1]. >0.35 is somewhat reliable.
          # top_bsite_pdb_template_id	PDB ID of the template used to make the prediction
          # top_bsite_pdb_template_chain	Chain of the PDB which has the ligand
          # top_ec_ec_number	Top predicted EC number
          # top_ec_c_score	Confidence score of the consensus EC number prediction from [0,1]
          # top_ec_pdb_template_id	Top PDB ID used as template for EC number prediction
          # top_ec_pdb_template_chain	Chain of PDB ID used as template for EC number prediction
          # top_ec_rmsd	RMSD to best template
          # top_ec_seq_coverage	Sequence coverage percentage to best template
          # top_ec_seq_ident	Sequence identity percentage to best template
          # top_ec_tm_score	Structural similarity score to best template
          # top_go_bp_go_id	Predicted GO ID for biological process
          # top_go_bp_go_term	Predicted GO term for biological process
          # top_go_bp_c_score	Confidence score of the GO BP prediction from [0,1]
          # top_go_cc_go_id	Predicted GO ID for cellular compartment
          # top_go_cc_go_term	Predicted GO term for cellular compartment
          # top_go_cc_c_score	Confidence score of the GO CC prediction from [0,1]
          # top_go_mf_go_id	Predicted GO ID for molecular function
          # top_go_mf_go_term	Predicted GO term for molecular function
          # top_go_mf_c_score	Confidence score of the GO MF prediction from [0,1]
  
          itasser_pre_df = []
  
          df_cols = ['id', 'structure_file', 'model_date', 'difficulty',
                     'top_template_pdb', 'top_template_chain', 'c_score',
                     'tm_score', 'tm_score_err', 'rmsd', 'rmsd_err',
                     'top_bsite_site_num', 'top_bsite_c_score', 'top_bsite_cluster_size', 'top_bsite_algorithm',
                     'top_bsite_pdb_template_id', 'top_bsite_pdb_template_chain', 'top_bsite_pdb_ligand',
                     'top_bsite_binding_location_coords', 'top_bsite_c_score_method', 'top_bsite_binding_residues',
                     'top_bsite_ligand_cluster_counts',
                     'top_ec_pdb_template_id', 'top_ec_pdb_template_chain', 'top_ec_tm_score', 'top_ec_rmsd',
                     'top_ec_seq_ident', 'top_ec_seq_coverage', 'top_ec_c_score', 'top_ec_ec_number',
                     'top_ec_binding_residues',
                     'top_go_mf_go_id', 'top_go_mf_go_term', 'top_go_mf_c_score', 'top_go_bp_go_id', 'top_go_bp_go_term',
                     'top_go_bp_c_score', 'top_go_cc_go_id', 'top_go_cc_go_term', 'top_go_cc_c_score']
  
          for p in self.get_homology_models():
              # Summary dataframe
              new_homology_dict = p.get_dict(df_format=True, only_attributes=df_cols)
              itasser_pre_df.append(new_homology_dict)
  
          df = pd.DataFrame.from_records(itasser_pre_df, columns=df_cols).set_index('id')
          return ssbio.utils.clean_df(df)