public double permutePval(
     int sLength, int tLength, int nperms, double threshold, HashMap<String, Double> dataIn) {
   int count = 0;
   for (int i = 0; i < nperms; i++) {
     HashSet<String> sgenes = permute.getPermGenes(sLength);
     HashSet<String> tgenes = permute.getPermGenes(tLength);
     HashSet<String> source = pathwayOverlap(sgenes, geneSet);
     HashSet<String> target = pathwayOverlap(tgenes, geneSet);
     double sim = geneSetSim(source, target, dataIn);
     if (sim > threshold) {
       count++;
     }
   }
   return count * 1.0 / nperms;
 }
 /**
  * calculate the p value using the genes all in dif expressed genes
  *
  * @param snum
  * @param tnum
  * @param source
  * @param perms
  * @param threshold
  * @param data
  * @return
  */
 public double pvalCalculationAllInDif(
     int snum,
     int tnum,
     HashSet<String> source,
     int perms,
     double threshold,
     HashMap<String, Double> data) {
   double p = 0.0, fenzi = 1.0;
   for (int i = 0; i < nperms; i++) {
     HashSet<String> rsgenes = permute.getPermGenes(snum, source);
     HashSet<String> rtgenes = permute.getPermGenes(tnum, source);
     double sim = geneSetSim(rsgenes, rtgenes, data);
     if (sim > threshold) {
       fenzi += 1;
     }
   }
   p = fenzi / nperms;
   return p;
 }
 /**
  * Calculate the p value using the permute label method
  *
  * @param snum
  * @param tnum
  * @param union
  * @param nperms
  * @param thre
  * @param data
  * @return
  */
 public double pValuePermuteLabel(
     int snum,
     int tnum,
     HashSet<String> union,
     int nperms,
     double thre,
     HashMap<String, Double> data) {
   double p = 0.0, fenzi = 1.0;
   for (int i = 0; i < nperms; i++) {
     HashMap<String, HashSet<String>> map = permute.getPermGenes(union, snum, tnum);
     double sim =
         geneSetSim(
             pathwayOverlap(map.get("source"), geneSet),
             pathwayOverlap(map.get("target"), geneSet),
             data);
     if (sim > thre) {
       fenzi += 1.0;
     }
   }
   p = fenzi / nperms;
   return p;
 }