code: def Tukeythreegene2(
      genes,
  ):  # Performing the Tukey HSD post-hoc test for three genes
      """gend is a list, ie [first, second, third]"""
      #   qwb = xlrd.open_workbook('F:/Lab/bioinformatics/qcrittable.xls')
      # opening the workbook containing the q crit table
      #   qwb.sheet_names()
      #   qcrittable = qwb.sheet_by_name(u'Sheet1')
  
      means = []
      stds = []
      for gene in genes:
          means.append(np.mean(gene))
          std.append(np.std(gene))  # noqa:F821  See GH#5756
  
      # firstmean = np.mean(first) #means of the three arrays
      # secondmean = np.mean(second)
      # thirdmean = np.mean(third)
  
      # firststd = np.std(first) #standard deviations of the three arrays
      # secondstd = np.std(second)
      # thirdstd = np.std(third)
  
      stds2 = []
      for std in stds:
          stds2.append(math.pow(std, 2))
  
      # firsts2 = math.pow(firststd,2) #standard deviation squared of the three arrays
      # seconds2 = math.pow(secondstd,2)
      # thirds2 = math.pow(thirdstd,2)
  
      # mserrornum = firsts2*2+seconds2*2+thirds2*2 #numerator for mean square error
      mserrornum = sum(stds2) * 2
      mserrorden = (
          len(genes[0]) + len(genes[1]) + len(genes[2])
      ) - 3  # denominator for mean square error
      mserror = mserrornum / mserrorden
  
imports: from collections import namedtuple
  from statsmodels.compat.python import lzip, lrange
  import copy
  import math
  import numpy
  from numpy.testing import assert_almost_equal, assert_equal
  from scipy import stats, interpolate
  from statsmodels.iolib.table import SimpleTable
  from statsmodels.stats.multitest import multipletests, _ecdf, fdrcorrection, fdrcorrection_twostage
  from statsmodels.graphics import utils
  from statsmodels.tools.sm_exceptions import ValueWarning
label_desc: Use image node_id 5 for calling a global function with example usage: Tukeythreegene2(genes) without return types