View Javadoc
1   /*
2    * The baseCode project
3    * 
4    * Copyright (c) 2008-2019 University of British Columbia
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *       http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   *
18   */
19  package ubic.basecode.dataStructure.matrix;
20  
21  import java.util.Iterator;
22  import java.util.List;
23  
24  /**
25   * @author ?
26   * 
27   */
28  public interface Matrix3D<R, C, S, V> {
29      /**
30       * Add a column name associated with an index.
31       * 
32       * @param s a column name
33       * @param index int the column index associated with this name
34       */
35      public void addColumnName( C s, int index );
36  
37      /**
38       * Add a row name associated with a row index.
39       * 
40       * @param s row name
41       * @param index
42       */
43      public void addRowName( R s, int index );
44  
45      /**
46       * Add a slice name
47       * 
48       * @param s name of the slice
49       * @param index
50       */
51      public void addSliceName( S s, int index );
52  
53      /**
54       * Get the number of columns the matrix has.
55       * 
56       * @return int
57       */
58      public int columns();
59  
60      /**
61       * Check if the matrix contains a column name
62       * 
63       * @param colName
64       * @return true if the matrix contains the column name
65       */
66      public boolean containsColumnName( C columnName );
67  
68      /**
69       * Check if the matrix contains a row name
70       * 
71       * @param rowName
72       * @return true if the matrix contains the row name
73       */
74      public boolean containsRowName( R rowName );
75  
76      /**
77       * Check if the matrix contains a slice name
78       * 
79       * @param stripeName
80       * @return true if the matrix contains the slice name
81       */
82      public boolean containsSliceName( S sliceName );
83  
84      /**
85       * Get the index of a column by name.
86       * 
87       * @param s name
88       * @return column index
89       */
90      public int getColIndexByName( C s );
91  
92      /**
93       * Get the column name for an index.
94       * 
95       * @param i column index
96       * @return column name
97       */
98      public C getColName( int i );
99  
100     public Iterator<C> getColNameIterator();
101 
102     /**
103      * @return List of Object
104      */
105     public List<C> getColNames();
106 
107     public V getObject( int slice, int row, int column );
108 
109     /**
110      * Get the index of a row by name.
111      * 
112      * @param s name
113      * @return row index
114      */
115     public int getRowIndexByName( R s );
116 
117     /**
118      * Get the row name for an index
119      * 
120      * @param i row index
121      * @return name of the row
122      */
123     public R getRowName( int i );
124 
125     /**
126      * @return java.util.Iterator
127      */
128     public Iterator<R> getRowNameIterator();
129 
130     /**
131      * @return List of Object
132      */
133     public List<R> getRowNames();
134 
135     /**
136      * Get a slice index
137      * 
138      * @param s name
139      * @return slice index
140      */
141     public int getSliceIndexByName( S s );
142 
143     /**
144      * Get a slice name
145      * 
146      * @param i index
147      * @return slice name
148      */
149     public S getSliceName( int i );
150 
151     public Iterator<S> getSliceNameIterator();
152 
153     public List<S> getSliceNames();
154 
155     /**
156      * Check if this matrix has a valid set of column names.
157      * 
158      * @return boolean
159      */
160     public boolean hasColNames();
161 
162     /**
163      * @param r row name
164      * @return whether the row exists
165      */
166     public boolean hasRow( R r );
167 
168     /**
169      * @return boolean
170      */
171     public boolean hasRowNames();
172 
173     public boolean hasSliceNames();
174 
175     /**
176      * Check if the value at a given index is missing.
177      * 
178      * @param slice
179      * @param row
180      * @param column
181      * @return true if the value is missing, false otherwise.
182      */
183     public boolean isMissing( int slice, int row, int column );
184 
185     /**
186      * Return the number of missing values in the matrix.
187      * 
188      * @return number missing
189      */
190     public int numMissing();
191 
192     /**
193      * Get the number of rows the matrix has
194      * 
195      * @return int
196      */
197     public int rows();
198 
199     /**
200      * @param v List a vector of Strings.
201      */
202     public void setColumnNames( List<C> v );
203 
204     /**
205      * @param v List a vector of Strings.
206      */
207     public void setRowNames( List<R> v );
208 
209     public void setSliceNames( List<S> v );
210 
211     public int slices();
212 
213 }