private long[] getTagsInBits(TagsByTaxaByte aTBT, int tagIndex, int[] reDirect, int anchorTaxa) { int lgPerSite = (anchorTaxa / 64) + 1; long[] seq = new long[lgPerSite]; for (int j = 0; j < aTBT.getTaxaCount(); j++) { if (reDirect[j] < 0) continue; int index = reDirect[j] / 64; int offset = reDirect[j] % 64; if (aTBT.getReadCountForTagTaxon(tagIndex, j) > 0) { // reference alleles seq[index] = seq[index] | (1L << offset); } } return seq; }
public long[] getTagDistInBits(int[] newTestFamilies) { int lgPerSite = (refAlignment.getSequenceCount() / 64) + 1; long[] seq = new long[lgPerSite]; for (int i = 0; i < newTestFamilies.length; i++) { for (int j = 0; j < family2TBTIndex[newTestFamilies[i]].length; j++) { int index = tbt2anchorRedirect[newTestFamilies[i]][family2TBTIndex[newTestFamilies[i]][j]] / 64; int offset = tbt2anchorRedirect[newTestFamilies[i]][family2TBTIndex[newTestFamilies[i]][j]] % 64; if (tbt.getReadCountForTagTaxon(tagIndex, family2TBTIndex[newTestFamilies[i]][j]) > 0) { // reference alleles seq[index] = seq[index] | (1L << offset); } } } return seq; }
private int[] getMinPresentFamily(int tagIndex, float minPresentInFamily) { ArrayList<Integer> overMinPresentFamilyList = new ArrayList(); for (int i = 0; i < family2TBTIndex.length; i++) { int cnt = 0; for (int j = 0; j < family2TBTIndex[i].length; j++) { if (tbt.getReadCountForTagTaxon(tagIndex, family2TBTIndex[i][j]) != 0) cnt++; } float rate = (float) cnt / family2TBTIndex[i].length; if (rate > minPresentInFamily) overMinPresentFamilyList.add(i); } if (overMinPresentFamilyList.isEmpty()) return null; int[] overMinPresentFamily = new int[overMinPresentFamilyList.size()]; for (int i = 0; i < overMinPresentFamily.length; i++) { overMinPresentFamily[i] = overMinPresentFamilyList.get(i); } return overMinPresentFamily; }