public void getLineageClusters(ArrayList<PHYNode> path, ArrayList<ArrayList<PHYNode>> clones, PHYNode n, int sampleId) {
		if(n.getSNVGroup() != null && n.getSNVGroup().containsSample(sampleId)) {
			path.add(n);
		} else if(n.getSNVGroup() != null && !n.getSNVGroup().containsSample(sampleId)) {
			return;
		}
		if(treeEdges.get(n) != null) {
			for(PHYNode nbr : treeEdges.get(n)) {
				int size1 = clones.size();
				ArrayList<PHYNode> clone = new ArrayList<PHYNode>(path);
				getLineageClusters(new ArrayList<PHYNode>(path), clones, nbr, sampleId);
				int size2 = clones.size();
				if(size1 == size2) {
					if(nbr.getSNVGroup() != null && nbr.getSNVGroup().containsSample(sampleId)) {
						clone.add(nbr);
						clones.add(clone);
					}
				}
			}
		} else {
			clones.add(new ArrayList<PHYNode>(path));
		}
	}