ThreeB 1.1
Public Member Functions | Package Functions | Package Attributes
ThreeBDialog Class Reference

Dialog box for starting 3B The dialog highlights bad things in red. More...

List of all members.

Public Member Functions

double parseDouble (String s)
void textValueChanged (TextEvent e)

Package Functions

 ThreeBDialog (int count, int npix_, int nframes_)
int parseInt (String s)
TextField getFWHMField ()
TextField getPixelSizeField ()
TextField getSpotsField ()
TextField getFirstFrameField ()
TextField getLastFrameField ()
double getFWHM ()
double getPixelSize ()
int getSpots ()
int getFirstFrame ()
int getLastFrame ()
int getCount ()

Package Attributes

int count_
int npix
int nframes
Color c
Color bg

Detailed Description

Dialog box for starting 3B The dialog highlights bad things in red.

Definition at line 432 of file three_B.java.


Constructor & Destructor Documentation

ThreeBDialog::ThreeBDialog ( int  count,
int  npix_,
int  nframes_ 
) [inline, package]

Definition at line 437 of file three_B.java.

References bg, c, count_, getFWHMField(), nframes, npix, and textValueChanged().

    {
        super("3B Analysis");
        count_ = count;
        npix   = npix_;
        nframes= nframes_;

        addNumericField("Microscope FWHM", 250.0, 1, 10, "nm");
        addNumericField("Pixel size", 100., 1, 10, "nm");
        addNumericField("Initial number of spots", Math.round(count / 10.), 0, 10, "spots");
        addNumericField("First frame", 0., 0, 10, ""); 
        addNumericField("Last frame", nframes-1., 0, 10, ""); 
        addTextAreas("",null, 8,30);
        getTextArea1().setEditable(false);
        c = getFWHMField().getBackground(); //Get the default background colour
        bg = getBackground(); //Dialog background color
        getTextArea1().removeTextListener(this); //To prevent event thrashing when we write messages

        //Process initial warnings
        textValueChanged(null);
    }

Member Function Documentation

double ThreeBDialog::parseDouble ( String  s) [inline]

Definition at line 460 of file three_B.java.

Referenced by getFWHM(), and getPixelSize().

    {
        try
        {
            return Double.parseDouble(s);
        }
        catch(Exception e)
        {
            return 0;
        }
    }
int ThreeBDialog::parseInt ( String  s) [inline, package]

Definition at line 471 of file three_B.java.

Referenced by getFirstFrame(), getLastFrame(), and getSpots().

    {
        try
        {
            return Integer.parseInt(s);
        }
        catch(Exception e)
        {
            return 0;
        }
    }
TextField ThreeBDialog::getFWHMField ( ) [inline, package]

Definition at line 483 of file three_B.java.

Referenced by getFWHM(), textValueChanged(), and ThreeBDialog().

    {
        return (TextField)(getNumericFields().get(0));
    }
TextField ThreeBDialog::getPixelSizeField ( ) [inline, package]

Definition at line 487 of file three_B.java.

Referenced by getPixelSize(), and textValueChanged().

    {
        return (TextField)(getNumericFields().get(1));
    }
TextField ThreeBDialog::getSpotsField ( ) [inline, package]

Definition at line 491 of file three_B.java.

Referenced by getSpots(), and textValueChanged().

    {
        return (TextField)(getNumericFields().get(2));
    }
TextField ThreeBDialog::getFirstFrameField ( ) [inline, package]

Definition at line 495 of file three_B.java.

Referenced by getFirstFrame(), and textValueChanged().

    {
        return (TextField)(getNumericFields().get(3));
    }
TextField ThreeBDialog::getLastFrameField ( ) [inline, package]

Definition at line 499 of file three_B.java.

Referenced by getLastFrame(), and textValueChanged().

    {
        return (TextField)(getNumericFields().get(4));
    }
double ThreeBDialog::getFWHM ( ) [inline, package]

Definition at line 504 of file three_B.java.

References getFWHMField(), and parseDouble().

Referenced by textValueChanged().

    {
        return parseDouble(getFWHMField().getText());
    }
double ThreeBDialog::getPixelSize ( ) [inline, package]

Definition at line 509 of file three_B.java.

References getPixelSizeField(), and parseDouble().

Referenced by textValueChanged().

    {
        return parseDouble(getPixelSizeField().getText());
    }
int ThreeBDialog::getSpots ( ) [inline, package]

Definition at line 514 of file three_B.java.

References getSpotsField(), and parseInt().

Referenced by textValueChanged().

    {
        return parseInt(getSpotsField().getText());
    }
int ThreeBDialog::getFirstFrame ( ) [inline, package]

Definition at line 519 of file three_B.java.

References getFirstFrameField(), and parseInt().

Referenced by textValueChanged().

    {
        return parseInt(getFirstFrameField().getText());
    }
int ThreeBDialog::getLastFrame ( ) [inline, package]

