Search in sources :

Example 1 with Builder

use of gdsc.smlm.tsf.TaggedSpotFile.Spot.Builder in project GDSC-SMLM by aherbert.

the class TSFPeakResultsWriter method addAll.

public void addAll(Collection<PeakResult> results) {
    if (out == null)
        return;
    Spot[] spots = new Spot[20];
    int count = 0;
    Spot.Builder builder = Spot.newBuilder();
    for (PeakResult result : results) {
        final float[] params = result.params;
        builder.setMolecule(id.incrementAndGet());
        builder.setChannel(1);
        builder.setFluorophoreType(1);
        builder.setFrame(result.getFrame());
        builder.setXPosition(result.origX);
        builder.setYPosition(result.origY);
        setBackground(builder, params[Gaussian2DFunction.BACKGROUND]);
        builder.setIntensity(params[Gaussian2DFunction.SIGNAL]);
        builder.setX(params[Gaussian2DFunction.X_POSITION]);
        builder.setY(params[Gaussian2DFunction.Y_POSITION]);
        setWidth(params, builder);
        if (result.hasPrecision()) {
            // Use the actual precision
            float precision = (float) result.getPrecision();
            builder.setXPrecision(precision);
            builder.setYPrecision(precision);
        } else if (canComputePrecision) {
            // Compute precision
            double s = (params[Gaussian2DFunction.X_SD] + params[Gaussian2DFunction.Y_SD]) * 0.5 * nmPerPixel;
            float precision = (float) PeakResult.getPrecision(nmPerPixel, s, params[Gaussian2DFunction.SIGNAL] / gain, result.noise / gain, isEmCCD);
            builder.setXPrecision(precision);
            builder.setYPrecision(precision);
        }
        if (result.hasId())
            builder.setCluster(result.getId());
        else
            builder.clearCluster();
        builder.setError(result.error);
        builder.setNoise(result.noise);
        if (result.hasEndFrame())
            builder.setEndFrame(result.getEndFrame());
        else
            builder.clearEndFrame();
        builder.setOriginalValue(result.origValue);
        addParamsStdDev(builder, result.paramsStdDev);
        spots[count++] = builder.build();
        // Flush the output to allow for very large input lists
        if (count >= spots.length) {
            writeResult(count, spots);
            if (!isActive())
                return;
            count = 0;
        }
    }
    writeResult(count, spots);
}
Also used : Spot(gdsc.smlm.tsf.TaggedSpotFile.Spot) Builder(gdsc.smlm.tsf.TaggedSpotFile.Spot.Builder)

Example 2 with Builder

use of gdsc.smlm.tsf.TaggedSpotFile.Spot.Builder in project GDSC-SMLM by aherbert.

the class TSFPeakResultsWriter method add.

/*
	 * (non-Javadoc)
	 * 
	 * @see gdsc.utils.fitting.results.PeakResults#add(int, int, int, float, double, float, float[], float[])
	 */
public void add(int peak, int origX, int origY, float origValue, double error, float noise, float[] params, float[] paramsStdDev) {
    if (out == null)
        return;
    Spot.Builder builder = Spot.newBuilder();
    builder.setMolecule(id.incrementAndGet());
    builder.setChannel(1);
    builder.setFluorophoreType(1);
    builder.setFrame(peak);
    builder.setXPosition(origX);
    builder.setYPosition(origY);
    setBackground(builder, params[Gaussian2DFunction.BACKGROUND]);
    builder.setIntensity(params[Gaussian2DFunction.SIGNAL]);
    builder.setX(params[Gaussian2DFunction.X_POSITION]);
    builder.setY(params[Gaussian2DFunction.Y_POSITION]);
    setWidth(params, builder);
    if (canComputePrecision) {
        double s = (params[Gaussian2DFunction.X_SD] + params[Gaussian2DFunction.Y_SD]) * 0.5 * nmPerPixel;
        float precision = (float) PeakResult.getPrecision(nmPerPixel, s, params[Gaussian2DFunction.SIGNAL] / gain, noise / gain, isEmCCD);
        builder.setXPrecision(precision);
        builder.setYPrecision(precision);
    }
    builder.setError(error);
    builder.setNoise(noise);
    builder.setOriginalValue(origValue);
    if (paramsStdDev != null)
        addNewParamsStdDev(builder, paramsStdDev);
    Spot spot = builder.build();
    writeResult(1, spot);
}
Also used : Spot(gdsc.smlm.tsf.TaggedSpotFile.Spot) Builder(gdsc.smlm.tsf.TaggedSpotFile.Spot.Builder)

Example 3 with Builder

use of gdsc.smlm.tsf.TaggedSpotFile.Spot.Builder in project GDSC-SMLM by aherbert.

the class TSFPeakResultsWriter method add.

@Override
public void add(PeakResult result) {
    final float[] params = result.params;
    Spot.Builder builder = Spot.newBuilder();
    builder.setMolecule(id.incrementAndGet());
    builder.setChannel(1);
    builder.setFluorophoreType(1);
    builder.setFrame(result.getFrame());
    builder.setXPosition(result.origX);
    builder.setYPosition(result.origY);
    setBackground(builder, params[Gaussian2DFunction.BACKGROUND]);
    builder.setIntensity(params[Gaussian2DFunction.SIGNAL]);
    builder.setX(params[Gaussian2DFunction.X_POSITION]);
    builder.setY(params[Gaussian2DFunction.Y_POSITION]);
    setWidth(params, builder);
    if (result.hasPrecision()) {
        // Use the actual precision
        float precision = (float) result.getPrecision();
        builder.setXPrecision(precision);
        builder.setYPrecision(precision);
    } else if (canComputePrecision) {
        // Compute precision
        double s = (params[Gaussian2DFunction.X_SD] + params[Gaussian2DFunction.Y_SD]) * 0.5 * nmPerPixel;
        float precision = (float) PeakResult.getPrecision(nmPerPixel, s, params[Gaussian2DFunction.SIGNAL] / gain, result.noise / gain, isEmCCD);
        builder.setXPrecision(precision);
        builder.setYPrecision(precision);
    }
    if (result.hasId())
        builder.setCluster(result.getId());
    builder.setError(result.error);
    builder.setNoise(result.noise);
    if (result.hasEndFrame())
        builder.setEndFrame(result.getEndFrame());
    builder.setOriginalValue(result.origValue);
    if (result.paramsStdDev != null)
        addNewParamsStdDev(builder, result.paramsStdDev);
    Spot spot = builder.build();
    writeResult(1, spot);
}
Also used : Spot(gdsc.smlm.tsf.TaggedSpotFile.Spot) Builder(gdsc.smlm.tsf.TaggedSpotFile.Spot.Builder)

Aggregations

Spot (gdsc.smlm.tsf.TaggedSpotFile.Spot)3 Builder (gdsc.smlm.tsf.TaggedSpotFile.Spot.Builder)3