Changeset 1618


Ignore:
Timestamp:
07/16/14 18:07:05 (10 years ago)
Author:
rkrimmel
Message:

Startet implementing signigicant match detection

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

Legend:

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

    r1592 r1618  
    11package de.ugoe.cs.autoquest.tasktrees.alignment.algorithms; 
    22 
    3  
     3import java.util.ArrayList; 
    44import java.util.Random; 
    55 
    6 public class NumberSequence  { 
     6public class NumberSequence { 
    77        private int[] sequence; 
    88        private int signature; 
    9          
     9 
    1010        public NumberSequence(int size) { 
    11                  
     11 
    1212                sequence = new int[size]; 
    1313        } 
    14          
     14 
    1515        public int[] getSequence() { 
    1616                return sequence; 
    1717        } 
     18 
    1819        public void setSequence(int[] sequence) { 
    1920                this.sequence = sequence; 
    2021        } 
     22 
    2123        public int getSignature() { 
    2224                return signature; 
    2325        } 
     26 
    2427        public void setSignature(int signature) { 
    2528                this.signature = signature; 
    2629        } 
    27          
    28         public void printSequence() 
    29         {        
     30 
     31        public void printSequence() { 
    3032                for (int i = 0; i < sequence.length; i++) { 
    3133                        System.out.format("%5d", sequence[i]); 
     
    3335                System.out.println(); 
    3436        } 
    35          
    36         public NumberSequence shuffle(){ 
     37 
     38        public NumberSequence shuffle() { 
    3739                NumberSequence result = new NumberSequence(sequence.length); 
    3840                result.setSequence(this.sequence); 
    3941                Random rgen = new Random(); 
    40                  
    41                 for (int i=0; i<result.sequence.length; i++) { 
    42                     int randomPosition = rgen.nextInt(result.sequence.length); 
    43                     int temp = result.sequence[i]; 
    44                     result.sequence[i] = result.sequence[randomPosition]; 
    45                     result.sequence[randomPosition] = temp; 
     42 
     43                for (int i = 0; i < result.sequence.length; i++) { 
     44                        int randomPosition = rgen.nextInt(result.sequence.length); 
     45                        int temp = result.sequence[i]; 
     46                        result.sequence[i] = result.sequence[randomPosition]; 
     47                        result.sequence[randomPosition] = temp; 
    4648                } 
    4749                return result; 
    48                  
     50 
     51        } 
     52 
     53        // TODO: This can be done faster 
     54        public int containsPattern(ArrayList<NumberSequence> pattern) { 
     55                int i = 0; 
     56                int count = 0; 
     57                int[] pat1 = pattern.get(0).getSequence(); 
     58                int[] pat2 = pattern.get(1).getSequence(); 
     59                notmatched: while (i < sequence.length - pat1.length) { 
     60                        if (sequence[i] == pat1[0] || sequence[i] == pat2[0]) { 
     61                                for (int j = 0; j < pat1.length; j++) { 
     62                                        if (sequence[i + j] != pat1[j] 
     63                                                        && sequence[i + j] != pat2[j]) { 
     64                                                continue notmatched; 
     65                                        } 
     66                                } 
     67                                count++; 
     68                        } 
     69                        i++; 
     70                } 
     71                return count; 
    4972        } 
    5073 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWatermanRepeated.java

    r1612 r1618  
    375375                } 
    376376         
    377  
     377                //Console.traceln(Level.INFO,"Generating DP Matrix"); 
    378378                buildMatrix(); 
     379                //Console.traceln(Level.INFO,"Doing traceback"); 
    379380                traceback(); 
    380381        } 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/matrix/PairwiseAlignmentGenerator.java

    r1617 r1618  
    33import java.util.ArrayList; 
    44import java.util.Iterator; 
     5import java.util.logging.Level; 
    56 
    67import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.AlignmentAlgorithm; 
    78import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.AlignmentAlgorithmFactory; 
    89import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.NumberSequence; 
     10import de.ugoe.cs.util.console.Console; 
    911 
    1012public class PairwiseAlignmentGenerator { 
     
    2224 
    2325                                if (i != j) { 
     26                                        Console.traceln(Level.FINEST,"Aligning sequence " + i + " with sequence " + j); 
    2427                                        int smithWatermanThreshold = 10; 
    2528                                        AlignmentAlgorithm aa = AlignmentAlgorithmFactory.create(); 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java

    r1617 r1618  
    153153                SymbolMap<ITaskInstance, ITask> uniqueTasks = harmonizeEventTaskInstancesModel(appData); 
    154154 
     155                Console.traceln(Level.INFO,"generating substitution matrix"); 
    155156                ObjectDistanceSubstitionMatrix submat = new ObjectDistanceSubstitionMatrix( 
    156157                                uniqueTasks, 5); 
    157158                submat.generate(); 
    158159 
    159                 ArrayList<NumberSequence> matchseqs = new ArrayList<NumberSequence>(); 
     160                Console.traceln(Level.INFO,"generating pairwise alignments"); 
     161                ArrayList<ArrayList<NumberSequence>> matchseqs = new ArrayList<ArrayList<NumberSequence>>(); 
    160162                PairwiseAlignmentStorage alignments = PairwiseAlignmentGenerator.generate(numberseqs,submat); 
    161163                 
     164                Console.traceln(Level.INFO,"retrieving significant sequence pieces"); 
    162165                for (int i=0; i< numberseqs.size();i++) { 
    163166                        for(int j=0; j< numberseqs.size();j++) { 
    164167                                if(i != j) { 
    165168                                        ArrayList<ArrayList<NumberSequence>> tmp = alignments.get(i, j).getMatches(); 
    166                                         int count = 0; 
    167                                         for(Iterator<ArrayList<NumberSequence>> it = tmp.iterator();it.hasNext();) { 
    168                                                 System.out.println("Match number " + count); 
    169                                                 ArrayList<NumberSequence> tmp2 = it.next(); 
    170                                                 tmp2.get(0).printSequence(); 
    171                                                 tmp2.get(1).printSequence(); 
    172                                                 System.out.println(); 
    173                                                 count++; 
    174                                                 matchseqs.addAll(tmp2); 
     169                                        matchseqs.addAll(tmp); 
     170                                }    
     171                        } 
     172                } 
     173                 
     174                Console.traceln(Level.INFO, "searching for patterns occuring most"); 
     175                //search this match in every other sequence 
     176                for(int i=0; i < matchseqs.size();i++) { 
     177                        for(int j=0; j < matchseqs.size();j++) { 
     178                                if(i>j) { 
     179                                        if(matchseqs.get(j).get(0).containsPattern(matchseqs.get(i)) > 0 || matchseqs.get(j).get(1).containsPattern(matchseqs.get(i)) > 0) { 
     180                                                System.out.println("Found something!"); 
    175181                                        } 
    176                                         System.out.println(); 
    177                                 } 
    178                         } 
    179                 } 
    180                  
    181                 AlignmentAlgorithmFactory.setDefaultAlgorithm("de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.NeedlemanWunsch"); 
     182                                } 
     183                        } 
     184                                 
     185                } 
    182186                 
    183187                 
    184                 PairwiseAlignmentStorage matchAlignments = PairwiseAlignmentGenerator.generate(numberseqs, submat); 
    185                 UPGMAAligningTree guidetree = new UPGMAAligningTree(matchseqs,matchAlignments,submat); 
    186                 System.out.println(alignments.getDistanceMatrix()); 
    187                 //UPGMAAligningTree guidetree = new UPGMAAligningTree(numberseqs, alignments,submat); 
    188188                 
    189                 for(Iterator<NumberSequence> it = guidetree.getRoot().getSequences().iterator();it.hasNext();) { 
    190                         NumberSequence tmp = (NumberSequence) it.next(); 
    191                         tmp.printSequence(); 
    192                 } 
     189                alignments = null; 
     190                 
     191                // 
     192                //AlignmentAlgorithmFactory.setDefaultAlgorithm("de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.NeedlemanWunsch"); 
     193                //PairwiseAlignmentStorage matchAlignments = PairwiseAlignmentGenerator.generate(matchseqs, submat); 
     194                //UPGMAAligningTree guidetree = new UPGMAAligningTree(matchseqs,matchAlignments,submat); 
     195                //System.out.println(alignments.getDistanceMatrix()); 
     196                 
     197                //for(Iterator<NumberSequence> it = guidetree.getRoot().getSequences().iterator();it.hasNext();) { 
     198                //      NumberSequence tmp = (NumberSequence) it.next(); 
     199                //      tmp.printSequence(); 
     200                //} 
    193201                 
    194202         
Note: See TracChangeset for help on using the changeset viewer.