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; }