Search in sources :

Example 1 with DisplayProfileLikelihoodPlotsOp

use of org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp in project vcell by virtualcell.

the class VFrapProcess method main.

public static void main(String[] args) {
    try {
        File baseDir = new File(".");
        // File baseDir = new File("/Users/schaff/Documents/workspace/VCell_5.4");
        // initialize computing environment
        // 
        File workingDirectory = new File(baseDir, "workingDir");
        LocalWorkspace localWorkspace = new LocalWorkspace(workingDirectory);
        // 
        // import raw image time series data from VFRAP file format (can have noise, background, etc ... can be actual microscopy data)
        // 
        ClientTaskStatusSupport progressListener = new ClientTaskStatusSupport() {

            String message = "";

            int progress = 0;

            @Override
            public void setProgress(int progress) {
                this.progress = progress;
            }

            @Override
            public void setMessage(String message) {
                this.message = message;
            }

            @Override
            public boolean isInterrupted() {
                return false;
            }

            @Override
            public int getProgress() {
                return progress;
            }

            @Override
            public void addProgressDialogListener(ProgressDialogListener progressDialogListener) {
            }
        };
        // 
        // generate fake data (and save?)
        // 
        // ImageTimeSeries<UShortImage> simulatedFluorescence = generateFakeData(localWorkspace, progressListener);
        // new ExportRawTimeSeriesToVFrapOp().exportToVFRAP(vfrapFile, simulatedFluorescence, null);
        // 
        // analyze raw data (from file?) using Keyworthy method.
        // 
        File vfrapFile = new File(baseDir, "vfrapPaper/rawData/sim3/workflow.txt.save");
        ImageTimeSeries<UShortImage> fluorTimeSeriesImages = new ImportRawTimeSeriesFromVFrapOp().importRawTimeSeriesFromVFrap(vfrapFile);
        VFrapProcessResults results = compute(fluorTimeSeriesImages, 0.85, 0.4, localWorkspace, progressListener);
        new DisplayTimeSeriesOp().displayImageTimeSeries(fluorTimeSeriesImages, "raw data", null);
        new DisplayImageOp().displayImage(results.cellROI_2D.getRoiImages()[0], "cell ROI", null);
        new DisplayImageOp().displayImage(results.bleachROI_2D.getRoiImages()[0], "bleach ROI", null);
        new DisplayDependentROIsOp().displayDependentROIs(results.imageDataROIs, results.cellROI_2D, "data rois", null);
        new DisplayTimeSeriesOp().displayImageTimeSeries(results.normalizedTimeSeries, "normalized data", null);
        new DisplayProfileLikelihoodPlotsOp().displayProfileLikelihoodPlots(results.profileDataOne, "one fluorescent pool", null);
        new DisplayProfileLikelihoodPlotsOp().displayProfileLikelihoodPlots(results.profileDataTwoWithPenalty, "too pools", null);
    } catch (Exception e) {
        e.printStackTrace(System.out);
    }
}
Also used : DisplayProfileLikelihoodPlotsOp(org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp) LocalWorkspace(org.vcell.vmicro.workflow.data.LocalWorkspace) UShortImage(cbit.vcell.VirtualMicroscopy.UShortImage) DisplayImageOp(org.vcell.vmicro.op.display.DisplayImageOp) ProgressDialogListener(org.vcell.util.ProgressDialogListener) DisplayTimeSeriesOp(org.vcell.vmicro.op.display.DisplayTimeSeriesOp) ClientTaskStatusSupport(org.vcell.util.ClientTaskStatusSupport) ImportRawTimeSeriesFromVFrapOp(org.vcell.vmicro.op.ImportRawTimeSeriesFromVFrapOp) DisplayDependentROIsOp(org.vcell.vmicro.op.display.DisplayDependentROIsOp) File(java.io.File)

Example 2 with DisplayProfileLikelihoodPlotsOp

use of org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp in project vcell by virtualcell.

the class WorkflowObjectsPanel method displayData.

