Changeset 1584


Ignore:
Timestamp:
06/27/14 15:25:25 (11 years ago)
Author:
rkrimmel
Message:

Some refactoring for storing the initial alignments so we don't need to do them again.

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

Legend:

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

    r1582 r1584  
    11package de.ugoe.cs.autoquest.tasktrees.alignment.matrix; 
     2 
     3 
     4import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.SmithWatermanRepeated; 
    25 
    36public class BinaryAlignmentStorage { 
    47 
     8    private SmithWatermanRepeated[][] alignments; 
     9    UPGMAMatrix sequenceDistances; 
     10    
     11    public BinaryAlignmentStorage(int size) { 
     12        alignments = new SmithWatermanRepeated[size][size]; 
     13        sequenceDistances = new UPGMAMatrix(size); 
     14        sequenceDistances.initialize(Double.POSITIVE_INFINITY); 
     15    } 
     16     
     17    public void set(int i,int j,SmithWatermanRepeated sw) { 
     18        alignments[i][j] = sw; 
     19    } 
     20     
     21    public SmithWatermanRepeated get(int i,int j) { 
     22        return alignments[i][j]; 
     23    } 
     24     
     25    public void setDistance(int i,int j,double distance) { 
     26        sequenceDistances.set(i, j, distance); 
     27    } 
     28     
     29    public double getDistance(int i,int j) { 
     30        return sequenceDistances.get(i,j); 
     31    } 
     32     
     33    public UPGMAMatrix getDistanceMatrix() { 
     34        return sequenceDistances; 
     35    } 
    536} 
     37 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/pal/tree/UPGMAAligningTree.java

    r1579 r1584  
    1717 
    1818import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.NumberSequence; 
     19import de.ugoe.cs.autoquest.tasktrees.alignment.matrix.BinaryAlignmentStorage; 
    1920import de.ugoe.cs.autoquest.tasktrees.alignment.matrix.UPGMAMatrix; 
    2021import de.ugoe.cs.autoquest.tasktrees.alignment.pal.misc.Identifier; 
     
    4142         * @param m distance matrix 
    4243         */ 
    43         public UPGMAAligningTree(ArrayList<NumberSequence> numberseqs, UPGMAMatrix m) 
    44         { 
    45                 if (m.size() < 2) 
     44        public UPGMAAligningTree(ArrayList<NumberSequence> numberseqs, BinaryAlignmentStorage alignments) 
     45        { 
     46                if (alignments.getDistanceMatrix().size() < 2) 
    4647                { 
    4748                        new IllegalArgumentException("LESS THAN 2 TAXA IN DISTANCE MATRIX"); 
     
    4950         
    5051                this.numberseqs = numberseqs; 
    51                 init(m); 
     52                this.alignments = alignments; 
     53                init(alignments.getDistanceMatrix()); 
    5254 
    5355                while (true) 
     
    7375        // 
    7476        private ArrayList<NumberSequence> numberseqs; 
     77        private BinaryAlignmentStorage alignments; 
    7578        private int numClusters; 
    7679        private int besti, abi; 
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRuleAlignment.java

    r1583 r1584  
    2626import java.util.logging.Level; 
    2727 
    28  
    2928import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.NumberSequence; 
    3029import de.ugoe.cs.autoquest.tasktrees.alignment.algorithms.SmithWatermanRepeated; 
     30import de.ugoe.cs.autoquest.tasktrees.alignment.matrix.BinaryAlignmentStorage; 
    3131import de.ugoe.cs.autoquest.tasktrees.alignment.matrix.ObjectDistanceSubstitionMatrix; 
    3232import de.ugoe.cs.autoquest.tasktrees.alignment.matrix.UPGMAMatrix; 
     
    158158                submat.generate(); 
    159159 
    160                 UPGMAMatrix sequenceDistances = new UPGMAMatrix(numberseqs.size()); 
    161                 sequenceDistances.initialize(Double.POSITIVE_INFINITY); 
    162                  
    163                 //Save the alignments so we do not need to recalculate those when aligning them again in feng doolittle algorithm 
    164                 SmithWatermanRepeated[][] alignments = new SmithWatermanRepeated[numberseqs.size()][numberseqs.size()];  
     160         
     161                BinaryAlignmentStorage alignments = new BinaryAlignmentStorage(numberseqs.size()); 
     162 
    165163 
    166164                for (int i = 0; i < numberseqs.size(); i++) { 
     
    172170                                        int smithWatermanThreshold = 10; 
    173171 
    174                                         alignments[i][j] = new SmithWatermanRepeated( 
     172                                        alignments.set(i, j,new SmithWatermanRepeated( 
    175173                                                        ns1.getSequence(), ns2.getSequence(), submat, 
    176                                                         smithWatermanThreshold); 
     174                                                        smithWatermanThreshold)); 
    177175                                        SmithWatermanRepeated sameSequence1 = new SmithWatermanRepeated( 
    178176                                                        ns1.getSequence(), ns1.getSequence(), submat, 
     
    185183                                         
    186184                                        // Score of the aligmnment 
    187                                         double score = alignments[i][j].getAlignmentScore(); 
     185                                        double score = alignments.get(i,j).getAlignmentScore(); 
    188186                                        // Scores of the sequence being aligned to itself (maximum score) 
    189187                                        double sSelf1 = sameSequence1.getAlignmentScore(); 
     
    201199                                         
    202200                                        if(!Double.isInfinite(distance) && !Double.isNaN(distance)) { 
    203                                                 if(distance < sequenceDistances.get(i, j)) {     
    204                                                         sequenceDistances.set(i,j,distance ); 
     201                                                if(distance < alignments.getDistance(i, j)) {    
     202                                                        alignments.setDistance(i,j,distance ); 
    205203                                                } 
    206204                                        } 
     
    209207                } 
    210208                //System.out.println(sequenceDistances.toString()); 
    211                 UPGMAAligningTree guidetree = new UPGMAAligningTree(numberseqs, sequenceDistances); 
     209                UPGMAAligningTree guidetree = new UPGMAAligningTree(numberseqs, alignments); 
    212210                 
    213211         
Note: See TracChangeset for help on using the changeset viewer.