Removed compiler warnings

This commit is contained in:
ebner 2014-02-25 20:20:31 +01:00
parent b381b87ff9
commit c0dd33436e
7 changed files with 3135 additions and 4251 deletions

17
pom.xml
View File

@ -13,4 +13,21 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>HDF5_Viewer-${pom.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive />
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
</project> </project>

View File

@ -1,51 +0,0 @@
package ch.psi.imagej.hdf5;
/* =========================================================================
*
* Copyright 2011 Matthias Schlachter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
public class HDF5_Batch_
{
public static void run(String arg)
{
parseArgs(arg);
System.out.println("filename");
System.out.println(_filename);
System.out.println("varnames");
for(int i=0; i<_varnames.length; i++)
System.out.println(_varnames[i]);
HDF5_Writer_ w = new HDF5_Writer_();
w.setToBatchMode(_filename,_varnames);
w.run(null);
}
private static void parseArgs(String arg)
{
String[] result = arg.split("]\\s");
_filename = result[0].replaceAll("file=\\[","");
String[] splitVars = result[1].split("\\s");
_varnames = new String[splitVars.length];
for (int x=0; x<splitVars.length; x++)
_varnames[x] = splitVars[x];
}
static private String _filename = null;
static private String[] _varnames = null;
// end of class
}

View File

@ -1,22 +1,4 @@
package ch.psi.imagej.hdf5; package ch.psi.imagej.hdf5;
/* =========================================================================
*
* Copyright 2011 Matthias Schlachter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
import ij.Prefs; import ij.Prefs;
import ij.gui.GenericDialog; import ij.gui.GenericDialog;
@ -24,210 +6,143 @@ import ij.plugin.PlugIn;
import java.util.regex.*; import java.util.regex.*;
import java.lang.String; import java.lang.String;
public class HDF5_Config implements PlugIn {
public class HDF5_Config implements PlugIn public void run(String arg) {
{ // set default values
public void run(String arg) setDefaultsIfNoValueExists();
{ // read ImageJ Preferences
// set default values boolean groupVarsByName = Boolean.getBoolean(getDefaultValue("HDF5.groupVarsByName"));
setDefaultsIfNoValueExists(); groupVarsByName = Prefs.get("HDF5.groupVarsByName", groupVarsByName);
// read ImageJ Preferences
boolean groupVarsByName =
Boolean.getBoolean(getDefaultValue("HDF5.groupVarsByName"));
groupVarsByName = Prefs.get("HDF5.groupVarsByName", groupVarsByName);
boolean showUnmatchedDataSetNames = boolean showUnmatchedDataSetNames = Boolean.getBoolean(getDefaultValue("HDF5.showUnmatchedDataSetNames"));
Boolean.getBoolean(getDefaultValue("HDF5.showUnmatchedDataSetNames")); showUnmatchedDataSetNames = Prefs.get("HDF5.showUnmatchedDataSetNames", showUnmatchedDataSetNames);
showUnmatchedDataSetNames = Prefs.get("HDF5.showUnmatchedDataSetNames",
showUnmatchedDataSetNames);
String groupVarsByNameFormatGroup =
getDefaultValue("HDF5.groupVarsByNameFormatGroup");
groupVarsByNameFormatGroup
= Prefs.get("HDF5.groupVarsByNameFormatGroup",
groupVarsByNameFormatGroup);
String groupVarsByNameFormat =
getDefaultValue("HDF5.groupVarsByNameFormat");
groupVarsByNameFormat = Prefs.get("HDF5.groupVarsByNameFormat",
groupVarsByNameFormat);
String dollarRegexpForGrouping = String groupVarsByNameFormatGroup = getDefaultValue("HDF5.groupVarsByNameFormatGroup");
getDefaultValue("HDF5.dollarRegexpForGrouping"); groupVarsByNameFormatGroup = Prefs.get("HDF5.groupVarsByNameFormatGroup", groupVarsByNameFormatGroup);
dollarRegexpForGrouping = Prefs.get("HDF5.dollarRegexpForGrouping",
dollarRegexpForGrouping);
GenericDialog configDiag =
new GenericDialog("HDF5 Preferences");
configDiag.addMessage("Reader:");
configDiag.addCheckbox("Group data set names instead of showing a list " +
"of data set names.",
groupVarsByName);
configDiag.addCheckbox("Show unmatched data set names in a separate list",
showUnmatchedDataSetNames);
configDiag.addStringField("HDF5 group containing pattern " +
"for data set grouping: ",
groupVarsByNameFormatGroup,15);
configDiag.addStringField("Pattern for grouping (if no attributes" +
" are found): ",
groupVarsByNameFormat,15);
// configDiag.addStringField("$ regexp (ignored because only numbers" +
// " work right now): ",
// dollarRegexpForGrouping,15);
configDiag.addMessage("Writer:");
String yesLabel = "Save"; String groupVarsByNameFormat = getDefaultValue("HDF5.groupVarsByNameFormat");
String noLabel = "Reset"; groupVarsByNameFormat = Prefs.get("HDF5.groupVarsByNameFormat", groupVarsByNameFormat);
configDiag.enableYesNoCancel(yesLabel,noLabel);
configDiag.showDialog();
if(configDiag.wasCanceled())
{
// do nothing
return;
}
if(!configDiag.wasOKed())
{
// reset button was pressed
System.out.println("reset button was pressed");
// reset all and return a new dialog
configDiag.setVisible(false);
this.run(arg);
return;
}
// get parameters check if they are correct
groupVarsByName = configDiag.getNextBoolean();
System.out.println("groupVarsByName: " +
Boolean.toString(groupVarsByName));
showUnmatchedDataSetNames = configDiag.getNextBoolean(); String dollarRegexpForGrouping = getDefaultValue("HDF5.dollarRegexpForGrouping");
System.out.println("showUnmatchedDataSetNames: " + dollarRegexpForGrouping = Prefs.get("HDF5.dollarRegexpForGrouping", dollarRegexpForGrouping);
Boolean.toString(showUnmatchedDataSetNames));
groupVarsByNameFormatGroup = configDiag.getNextString(); GenericDialog configDiag = new GenericDialog("HDF5 Preferences");
System.out.println("groupVarsByNameFormatGroup: " + configDiag.addMessage("Reader:");
groupVarsByNameFormatGroup); configDiag.addCheckbox("Group data set names instead of showing a list " + "of data set names.", groupVarsByName);
configDiag.addCheckbox("Show unmatched data set names in a separate list", showUnmatchedDataSetNames);
configDiag.addStringField("HDF5 group containing pattern " + "for data set grouping: ", groupVarsByNameFormatGroup, 15);
configDiag.addStringField("Pattern for grouping (if no attributes" + " are found): ", groupVarsByNameFormat, 15);
// configDiag.addStringField("$ regexp (ignored because only numbers" +
// " work right now): ",
// dollarRegexpForGrouping,15);
configDiag.addMessage("Writer:");
groupVarsByNameFormat = configDiag.getNextString(); String yesLabel = "Save";
System.out.println("groupVarsByNameFormat: " + String noLabel = "Reset";
groupVarsByNameFormat); configDiag.enableYesNoCancel(yesLabel, noLabel);
configDiag.showDialog();
// dollarRegexpForGrouping = configDiag.getNextString(); if (configDiag.wasCanceled()) {
// System.out.println("dollarRegexpForGrouping: " + // do nothing
// dollarRegexpForGrouping); return;
}
if (!configDiag.wasOKed()) {
// reset button was pressed
System.out.println("reset button was pressed");
// reset all and return a new dialog
configDiag.setVisible(false);
this.run(arg);
return;
}
// get parameters check if they are correct
groupVarsByName = configDiag.getNextBoolean();
System.out.println("groupVarsByName: " + Boolean.toString(groupVarsByName));
try showUnmatchedDataSetNames = configDiag.getNextBoolean();
{ System.out.println("showUnmatchedDataSetNames: " + Boolean.toString(showUnmatchedDataSetNames));
String[] formatTokens
= HDF5_GroupedVarnames.parseFormatString(groupVarsByNameFormat,
dollarRegexpForGrouping);
for(int i=0; i<formatTokens.length; i++)
{
System.out.println("tok " + Integer.toString(i) + " : "
+ formatTokens[i]);
}
}
catch(PatternSyntaxException e)
{
// produce an error dialog an start over
String errMsg = e.getMessage();
System.out.println(errMsg);
// reset all and return a new dialog
configDiag.setVisible(false);
this.run(arg);
return;
}
System.out.println("Saving...");
// all OK and "Save" was pressed, so save it... groupVarsByNameFormatGroup = configDiag.getNextString();
Prefs.set("HDF5.groupVarsByName", System.out.println("groupVarsByNameFormatGroup: " + groupVarsByNameFormatGroup);
groupVarsByName);
Prefs.set("HDF5.showUnmatchedDataSetNames",
showUnmatchedDataSetNames);
Prefs.set("HDF5.groupVarsByNameFormatGroup",
groupVarsByNameFormatGroup);
Prefs.set("HDF5.groupVarsByNameFormat",
groupVarsByNameFormat);
//
// ignore the $ regexp for now, because only numbers work
//
Prefs.set("HDF5.dollarRegexpForGrouping",
dollarRegexpForGrouping);
}
public static void setDefaultsIfNoValueExists()
{
boolean groupVarsByName =
Boolean.getBoolean(getDefaultValue("HDF5.groupVarsByName"));
groupVarsByName = Prefs.get("HDF5.groupVarsByName", groupVarsByName);
Prefs.set("HDF5.groupVarsByName",
groupVarsByName);
boolean showUnmatchedDataSetNames = groupVarsByNameFormat = configDiag.getNextString();
Boolean.getBoolean(getDefaultValue("HDF5.showUnmatchedDataSetNames")); System.out.println("groupVarsByNameFormat: " + groupVarsByNameFormat);
showUnmatchedDataSetNames = Prefs.get("HDF5.showUnmatchedDataSetNames",
showUnmatchedDataSetNames);
Prefs.set("HDF5.showUnmatchedDataSetNames",
showUnmatchedDataSetNames);
String groupVarsByNameFormatGroup =
getDefaultValue("HDF5.groupVarsByNameFormatGroup");
groupVarsByNameFormatGroup
= Prefs.get("HDF5.groupVarsByNameFormatGroup",
groupVarsByNameFormatGroup);
Prefs.set("HDF5.groupVarsByNameFormatGroup",
groupVarsByNameFormatGroup);
String groupVarsByNameFormat =
getDefaultValue("HDF5.groupVarsByNameFormat");
groupVarsByNameFormat = Prefs.get("HDF5.groupVarsByNameFormat",
groupVarsByNameFormat);
Prefs.set("HDF5.groupVarsByNameFormat",
groupVarsByNameFormat);
String dollarRegexpForGrouping = // dollarRegexpForGrouping = configDiag.getNextString();
getDefaultValue("HDF5.dollarRegexpForGrouping"); // System.out.println("dollarRegexpForGrouping: " +
dollarRegexpForGrouping = Prefs.get("HDF5.dollarRegexpForGrouping", // dollarRegexpForGrouping);
dollarRegexpForGrouping);
Prefs.set("HDF5.dollarRegexpForGrouping",
dollarRegexpForGrouping);
}
public static String getDefaultValue(String key) try {
{ String[] formatTokens = HDF5_GroupedVarnames.parseFormatString(groupVarsByNameFormat, dollarRegexpForGrouping);
if(key.equals("HDF5.groupVarsByName")) for (int i = 0; i < formatTokens.length; i++) {
{ System.out.println("tok " + Integer.toString(i) + " : " + formatTokens[i]);
boolean groupVarsByName = true; // default }
return Boolean.toString(groupVarsByName); } catch (PatternSyntaxException e) {
} // produce an error dialog an start over
else if(key.equals("HDF5.showUnmatchedDataSetNames")) String errMsg = e.getMessage();
{ System.out.println(errMsg);
boolean showUnmatchedDataSetNames = true; // default // reset all and return a new dialog
return Boolean.toString(showUnmatchedDataSetNames); configDiag.setVisible(false);
} this.run(arg);
else if(key.equals("HDF5.groupVarsByNameFormatGroup")) return;
{ }
String groupVarsByNameFormatGroup = "/hints"; // default System.out.println("Saving...");
return groupVarsByNameFormatGroup;
} // all OK and "Save" was pressed, so save it...
else if(key.equals("HDF5.groupVarsByNameFormat")) Prefs.set("HDF5.groupVarsByName", groupVarsByName);
{ Prefs.set("HDF5.showUnmatchedDataSetNames", showUnmatchedDataSetNames);
String groupVarsByNameFormat = "/t$T/channel$C"; // default Prefs.set("HDF5.groupVarsByNameFormatGroup", groupVarsByNameFormatGroup);
return groupVarsByNameFormat; Prefs.set("HDF5.groupVarsByNameFormat", groupVarsByNameFormat);
} //
else if(key.equals("HDF5.dollarRegexpForGrouping")) // ignore the $ regexp for now, because only numbers work
{ //
String dollarRegexpForGrouping = "[0-9]+"; // default Prefs.set("HDF5.dollarRegexpForGrouping", dollarRegexpForGrouping);
return dollarRegexpForGrouping;
} }
else
{ public static void setDefaultsIfNoValueExists() {
System.out.println("No default value for key: " + key); boolean groupVarsByName = Boolean.getBoolean(getDefaultValue("HDF5.groupVarsByName"));
return null; groupVarsByName = Prefs.get("HDF5.groupVarsByName", groupVarsByName);
} Prefs.set("HDF5.groupVarsByName", groupVarsByName);
}
boolean showUnmatchedDataSetNames = Boolean.getBoolean(getDefaultValue("HDF5.showUnmatchedDataSetNames"));
showUnmatchedDataSetNames = Prefs.get("HDF5.showUnmatchedDataSetNames", showUnmatchedDataSetNames);
Prefs.set("HDF5.showUnmatchedDataSetNames", showUnmatchedDataSetNames);
String groupVarsByNameFormatGroup = getDefaultValue("HDF5.groupVarsByNameFormatGroup");
groupVarsByNameFormatGroup = Prefs.get("HDF5.groupVarsByNameFormatGroup", groupVarsByNameFormatGroup);
Prefs.set("HDF5.groupVarsByNameFormatGroup", groupVarsByNameFormatGroup);
String groupVarsByNameFormat = getDefaultValue("HDF5.groupVarsByNameFormat");
groupVarsByNameFormat = Prefs.get("HDF5.groupVarsByNameFormat", groupVarsByNameFormat);
Prefs.set("HDF5.groupVarsByNameFormat", groupVarsByNameFormat);
String dollarRegexpForGrouping = getDefaultValue("HDF5.dollarRegexpForGrouping");
dollarRegexpForGrouping = Prefs.get("HDF5.dollarRegexpForGrouping", dollarRegexpForGrouping);
Prefs.set("HDF5.dollarRegexpForGrouping", dollarRegexpForGrouping);
}
public static String getDefaultValue(String key) {
if (key.equals("HDF5.groupVarsByName")) {
boolean groupVarsByName = true; // default
return Boolean.toString(groupVarsByName);
} else if (key.equals("HDF5.showUnmatchedDataSetNames")) {
boolean showUnmatchedDataSetNames = true; // default
return Boolean.toString(showUnmatchedDataSetNames);
} else if (key.equals("HDF5.groupVarsByNameFormatGroup")) {
String groupVarsByNameFormatGroup = "/hints"; // default
return groupVarsByNameFormatGroup;
} else if (key.equals("HDF5.groupVarsByNameFormat")) {
String groupVarsByNameFormat = "/t$T/channel$C"; // default
return groupVarsByNameFormat;
} else if (key.equals("HDF5.dollarRegexpForGrouping")) {
String dollarRegexpForGrouping = "[0-9]+"; // default
return dollarRegexpForGrouping;
} else {
System.out.println("No default value for key: " + key);
return null;
}
}
} }

View File

@ -1,21 +1,4 @@
package ch.psi.imagej.hdf5; package ch.psi.imagej.hdf5;
/* =========================================================================
*
* Copyright 2011 Matthias Schlachter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
import java.util.regex.*; import java.util.regex.*;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,339 +6,265 @@ import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
public class HDF5_GroupedVarnames public class HDF5_GroupedVarnames {
{
public static String[] parseFormatString(String groupVarsByNameFormat, private final List<String> matchedVarNames = new ArrayList<String>();
String dollarRegexpForGrouping) private final List<String> unMatchedVarNames = new ArrayList<String>();
throws PatternSyntaxException private final List<TimeFrame> frameList = new ArrayList<TimeFrame>();
{ private String[] formatTokens = null;
String[] formatTokens = null; private String formatString = null;
formatTokens = groupVarsByNameFormat.split("([$]T|[$]C)"); private int minFrameIndex = -1;
boolean containsFormatVars private int maxFrameIndex = -1;
= groupVarsByNameFormat.contains("$T") && private int minChannelIndex = -1;
groupVarsByNameFormat.contains("$C"); private int maxChannelIndex = -1;
boolean rightOrderOfFormatVars private int nChannels = -1;
= groupVarsByNameFormat.indexOf("$T")
< groupVarsByNameFormat.indexOf("$C"); public static String[] parseFormatString(String groupVarsByNameFormat, String dollarRegexpForGrouping) throws PatternSyntaxException {
String[] formatTokens = null;
for(int i=0; i<formatTokens.length; i++) formatTokens = groupVarsByNameFormat.split("([$]T|[$]C)");
{ boolean containsFormatVars = groupVarsByNameFormat.contains("$T") && groupVarsByNameFormat.contains("$C");
System.out.println("tok " + Integer.toString(i) + " : " boolean rightOrderOfFormatVars = groupVarsByNameFormat.indexOf("$T") < groupVarsByNameFormat.indexOf("$C");
+ formatTokens[i]);
}
if(formatTokens.length < 2 ||
!containsFormatVars ||
!rightOrderOfFormatVars)
{
throw new PatternSyntaxException("Your format string has errors. "+
"You must provide $T and $C and "+
"also in correct order!",
groupVarsByNameFormat,
-1);
}
String regexp = groupVarsByNameFormat;
regexp = regexp.replace("$T",
dollarRegexpForGrouping);
regexp = regexp.replace("$C",
dollarRegexpForGrouping);
System.out.println(regexp);
// check if we have a regexp;
Pattern p = null;
p = Pattern.compile(regexp);
return formatTokens;
}
public void parseVarNames(String[] varNames,
String groupVarsByNameFormat,
String dollarRegexpForGrouping)
{
// save format string
formatString = groupVarsByNameFormat;
try
{
formatTokens = parseFormatString(groupVarsByNameFormat,
dollarRegexpForGrouping);
}
catch(PatternSyntaxException e)
{
// produce an error dialog an start over
String errMsg = e.getMessage();
System.out.println(errMsg);
return;
}
String regexp = groupVarsByNameFormat;
regexp = regexp.replace("$T",
dollarRegexpForGrouping);
regexp = regexp.replace("$C",
dollarRegexpForGrouping);
System.out.println(regexp);
// check if we have a regexp;
Pattern p = null;
p = Pattern.compile(regexp);
/*---------------------------------------------------------------------
* parse var names
*---------------------------------------------------------------------*/
for (int i = 0; i < varNames.length; i++)
{
Matcher m=p.matcher(varNames[i]);
boolean b=m.matches();
if(b)
{
System.out.println(varNames[i]);
matchedVarNames.add(varNames[i]);
}
else
{
unMatchedVarNames.add(varNames[i]);
}
}
splitGroupedVarnames();
// ugly hack for sorting ArrayList
Object[] frameListAsArray = frameList.toArray();
Arrays.sort(frameListAsArray);
for(int i=0;i<frameListAsArray.length;i++)
frameList.set(i,(TimeFrame)frameListAsArray[i]);
}
public TimeFrame getFrame(int i)
{
if(i < frameList.size() && i > -1)
return frameList.get(i);
else
return null;
}
private void splitGroupedVarnames() for (int i = 0; i < formatTokens.length; i++) {
{ System.out.println("tok " + Integer.toString(i) + " : " + formatTokens[i]);
Iterator<String> vars = matchedVarNames.iterator(); }
while(vars.hasNext()) if (formatTokens.length < 2 || !containsFormatVars || !rightOrderOfFormatVars) {
{ throw new PatternSyntaxException("Your format string has errors. " + "You must provide $T and $C and " + "also in correct order!", groupVarsByNameFormat, -1);
String varName = vars.next(); }
String[] tokens = null; String regexp = groupVarsByNameFormat;
if(formatTokens.length == 2) regexp = regexp.replace("$T", dollarRegexpForGrouping);
{ regexp = regexp.replace("$C", dollarRegexpForGrouping);
tokens = varName.split(formatTokens[1]); System.out.println(regexp);
} // check if we have a regexp;
else if(formatTokens.length == 3) Pattern.compile(regexp);
{ return formatTokens;
tokens = varName.split(formatTokens[2]); }
varName = tokens[0];
tokens = varName.split(formatTokens[1]);
}
if(tokens.length < 2 || tokens.length > 3)
{
System.out.println("Error parsing varname!");
}
else
{
Integer channelIndex = new Integer(tokens[1]);
System.out.println("channelIndex: " + channelIndex.toString());
System.out.println("left token: " + tokens[0]);
tokens = tokens[0].split("/t");
Integer frameIndex = new Integer(tokens[1]);
System.out.println("frameIndex: " + frameIndex.toString());
if(minFrameIndex == -1) public void parseVarNames(String[] varNames, String groupVarsByNameFormat, String dollarRegexpForGrouping) {
minFrameIndex = frameIndex.intValue(); // save format string
minFrameIndex = Math.min(minFrameIndex,frameIndex.intValue()); formatString = groupVarsByNameFormat;
try {
formatTokens = parseFormatString(groupVarsByNameFormat, dollarRegexpForGrouping);
} catch (PatternSyntaxException e) {
// produce an error dialog an start over
String errMsg = e.getMessage();
System.out.println(errMsg);
return;
}
String regexp = groupVarsByNameFormat;
regexp = regexp.replace("$T", dollarRegexpForGrouping);
regexp = regexp.replace("$C", dollarRegexpForGrouping);
if(maxFrameIndex == -1) System.out.println(regexp);
maxFrameIndex = frameIndex.intValue(); // check if we have a regexp;
maxFrameIndex = Math.max(maxFrameIndex,frameIndex.intValue()); Pattern p = null;
p = Pattern.compile(regexp);
if(minChannelIndex == -1) /*---------------------------------------------------------------------
minChannelIndex = channelIndex.intValue(); * parse var names
minChannelIndex = Math.min(minChannelIndex,channelIndex.intValue()); *---------------------------------------------------------------------*/
for (int i = 0; i < varNames.length; i++) {
Matcher m = p.matcher(varNames[i]);
boolean b = m.matches();
if (b) {
System.out.println(varNames[i]);
matchedVarNames.add(varNames[i]);
} else {
unMatchedVarNames.add(varNames[i]);
}
}
splitGroupedVarnames();
// ugly hack for sorting ArrayList
Object[] frameListAsArray = frameList.toArray();
Arrays.sort(frameListAsArray);
for (int i = 0; i < frameListAsArray.length; i++)
frameList.set(i, (TimeFrame) frameListAsArray[i]);
}
if(maxChannelIndex == -1) public TimeFrame getFrame(int i) {
maxChannelIndex = channelIndex.intValue(); if (i < frameList.size() && i > -1)
maxChannelIndex = Math.max(maxChannelIndex,channelIndex.intValue()); return frameList.get(i);
else
return null;
}
TimeFrame frame = new TimeFrame(frameIndex.intValue()); private void splitGroupedVarnames() {
int idx = frameList.indexOf(frame); Iterator<String> vars = matchedVarNames.iterator();
if(idx != -1) while (vars.hasNext()) {
{ String varName = vars.next();
frame = (TimeFrame) frameList.get(idx); String[] tokens = null;
frame.addChannel(channelIndex.intValue()); if (formatTokens.length == 2) {
} tokens = varName.split(formatTokens[1]);
else } else if (formatTokens.length == 3) {
{ tokens = varName.split(formatTokens[2]);
frame.addChannel(channelIndex.intValue()); varName = tokens[0];
frameList.add(frame); tokens = varName.split(formatTokens[1]);
} }
//System.out.println(frame.toString());
}
}
}
public int getMinFrameIndex() if (tokens.length < 2 || tokens.length > 3) {
{ System.out.println("Error parsing varname!");
return minFrameIndex; } else {
} Integer channelIndex = new Integer(tokens[1]);
public int getMaxFrameIndex() System.out.println("channelIndex: " + channelIndex.toString());
{ System.out.println("left token: " + tokens[0]);
return maxFrameIndex; tokens = tokens[0].split("/t");
} Integer frameIndex = new Integer(tokens[1]);
public int getMinChannelIndex() System.out.println("frameIndex: " + frameIndex.toString());
{
return minChannelIndex;
}
public int getMaxChannelIndex()
{
return maxChannelIndex;
}
public int getNFrames()
{
return frameList.size();
}
public int getNChannels()
{
// TODO: check all frames for min/max of channels not index
if(nChannels == -1)
return maxChannelIndex-minChannelIndex+1;
else
return nChannels;
}
public boolean hasAllFramesInRange()
{
return frameList.size() == (maxFrameIndex-minFrameIndex+1);
}
public String toString()
{
String s = "Data set statistics\n";
s = s + "----------------------------------\n";
s = s + "nFrames: " + Integer.toString(frameList.size()) + "\n";
s = s + "minFrameIndex: " + Integer.toString(minFrameIndex) + "\n";
s = s + "maxFrameIndex: " + Integer.toString(maxFrameIndex) + "\n";
s = s
+ "hasAllFramesInRange: "
+ Boolean.toString(hasAllFramesInRange()) + "\n";
s = s + "minChannelIndex: " + Integer.toString(minChannelIndex) + "\n";
s = s + "maxChannelIndex: " + Integer.toString(maxChannelIndex) + "\n";
// String[] toks = getFormatTokens(); if (minFrameIndex == -1)
Iterator<TimeFrame> frames = frameList.iterator(); minFrameIndex = frameIndex.intValue();
while(frames.hasNext()) minFrameIndex = Math.min(minFrameIndex, frameIndex.intValue());
{
TimeFrame f = frames.next();
s = s + f.toString() + "\n";
// s = s + "(" + toks[0] +
// Integer.toString(f.getFrameIndex())
// + toks[1] + "$C";
// if(toks.length>2)
// s = s + toks[2] + "\n";
// else
// s = s + "\n";
}
s = s + "----------------------------------";
return s;
}
public List<String> getUnmatchedVarNames() if (maxFrameIndex == -1)
{ maxFrameIndex = frameIndex.intValue();
return unMatchedVarNames; maxFrameIndex = Math.max(maxFrameIndex, frameIndex.intValue());
}
public String[] getFormatTokens()
{
return formatTokens;
}
public String getFormatString() if (minChannelIndex == -1)
{ minChannelIndex = channelIndex.intValue();
return formatString; minChannelIndex = Math.min(minChannelIndex, channelIndex.intValue());
}
public void setFrameAndChannelRange(int minFrame, if (maxChannelIndex == -1)
int skipFrame, maxChannelIndex = channelIndex.intValue();
int maxFrame, maxChannelIndex = Math.max(maxChannelIndex, channelIndex.intValue());
int minChannel,
int skipChannel,
int maxChannel)
{
System.out.println("Setting frame range: " +
Integer.toString(minFrame) + ":" +
Integer.toString(skipFrame) + ":" +
Integer.toString(maxFrame));
System.out.println("Setting channel range: " +
Integer.toString(minChannel) + ":" +
Integer.toString(skipChannel) + ":" +
Integer.toString(maxChannel));
if(hasAllFramesInRange())
{
// copy frames
List<TimeFrame> completeFrameList = new ArrayList<TimeFrame>(frameList);
// clear frames
frameList.clear();
// insert wanted frames and channels
for(int f=minFrame;f<maxFrame+1;f+=skipFrame)
{
TimeFrame frameAllChannels = completeFrameList.get(f);
TimeFrame frame = new TimeFrame(frameAllChannels.getFrameIndex());
// TODO remove unwanted channels
for(int c=minChannel;c<maxChannel+1;c+=skipChannel)
{
//System.out.println("Adding channels: " + Integer.toString(c));
frame.addChannel(c);
}
// if(nChannels == -1)
// nChannels = frame.getNChannels();
frameList.add(frame);
}
// TODO update min/max of frames/channels
nChannels = ((maxChannel-minChannel) / skipChannel)+1;
System.out.println("Adding nChannels: " + Integer.toString(nChannels));
}
else
{
System.out.println("-------------------------\n"+
"hasAllFramesInRange==false\n"+
"-------------------------");
// copy frames
List<TimeFrame> completeFrameList = new ArrayList<TimeFrame>(frameList);
// clear frames
frameList.clear();
// insert wanted frames and channels
for(int f=minFrame;f<maxFrame+1;f+=skipFrame)
{
TimeFrame frame = new TimeFrame(f);
int idx = completeFrameList.indexOf(frame);
// System.out.println("index of frame in list: " +
// Integer.toString(idx));
if(idx != -1)
{
// TODO remove unwanted channels
for(int c=minChannel;c<maxChannel+1;c+=skipChannel)
{
//System.out.println("Adding channels: " + Integer.toString(c));
frame.addChannel(c);
}
// if(nChannels == -1)
// nChannels = frame.getNChannels();
frameList.add(frame);
}
else
{
System.out.println("Timestep "+Integer.toString(f)+
" is missing!");
}
}
// TODO update min/max of frames/channels
nChannels = ((maxChannel-minChannel) / skipChannel)+1;
System.out.println("Adding nChannels: " + Integer.toString(nChannels));
}
}
private final List<String> matchedVarNames = new ArrayList<String>(); TimeFrame frame = new TimeFrame(frameIndex.intValue());
private final List<String> unMatchedVarNames = new ArrayList<String>(); int idx = frameList.indexOf(frame);
private final List<TimeFrame> frameList = new ArrayList<TimeFrame>(); if (idx != -1) {
private String[] formatTokens = null; frame = (TimeFrame) frameList.get(idx);
private String formatString = null; frame.addChannel(channelIndex.intValue());
private int minFrameIndex = -1; } else {
private int maxFrameIndex = -1; frame.addChannel(channelIndex.intValue());
private int minChannelIndex = -1; frameList.add(frame);
private int maxChannelIndex = -1; }
private int nChannels = -1; // System.out.println(frame.toString());
}
}
}
public int getMinFrameIndex() {
return minFrameIndex;
}
public int getMaxFrameIndex() {
return maxFrameIndex;
}
public int getMinChannelIndex() {
return minChannelIndex;
}
public int getMaxChannelIndex() {
return maxChannelIndex;
}
public int getNFrames() {
return frameList.size();
}
public int getNChannels() {
// TODO: check all frames for min/max of channels not index
if (nChannels == -1)
return maxChannelIndex - minChannelIndex + 1;
else
return nChannels;
}
public boolean hasAllFramesInRange() {
return frameList.size() == (maxFrameIndex - minFrameIndex + 1);
}
public String toString() {
String s = "Data set statistics\n";
s = s + "----------------------------------\n";
s = s + "nFrames: " + Integer.toString(frameList.size()) + "\n";
s = s + "minFrameIndex: " + Integer.toString(minFrameIndex) + "\n";
s = s + "maxFrameIndex: " + Integer.toString(maxFrameIndex) + "\n";
s = s + "hasAllFramesInRange: " + Boolean.toString(hasAllFramesInRange()) + "\n";
s = s + "minChannelIndex: " + Integer.toString(minChannelIndex) + "\n";
s = s + "maxChannelIndex: " + Integer.toString(maxChannelIndex) + "\n";
// String[] toks = getFormatTokens();
Iterator<TimeFrame> frames = frameList.iterator();
while (frames.hasNext()) {
TimeFrame f = frames.next();
s = s + f.toString() + "\n";
// s = s + "(" + toks[0] +
// Integer.toString(f.getFrameIndex())
// + toks[1] + "$C";
// if(toks.length>2)
// s = s + toks[2] + "\n";
// else
// s = s + "\n";
}
s = s + "----------------------------------";
return s;
}
public List<String> getUnmatchedVarNames() {
return unMatchedVarNames;
}
public String[] getFormatTokens() {
return formatTokens;
}
public String getFormatString() {
return formatString;
}
public void setFrameAndChannelRange(int minFrame, int skipFrame, int maxFrame, int minChannel, int skipChannel, int maxChannel) {
System.out.println("Setting frame range: " + Integer.toString(minFrame) + ":" + Integer.toString(skipFrame) + ":" + Integer.toString(maxFrame));
System.out.println("Setting channel range: " + Integer.toString(minChannel) + ":" + Integer.toString(skipChannel) + ":" + Integer.toString(maxChannel));
if (hasAllFramesInRange()) {
// copy frames
List<TimeFrame> completeFrameList = new ArrayList<TimeFrame>(frameList);
// clear frames
frameList.clear();
// insert wanted frames and channels
for (int f = minFrame; f < maxFrame + 1; f += skipFrame) {
TimeFrame frameAllChannels = completeFrameList.get(f);
TimeFrame frame = new TimeFrame(frameAllChannels.getFrameIndex());
// TODO remove unwanted channels
for (int c = minChannel; c < maxChannel + 1; c += skipChannel) {
// System.out.println("Adding channels: " +
// Integer.toString(c));
frame.addChannel(c);
}
// if(nChannels == -1)
// nChannels = frame.getNChannels();
frameList.add(frame);
}
// TODO update min/max of frames/channels
nChannels = ((maxChannel - minChannel) / skipChannel) + 1;
System.out.println("Adding nChannels: " + Integer.toString(nChannels));
} else {
System.out.println("-------------------------\n" + "hasAllFramesInRange==false\n" + "-------------------------");
// copy frames
List<TimeFrame> completeFrameList = new ArrayList<TimeFrame>(frameList);
// clear frames
frameList.clear();
// insert wanted frames and channels
for (int f = minFrame; f < maxFrame + 1; f += skipFrame) {
TimeFrame frame = new TimeFrame(f);
int idx = completeFrameList.indexOf(frame);
// System.out.println("index of frame in list: " +
// Integer.toString(idx));
if (idx != -1) {
// TODO remove unwanted channels
for (int c = minChannel; c < maxChannel + 1; c += skipChannel) {
// System.out.println("Adding channels: " +
// Integer.toString(c));
frame.addChannel(c);
}
// if(nChannels == -1)
// nChannels = frame.getNChannels();
frameList.add(frame);
} else {
System.out.println("Timestep " + Integer.toString(f) + " is missing!");
}
}
// TODO update min/max of frames/channels
nChannels = ((maxChannel - minChannel) / skipChannel) + 1;
System.out.println("Adding nChannels: " + Integer.toString(nChannels));
}
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,102 +1,74 @@
package ch.psi.imagej.hdf5; package ch.psi.imagej.hdf5;
/* =========================================================================
*
* Copyright 2011 Matthias Schlachter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
public class TimeFrame implements Comparable public class TimeFrame implements Comparable<TimeFrame> {
{
public TimeFrame(int index) private final int frameIndex;
{ private final List<Integer> channels = new ArrayList<Integer>();
frameIndex = index;
} public TimeFrame(int index) {
frameIndex = index;
}
public TimeFrame(String index) public TimeFrame(String index) {
{ frameIndex = Integer.parseInt(index);
frameIndex = Integer.parseInt(index); }
}
public void addChannel(int index) public void addChannel(Integer index) {
{ if (!channels.contains(index)){
Integer channelIndex = new Integer(index); channels.add(new Integer(index));
if(!channels.contains(channelIndex)) }
channels.add(new Integer(index)); }
else
System.out.println("channel" + channelIndex.toString()
+ " already in list!");
}
public void addChannel(String index) public void addChannel(String index) {
{ addChannel(Integer.parseInt(index));
addChannel(Integer.parseInt(index)); }
}
public boolean equals(Object obj) public boolean equals(Object o) {
{ return (((TimeFrame)o).frameIndex == frameIndex);
TimeFrame f = (TimeFrame) obj; }
if(f.frameIndex == frameIndex)
return true;
return false;
}
public String toString() public String toString() {
{ String s = "FrameIdx: " + Integer.toString(frameIndex) + "; ";
String s = "FrameIdx: " + Integer.toString(frameIndex) + "; "; s = s + "nChannels: " + Integer.toString(channels.size()) + "; ";
s = s + "nChannels: " + Integer.toString(channels.size()) + "; "; s = s + "channels: ";
s = s + "channels: "; for (int i = 0; i < channels.size(); i++){
for(int i=0;i<channels.size();i++) s = s + Integer.toString(channels.get(i)) + ";";
s = s + Integer.toString(channels.get(i)) + ";"; }
return s;
}
public int getNChannels() return s;
{ }
return channels.size();
}
public int getFrameIndex() public int getNChannels() {
{ return channels.size();
return frameIndex; }
}
public int getFrameIndex() {
public int[] getChannelIndices() return frameIndex;
{ }
Object[] channelsAsArray = channels.toArray();
Arrays.sort(channelsAsArray); public int[] getChannelIndices() {
int[] channelsIdx = new int[channelsAsArray.length]; Object[] channelsAsArray = channels.toArray();
for(int i=0;i<channelsAsArray.length;i++) Arrays.sort(channelsAsArray);
channelsIdx[i] = ((Integer) channelsAsArray[i]).intValue(); int[] channelsIdx = new int[channelsAsArray.length];
return channelsIdx; for (int i = 0; i < channelsAsArray.length; i++){
} channelsIdx[i] = ((Integer) channelsAsArray[i]).intValue();
}
public int compareTo(Object obj) return channelsIdx;
{ }
TimeFrame f = (TimeFrame) obj;
if(frameIndex<f.frameIndex) public int compareTo(TimeFrame f) {
return -1; if (frameIndex < f.frameIndex){
else if(frameIndex>f.frameIndex) return -1;
return 1; }
else else if (frameIndex > f.frameIndex){
return 0; return 1;
} }
else{
private final int frameIndex; return 0;
private final ArrayList<Integer> channels = new ArrayList<Integer>(); }
}
} }