001    package calhoun.analysis.crf.scoring;
002    
003    import calhoun.analysis.crf.LocalPathSimilarityScore;
004    import calhoun.analysis.crf.io.TrainingSequence;
005    
006    public class SimScoreMinCodingMiscallsSV13 implements LocalPathSimilarityScore {
007    
008            public double evaluate(int yprev, int y, TrainingSequence<?> seq, int pos) {
009                    if (pos == 0) { return 0.0; }
010                    int realy = seq.getY(pos);
011                    if (isCodingPlus(y) && (!isCodingPlus(realy))) { return -1.0; }
012                    if ((!isCodingPlus(y)) && isCodingPlus(realy)) { return -1.0; }
013                    if (isCodingMinus(y) && (!isCodingMinus(realy))) { return -1.0; }
014                    if ((!isCodingMinus(y)) && isCodingPlus(realy)) { return -1.0; }
015                    return 0.0;
016            }
017    
018            private boolean isCodingMinus(int y) {
019                    if (y==7) { return true; }
020                    if (y==8) { return true; }
021                    if (y==9) { return true; }
022                    return false;
023            }
024    
025            private boolean isCodingPlus(int y) {
026                    if (y==1) { return true; }
027                    if (y==2) { return true; }
028                    if (y==3) { return true; }
029                    return false;
030            }
031    
032    }
033