docs: def _process_strainmeans_file(self, limit):
          """
          This will store the entire set of strain means in a hash.
          Not the most efficient representation,
          but easy access.
          We will loop through this later to then apply cutoffs
          and add associations
          :param limit:
          :return:
  
          """
          LOG.info("Processing strain means ...")
          line_counter = 0
          raw = '/'.join((self.rawdir, self.files['strainmeans']['file']))
          with gzip.open(raw, 'rb') as f:
              f = io.TextIOWrapper(f)
              reader = csv.reader(f)
              self.check_header(self.files['strainmeans']['file'], f.readline())
              score_means_by_measure = {}
              strain_scores_by_measure = {}
              for row in reader:
                  try:
                      # (measnum, varname, strain, strainid, sex, mean, nmice, sd, sem,
                      #  cv, minval, maxval, logmean, logsd, zscore, logzscore)
                      (measnum, varname, strain, strainid, sex, mean, nmice, sd, sem,
                       cv, minval, maxval, zscore
                      ) = row
  
                  except ValueError:
  
                      continue
                  line_counter += 1
                  strain_num = int(strainid)
                  assay_num = int(measnum)
                  # assuming the zscore is across all the items
                  # in the same measure+var+strain+sex
                  # note: it seems that there is only ever 1 varname per measnum.
                  # note: some assays only tested one sex!
                  # we split this here by sex
                  if assay_num not in score_means_by_measure:
                      score_means_by_measure[assay_num] = {}
                  if sex not in score_means_by_measure[assay_num]:
                      score_means_by_measure[assay_num][sex] = list()
                  score_means_by_measure[assay_num][sex].append(float(mean))
  
                  if strain_num not in strain_scores_by_measure:
                      strain_scores_by_measure[strain_num] = {}
                  if sex not in strain_scores_by_measure[strain_num]:
                      strain_scores_by_measure[strain_num][sex] = {}
                  strain_scores_by_measure[strain_num][sex][assay_num] = \
                      {'mean': float(mean), 'zscore': float(zscore)}
  
              # end loop over strainmeans
          self.score_means_by_measure = score_means_by_measure
          self.strain_scores_by_measure = strain_scores_by_measure
  
          return