Changeset 1554


Ignore:
Timestamp:
05/23/14 21:54:40 (10 years ago)
Author:
rkrimmel
Message:

Moved alignment plugin into core-tasktrees

Location:
branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWaterman.java

    r1553 r1554  
    7070 
    7171                System.out.println("Starting SmithWaterman algorithm with a " 
    72                                 + submat.getClass() + " Substitution Matrix: " + submat.info()); 
     72                                + submat.getClass() + " Substitution Matrix: " + submat.getClass().getCanonicalName()); 
    7373                scoreThreshold = 20; 
    7474                score = new double[length1 + 1][length2 + 1]; 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/substitution/DifferenceSubstitutionMatrix.java

    r1553 r1554  
    2929         * @see de.ugoe.cs.autoquest.plugin.alignment.SubstitutionMatrix#getDistance(int, int) 
    3030         */ 
    31         public double getDistance(int pos1, int pos2) { 
     31        public float getDistance(int pos1, int pos2) { 
    3232                return maxValue - (input1[pos1] - input2[pos2]); 
    3333        } 
     
    4949 
    5050        @Override 
    51         public double getGapPenalty() { 
     51        public float getGapPenalty() { 
    5252                return -maxValue; 
    53         } 
    54  
    55         @Override 
    56         public String info() { 
    57                 return "Max Value: " + maxValue; 
    5853        } 
    5954 
    6055 
    6156        @Override 
    62         public void generate(List<IUserSession> sessions) { 
     57        public void generate() { 
    6358                // TODO Auto-generated method stub 
    6459                 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/substitution/NearbySubstitutionMatrix.java

    r1553 r1554  
    2929         * @see de.ugoe.cs.autoquest.plugin.alignment.SubstitutionMatrix#getDistance(int, int) 
    3030         */ 
    31         public double getDistance(int pos1, int pos2) { 
     31        public float getDistance(int pos1, int pos2) { 
    3232                int difference = Math.abs(input1[pos1]-input2[pos2]);  
    3333                if(difference < range) { 
     
    4141 
    4242        @Override 
    43         public double getGapPenalty() { 
     43        public float getGapPenalty() { 
    4444                return -range-1; 
    4545        } 
    4646 
    47         @Override 
    48         public String info() { 
    49                 return "Range: " + range; 
    50         } 
    5147 
    5248        @Override 
    53         public void generate(List<IUserSession> sessions) { 
     49        public void generate() { 
    5450                // TODO Auto-generated method stub 
    5551                 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/substitution/ObjectDistanceSubstitionMatrix.java

    r1553 r1554  
    33import java.util.ArrayList; 
    44import java.util.Collection; 
     5import java.util.HashMap; 
    56import java.util.Iterator; 
    67 
     
    1314import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.AlignmentHelpers; 
    1415import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance; 
     16import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     17import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 
    1518import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 
     19import de.ugoe.cs.autoquest.usageprofiles.SymbolMap; 
    1620import de.ugoe.cs.util.console.GlobalDataContainer; 
    1721 
    1822public class ObjectDistanceSubstitionMatrix implements SubstitutionMatrix { 
    1923 
    20         private ArrayList<int[][]> matrix; 
    21         private int currentSequence; 
    22          
    23          
    24         public ObjectDistanceSubstitionMatrix() { 
    25                 currentSequence = 0; 
    26                 matrix = new ArrayList<int[][]>(); 
    27         } 
    28          
    29         @Override 
    30         public String info() { 
    31                 // TODO Auto-generated method stub 
    32                 return null; 
     24        // private ArrayList<int[][]> matrix; 
     25        HashMap<Integer, Integer> idmapping; 
     26        private TriangleMatrix matrix; 
     27        private SymbolMap<ITaskInstance, ITask> uniqueTasks; 
     28 
     29        public ObjectDistanceSubstitionMatrix( 
     30                        SymbolMap<ITaskInstance, ITask> uniqueTasks) { 
     31                this.uniqueTasks = uniqueTasks; 
     32                idmapping = new HashMap<Integer, Integer>(); 
     33                matrix = new TriangleMatrix(uniqueTasks.size()+1); 
    3334        } 
    3435 
    3536        @Override 
    36         public double getDistance(int pos1, int pos2) { 
    37                 // TODO Auto-generated method stub 
    38                  
    39                 return matrix.get(currentSequence)[pos1][pos2]; 
    40         } 
    41          
    42         public double getDistance(int sequence, int pos1, int pos2) { 
    43                 return  matrix.get(sequence)[pos1][pos2]; 
    44                  
    45                  
    46         } 
    47  
    48         @Override 
    49         public double getGapPenalty() { 
     37        public float getGapPenalty() { 
    5038                // TODO Auto-generated method stub 
    5139                return 0; 
     
    5341 
    5442        @Override 
    55         public void generate(List<IUserSession> sessions) { 
    56                  
    57                 for(Iterator it = sessions.iterator(); it.hasNext();) { 
    58                         IUserSession session = (IUserSession) it.next(); 
    59                         matrix.add(new int[sessions.size()][sessions.size()]); 
    60                  
    61                          
    62                         for (int i=0; i < session.size(); i++) { 
    63                                 for (int j=0; j < session.size(); j++) { 
    64                                         //TODO Check if ITaskInstance is of type IEventTaskInstance  
    65                                         IEventTaskInstance eti1 = (IEventTaskInstance) session.get(i); 
    66                                         IEventTaskInstance eti2 = (IEventTaskInstance) session.get(j); 
    67                                         IGUIElement first = (IGUIElement) eti1.getEvent().getTarget(); 
    68                                         IGUIElement second =(IGUIElement) eti2.getEvent().getTarget(); 
    69                                         matrix.get(currentSequence)[i][j] = AlignmentHelpers.distanceBetween(first, second); 
     43        public void generate() { 
     44                int i = 0; 
     45                for (Iterator<ITaskInstance> it = uniqueTasks.getSymbols().iterator(); it 
     46                                .hasNext();) { 
     47                        Object obj1 = it.next(); 
     48                        IEventTaskInstance eti1 = null; 
     49                        if (obj1 instanceof IEventTaskInstance) { 
     50                                eti1 = (IEventTaskInstance) obj1; 
     51                        } 
     52                        int j = 0; 
     53                        for (Iterator<ITaskInstance> jt = uniqueTasks.getSymbols() 
     54                                        .iterator(); jt.hasNext();) { 
     55                                IEventTaskInstance eti2 = null; 
     56                                Object obj2 = jt.next(); 
     57                                if (obj2 instanceof IEventTaskInstance) { 
     58                                        eti2 = (IEventTaskInstance) obj2; 
    7059                                } 
    71                         }                        
     60                                IGUIElement first = (IGUIElement) eti1.getEvent().getTarget(); 
     61                                IGUIElement second = (IGUIElement) eti2.getEvent().getTarget(); 
     62                                idmapping.put(eti1.getTask().getId(), i); 
     63                                idmapping.put(eti2.getTask().getId(), j); 
     64                                matrix.set(i, j, AlignmentHelpers.distanceBetween(first, second)); 
     65                                j++; 
     66                        } 
     67                        i++; 
    7268                } 
    7369        } 
     70 
     71        @Override 
     72        public float getDistance(int taskId1, int taskId2) { 
     73                return matrix.get(idmapping.get(taskId1),idmapping.get(taskId2)); 
     74        } 
     75 
    7476} 
     77 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/substitution/SubstitutionMatrix.java

    r1553 r1554  
    99 
    1010public interface SubstitutionMatrix { 
     11         
    1112 
    12         public String info(); 
    13          
    14         public double getDistance(int pos1, int pos2); 
     13        public float getDistance(int pos1, int pos2); 
    1514 
    16         public double getGapPenalty(); 
     15        public float getGapPenalty(); 
    1716 
    18         public void generate(List<IUserSession> sessions); 
     17        public void generate(); 
    1918 
    2019         
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java

    r1553 r1554  
    2626 
    2727import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.NumberSequence; 
     28import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.SmithWaterman; 
     29import de.ugoe.cs.autoquest.tasktrees.alignment.substitution.ObjectDistanceSubstitionMatrix; 
    2830import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 
    2931import de.ugoe.cs.autoquest.tasktrees.treeifc.IIteration; 
     
    140142        numberseqs = new ArrayList<NumberSequence>(); 
    141143         
     144         
     145         
    142146        // this is the real rule application. Loop while something is replaced. 
    143         harmonizeEventTaskInstancesModel(appData); 
     147        SymbolMap<ITaskInstance, ITask> uniqueTasks = harmonizeEventTaskInstancesModel(appData,numberseqs); 
     148        ObjectDistanceSubstitionMatrix submat = new ObjectDistanceSubstitionMatrix(uniqueTasks);   
     149        submat.generate(); 
     150         
     151         
     152        SmithWaterman sm = new SmithWaterman(numberseqs.get(0).getSequence(), numberseqs.get(0).getSequence(), submat); 
     153        sm.printDPMatrix(); 
     154       
    144155         
    145156         
     
    188199     * 
    189200     * @param appData the rule application data combining all data used for applying this rule 
    190      */ 
    191     private void harmonizeEventTaskInstancesModel(RuleApplicationData appData) { 
     201     * @return Returns the unique tasks symbol map 
     202     */ 
     203    private SymbolMap<ITaskInstance, ITask> harmonizeEventTaskInstancesModel(RuleApplicationData appData, ArrayList<NumberSequence> numberseqs) { 
    192204        Console.traceln(Level.INFO, "harmonizing task model of event task instances"); 
    193205        appData.getStopWatch().start("harmonizing event tasks"); 
     
    201213        List<IUserSession> sessions = appData.getSessions(); 
    202214        int sessionNo = 0; 
     215        numberseqs = new ArrayList<NumberSequence>(); 
    203216        for (IUserSession session : sessions) { 
    204217            Console.traceln(Level.FINE, "handling " + (++sessionNo) + ". " + session); 
     
    219232                } 
    220233            } 
    221              
     234            numberseqs.add(templist); 
    222235            comparator.clearBuffers(); 
    223236        } 
     
    229242        appData.getStopWatch().dumpStatistics(System.out); 
    230243        appData.getStopWatch().reset(); 
     244                return uniqueTasks; 
    231245    } 
    232246 
Note: See TracChangeset for help on using the changeset viewer.