複数の検定でコントロールを共用にすること
メモ
> pool<-scan(file="B_pool.txt",sep="\t") Read 17084 items > pool<-scan(file="B_pool.txt",sep="\t") Read 2050 items > ind<-scan(file="B_ind.txt",sep="\t") Read 2550 items > indmat<-matrix(ind,nrow=50) > persp(indmat,phi=0,theta=-45,shade=0.5,zlim=c(0,0.1),col="red") > par(new=T) > persp(poolmat,phi=0,theta=-45,shade=0.5,zlim=c(0,0.1),col="blue") >
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class PoolVSRegular_2DplotSVG { /** * @param args */ public static void main(String[] args) throws IOException { // TODO 自動生成されたメソッド・スタブ /* * 分割表 */ int[][] M1={{50,50,100},{40,160},{200}}; int[][][] M2={{{50,50},{20,80},{100}},{{50,50},{20,80},{100}}}; int N=1; int numfiles=4; BufferedWriter[] bw = new BufferedWriter[numfiles]; String[] suffix=new String[numfiles]; suffix[0]="pool.svg"; suffix[1]="ind.svg"; String out = "D"; suffix[2]="pool.txt"; suffix[3]="ind.txt"; for(int i=0;i<bw.length;i++){ bw[i]=null; } for(int i=0;i<bw.length;i++){ String tmp=out+"_"+suffix[i]; bw[i] = new BufferedWriter(new FileWriter(tmp)); } //for(int x=0;x<repeat;x++){ int ncase = 50; int ncont = 50; int seed = (int)(Math.random()*100000000); Utils.MersenneTwisterFast mz=new Utils.MersenneTwisterFast(seed); double[][] chis = new double[N][4]; for(int i=0;i<N;i++){ int[][] t = new int[2][3]; //double r = mz.nextDouble()*0.6+0.2; double r=0.5; double[] a ={r*r,r*r+2*r*(1-r),1}; //a[0]=0.05; //a[1]=0.95; for(int j=0;j<ncase;j++){ double r2 = mz.nextDouble(); for(int k=0;k<a.length;k++){ if(r2<a[k]){ t[0][k]++; break; } } } for(int j=0;j<ncont;j++){ double r2 = mz.nextDouble(); for(int k=0;k<a.length;k++){ if(r2<a[k]){ t[1][k]++; break; } } } //int sum = mline[0]+mline[1]; int sum=Math.max(M1[0][0], M1[1][0]); double[] size ={500,500}; double[] viewBoxZero ={-1,-1}; double[] viewBoxLength = {sum-viewBoxZero[0],sum-viewBoxZero[1]}; /* double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ /* * 2x3 table Probを分離カラーリングするためのインデックス double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ double[][] grad1={{2.772588722,5.545177445,8.317766167,11.09035489,13.86294361,16.63553233,19.40812106,22.18070978,24.9532985,27.72588722}, {0.000000001,0.00000001,0.0000001,0.000001,0.00001,0.0001,0.001,0.01,0.1,1}, {0.001,0.005,0.01,0.03,0.05,0.06,0.07,0.08,0.1,1}}; //String[] color ={"#FFFFFF","#DDDDDD","#CCCCCC","#AAAAAA","#999999","#777777","#555555","#444444","#222222","#000000"}; String[] color ={"#FFFFFF","#EEEEEE","#DDDDDD","#CCCCCC","#BBBBBB","#AAAAAA","#999999","#888888","#777777","#666666","#555555","#444444","#333333","#222222","#111111","#000000"}; String header = "<?xml version=\"1.0\" standalone=\"yes\" ?>\n"; header += "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"; header += "<svg width=\""+ size[0] +"\" height=\"" + size[1] +"\" viewBox=\"" + viewBoxZero[0] + " " + viewBoxZero[1] +" " + viewBoxLength[0] + " " + viewBoxLength[1] +"\" xmlns=\"http://www.w3.org/2000/svg\">\n"; String footer = "</svg>\n"; for(int m=0;m<2;m++){ BioBankPerm2.Run.out3File(bw[m],header); } double[] sl = StatUtilsX.Fisher.serialLogfact(M1[2][0]); /* * pool */ int[][] pool=new int[3][2]; double pr=0; double compool= sl[M1[0][0]]+sl[M1[0][1]]+sl[M1[0][2]]+sl[M1[1][0]]+sl[M1[1][1]]-sl[M1[2][0]]; for(int x=0;x<M1[0][0];x++){ for(int j=0;j<M1[1][0];j++){ //System.out.println("x="+x+" j="+j); pool[0][0]=x; pool[1][0]=j; pool[0][1]=M1[0][0]-x; pool[1][1]=M1[0][1]-j; pool[2][0]=M1[1][0]-x-j; pool[2][1]=M1[0][2]-pool[2][0]; boolean zero=true; double tmp =0; for(int k=0;k<pool.length;k++){ for(int l=0;l<pool[k].length;l++){ if(pool[k][l]<0){ zero=false; //break; }else{ tmp+=sl[pool[k][l]]; } } if(!zero){ //break; } } if(zero){ pr=Math.exp(compool-tmp); double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[0], ""+object); //BioBankPerm2.Run.out3File(bw[2], pr+"\t"); //System.out.print(pr+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[2], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[0], "\n"); BioBankPerm2.Run.out3File(bw[2], "\n"); } /* * independent */ double pr2=0; double compool2= sl[M2[0][0][0]]+sl[M2[0][0][1]]+sl[M2[0][1][0]]+sl[M2[0][1][1]]-sl[M2[0][2][0]] +sl[M2[1][0][0]]+sl[M2[1][0][1]]+sl[M2[1][1][0]]+sl[M2[1][1][1]]-sl[M2[1][2][0]]; int[][] ind1=new int[2][2]; int[][] ind2=new int[2][2]; for(int x=0;x<M2[0][0][0];x++){ ind1[0][0]=x; ind1[0][1]=M2[0][0][0]-x; ind1[1][0]=M2[0][1][0]-x; ind1[1][1]=M2[0][1][1]-ind1[0][1]; for(int j=0;j<M2[1][0][0];j++){ ind2[0][0]=j; ind2[0][1]=M2[1][0][0]-j; ind2[1][0]=M2[1][1][0]-j; ind2[1][1]=M2[1][1][1]-ind2[0][1]; boolean zero=true; double tmp =0; for(int k=0;k<ind1.length;k++){ for(int l=0;l<ind1[k].length;l++){ if(ind1[k][l]<0 || ind2[k][l]<0){ zero=false; //break; }else{ tmp+=sl[ind1[k][l]]+sl[ind2[k][l]]; } } if(!zero){ //break; } } if(zero){ pr2=Math.exp(compool2-tmp); double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr2<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[1], ""+object); BioBankPerm2.Run.out3File(bw[3], pr2+"\t"); //System.out.print(pr2+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[3], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[3], "\n"); } for(int m=0;m<2;m++){ BioBankPerm2.Run.out3File(bw[m],footer); } //System.out.print("\n"); for(int m=0;m<bw.length;m++){ bw[m].close(); } } } }
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class PoolVSRegular_2DplotSVG { /** * @param args */ public static void main(String[] args) throws IOException { // TODO 自動生成されたメソッド・スタブ /* * 分割表 */ int[][] M1={{50,50,50},{15,135},{150}}; int[][][] M2={{{50,50},{10,90},{100}},{{50,50},{10,90},{100}}}; String poolst="pooltestA"; String indst="indtestA"; double[][] prpool=prPool(M1); double[][] prind=prInd(M2); double tmpsum=0; for(int i=0;i<prpool.length;i++){ for(int j=0;j<prpool[i].length;j++){ //System.out.println(i + "\t"+j +"\t"+prpool[i][j]); tmpsum+=prpool[i][j]; } } System.out.println("tmpsum=\t"+tmpsum); SVGpoolFromPr(M1,prpool,poolst); SVGindFromPr(M2,prind,indst); prpool=prind; double[][][] valuePool = valuePr(prpool); double[][] tmp3=probList2D(prpool,valuePool[3]); double[][] tmp0=probList2D(prpool,valuePool[0]); double[][] tmp1=probList2D(prpool,valuePool[1]); double[][] tmp2=probList2D(prpool,valuePool[2]); for(int i=0;i<tmp0.length;i++){ for(int j=0;j<tmp0[i].length;j++){ System.out.print(tmp0[i][j]+"\t"); } System.out.println(); } for(int i=0;i<tmp1.length;i++){ for(int j=0;j<tmp1[i].length;j++){ System.out.print(tmp1[i][j]+"\t"); } System.out.println(); } for(int i=0;i<tmp2.length;i++){ for(int j=0;j<tmp2[i].length;j++){ System.out.print(tmp2[i][j]+"\t"); } System.out.println(); } for(int i=0;i<tmp3.length;i++){ for(int j=0;j<tmp3[i].length;j++){ System.out.print(tmp3[i][j]+"\t"); } System.out.println(); } /* for(int i=0;i<valuePool.length;i++){ System.out.println("i="+i); for(int j=0;j<valuePool[i].length;j++){ for(int k=0;k<valuePool[i][j].length;k++){ System.out.print(valuePool[i][j][k]+"\t"); } System.out.println(); } System.out.println(); } /* double[][] Ppool = calcP2D(prpool,valuePool[3]); for(int i=0;i<Ppool.length;i++){ for(int j=0;j<Ppool[i].length;j++){ System.out.print(Ppool[i][j]+"\t"); } System.out.println(); } */ /* double[] V={0.1,0.2,0.3,0.3,0.2,0.3,0.4}; double[] P={0.1,0.1,0.1,0.3,0.15,0.05,0.2}; double[] x=calcP(P,V); for(int i=0;i<x.length;i++){ System.out.println(V[i]+"\t"+x[i]); } double[][] tmp = probList(P,V); System.out.println("&&&"); for(int i=0;i<tmp.length;i++){ for(int j=0;j<tmp[i].length;j++){ System.out.print(tmp[i][j]+"\t"); } System.out.println(); } */ } public static double[][] pHolVertDiag(double[][] pr){ double[][][] tmp = valuePr(pr); double[][] ret = {pHol(pr),pVert(pr),pDiag(pr),pDF2(pr),pTriple(pr)}; return ret; } public static double[][] calcP2D(double[][] P, double[][] V){ int[] size = new int[P.length]; double[][] ret = new double[P.length][0]; int N=0; for(int i=0;i<size.length;i++){ size[i]=P[i].length; N+=P[i].length; ret[i]=new double[P[i].length]; } double[] PL=new double[N]; double[] VL=new double[N]; int counter=0; for(int i=0;i<P.length;i++){ for(int j=0;j<P[i].length;j++){ PL[counter]=P[i][j]; VL[counter]=V[i][j]; counter++; } } double[] calcdP=calcP(PL,VL); counter=0; for(int i=0;i<ret.length;i++){ for(int j=0;j<ret[i].length;j++){ ret[i][j]=calcdP[counter]; counter++; } } return ret; } public static double[] calcP(double[] P,double[] V){ double[] ret = new double[V.length]; for(int i=0;i<V.length;i++){ for(int j=0;j<V.length;j++){ if(V[i]>=V[j]){ ret[i]+=P[j]; } } } return ret; } public static double[][] probList(double[] P,double[] V){ double[] tmp = calcP(P,V); double[] copyV=StatUtilsX.MiscUtil.DeepCopyDouble1(V); StatUtilsX.MiscUtil.quickSortDouble(tmp,0,tmp.length-1); StatUtilsX.MiscUtil.quickSortDouble(copyV,0,tmp.length-1); double[][] rettmp = new double[V.length][2]; //System.out.println("%%%"); //for(int i=0;i<tmp.length;i++){ //System.out.println(tmp[i]+"\t"+copyV[i]); //} rettmp[0][0]=tmp[0]; rettmp[0][1]=copyV[0]; int counter=1; for(int i=1;i<tmp.length;i++){ if(copyV[i]!=copyV[i-1]){ rettmp[counter][0]=tmp[i]; rettmp[counter][1]=copyV[i]; counter++; //System.out.println("count"); } } double[][] ret = new double[counter][2]; for(int i=0;i<ret.length;i++){ ret[i][0]=rettmp[i][0]; ret[i][1]=rettmp[i][1]; } return ret; } public static double[][] probList2D(double[][] P, double[][] V){ int[] size = new int[P.length]; double[][] ret = new double[P.length][0]; int N=0; for(int i=0;i<size.length;i++){ size[i]=P[i].length; N+=P[i].length; ret[i]=new double[P[i].length]; } double[] PL=new double[N]; double[] VL=new double[N]; int counter=0; for(int i=0;i<P.length;i++){ for(int j=0;j<P[i].length;j++){ PL[counter]=P[i][j]; VL[counter]=V[i][j]; counter++; } } double[][] ret2 = probList(PL,VL); return ret2; } public static double[][][] valuePr(double[][] pr){ double[][][] ret = new double[4][pr.length][pr[0].length]; double[] hol=new double[pr.length]; double[] vert=new double[pr[0].length]; double[] diag=new double[pr.length+pr[0].length]; for(int i=0;i<pr.length;i++){ for(int j=0;j<pr[i].length;j++){ hol[i]+=pr[i][j]; vert[j]+=pr[i][j]; diag[i+j]+=pr[i][j]; } } double[] hol2=new double[pr.length]; double[] vert2=new double[pr[0].length]; double[] diag2=new double[pr.length+pr[0].length]; for(int i=0;i<hol2.length;i++){ for(int j=0;j<hol2.length;j++){ if(hol[i]>=hol[j]){ hol2[i]+=hol[j]; } } } for(int i=0;i<vert2.length;i++){ for(int j=0;j<vert2.length;j++){ if(vert[i]>=vert[j]){ vert2[i]+=vert[j]; } } } for(int i=0;i<diag2.length;i++){ for(int j=0;j<diag2.length;j++){ if(diag[i]>=diag[j]){ diag2[i]+=diag[j]; } } } for(int i=0;i<pr.length;i++){ for(int j=0;j<pr[i].length;j++){ ret[0][i][j]=hol2[i]; ret[1][i][j]=vert2[j]; ret[2][i][j]=diag2[i+j]; ret[3][i][j]=Math.min(ret[0][i][j],ret[1][i][j]); ret[3][i][j]=Math.min(ret[3][i][j],ret[2][i][j]); } } return ret; } public static double[] pHol(double[][] pr){ double[] ret=new double[pr.length]; return ret; } public static double[] pVert(double[][] pr){ double[] ret=new double[pr[0].length]; return ret; } public static double[] pDiag(double[][] pr){ double[] ret=new double[pr.length+pr[0].length]; return ret; } public static double[] pDF2(double[][] pr){ double[] ret=new double[pr.length*pr[0].length]; return ret; } public static double[] pTriple(double[][] pr){ double[] ret=new double[pr.length+pr[0].length]; return ret; } public static void SVGpoolFromPr(int[][] M1,double[][] prpool,String out)throws IOException{ // int[][] M1={{50,50,100},{40,160},{200}}; //int[][][] M2={{{50,50},{20,80},{100}},{{50,50},{20,80},{100}}}; //int N=1; int numfiles=2; BufferedWriter[] bw = new BufferedWriter[numfiles]; String[] suffix=new String[numfiles]; suffix[0]="pool.svg"; //suffix[1]="ind.svg"; //String out = "D"; suffix[1]="pool.txt"; //suffix[3]="ind.txt"; for(int i=0;i<bw.length;i++){ bw[i]=null; } for(int i=0;i<bw.length;i++){ String tmp=out+"_"+suffix[i]; bw[i] = new BufferedWriter(new FileWriter(tmp)); } //for(int x=0;x<repeat;x++){ /* int ncase = 50; int ncont = 50; int seed = (int)(Math.random()*100000000); Utils.MersenneTwisterFast mz=new Utils.MersenneTwisterFast(seed); double[][] chis = new double[N][4]; */ //for(int i=0;i<N;i++){ /* int[][] t = new int[2][3]; //double r = mz.nextDouble()*0.6+0.2; double r=0.5; double[] a ={r*r,r*r+2*r*(1-r),1}; //a[0]=0.05; //a[1]=0.95; for(int j=0;j<ncase;j++){ double r2 = mz.nextDouble(); for(int k=0;k<a.length;k++){ if(r2<a[k]){ t[0][k]++; break; } } } for(int j=0;j<ncont;j++){ double r2 = mz.nextDouble(); for(int k=0;k<a.length;k++){ if(r2<a[k]){ t[1][k]++; break; } } } */ //int sum = mline[0]+mline[1]; int sum=Math.max(M1[0][0], M1[1][0]); double[] size ={500,500}; double[] viewBoxZero ={-1,-1}; double[] viewBoxLength = {sum-viewBoxZero[0],sum-viewBoxZero[1]}; /* double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ /* * 2x3 table Probを分離カラーリングするためのインデックス double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ double[][] grad1={{2.772588722,5.545177445,8.317766167,11.09035489,13.86294361,16.63553233,19.40812106,22.18070978,24.9532985,27.72588722}, {0.000000001,0.00000001,0.0000001,0.000001,0.00001,0.0001,0.001,0.01,0.1,1}, {0.001,0.005,0.01,0.03,0.05,0.06,0.07,0.08,0.1,1}}; //String[] color ={"#FFFFFF","#DDDDDD","#CCCCCC","#AAAAAA","#999999","#777777","#555555","#444444","#222222","#000000"}; String[] color ={"#FFFFFF","#EEEEEE","#DDDDDD","#CCCCCC","#BBBBBB","#AAAAAA","#999999","#888888","#777777","#666666","#555555","#444444","#333333","#222222","#111111","#000000"}; String header = "<?xml version=\"1.0\" standalone=\"yes\" ?>\n"; header += "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"; header += "<svg width=\""+ size[0] +"\" height=\"" + size[1] +"\" viewBox=\"" + viewBoxZero[0] + " " + viewBoxZero[1] +" " + viewBoxLength[0] + " " + viewBoxLength[1] +"\" xmlns=\"http://www.w3.org/2000/svg\">\n"; String footer = "</svg>\n"; for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],header); } //double[][] prpool=prPool(M1); //double[] sl = StatUtilsX.Fisher.serialLogfact(M1[2][0]); /* * pool */ int[][] pool=new int[3][2]; double pr=0; //double compool= sl[M1[0][0]]+sl[M1[0][1]]+sl[M1[0][2]]+sl[M1[1][0]]+sl[M1[1][1]]-sl[M1[2][0]]; for(int x=0;x<M1[0][0];x++){ for(int j=0;j<M1[0][1];j++){ //System.out.println("x="+x+" j="+j); pool[0][0]=x; pool[1][0]=j; pool[0][1]=M1[0][0]-x; pool[1][1]=M1[0][1]-j; pool[2][0]=M1[1][0]-x-j; pool[2][1]=M1[0][2]-pool[2][0]; boolean zero=true; //double tmp =0; for(int k=0;k<pool.length;k++){ for(int l=0;l<pool[k].length;l++){ if(pool[k][l]<0){ zero=false; //break; }else{ //tmp+=sl[pool[k][l]]; } } if(!zero){ //break; } } if(zero){ //pr=Math.exp(compool-tmp); pr=prpool[x][j]; double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[0], ""+object); BioBankPerm2.Run.out3File(bw[1], pr+"\t"); //System.out.print(pr+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[1], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[0], "\n"); BioBankPerm2.Run.out3File(bw[1], "\n"); } /* * independent */ /* double pr2=0; double compool2= sl[M2[0][0][0]]+sl[M2[0][0][1]]+sl[M2[0][1][0]]+sl[M2[0][1][1]]-sl[M2[0][2][0]] +sl[M2[1][0][0]]+sl[M2[1][0][1]]+sl[M2[1][1][0]]+sl[M2[1][1][1]]-sl[M2[1][2][0]]; int[][] ind1=new int[2][2]; int[][] ind2=new int[2][2]; for(int x=0;x<M2[0][0][0];x++){ ind1[0][0]=x; ind1[0][1]=M2[0][0][0]-x; ind1[1][0]=M2[0][1][0]-x; ind1[1][1]=M2[0][1][1]-ind1[0][1]; for(int j=0;j<M2[1][0][0];j++){ ind2[0][0]=j; ind2[0][1]=M2[1][0][0]-j; ind2[1][0]=M2[1][1][0]-j; ind2[1][1]=M2[1][1][1]-ind2[0][1]; boolean zero=true; double tmp =0; for(int k=0;k<ind1.length;k++){ for(int l=0;l<ind1[k].length;l++){ if(ind1[k][l]<0 || ind2[k][l]<0){ zero=false; //break; }else{ tmp+=sl[ind1[k][l]]+sl[ind2[k][l]]; } } if(!zero){ //break; } } if(zero){ pr2=Math.exp(compool2-tmp); double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr2<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[1], ""+object); BioBankPerm2.Run.out3File(bw[3], pr2+"\t"); //System.out.print(pr2+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[3], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[3], "\n"); } */ for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],footer); } //System.out.print("\n"); for(int m=0;m<bw.length;m++){ bw[m].close(); } //} } public static void SVGpool(int[][] M1,String out)throws IOException { //int[][] M1={{50,50,100},{40,160},{200}}; //int[][][] M2={{{50,50},{20,80},{100}},{{50,50},{20,80},{100}}}; //int N=1; int numfiles=2; BufferedWriter[] bw = new BufferedWriter[numfiles]; String[] suffix=new String[numfiles]; suffix[0]="pool.svg"; //suffix[1]="ind.svg"; //String out = "D"; suffix[1]="pool.txt"; //suffix[3]="ind.txt"; for(int i=0;i<bw.length;i++){ bw[i]=null; } for(int i=0;i<bw.length;i++){ String tmp=out+"_"+suffix[i]; bw[i] = new BufferedWriter(new FileWriter(tmp)); } //for(int x=0;x<repeat;x++){ /* int ncase = 50; int ncont = 50; int seed = (int)(Math.random()*100000000); Utils.MersenneTwisterFast mz=new Utils.MersenneTwisterFast(seed); double[][] chis = new double[N][4]; */ //for(int i=0;i<N;i++){ /* int[][] t = new int[2][3]; //double r = mz.nextDouble()*0.6+0.2; double r=0.5; double[] a ={r*r,r*r+2*r*(1-r),1}; //a[0]=0.05; //a[1]=0.95; for(int j=0;j<ncase;j++){ double r2 = mz.nextDouble(); for(int k=0;k<a.length;k++){ if(r2<a[k]){ t[0][k]++; break; } } } for(int j=0;j<ncont;j++){ double r2 = mz.nextDouble(); for(int k=0;k<a.length;k++){ if(r2<a[k]){ t[1][k]++; break; } } } */ //int sum = mline[0]+mline[1]; int sum=Math.max(M1[0][0], M1[1][0]); double[] size ={500,500}; double[] viewBoxZero ={-1,-1}; double[] viewBoxLength = {sum-viewBoxZero[0],sum-viewBoxZero[1]}; /* double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ /* * 2x3 table Probを分離カラーリングするためのインデックス double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ double[][] grad1={{2.772588722,5.545177445,8.317766167,11.09035489,13.86294361,16.63553233,19.40812106,22.18070978,24.9532985,27.72588722}, {0.000000001,0.00000001,0.0000001,0.000001,0.00001,0.0001,0.001,0.01,0.1,1}, {0.001,0.005,0.01,0.03,0.05,0.06,0.07,0.08,0.1,1}}; //String[] color ={"#FFFFFF","#DDDDDD","#CCCCCC","#AAAAAA","#999999","#777777","#555555","#444444","#222222","#000000"}; String[] color ={"#FFFFFF","#EEEEEE","#DDDDDD","#CCCCCC","#BBBBBB","#AAAAAA","#999999","#888888","#777777","#666666","#555555","#444444","#333333","#222222","#111111","#000000"}; String header = "<?xml version=\"1.0\" standalone=\"yes\" ?>\n"; header += "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"; header += "<svg width=\""+ size[0] +"\" height=\"" + size[1] +"\" viewBox=\"" + viewBoxZero[0] + " " + viewBoxZero[1] +" " + viewBoxLength[0] + " " + viewBoxLength[1] +"\" xmlns=\"http://www.w3.org/2000/svg\">\n"; String footer = "</svg>\n"; for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],header); } double[][] prpool=prPool(M1); //double[] sl = StatUtilsX.Fisher.serialLogfact(M1[2][0]); /* * pool */ int[][] pool=new int[3][2]; double pr=0; //double compool= sl[M1[0][0]]+sl[M1[0][1]]+sl[M1[0][2]]+sl[M1[1][0]]+sl[M1[1][1]]-sl[M1[2][0]]; for(int x=0;x<M1[0][0];x++){ for(int j=0;j<M1[1][0];j++){ //System.out.println("x="+x+" j="+j); pool[0][0]=x; pool[1][0]=j; pool[0][1]=M1[0][0]-x; pool[1][1]=M1[0][1]-j; pool[2][0]=M1[1][0]-x-j; pool[2][1]=M1[0][2]-pool[2][0]; boolean zero=true; //double tmp =0; for(int k=0;k<pool.length;k++){ for(int l=0;l<pool[k].length;l++){ if(pool[k][l]<0){ zero=false; //break; }else{ //tmp+=sl[pool[k][l]]; } } if(!zero){ //break; } } if(zero){ //pr=Math.exp(compool-tmp); pr=prpool[x][j]; double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[0], ""+object); BioBankPerm2.Run.out3File(bw[1], pr+"\t"); //System.out.print(pr+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[1], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[0], "\n"); BioBankPerm2.Run.out3File(bw[1], "\n"); } /* * independent */ /* double pr2=0; double compool2= sl[M2[0][0][0]]+sl[M2[0][0][1]]+sl[M2[0][1][0]]+sl[M2[0][1][1]]-sl[M2[0][2][0]] +sl[M2[1][0][0]]+sl[M2[1][0][1]]+sl[M2[1][1][0]]+sl[M2[1][1][1]]-sl[M2[1][2][0]]; int[][] ind1=new int[2][2]; int[][] ind2=new int[2][2]; for(int x=0;x<M2[0][0][0];x++){ ind1[0][0]=x; ind1[0][1]=M2[0][0][0]-x; ind1[1][0]=M2[0][1][0]-x; ind1[1][1]=M2[0][1][1]-ind1[0][1]; for(int j=0;j<M2[1][0][0];j++){ ind2[0][0]=j; ind2[0][1]=M2[1][0][0]-j; ind2[1][0]=M2[1][1][0]-j; ind2[1][1]=M2[1][1][1]-ind2[0][1]; boolean zero=true; double tmp =0; for(int k=0;k<ind1.length;k++){ for(int l=0;l<ind1[k].length;l++){ if(ind1[k][l]<0 || ind2[k][l]<0){ zero=false; //break; }else{ tmp+=sl[ind1[k][l]]+sl[ind2[k][l]]; } } if(!zero){ //break; } } if(zero){ pr2=Math.exp(compool2-tmp); double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr2<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[1], ""+object); BioBankPerm2.Run.out3File(bw[3], pr2+"\t"); //System.out.print(pr2+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[3], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[3], "\n"); } */ for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],footer); } //System.out.print("\n"); for(int m=0;m<bw.length;m++){ bw[m].close(); } //} } public static void SVGind(int[][][] M2,String out)throws IOException { //int[][] M1={{50,50,100},{40,160},{200}}; //int[][][] M2={{{50,50},{20,80},{100}},{{50,50},{20,80},{100}}}; //int N=1; int numfiles=2; BufferedWriter[] bw = new BufferedWriter[numfiles]; String[] suffix=new String[numfiles]; suffix[0]="ind.svg"; //suffix[1]="ind.svg"; //String out = "D"; suffix[1]="ind.txt"; //suffix[3]="ind.txt"; for(int i=0;i<bw.length;i++){ bw[i]=null; } for(int i=0;i<bw.length;i++){ String tmp=out+"_"+suffix[i]; bw[i] = new BufferedWriter(new FileWriter(tmp)); } //int sum = mline[0]+mline[1]; int sum=Math.max(M2[0][0][0], M2[1][0][0]); double[] size ={500,500}; double[] viewBoxZero ={-1,-1}; double[] viewBoxLength = {sum-viewBoxZero[0],sum-viewBoxZero[1]}; /* double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ /* * 2x3 table Probを分離カラーリングするためのインデックス double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ double[][] grad1={{2.772588722,5.545177445,8.317766167,11.09035489,13.86294361,16.63553233,19.40812106,22.18070978,24.9532985,27.72588722}, {0.000000001,0.00000001,0.0000001,0.000001,0.00001,0.0001,0.001,0.01,0.1,1}, {0.001,0.005,0.01,0.03,0.05,0.06,0.07,0.08,0.1,1}}; //String[] color ={"#FFFFFF","#DDDDDD","#CCCCCC","#AAAAAA","#999999","#777777","#555555","#444444","#222222","#000000"}; String[] color ={"#FFFFFF","#EEEEEE","#DDDDDD","#CCCCCC","#BBBBBB","#AAAAAA","#999999","#888888","#777777","#666666","#555555","#444444","#333333","#222222","#111111","#000000"}; String header = "<?xml version=\"1.0\" standalone=\"yes\" ?>\n"; header += "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"; header += "<svg width=\""+ size[0] +"\" height=\"" + size[1] +"\" viewBox=\"" + viewBoxZero[0] + " " + viewBoxZero[1] +" " + viewBoxLength[0] + " " + viewBoxLength[1] +"\" xmlns=\"http://www.w3.org/2000/svg\">\n"; String footer = "</svg>\n"; for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],header); } double[][] prInd=prInd(M2); //double[] sl = StatUtilsX.Fisher.serialLogfact(Math.max(M2[0][2][0],M2[1][2][0])); /* * independent */ double pr2=0; /* double compool2= sl[M2[0][0][0]]+sl[M2[0][0][1]]+sl[M2[0][1][0]]+sl[M2[0][1][1]]-sl[M2[0][2][0]] +sl[M2[1][0][0]]+sl[M2[1][0][1]]+sl[M2[1][1][0]]+sl[M2[1][1][1]]-sl[M2[1][2][0]]; */ int[][] ind1=new int[2][2]; int[][] ind2=new int[2][2]; for(int x=0;x<M2[0][0][0];x++){ ind1[0][0]=x; ind1[0][1]=M2[0][0][0]-x; ind1[1][0]=M2[0][1][0]-x; ind1[1][1]=M2[0][1][1]-ind1[0][1]; for(int j=0;j<M2[1][0][0];j++){ ind2[0][0]=j; ind2[0][1]=M2[1][0][0]-j; ind2[1][0]=M2[1][1][0]-j; ind2[1][1]=M2[1][1][1]-ind2[0][1]; boolean zero=true; //double tmp =0; for(int k=0;k<ind1.length;k++){ for(int l=0;l<ind1[k].length;l++){ if(ind1[k][l]<0 || ind2[k][l]<0){ zero=false; //break; }else{ //tmp+=sl[ind1[k][l]]+sl[ind2[k][l]]; } } if(!zero){ //break; } } if(zero){ //pr2=Math.exp(compool2-tmp); pr2=prInd[x][j]; double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr2<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[0], ""+object); BioBankPerm2.Run.out3File(bw[1], pr2+"\t"); //System.out.print(pr2+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[1], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[1], "\n"); } for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],footer); } //System.out.print("\n"); for(int m=0;m<bw.length;m++){ bw[m].close(); } //} } public static void SVGindFromPr(int[][][] M2,double[][] prInd,String out)throws IOException { //int[][] M1={{50,50,100},{40,160},{200}}; //int[][][] M2={{{50,50},{20,80},{100}},{{50,50},{20,80},{100}}}; //int N=1; int numfiles=2; BufferedWriter[] bw = new BufferedWriter[numfiles]; String[] suffix=new String[numfiles]; suffix[0]="ind.svg"; //suffix[1]="ind.svg"; //String out = "D"; suffix[1]="ind.txt"; //suffix[3]="ind.txt"; for(int i=0;i<bw.length;i++){ bw[i]=null; } for(int i=0;i<bw.length;i++){ String tmp=out+"_"+suffix[i]; bw[i] = new BufferedWriter(new FileWriter(tmp)); } //int sum = mline[0]+mline[1]; int sum=Math.max(M2[0][0][0], M2[1][0][0]); double[] size ={500,500}; double[] viewBoxZero ={-1,-1}; double[] viewBoxLength = {sum-viewBoxZero[0],sum-viewBoxZero[1]}; /* double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ /* * 2x3 table Probを分離カラーリングするためのインデックス double[][] grad1={{0.0000000,0.1379857,0.2862017,0.4462871,0.6203099,0.8109302,1.0216512,1.2572173,1.5242801,1.8325815,2.1972246,2.6435117,3.2188758,4.0298060,5.4161004,36.8413615}, {0.00000000,0.06666667,0.13333333,0.20000000,0.26666667,0.33333333 ,0.40000000,0.46666667,0.53333333,0.60000000,0.66666667,0.73333333 ,0.80000000,0.86666667,0.93333333,1}, {0.00000000,0.00000001,0.0000001,0.000001,0.00001,0.0001 ,0.001,0.0013,0.005,0.01,0.015,0.016 ,0.06,0.09,0.1,0.15}}; */ double[][] grad1={{2.772588722,5.545177445,8.317766167,11.09035489,13.86294361,16.63553233,19.40812106,22.18070978,24.9532985,27.72588722}, {0.000000001,0.00000001,0.0000001,0.000001,0.00001,0.0001,0.001,0.01,0.1,1}, {0.001,0.005,0.01,0.03,0.05,0.06,0.07,0.08,0.1,1}}; //String[] color ={"#FFFFFF","#DDDDDD","#CCCCCC","#AAAAAA","#999999","#777777","#555555","#444444","#222222","#000000"}; String[] color ={"#FFFFFF","#EEEEEE","#DDDDDD","#CCCCCC","#BBBBBB","#AAAAAA","#999999","#888888","#777777","#666666","#555555","#444444","#333333","#222222","#111111","#000000"}; String header = "<?xml version=\"1.0\" standalone=\"yes\" ?>\n"; header += "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"; header += "<svg width=\""+ size[0] +"\" height=\"" + size[1] +"\" viewBox=\"" + viewBoxZero[0] + " " + viewBoxZero[1] +" " + viewBoxLength[0] + " " + viewBoxLength[1] +"\" xmlns=\"http://www.w3.org/2000/svg\">\n"; String footer = "</svg>\n"; for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],header); } //double[][] prInd=prInd(M2); //double[] sl = StatUtilsX.Fisher.serialLogfact(Math.max(M2[0][2][0],M2[1][2][0])); /* * independent */ double pr2=0; /* double compool2= sl[M2[0][0][0]]+sl[M2[0][0][1]]+sl[M2[0][1][0]]+sl[M2[0][1][1]]-sl[M2[0][2][0]] +sl[M2[1][0][0]]+sl[M2[1][0][1]]+sl[M2[1][1][0]]+sl[M2[1][1][1]]-sl[M2[1][2][0]]; */ int[][] ind1=new int[2][2]; int[][] ind2=new int[2][2]; for(int x=0;x<M2[0][0][0];x++){ ind1[0][0]=x; ind1[0][1]=M2[0][0][0]-x; ind1[1][0]=M2[0][1][0]-x; ind1[1][1]=M2[0][1][1]-ind1[0][1]; for(int j=0;j<M2[1][0][0];j++){ ind2[0][0]=j; ind2[0][1]=M2[1][0][0]-j; ind2[1][0]=M2[1][1][0]-j; ind2[1][1]=M2[1][1][1]-ind2[0][1]; boolean zero=true; //double tmp =0; for(int k=0;k<ind1.length;k++){ for(int l=0;l<ind1[k].length;l++){ if(ind1[k][l]<0 || ind2[k][l]<0){ zero=false; //break; }else{ //tmp+=sl[ind1[k][l]]+sl[ind2[k][l]]; } } if(!zero){ //break; } } if(zero){ //pr2=Math.exp(compool2-tmp); pr2=prInd[x][j]; double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr2<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); BioBankPerm2.Run.out3File(bw[0], ""+object); BioBankPerm2.Run.out3File(bw[1], pr2+"\t"); //System.out.print(pr2+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); BioBankPerm2.Run.out3File(bw[1], "\t"); //System.out.print("\t"); } } //System.out.println(); BioBankPerm2.Run.out3File(bw[1], "\n"); } for(int m=0;m<1;m++){ BioBankPerm2.Run.out3File(bw[m],footer); } //System.out.print("\n"); for(int m=0;m<bw.length;m++){ bw[m].close(); } //} } public static double[][] prPool(int[][]M1){ double[][] ret = new double[M1[0][0]][M1[0][1]]; double[] sl = StatUtilsX.Fisher.serialLogfact(M1[2][0]); int[][] pool=new int[3][2]; double pr=0; double compool= sl[M1[0][0]]+sl[M1[0][1]]+sl[M1[0][2]]+sl[M1[1][0]]+sl[M1[1][1]]-sl[M1[2][0]]; for(int x=0;x<M1[0][0];x++){ for(int j=0;j<M1[0][1];j++){ //System.out.println("x="+x+" j="+j); pool[0][0]=x; pool[1][0]=j; pool[0][1]=M1[0][0]-x; pool[1][1]=M1[0][1]-j; pool[2][0]=M1[1][0]-x-j; pool[2][1]=M1[0][2]-pool[2][0]; boolean zero=true; double tmp =0; for(int k=0;k<pool.length;k++){ for(int l=0;l<pool[k].length;l++){ if(pool[k][l]<0){ zero=false; //break; }else{ tmp+=sl[pool[k][l]]; } } if(!zero){ //break; } } if(zero){ pr=Math.exp(compool-tmp); double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; /* for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } */ //String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); //BioBankPerm2.Run.out3File(bw[0], ""+object); //BioBankPerm2.Run.out3File(bw[1], pr+"\t"); ret[x][j]=pr; //System.out.print(pr+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); //BioBankPerm2.Run.out3File(bw[1], "\t"); //System.out.print("\t"); ret[x][j]=0; } } //System.out.println(); //BioBankPerm2.Run.out3File(bw[0], "\n"); //BioBankPerm2.Run.out3File(bw[1], "\n"); } return ret; } public static double[][] prInd(int[][][]M2){ double[][] ret = new double[M2[0][0][0]][M2[1][0][0]]; double[] sl = StatUtilsX.Fisher.serialLogfact(Math.max(M2[0][2][0],M2[1][2][0])); double pr2=0; double compool2= sl[M2[0][0][0]]+sl[M2[0][0][1]]+sl[M2[0][1][0]]+sl[M2[0][1][1]]-sl[M2[0][2][0]] +sl[M2[1][0][0]]+sl[M2[1][0][1]]+sl[M2[1][1][0]]+sl[M2[1][1][1]]-sl[M2[1][2][0]]; int[][] ind1=new int[2][2]; int[][] ind2=new int[2][2]; for(int x=0;x<M2[0][0][0];x++){ ind1[0][0]=x; ind1[0][1]=M2[0][0][0]-x; ind1[1][0]=M2[0][1][0]-x; ind1[1][1]=M2[0][1][1]-ind1[0][1]; for(int j=0;j<M2[1][0][0];j++){ ind2[0][0]=j; ind2[0][1]=M2[1][0][0]-j; ind2[1][0]=M2[1][1][0]-j; ind2[1][1]=M2[1][1][1]-ind2[0][1]; boolean zero=true; double tmp =0; for(int k=0;k<ind1.length;k++){ for(int l=0;l<ind1[k].length;l++){ if(ind1[k][l]<0 || ind2[k][l]<0){ zero=false; //break; }else{ tmp+=sl[ind1[k][l]]+sl[ind2[k][l]]; } } if(!zero){ //break; } } if(zero){ pr2=Math.exp(compool2-tmp); double[] position={x,j}; int[] gradselect={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2}; //for(int m=0;m<16;m++){ double[] rectsize ={1,1}; String rectcolor=""; /* for(int l=0;l<grad1[gradselect[7]].length;l++){ if(pr2<=grad1[gradselect[7]][l]){ if(gradselect[7]==0){ rectcolor=color[l]; }else{ rectcolor=color[color.length-1-l]; } break; } } */ //String object = DiscreteMathTools.PowerSet.StringRect(position, rectsize,rectcolor); //BioBankPerm2.Run.out3File(bw[0], ""+object); //BioBankPerm2.Run.out3File(bw[1], pr2+"\t"); ret[x][j]=pr2; //System.out.print(pr2+"\t"); //} //BioBankPerm2.Run.out3File(bw[0], pr+"\t"); }else{ //BioBankPerm2.Run.out3File(bw[0], "\t"); //BioBankPerm2.Run.out3File(bw[1], "\t"); ret[x][j]=0; //System.out.print("\t"); } } //System.out.println(); //BioBankPerm2.Run.out3File(bw[1], "\n"); } return ret; } }