use of net.imagej.Dataset in project vcell by virtualcell.
the class CompareView method getDatasetOverlayMap.
public HashMap<Dataset, List<Overlay>> getDatasetOverlayMap(OverlayService overlayService) {
HashMap<Dataset, List<Overlay>> result = new HashMap<>();
for (Dataset dataset : datasetImagePanelMap.keySet()) {
ImageDisplay display = datasetImagePanelMap.get(dataset);
// Bug in ImageJ that returns two of each overlay, so must refrain from adding duplicates
List<Overlay> overlays = new ArrayList<>();
for (Overlay overlay : overlayService.getOverlays(display)) {
if (!overlays.contains(overlay)) {
overlays.add(overlay);
}
}
result.put(dataset, overlays);
}
return result;
}
use of net.imagej.Dataset in project vcell by virtualcell.
the class PlotImageStats method run.
@Override
public void run() {
Plot plot = new ColorPlot("Frame mean intensity", "Time", "Mean intensity");
StringBuilder legendLabels = new StringBuilder();
for (int i = 0; i < datasets.size(); i++) {
RandomAccessibleInterval<T> data = datasets.get(i);
if (data instanceof Dataset) {
legendLabels.append(((Dataset) data).getName());
legendLabels.append(": ");
}
Pair<double[], double[]> xyPair = (Pair<double[], double[]>) ops.run("imageStatsForPlotting", ImageStatsForPlotting.MEAN, data, mask);
plot.addPoints(xyPair.getA(), xyPair.getB(), Plot.LINE);
legendLabels.append("ROI ");
legendLabels.append(i + 1);
legendLabels.append("\n");
}
plot.addLegend(legendLabels.toString());
plot.show();
}
use of net.imagej.Dataset in project vcell by virtualcell.
the class PlotCellRegionStats method run.
@Override
public void run() {
Plot plot = new ColorPlot("Cell region mean intensity", "Time", "Mean intensity");
StringBuilder legendLabels = new StringBuilder();
for (int i = 0; i < datasets.size(); i++) {
RandomAccessibleInterval<T> data = datasets.get(i);
if (data instanceof Dataset) {
legendLabels.append(((Dataset) data).getName());
legendLabels.append(": ");
}
RandomAccessibleInterval<T> cropped = ops.transform().crop(data, mask);
displayService.createDisplay(cropped);
}
}
use of net.imagej.Dataset in project vcell by virtualcell.
the class ProjectService method saveAs.
public Task<Void, String> saveAs(Project project, File root) {
final Task<Void, String> task = new Task<Void, String>() {
@Override
protected Void doInBackground() throws Exception {
int numToSave = project.getData().size() + project.getGeometry().size() + project.getModels().size() + project.getResults().size();
int numSaved = 0;
String rootPath = root.getAbsolutePath();
Path dataPath = Paths.get(rootPath, "data");
Path geometryPath = Paths.get(rootPath, "geometry");
Path modelsPath = Paths.get(rootPath, "models");
Path resultsPath = Paths.get(rootPath, "results");
try {
// Save data
Files.createDirectories(dataPath);
FileUtils.cleanDirectory(dataPath.toFile());
for (Dataset dataset : project.getData()) {
setSubtask(dataset.getName());
saveDataset(dataset, dataPath);
numSaved++;
setProgress(numSaved * 100 / numToSave);
}
// Save geometry
Files.createDirectories(geometryPath);
FileUtils.cleanDirectory(geometryPath.toFile());
for (Dataset dataset : project.getGeometry()) {
setSubtask(dataset.getName());
saveDataset(dataset, geometryPath);
numSaved++;
setProgress(numSaved * 100 / numToSave);
}
// Save models
Files.createDirectories(modelsPath);
FileUtils.cleanDirectory(modelsPath.toFile());
for (VCellModel model : project.getModels()) {
setSubtask(model.getName());
saveModel(model, modelsPath);
numSaved++;
setProgress(numSaved * 100 / numToSave);
}
// Save results
Files.createDirectories(resultsPath);
FileUtils.cleanDirectory(resultsPath.toFile());
for (Dataset dataset : project.getResults()) {
setSubtask(dataset.getName());
saveDataset(dataset, resultsPath);
numSaved++;
setProgress(numSaved * 100 / numToSave);
}
} catch (IOException e) {
e.printStackTrace();
}
currentProjectRoot = root;
return null;
}
@Override
protected void process(List<String> chunks) {
super.process(chunks);
}
};
return task;
}
use of net.imagej.Dataset in project vcell by virtualcell.
the class ProjectService method load.
public Task<Project, String> load(File root) {
final Task<Project, String> task = new Task<Project, String>() {
@Override
protected Project doInBackground() throws Exception {
Project project = new Project(root.getName());
String rootPath = root.getAbsolutePath();
File[] dataFiles = Paths.get(rootPath, "data").toFile().listFiles();
File[] geometryFiles = Paths.get(rootPath, "geometry").toFile().listFiles();
File[] modelDirectories = Paths.get(rootPath, "models").toFile().listFiles();
File[] resultsFiles = Paths.get(rootPath, "results").toFile().listFiles();
int numFiles = dataFiles.length + geometryFiles.length + modelDirectories.length + resultsFiles.length;
int numLoaded = 0;
if (dataFiles != null) {
for (File dataFile : dataFiles) {
try {
setSubtask(dataFile.getName());
Dataset data = datasetIOService.open(dataFile.getAbsolutePath());
project.getData().add(data);
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (geometryFiles != null) {
for (File geometryFile : geometryFiles) {
try {
setSubtask(geometryFile.getName());
Dataset geometry = datasetIOService.open(geometryFile.getAbsolutePath());
// Geometry datasets are saved as 8-bit images so we must convert back to 1-bit
if (geometry.firstElement() instanceof UnsignedByteType) {
@SuppressWarnings("unchecked") Img<UnsignedByteType> img = (Img<UnsignedByteType>) geometry.getImgPlus().getImg();
Img<BitType> converted = opService.convert().bit(img);
ImgPlus<BitType> convertedImgPlus = new ImgPlus<>(converted, geometry.getName());
geometry.setImgPlus(convertedImgPlus);
}
project.getGeometry().add(geometry);
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (modelDirectories != null) {
for (File modelDirectory : modelDirectories) {
setSubtask(modelDirectory.getName());
SBMLDocument sbmlDocument = null;
BufferedImage image = null;
File[] modelFiles = modelDirectory.listFiles();
System.out.println(modelFiles.length);
// Invalid model directory
if (modelFiles.length > 2)
continue;
for (File modelFile : modelFiles) {
System.out.println(modelFile.getName());
if (FilenameUtils.getExtension(modelFile.getName()).equals("xml")) {
sbmlDocument = new SBMLReader().readSBML(modelFile);
System.out.println("Loaded sbml");
} else if (FilenameUtils.getExtension(modelFile.getName()).equals("png")) {
image = ImageIO.read(modelFile);
System.out.println("Loaded image");
}
}
if (sbmlDocument != null) {
VCellModel vCellModel = new VCellModel(modelDirectory.getName(), null, sbmlDocument);
vCellModel.setImage(image);
project.getModels().add(vCellModel);
System.out.println("Added model");
}
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
}
}
if (resultsFiles != null) {
for (File resultsFile : resultsFiles) {
try {
setSubtask(resultsFile.getName());
Dataset results = datasetIOService.open(resultsFile.getAbsolutePath());
// Loading 1-dimensional tif images adds a dimension
// so must crop out empty dimensions
@SuppressWarnings("unchecked") ImgPlus<T> imgPlus = (ImgPlus<T>) results.getImgPlus();
int numDimensions = imgPlus.numDimensions();
long[] dimensions = new long[2 * imgPlus.numDimensions()];
for (int i = 0; i < numDimensions; i++) {
dimensions[i] = 0;
dimensions[i + numDimensions] = imgPlus.dimension(i) - 1;
}
FinalInterval interval = Intervals.createMinMax(dimensions);
ImgPlus<T> cropped = opService.transform().crop(imgPlus, interval, true);
results.setImgPlus(cropped);
project.getResults().add(results);
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
} catch (IOException e) {
e.printStackTrace();
}
}
}
currentProjectRoot = root;
return project;
}
};
return task;
}
Aggregations