1ea6f9b8d30e03107f37a6410d4f0c0e77703afd
[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 addValue( final double key, final int value, final int j ) {
24         final SortedMap<Double, SortedSet<Integer>> m = _data.get( j );
25         addValue( key, value, m );
26     }
27
28     SortedMap<Double, SortedSet<Integer>> getS( final int j ) {
29         return _data.get( j );
30     }
31
32     Set<Entry<Double, SortedSet<Integer>>> getSentrySet( final int j ) {
33         return _data.get( j ).entrySet();
34     }
35
36     void initialize( final BasicSymmetricalDistanceMatrix d ) {
37         for( int j = 0; j < d.getSize(); ++j ) {
38             final TreeMap<Double, SortedSet<Integer>> map = new TreeMap<Double, SortedSet<Integer>>();
39             _data.add( map );
40             for( int i = 0; i < j; ++i ) {
41                 addValue( d.getValues()[ i ][ j ], i, map );
42             }
43         }
44     }
45
46     static void addValue( final double key, final int value, final SortedMap<Double, SortedSet<Integer>> m ) {
47         if ( !m.containsKey( key ) ) {
48             final 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 }