Avoiding fixing file paths more than once for the same Patch.
[trakem2.git] / mpi / fruitfly / general / fileParsing.java
blob4d392d07cfec26a451de2ab2cd5fb779b3544717
1 package mpi.fruitfly.general;
3 /**
4 * <p>Title: file parsing</p>
6 * <p>Description: Class for parsing different file types needed</p>
8 * <p>Copyright: Copyright (c) 2006</p>
10 * <p>Company: mpi-cbg</p>
12 * @author Stephan Preibisch
13 * @version 1.0
16 import java.io.BufferedReader;
17 import java.io.IOException;
18 import java.io.FileReader;
19 import java.util.ArrayList;
20 import java.util.Iterator;
22 import static mpi.fruitfly.general.fileAccess.*;
23 import ij.IJ;
26 public class fileParsing
28 public static float[][] parseFilter(String fileName)
30 // open file
31 BufferedReader in = openFileRead(fileName);
32 if (in == null)
33 return null;
35 // read file
36 ArrayList file = new ArrayList();
37 try
39 while (in.ready()) file.add(in.readLine());
41 catch (Exception e)
43 System.err.println("mpi.fruitfly.general.readFilter("+fileName+"): " + e);
44 return null;
47 // parse data
48 if (file.size() == 0)
50 System.err.println("mpi.fruitfly.general.readFilter("+fileName+"): " + "Filter-file is empty.");
51 return null;
54 String line[];
55 Iterator<String> i = file.iterator();
56 ArrayList data = new ArrayList();
58 int maxX = 0;
60 while (i.hasNext())
62 try
64 line = i.next().trim().split(" ");
65 if (line.length > maxX)
66 maxX = line.length;
67 data.add(line);
69 catch (Exception e)
71 System.err.println("mpi.fruitfly.general.readFilter("+fileName+"): " + e);
72 return null;
76 if (maxX == 0)
78 System.err.println("mpi.fruitfly.general.readFilter(" + fileName + "): " + "Filter-file has no entries.");
79 return null;
82 float[][] filter = new float[maxX][file.size()];
83 Iterator<String[]> j = data.iterator();
84 int y = 0;
86 while (j.hasNext())
88 try
90 line = j.next();
91 for (int x = 0; x < line.length; x++)
92 filter[x][y] = Float.parseFloat(line[x]);
93 y++;
95 catch (Exception e)
97 System.err.println("mpi.fruitfly.general.readFilter("+fileName+"), line "+(y+1)+": " + e);
98 return null;
102 if (IJ.debugMode)
104 for (y = 0; y < filter[0].length; y++)
106 String numbers = "";
107 for (int x = 0; x < filter.length; x++)
108 numbers += filter[x][y] + " ";
109 IJ.log(numbers);
114 return filter;