/**
* GeDBIT.type.SpectraTable 2006.07.24
*
* Copyright Information:
*
* Change Log:
* 2006.07.24: Added, by Willard
*/
package GeDBIT.type;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import GeDBIT.dist.Metric;
/**
* @author Willard
*/
public class SpectraTable extends Table {
/**
*
*/
private static final long serialVersionUID = -6528032331962266589L;
/**
* @param fileName
* @param maxSize
* @param metric
* @throws IOException
*/
public SpectraTable(String fileName, String indexPrefix, int maxSize,
Metric metric) throws IOException {
super(fileName, indexPrefix, maxSize, metric);
BufferedReader reader = new java.io.BufferedReader(
new java.io.FileReader(fileName));
loadData(reader, maxSize);
}
/**
* @param reader
* @param maxSize
*/
private void loadData(BufferedReader reader, int maxSize) {
String line;
ArrayList<Spectra> spectra = null;
System.out.println("Loading... ");
try {
// read sequences from file
line = reader.readLine(); // read the first line
if (line != null)
line = line.trim();
// get total rows from first line and allocate the ArrayList
int numSpectra = java.lang.Integer.parseInt(line);
spectra = new ArrayList<Spectra>(numSpectra);
originalRowIDs = new int[numSpectra];
// read line byte line
line = reader.readLine();
if (line != null)
line = line.trim();
int count = 0;
while (line != null && count < maxSize) {
if (count % 1000 == 0) {
System.out.print(count + ".. ");
}
String[] row = line.split(" ", 2);
originalRowIDs[count] = new Integer(row[0]).intValue();
spectra.add(new Spectra(this, count, row[1]));
line = reader.readLine();
if (line != null)
line = line.trim();
count++;
}
} catch (java.io.IOException e) {
e.printStackTrace();
throw new java.lang.IllegalStateException(
"Error occured when reading ms file: " + reader
+ " error message returned: " + e.getMessage());
} catch (NumberFormatException e) {
e.printStackTrace();
/* Ignore strings with invalid characters. */
}
spectra.trimToSize();
data = spectra;
}
}