source: branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/substitution/ObjectDistanceSubstitionMatrix.java @ 1558

Last change on this file since 1558 was 1558, checked in by rkrimmel, 10 years ago

new Smith waterman variant

File size: 3.9 KB
Line 
1package de.ugoe.cs.autoquest.tasktrees.alignment.substitution;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.HashMap;
6import java.util.Iterator;
7
8import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel;
9import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
10
11import java.util.List;
12
13import de.ugoe.cs.autoquest.eventcore.Event;
14import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.AlignmentHelpers;
15import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance;
16import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
17import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance;
18import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession;
19import de.ugoe.cs.autoquest.usageprofiles.SymbolMap;
20import de.ugoe.cs.util.console.GlobalDataContainer;
21
22public class ObjectDistanceSubstitionMatrix implements SubstitutionMatrix {
23
24        // private ArrayList<int[][]> matrix;
25        HashMap<Integer, Integer> idmapping;
26        private TriangleMatrix matrix;
27        private SymbolMap<ITaskInstance, ITask> uniqueTasks;
28        private float gapPenalty;
29        private float positiveThreshold;
30       
31        public ObjectDistanceSubstitionMatrix(
32                        SymbolMap<ITaskInstance, ITask> uniqueTasks,float positiveThreshold) {
33                this.uniqueTasks = uniqueTasks;
34                this.positiveThreshold = positiveThreshold;
35                idmapping = new HashMap<Integer, Integer>();
36                matrix = new TriangleMatrix(uniqueTasks.size()+1);
37                gapPenalty = -10;
38               
39        }
40
41        @Override
42        public float getGapPenalty() {
43                return gapPenalty;
44        }
45
46        @Override
47        public void generate() {
48                int index = 0;
49                //TODO We need to determine this parameter before generating the matrix..
50                float meandistance = 18;
51                //TODO We need to determine this parameter before generating the matrix..
52                float maxDistance =34;
53                for (Iterator<ITaskInstance> it = uniqueTasks.getSymbols().iterator(); it
54                                .hasNext();) {
55                        Object obj1 = it.next();
56                        IEventTaskInstance eti1 = null;
57                        if (obj1 instanceof IEventTaskInstance) {
58                                eti1 = (IEventTaskInstance) obj1;
59                        }
60               
61                        for (Iterator<ITaskInstance> jt = uniqueTasks.getSymbols()
62                                        .iterator(); jt.hasNext();) {
63                                IEventTaskInstance eti2 = null;
64                                Object obj2 = jt.next();
65                                if (obj2 instanceof IEventTaskInstance) {
66                                        eti2 = (IEventTaskInstance) obj2;
67                                }
68                                IGUIElement first = (IGUIElement) eti1.getEvent().getTarget();
69                                IGUIElement second = (IGUIElement) eti2.getEvent().getTarget();
70                                int tempindex1 = -1;
71                                int tempindex2 = -1;
72                                if(!idmapping.containsKey(eti1.getTask().getId()))
73                                {
74                                        idmapping.put(eti1.getTask().getId(), index);
75                                        tempindex1 = index;
76                                        index++;
77                                }       
78                                else
79                                {
80                                        tempindex1 = idmapping.get(eti1.getTask().getId());
81                                }       
82                                if(!idmapping.containsKey(eti2.getTask().getId()))
83                                {
84                                        idmapping.put(eti2.getTask().getId(), index);
85                                        tempindex2 = index;
86                                        index++;
87                                }       
88                                else
89                                {
90                                        tempindex2 = idmapping.get(eti2.getTask().getId());
91                                }
92                                float distance = -1*AlignmentHelpers.distanceBetween(first, second);
93                                //meandistance += distance;
94                       
95                                if(distance > maxDistance){
96                                        maxDistance = distance;
97                                }
98                               
99                                distance += 5;
100                               
101                                //if (distance < positiveThreshold) {
102                                //      distance = -1*distance;
103                                //}
104                               
105                                matrix.set(tempindex1, tempindex2,distance);
106                               
107                        }
108                }
109                //System.out.println("ObjectDistanceMatrix: MaxDistance: " + maxDistance);
110                //System.out.println(meandistance/(uniqueTasks.size()*uniqueTasks.size()));
111                //System.out.println(idmapping.toString());
112                //System.out.println(matrix.toString());
113                //System.out.println(idmapping.keySet().toString());
114                //System.out.println(idmapping.values().toString());
115               
116        }
117       
118        public String toString(){
119                return matrix.toString();
120        }
121
122        @Override
123        public float getDistance(int taskId1, int taskId2) {
124                //System.out.println("Taskid1: " + taskId1 + " Taskid2: " + taskId2 + " Idmapping1: " + idmapping.get(taskId1) + " Idmapping2: " + idmapping.get(taskId2));
125                return matrix.get(idmapping.get(taskId1),idmapping.get(taskId2));
126        }
127
128}
129
Note: See TracBrowser for help on using the repository browser.