package align2; import java.io.File; import java.io.Serializable; import fileIO.LoadThread; import fileIO.ReadWrite; import shared.KillSwitch; /** * @author Brian Bushnell * @date Dec 23, 2012 * */ public class Block implements Serializable{ /** * */ private static final long serialVersionUID = -1638122096023589384L; public Block(int numSites_, int numStarts_){ numSites=numSites_; numStarts=numStarts_; sites=new int[numSites]; starts=new int[numStarts+1]; assert(Integer.bitCount(numStarts)==1 && Integer.bitCount(starts.length)==2) : numStarts; } public Block(int[] sites_, int[] starts_){ sites=sites_; starts=starts_; numSites=sites.length; numStarts=starts.length-1; assert(Integer.bitCount(numStarts)==1 && Integer.bitCount(starts.length)==2) : numStarts; } /** For legacy support */ public int[] getHitList(int key){ int len=length(key); if(len==0){return null;} int start=starts[key]; int[] r=KillSwitch.copyOfRange(sites, start, start+len); return r; } /** For legacy support */ public int[] getHitList(int start, int stop){ int len=length(start, stop); if(len==0){return null;} assert(len>0) : len+", "+start+", "+stop; int[] r=KillSwitch.copyOfRange(sites, start, start+len); return r; } /** For legacy support */ public int[][] getHitLists(int[] start, int[] stop){ int[][] r=new int[start.length][]; for(int i=0; i0; i--){ x[i]=x[i]-x[i-1]; } } private static void decompress(int[] x){ int sum=x[0]; for(int i=1; i lta=LoadThread.load(fname, int[].class); b=ReadWrite.read(int[].class, fname2, false); lta.waitForThisToFinish(); a=lta.output; } // { // LoadThread lta=LoadThread.load(fname, int[].class); // LoadThread ltb=LoadThread.load(fname2, int[].class); // lta.waitForThisToFinish(); // ltb.waitForThisToFinish(); // a=lta.output; // b=ltb.output; // } // int[] a=ReadWrite.read(int[].class, fname); // int[] b=ReadWrite.read(int[].class, fname2); assert(a!=null && b!=null) : a+", "+b; if(compress){ int sum=b[0]; for(int i=1; i