code: def _parse_gene_anatomy(self, fh, limit):
          
          dataframe = pd.read_csv(fh, sep='\t')
          col = self.files['anat_entity']['columns']
          if list(dataframe) != col:
              LOG.warning(
                  '\nExpected headers:  %s\nRecived headers:  %s', col, list(dataframe))
  
          gene_groups = dataframe.sort_values(
              'rank score', ascending=False).groupby('Ensembl gene ID')
  
          if limit is None:
              limit = 20
          gene_groups = gene_groups.head(limit).groupby('Ensembl gene ID')
  
          for gene, group in gene_groups:
              for index, row in group.iterrows():
                  self._add_gene_anatomy_association(
                      row['Ensembl gene ID'].strip(),
                      row['anatomical entity ID'].strip(),
                      row['rank score']
                  )
                  # uberon <==> bto equivelance?
          return
docs: Process anat_entity files with columns:
          Ensembl gene ID,gene name, anatomical entity ID,
          anatomical entity name, rank score, XRefs to BTO
  
          :param fh: filehandle
          :param limit: int, limit per group
          :return: None