inprogress
[jalview.git] / forester / java / src / org / forester / evoinference / distance / S.java
1
2 package org.forester.evoinference.distance;
3
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.Map.Entry;
7 import java.util.Set;
8 import java.util.SortedMap;
9 import java.util.SortedSet;
10 import java.util.TreeMap;
11 import java.util.TreeSet;
12
13 import org.forester.evoinference.matrix.distance.BasicSymmetricalDistanceMatrix;
14
15 public class S {
16
17     private final List<SortedMap<Double, SortedSet<Integer>>> _data;
18
19     S() {
20         _data = new ArrayList<SortedMap<Double, SortedSet<Integer>>>();
21     }
22
23     void initialize( final BasicSymmetricalDistanceMatrix d ) {
24         for( int j = 0; j < d.getSize(); ++j ) {
25             final TreeMap<Double, SortedSet<Integer>> map = new TreeMap<Double, SortedSet<Integer>>();
26             _data.add( map );
27             for( int i = 0; i < j; ++i ) {
28                 addValue( d.getValues()[ i ][ j ], i, map );
29             }
30         }
31     }
32
33     SortedMap<Double, SortedSet<Integer>> getS( final int j ) {
34         return _data.get( j );
35     }
36
37     Set<Entry<Double, SortedSet<Integer>>> getSentrySet( final int j ) {
38         return _data.get( j ).entrySet();
39     }
40
41     void addValue( double key, int value, int j ) {
42         SortedMap<Double, SortedSet<Integer>> m = _data.get( j );
43         addValue( key, value, m );
44     }
45
46     static void addValue( double key, int value, SortedMap<Double, SortedSet<Integer>> m ) {
47         if ( !m.containsKey( key ) ) {
48             TreeSet<Integer> x = new TreeSet<Integer>();
49             x.add( value );
50             m.put( key, x );
51         }
52         else {
53             m.get( key ).add( value );
54         }
55     }
56 }