package aliview.sequencelist;
import java.util.Comparator;
import aliview.NucleotideUtilities;
import aliview.alignment.AliHistogram;
import aliview.sequences.Sequence;
public class SequencePositionComparator implements Comparator<Sequence> {
private int sortPosition;
private AliHistogram histogram;
public SequencePositionComparator(int position, AliHistogram histogram) {
this.sortPosition = position;
this.histogram = histogram;
}
public int compare(Sequence seq1, Sequence seq2) {
byte seq1Byte = seq1.getBaseAtPos(sortPosition);
byte seq2Byte = seq2.getBaseAtPos(sortPosition);
int byte1Count = histogram.getValueCount(sortPosition, NucleotideUtilities.baseValFromBase(seq1Byte));
int byte2Count = histogram.getValueCount(sortPosition, NucleotideUtilities.baseValFromBase(seq2Byte));
if(byte1Count < byte2Count){
return -1;
}
else if(byte1Count > byte2Count){
return 1;
}
// byte1Count == byte2Count
else{
return seq1Byte - seq2Byte;
}
}
}