private void displayData(TaskContext taskContext, WorkflowObject workflowObject) {
    if (workflowObject instanceof DataInput || workflowObject instanceof DataOutput) {
        String title = parametersFunctionsTableModel.getName(workflowObject);
        WindowListener listener = new WindowAdapter() {
        };
        Object data = null;
        if (workflowObject instanceof WorkflowDataSource) {
            WorkflowDataSource dataHolder = (WorkflowDataSource) workflowObject;
            data = taskContext.getRepository().getData(dataHolder);
        } else if (workflowObject instanceof DataInput) {
            DataInput dataInput = (DataInput) workflowObject;
            data = taskContext.getData(dataInput);
        }
        if (data instanceof RowColumnResultSet) {
            RowColumnResultSet rc = (RowColumnResultSet) data;
            try {
                new DisplayPlotOp().displayPlot(rc, title, listener);
            } catch (ExpressionException e) {
                e.printStackTrace();
            }
        } else if (data instanceof ROI) {
            ROI roi = (ROI) data;
            Image image = roi.getRoiImages()[0];
            new DisplayImageOp().displayImage(image, title, listener);
        } else if (data instanceof ProfileData[]) {
            ProfileData[] profileData = (ProfileData[]) data;
            new DisplayProfileLikelihoodPlotsOp().displayProfileLikelihoodPlots(profileData, title, listener);
        } else if (data instanceof Image) {
            Image image = (Image) data;
            new DisplayImageOp().displayImage(image, title, listener);
        } else if (data instanceof ImageTimeSeries) {
            ImageTimeSeries imageTimeSeries = (ImageTimeSeries) data;
            try {
                DisplayTimeSeries.displayImageTimeSeries(imageTimeSeries, title, listener);
            } catch (ImageException | IOException e) {
                e.printStackTrace();
            }
        }
    }
}
Also used : DataOutput(org.vcell.workflow.DataOutput) DisplayProfileLikelihoodPlotsOp(org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp) WindowListener(java.awt.event.WindowListener) ImageException(cbit.image.ImageException) WindowAdapter(java.awt.event.WindowAdapter) ProfileData(org.vcell.optimization.ProfileData) IOException(java.io.IOException) Image(cbit.vcell.VirtualMicroscopy.Image) ROI(cbit.vcell.VirtualMicroscopy.ROI) WorkflowDataSource(org.vcell.workflow.WorkflowDataSource) ExpressionException(cbit.vcell.parser.ExpressionException) DataInput(org.vcell.workflow.DataInput) DisplayPlotOp(org.vcell.vmicro.op.display.DisplayPlotOp) DisplayImageOp(org.vcell.vmicro.op.display.DisplayImageOp) WorkflowObject(org.vcell.workflow.WorkflowObject) RowColumnResultSet(cbit.vcell.math.RowColumnResultSet) ImageTimeSeries(org.vcell.vmicro.workflow.data.ImageTimeSeries)

Example 3 with DisplayProfileLikelihoodPlotsOp

use of org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp in project vcell by virtualcell.

the class KenworthyParticleTest method analyzeKeyworthy.

/**
 * Fits raw image time series data to uniform disk models (with Guassian or Uniform fluorescence).
 *
 * @param rawTimeSeriesImages
 * @param localWorkspace
 * @throws Exception
 */
