docs: def pdb_downloader_and_metadata(self, outdir=None, pdb_file_type=None, force_rerun=False):
          """Download ALL mapped experimental structures to each protein's structures directory.
  
          Args:
              outdir (str): Path to output directory, if GEM-PRO directories were not set or other output directory is
                  desired
              pdb_file_type (str): Type of PDB file to download, if not already set or other format is desired
              force_rerun (bool): If files should be re-downloaded if they already exist
  
          """
  
          if not pdb_file_type:
              pdb_file_type = self.pdb_file_type
  
          counter = 0
          for g in tqdm(self.genes):
              pdbs = g.protein.pdb_downloader_and_metadata(outdir=outdir, pdb_file_type=pdb_file_type, force_rerun=force_rerun)
  
              if pdbs:
                  counter += len(pdbs)
  
          log.info('Updated PDB metadata dataframe. See the "df_pdb_metadata" attribute for a summary dataframe.')
          log.info('Saved {} structures total'.format(counter))