                d3.selectAll("#indtip").remove()
                d3.select(this).attr("r", peakRad)
 
-      # calculate group averages
-      chr = data.pmark[marker].chr
-      if(chr == "X")
-        means = [0,0,0,0]
-        n = [0,0,0,0]
-        male = [0,0,1,1]
-      else
-        means = [0,0,0,0,0,0]
-        n = [0,0,0,0,0,0]
-        male = [0,0,0,1,1,1]
-      for i of data.individuals
-         g = Math.abs(data.geno[marker][i])
-         sx = data.sex[i]
-         if(data.pmark[marker].chr=="X")
-           x = sx*2+g-1
-         else
-           x = sx*3+g-1
-         means[x] += probe_data.pheno[i]
-         n[x]++
-      for i of means
-        means[i] /= n[i]
-
       # add line segments
       svg.append("g").attr("id", "pxgmeans").attr("class", "probe_data").attr("class", "plotPXG")
          .selectAll("empty")

         .enter()
         .append("line")
         .attr("x1", (d,i) ->
            return if chr=="X" then pxgXscaleX(i)-jitterAmount*2 else pxgXscaleA(i)-jitterAmount*2)
         .attr("x2", (d,i) ->
            return if chr=="X" then pxgXscaleX(i)+jitterAmount*2 else pxgXscaleA(i)+jitterAmount*2)
         .attr("y1", (d) -> pxgYscale(d))
         .attr("y2", (d) -> pxgYscale(d))
         .attr("stroke", (d,i) -> return if male[i] then darkblue else darkred)

             .on "mouseout", (d) ->
                 d3.selectAll("circle.probe#{d.probe}")
                                .attr("r", peakRad)
                                .attr("fill", (d) -> return if(chrindex[d.chr] % 2 is 0) then darkblue else darkgreen)
                                .attr("stroke", "none")
                                .attr("opacity", (d) -> Zscale(d.lod))
                 d3.selectAll("#eqtltip").remove()