private static void analyzeKeyworthy(ImageTimeSeries<UShortImage> rawTimeSeriesImages, RowColumnResultSet reducedData, LocalWorkspace localWorkspace) throws Exception {
    new DisplayTimeSeriesOp().displayImageTimeSeries(rawTimeSeriesImages, "raw images", (WindowListener) null);
    // double cellThreshold = 0.5;
    // GeometryRoisAndBleachTiming cellROIresults = new GenerateCellROIsFromRawFrapTimeSeriesOp().generate(rawTimeSeriesImages, cellThreshold);
    // ROI backgroundROI = cellROIresults.backgroundROI_2D;
    // ROI cellROI = cellROIresults.cellROI_2D;
    // int indexOfFirstPostbleach = cellROIresults.indexOfFirstPostbleach;
    // 
    // new DisplayImageOp().displayImage(backgroundROI.getRoiImages()[0], "background ROI", null);
    // new DisplayImageOp().displayImage(cellROI.getRoiImages()[0], "cell ROI", null);
    // 
    // NormalizedFrapDataResults normResults = new GenerateNormalizedFrapDataOp().generate(rawTimeSeriesImages, backgroundROI, indexOfFirstPostbleach);
    // ImageTimeSeries<FloatImage> normalizedTimeSeries = normResults.normalizedFrapData;
    // FloatImage prebleachAvg = normResults.prebleachAverage;
    // FloatImage normalizedPostbleach = normalizedTimeSeries.getAllImages()[0];
    // 
    // 
    // new DisplayTimeSeriesOp().displayImageTimeSeries(normalizedTimeSeries, "normalized images", (WindowListener)null);
    // //
    // // create a single bleach ROI by thresholding
    // //
    // double bleachThreshold = 0.80;
    // ROI bleachROI = new GenerateBleachRoiOp().generateBleachRoi(normalizedPostbleach, cellROI, bleachThreshold);
    // 
    // //
    // // only use bleach ROI for fitting etc.
    // //
    // //		ROI[] dataROIs = new ROI[] { bleachROI };
    // 
    // //
    // // fit 2D Gaussian to normalized data to determine center, radius and K factor of bleach (assuming exp(-exp
    // //
    // FitBleachSpotOpResults fitSpotResults = new FitBleachSpotOp().fit(NormalizedSampleFunction.fromROI(bleachROI), normalizedTimeSeries.getAllImages()[0]);
    // double bleachFactorK_GaussianFit = fitSpotResults.bleachFactorK_GaussianFit;
    // double bleachRadius_GaussianFit = fitSpotResults.bleachRadius_GaussianFit;
    // double bleachRadius_ROI = fitSpotResults.bleachRadius_ROI;
    // double centerX_GaussianFit = fitSpotResults.centerX_GaussianFit;
    // double centerX_ROI = fitSpotResults.centerX_ROI;
    // double centerY_GaussianFit = fitSpotResults.centerY_GaussianFit;
    // double centerY_ROI = fitSpotResults.centerY_ROI;
    // 
    // NormalizedSampleFunction[] sampleFunctions = new NormalizedSampleFunction[] {
    // NormalizedSampleFunction.fromROI(bleachROI)
    // };
    // 
    // get reduced data and errors for each ROI
    // 
    // RowColumnResultSet reducedData = new GenerateReducedDataOp().generateReducedData(normalizedTimeSeries, sampleFunctions);
    RowColumnResultSet measurementErrors = new RowColumnResultSet(new String[] { reducedData.getColumnDescriptions()[0].getName(), reducedData.getColumnDescriptions()[1].getName() });
    for (int i = 0; i < reducedData.getRowCount(); i++) {
        double[] row = new double[] { reducedData.getRow(i)[0], Math.sqrt(reducedData.getRow(i)[1]) };
        measurementErrors.addRow(row);
    }
    new DisplayPlotOp().displayPlot(reducedData, "raw reduced data", null);
    new DisplayPlotOp().displayPlot(measurementErrors, "raw reduced noise", null);
    // 
    // find large drop and determine first post-bleach timepoint.
    // 
    double largestDrop = -1000000;
    int indexLargestDrop = -1;
    for (int i = 1; i < reducedData.getRowCount(); i++) {
        double drop = reducedData.getRow(i - 1)[1] - reducedData.getRow(i)[1];
        if (drop > largestDrop) {
            indexLargestDrop = i;
            largestDrop = drop;
        }
    }
    System.out.println("index of first postbleach is " + indexLargestDrop);
    // 
    // normalize data and noise and start with first post-bleach index;
    // 
    RowColumnResultSet normalizedReducedData = new RowColumnResultSet(new String[] { reducedData.getColumnDescriptions()[0].getName(), reducedData.getColumnDescriptions()[1].getName() });
    RowColumnResultSet normalizedNoiseData = new RowColumnResultSet(new String[] { reducedData.getColumnDescriptions()[0].getName(), reducedData.getColumnDescriptions()[1].getName() });
    for (int i = indexLargestDrop; i < reducedData.getRowCount(); i++) {
        double timeAfterBleach = reducedData.getRow(i)[0] - reducedData.getRow(indexLargestDrop)[0];
        double normalizedData = reducedData.getRow(i)[1] / reducedData.getRow(0)[1];
        double[] newDataRow = new double[] { timeAfterBleach, normalizedData };
        normalizedReducedData.addRow(newDataRow);
        double normalizedNoise = measurementErrors.getRow(i)[1] / reducedData.getRow(0)[1];
        double[] newNoiseRow = new double[] { timeAfterBleach, normalizedNoise };
        normalizedNoiseData.addRow(newNoiseRow);
    }
    new DisplayPlotOp().displayPlot(normalizedReducedData, "normalized reduced data", null);
    new DisplayPlotOp().displayPlot(normalizedNoiseData, "normalized reduced noise", null);
    NormalizedSampleFunction[] sampleFunctions = new NormalizedSampleFunction[] { NormalizedSampleFunction.createUniform("psf", null, null, new ISize(10, 10, 1)) };
    ErrorFunction errorFunction = new ErrorFunctionKenworthy(normalizedReducedData);
    // ErrorFunction errorFunction = new ErrorFunctionMeanSquared();
    double bleachRadius_ROI = 2;
    // 
    // 2 parameter uniform disk model
    // 
    OptModel uniformDisk2OptModel = new OptModelKenworthyUniformDisk2P(bleachRadius_ROI);
    String title_u2 = "Uniform Disk Model - 2 parameters, (Rn=" + bleachRadius_ROI + ")";
    OptContext uniformDisk2Context = new Generate2DOptContextOp().generate2DOptContext(uniformDisk2OptModel, normalizedReducedData, normalizedNoiseData, errorFunction);
    new DisplayInteractiveModelOp().displayOptModel(uniformDisk2Context, sampleFunctions, localWorkspace, title_u2, null);
    // 
    // 3 parameter uniform disk model
    // 
    OptModel uniformDisk3OptModel = new OptModelKenworthyUniformDisk3P(bleachRadius_ROI);
    OptContext uniformDisk3Context = new Generate2DOptContextOp().generate2DOptContext(uniformDisk3OptModel, normalizedReducedData, normalizedNoiseData, errorFunction);
    String title_u3 = "Uniform Disk Model - 3 parameters, (Rn=" + bleachRadius_ROI + ")";
    new DisplayInteractiveModelOp().displayOptModel(uniformDisk3Context, sampleFunctions, localWorkspace, title_u3, null);
    ProfileData[] profileData = new RunProfileLikelihoodGeneralOp().runProfileLikihood(uniformDisk3Context, null);
    new DisplayProfileLikelihoodPlotsOp().displayProfileLikelihoodPlots(profileData, "3param model", null);
// 
// GaussianFit parameter uniform disk model
// 
// FloatImage prebleachBleachAreaImage = new FloatImage(prebleachAvg);
// prebleachBleachAreaImage.and(bleachROI.getRoiImages()[0]); // mask-out all but the bleach area
// double prebleachAvgInROI = prebleachBleachAreaImage.getImageStatistics().meanValue;
// OptModel gaussian2OptModel = new OptModelKenworthyGaussian(prebleachAvgInROI, bleachFactorK_GaussianFit, bleachRadius_GaussianFit, bleachRadius_ROI);
// OptContext gaussianDisk2Context = new Generate2DOptContextOp().generate2DOptContext(gaussian2OptModel, reducedData, measurementErrors, errorFunction);
// String title_g2 = "Gaussian Disk Model - 2 parameters (prebleach="+prebleachAvgInROI+",K="+bleachFactorK_GaussianFit+",Re="+bleachRadius_GaussianFit+",Rnom="+bleachRadius_ROI+")";
// new DisplayInteractiveModelOp().displayOptModel(gaussianDisk2Context, sampleFunctions, localWorkspace, title_g2, null);
}
Also used : DisplayProfileLikelihoodPlotsOp(org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp) ISize(org.vcell.util.ISize) RunProfileLikelihoodGeneralOp(org.vcell.vmicro.op.RunProfileLikelihoodGeneralOp) ProfileData(org.vcell.optimization.ProfileData) Generate2DOptContextOp(org.vcell.vmicro.op.Generate2DOptContextOp) OptContext(org.vcell.vmicro.workflow.data.OptContext) OptModel(org.vcell.vmicro.workflow.data.OptModel) DisplayPlotOp(org.vcell.vmicro.op.display.DisplayPlotOp) DisplayTimeSeriesOp(org.vcell.vmicro.op.display.DisplayTimeSeriesOp) NormalizedSampleFunction(org.vcell.vmicro.workflow.data.NormalizedSampleFunction) DisplayInteractiveModelOp(org.vcell.vmicro.op.display.DisplayInteractiveModelOp) OptModelKenworthyUniformDisk2P(org.vcell.vmicro.workflow.data.OptModelKenworthyUniformDisk2P) ErrorFunctionKenworthy(org.vcell.vmicro.workflow.data.ErrorFunctionKenworthy) RowColumnResultSet(cbit.vcell.math.RowColumnResultSet) ErrorFunction(org.vcell.vmicro.workflow.data.ErrorFunction) OptModelKenworthyUniformDisk3P(org.vcell.vmicro.workflow.data.OptModelKenworthyUniformDisk3P)

Example 4 with DisplayProfileLikelihoodPlotsOp

use of org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp in project vcell by virtualcell.

the class DisplayProfileLikelihoodPlots method compute0.

@Override
protected void compute0(TaskContext context, final ClientTaskStatusSupport clientTaskStatusSupport) throws Exception {
    // get input
    ProfileData[] profiledata = context.getData(profileData);
    String titleString = context.getDataWithDefault(title, "no title");
    WindowListener listener = null;
    // do op
    DisplayProfileLikelihoodPlotsOp op = new DisplayProfileLikelihoodPlotsOp();
    op.displayProfileLikelihoodPlots(profiledata, titleString, listener);
    // set output
    context.setData(displayed, true);
}
Also used : DisplayProfileLikelihoodPlotsOp(org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp) WindowListener(java.awt.event.WindowListener) ProfileData(org.vcell.optimization.ProfileData)

Aggregations

DisplayProfileLikelihoodPlotsOp (org.vcell.vmicro.op.display.DisplayProfileLikelihoodPlotsOp)4 ProfileData (org.vcell.optimization.ProfileData)3 RowColumnResultSet (cbit.vcell.math.RowColumnResultSet)2 WindowListener (java.awt.event.WindowListener)2 DisplayImageOp (org.vcell.vmicro.op.display.DisplayImageOp)2 DisplayPlotOp (org.vcell.vmicro.op.display.DisplayPlotOp)2 DisplayTimeSeriesOp (org.vcell.vmicro.op.display.DisplayTimeSeriesOp)2 ImageException (cbit.image.ImageException)1 Image (cbit.vcell.VirtualMicroscopy.Image)1 ROI (cbit.vcell.VirtualMicroscopy.ROI)1 UShortImage (cbit.vcell.VirtualMicroscopy.UShortImage)1 ExpressionException (cbit.vcell.parser.ExpressionException)1 WindowAdapter (java.awt.event.WindowAdapter)1 File (java.io.File)1 IOException (java.io.IOException)1 ClientTaskStatusSupport (org.vcell.util.ClientTaskStatusSupport)1 ISize (org.vcell.util.ISize)1 ProgressDialogListener (org.vcell.util.ProgressDialogListener)1 Generate2DOptContextOp (org.vcell.vmicro.op.Generate2DOptContextOp)1 ImportRawTimeSeriesFromVFrapOp (org.vcell.vmicro.op.ImportRawTimeSeriesFromVFrapOp)1