Definition at line 524 of file three_B.java.

References getLastFrameField(), and parseInt().

Referenced by textValueChanged().

    {
        return parseInt(getLastFrameField().getText());
    }
int ThreeBDialog::getCount ( ) [inline, package]

Definition at line 529 of file three_B.java.

References count_.

Referenced by textValueChanged().

    {
        return count_;
    }
void ThreeBDialog::textValueChanged ( TextEvent  e) [inline]

Definition at line 534 of file three_B.java.

References bg, c, getCount(), getFirstFrame(), getFirstFrameField(), getFWHM(), getFWHMField(), getLastFrame(), getLastFrameField(), getPixelSize(), getPixelSizeField(), getSpots(), getSpotsField(), nframes, and npix.

Referenced by ThreeBDialog().

    {
        boolean long_run=false;
        String err = "";
        //               012345678901234567890123456789012345678901234567890
        if(getCount() > 1000)
        {
            long_run=true;
            err = err + "Warning: large area selected.\n3B will run very slowly.\n";
        }

        if(npix < 2500)
            err = err + "Warning: image is very small. Fitting may be bad because\nimage noise cannot be accurately estimated.\n";

        if(getSpots() > 500)
        {
            err = err + "Warning: large number of spots.\n3B will run very slowly.\n";
            getSpotsField().setBackground(Color.RED);
        }
        else
            getSpotsField().setBackground(c);


        if(getFWHM() < 200)
        {
            err = err + "Warning: unrealistically small\nmicsoscope resolution.\n";
            getFWHMField().setBackground(Color.RED);
        }
        else if(getFWHM() > 350)
        {
            err = err + "Warning: 3B will not work well with\na poorly focussed microscope.\n";
            getFWHMField().setBackground(Color.RED);
        }
        else
            getFWHMField().setBackground(c);


        if(getPixelSize() < 70)
        {
            getPixelSizeField().setBackground(Color.RED);
            err = err + "Warning: Very small pixels specified.\nAre you sure?\n";
        }
        else if(getPixelSize() > 180)
        {
            getPixelSizeField().setBackground(Color.RED);
            err = err + "Warning: 3B will not work well if the camera\nresolution is too poor.\n";
        }
        else
            getPixelSizeField().setBackground(c);

        //Clamp the frames
        int first = getFirstFrame();
        int last  = getLastFrame();

        int nfirst = Math.max(0, Math.min(nframes-1, first));
        int nlast = Math.max(nfirst, Math.min(nframes-1, last));

        if(first != nfirst)
            getFirstFrameField().setText(Integer.toString(nfirst));
        if(last != nlast)
            getLastFrameField().setText(Integer.toString(nlast));

        if(last -first + 1 > 500)
        {
            getFirstFrameField().setBackground(Color.RED);
            getLastFrameField().setBackground(Color.RED);
            err = err + "Warning: large number of frames specified.\n3B will run very slowly and may be inaccurate.\nFewer than 500 frames is strongly recommended.\n200--300 is generally most suitable.\n";
            long_run = true;
        }
        if(last -first + 1 < 150)
        {
            getFirstFrameField().setBackground(Color.RED);
            getLastFrameField().setBackground(Color.RED);
            err = err + "Warning: small number of frames specified.\n3B may be inaccurate.\nAt least 150 frames is recommended.\n";
        }
        else
        {
            getFirstFrameField().setBackground(c);
            getLastFrameField().setBackground(c);
        }


        if(!long_run && (last -first + 1)*getCount() > 200000)
        {
            err = err + "Warning: large amount of data specified.\n"+ 
                        "3B will run very slowly.\n"+ 
                        "Reduce the area and/or number of frames.\n"+
                        "We recommend: \n" + 
                        "Number of frames*area in pixels < 200,000.";
            getFirstFrameField().setBackground(Color.RED);
            getLastFrameField().setBackground(Color.RED);
        }


        if(!err.equals(""))
            getTextArea1().setBackground(Color.RED);
        else
            getTextArea1().setBackground(bg);




        getTextArea1().setText(err);
        repaint();

    }

Member Data Documentation

int ThreeBDialog::count_ [package]

Definition at line 434 of file three_B.java.

Referenced by getCount(), and ThreeBDialog().

int ThreeBDialog::npix [package]

Definition at line 434 of file three_B.java.

Referenced by textValueChanged(), and ThreeBDialog().

int ThreeBDialog::nframes [package]

Definition at line 434 of file three_B.java.

Referenced by textValueChanged(), and ThreeBDialog().

Color ThreeBDialog::c [package]

Definition at line 435 of file three_B.java.

Referenced by textValueChanged(), and ThreeBDialog().

Color ThreeBDialog::bg [package]

Definition at line 435 of file three_B.java.

Referenced by textValueChanged(), and ThreeBDialog().


The documentation for this class was generated from the following file: