Search in sources :

Example 6 with Dataset

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;
}
Also used : HashMap(java.util.HashMap) Dataset(net.imagej.Dataset) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) Overlay(net.imagej.overlay.Overlay) ImageDisplay(net.imagej.display.ImageDisplay)

Example 7 with Dataset

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();
}
Also used : ColorPlot(org.vcell.imagej.common.gui.ColorPlot) Dataset(net.imagej.Dataset) Plot(ij.gui.Plot) ColorPlot(org.vcell.imagej.common.gui.ColorPlot) Pair(net.imglib2.util.Pair)

Example 8 with Dataset

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);
    }
}
Also used : ColorPlot(org.vcell.imagej.common.gui.ColorPlot) Dataset(net.imagej.Dataset) Plot(ij.gui.Plot) ColorPlot(org.vcell.imagej.common.gui.ColorPlot)

Example 9 with Dataset

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;
}
Also used : Path(java.nio.file.Path) Task(org.vcell.imagej.common.gui.Task) Dataset(net.imagej.Dataset) VCellModel(org.vcell.imagej.common.vcell.VCellModel) List(java.util.List) IOException(java.io.IOException)

Example 10 with Dataset

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;
}
Also used : Task(org.vcell.imagej.common.gui.Task) SBMLDocument(org.sbml.jsbml.SBMLDocument) UnsignedByteType(net.imglib2.type.numeric.integer.UnsignedByteType) BufferedImage(java.awt.image.BufferedImage) BitType(net.imglib2.type.logic.BitType) Img(net.imglib2.img.Img) SBMLReader(org.sbml.jsbml.SBMLReader) ImgPlus(net.imagej.ImgPlus) Dataset(net.imagej.Dataset) IOException(java.io.IOException) VCellModel(org.vcell.imagej.common.vcell.VCellModel) FinalInterval(net.imglib2.FinalInterval) File(java.io.File)

Aggregations

Dataset (net.imagej.Dataset)16 File (java.io.File)4 IOException (java.io.IOException)4 ArrayList (java.util.ArrayList)4 List (java.util.List)4 Plot (ij.gui.Plot)3 ImgPlus (net.imagej.ImgPlus)3 Img (net.imglib2.img.Img)3 BitType (net.imglib2.type.logic.BitType)3 ColorPlot (org.vcell.imagej.common.gui.ColorPlot)3 Task (org.vcell.imagej.common.gui.Task)3 VCellModel (org.vcell.imagej.common.vcell.VCellModel)3 Path (java.nio.file.Path)2 Overlay (net.imagej.overlay.Overlay)2 FinalInterval (net.imglib2.FinalInterval)2 UnsignedByteType (net.imglib2.type.numeric.integer.UnsignedByteType)2 Pair (net.imglib2.util.Pair)2 SimulationState (org.vcell.vcellij.api.SimulationState)2 DatasetIOService (io.scif.services.DatasetIOService)1 BufferedImage (java.awt.image.BufferedImage)1