jpayne@68: package aligner; jpayne@68: jpayne@68: public interface Aligner { jpayne@68: jpayne@68: /** return new int[] {rows, maxCol, maxState, maxScore, maxStart}; jpayne@68: * Will not fill areas that cannot match minScore */ jpayne@68: int[] fillLimited(byte[] read, byte[] ref, int refStartLoc, int refEndLoc, int minScore); jpayne@68: jpayne@68: /** return new int[] {rows, maxCol, maxState, maxScore, maxStart}; jpayne@68: * Does not require a min score (ie, same as old method) */ jpayne@68: int[] fillUnlimited(byte[] read, byte[] ref, int refStartLoc, int refEndLoc); jpayne@68: jpayne@68: /** return new int[] {rows, maxCol, maxState, maxScore, maxStart}; jpayne@68: * Min score is optional */ jpayne@68: int[] fillUnlimited(byte[] read, byte[] ref, int refStartLoc, int refEndLoc, int minScore); jpayne@68: jpayne@68: /** Generates the match string */ jpayne@68: byte[] traceback(byte[] query, byte[] ref, int refStartLoc, int refEndLoc, int row, int col, int state); jpayne@68: jpayne@68: /** Generates identity; jpayne@68: * fills 'extra' with {match, sub, del, ins, N, clip} if present */ jpayne@68: float tracebackIdentity(byte[] query, byte[] ref, int refStartLoc, int refEndLoc, int row, int col, int state, int[] extra); jpayne@68: jpayne@68: /** @return {score, bestRefStart, bestRefStop} */ jpayne@68: int[] score(byte[] read, byte[] ref, int refStartLoc, int refEndLoc, int maxRow, int maxCol, jpayne@68: int maxState/*, final int maxScore, final int maxStart*/); jpayne@68: jpayne@68: /** Will not fill areas that cannot match minScore. jpayne@68: * @return {score, bestRefStart, bestRefStop} */ jpayne@68: int[] fillAndScoreLimited(byte[] read, byte[] ref, int refStartLoc, int refEndLoc, int minScore); jpayne@68: jpayne@68: /** Lowest possible alignment score for a read with this length and this identity */ jpayne@68: int minScoreByIdentity(int len, float identity); jpayne@68: jpayne@68: // int maxRows(); jpayne@68: // int maxColumns(); jpayne@68: int rows(); jpayne@68: int columns(); jpayne@68: jpayne@68: }