001    package calhoun.analysis.crf;
002    
003    
004    /** An extension of FeatureManagerNode for situations where the nodes use in semi-markov models is non-standard.
005     * It allows an arbitrary region at the right and left edge of each segment to be eliminated, presumable because a
006     * different probabilistic model will be used at that position.
007     */
008    public interface FeatureManagerNodeBoundaries<InputType> extends FeatureManagerNode<InputType> {
009            /** A NodeBoundary defines how a node feature should be used in a semi-markov model.  The default behavior is that
010             * the value of a node will be the sum of the values of the node feature at all positions in the segment.  Using
011             * nodeBoundaries allows more flexibility.  
012             * This is somewhat ill-defined right now.  Designed specifically for EmissonMarkovFeatures in the semi-markov gene caller.*/ 
013            
014            /*
015             *  NOTE: These details below have now been wrapped up in the details of CacheStrategySpec, but we still want to keep this as a separate class.
016            public static class NodeBoundary {
017                    int featureIndex;
018                    int state;
019                    int lookupTable;
020                    int leftBoundary;
021                    int rightBoundary;
022                    
023                    public NodeBoundary(int featureIndex, int state, int lookupTable, int leftBoundary, int rightBoundary) {
024                            featureIndex = this.featureIndex;
025                            state = this.state;
026                            lookupTable = this.lookupTable;
027                            leftBoundary = this.leftBoundary;
028                            rightBoundary = this.rightBoundary;
029                    }
030            }
031            
032    
033            List<NodeBoundary> getBoundaries();
034            
035            */
036    }