Class JDialogTimeFitting

All Implemented Interfaces:
AlgorithmInterface, ScriptableActionInterface, DialogDefaultsInterface, ActionListener, FocusListener, ItemListener, WindowListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, RootPaneContainer, WindowConstants

public class JDialogTimeFitting extends JDialogScriptableBase implements AlgorithmInterface
See Also:
  • Field Details

    • LINEAR_FIT

      private static final int LINEAR_FIT
      This dialog only allows 1 constant and 3 exponentials in the MULTIEXPONENTIAL_FIT at the present. From "Pade-Laplace Analysis in the Fitting of Multi-exponential Nuclear Magnetic Resonance Decay Curves" by N. J. Clayden: "The problem of the correct number of exponentials required to describe a decay has a long history, for 25 years ago Lanczos demonstrated that various three-exponential functions with similar time constants could be accurately reproduced by two-exponential expressions with markedly different amplitudes and time constants. Experimentally, the consequence of this is that the signal-to-noise ratio must be excellent, perhaps unachievably so, if a true three-exponential decay is not to be confused with a spurious two-exponential fit. More recently, this conclusion has been tested for a non-linear least squares analytical method over a wide range of three-exponential functions with varying levels of experimental noise. At practical signal-to-noise ratios, for example 1000:1, the time constants of three exponentials must differ by a factor of > two if a two-exponential fit is not to be statistically significant using non-linear least squares fitting." From "Exponential analysis in physical phenomena" by Andrei A. Istratov and Oleg F. Vyvenko: "The nonlinear least squares (NLS) method was successfully used for analysis of decays that consisted of one to three exponential decays. Grinvald, Morimoto et al., and Tahira et al. found that for a SNR better than 10E3 a double-exponential decay could be resolved if the ratio of time constants was tau1/tau2 > 2. However, in the case of three exponents the method was found to be very sensitive to even a small amount of noise. Bromage concluded that for a decay-time-constant ratio of 2:1, the retrieved values of parameters are about 200 times more uncertain on going from two to three exponentials. Clayden et al. concluded that in the case of a double-exponential decay, NLS fit is robust if tau1/tau2 > 2.4 and SNR is about 1E3. If a decay consists of three exponentials and SNR equals about 1E3, the components can be resolved if tau1/tau2 = tau2/tau3 > 3.5. If the SNR is about 100, three components can be resolved if the decay-time-constant ratio is above 10. It was also noted that the least squares method is not robust with respect to nonrandom errors in the transient."
      See Also:
    • EXPONENTIAL_FIT

      private static final int EXPONENTIAL_FIT
      See Also:
    • GAUSSIAN_FIT

      private static final int GAUSSIAN_FIT
      See Also:
    • LAPLACE_FIT

      private static final int LAPLACE_FIT
      See Also:
    • LORENTZ_FIT

      private static final int LORENTZ_FIT
      See Also:
    • MULTIEXPONENTIAL_FIT

      private static final int MULTIEXPONENTIAL_FIT
      See Also:
    • RAYLEIGH_FIT

      private static final int RAYLEIGH_FIT
      See Also:
    • functionFit

      private int functionFit
    • image

      private ModelImage image
      source image.
    • resultImage

      private ModelImage resultImage
      result image
    • exitStatusImage

      private ModelImage exitStatusImage
    • isMultifile

      private boolean isMultifile
      boolean isMultifile
    • nDims

      private int nDims
    • textImage

      private JTextField textImage
    • buttonImage

      private JButton buttonImage
    • functionGroup

      private ButtonGroup functionGroup
    • linearFit

      private JRadioButton linearFit
    • exponentialFit

      private JRadioButton exponentialFit
    • gaussianFit

      private JRadioButton gaussianFit
    • laplaceFit

      private JRadioButton laplaceFit
    • lorentzFit

      private JRadioButton lorentzFit
    • multiExponentialFit

      private JRadioButton multiExponentialFit
    • numVariablesLabel

      private JLabel numVariablesLabel
    • numVariablesField

      private JTextField numVariablesField
    • numVariables

      private int numVariables
    • rayleighFit

      private JRadioButton rayleighFit
    • altTimeCheckBox

      private JCheckBox altTimeCheckBox
    • altTimeTagLabel

      private JLabel altTimeTagLabel
    • altTimeTagField

      private JTextField altTimeTagField
    • useAltTime

      private boolean useAltTime
    • altTimeDicomTag

      private String altTimeDicomTag
    • logCheckBox

      private JCheckBox logCheckBox
    • useLog

      private boolean useLog
    • imageList

      private JComboBox imageList
    • labelVOI

      private JLabel labelVOI
    • buttonVOIFile

      private JButton buttonVOIFile
    • textVOIFile

      private JTextField textVOIFile
    • UI

      private ViewUserInterface UI
    • directoryVOI

      private String directoryVOI
    • fileNameVOI

      private String fileNameVOI
    • fileVOI

      private FileVOI fileVOI
    • voi

      private VOI[] voi
    • tfAlgo

      private AlgorithmTimeFitting tfAlgo
    • initialCheckBox

      private JCheckBox initialCheckBox
    • findInitialFromData

      private boolean findInitialFromData
    • tabbedPane

      private JTabbedPane tabbedPane
    • labela0

      private JLabel labela0
    • labela1

      private JLabel labela1
    • labela2

      private JLabel labela2
    • labela3

      private JLabel labela3
    • labela4

      private JLabel labela4
    • labela5

      private JLabel labela5
    • labela6

      private JLabel labela6
    • texta0

      private JTextField texta0
    • texta1

      private JTextField texta1
    • texta2

      private JTextField texta2
    • texta3

      private JTextField texta3
    • texta4

      private JTextField texta4
    • texta5

      private JTextField texta5
    • texta6

      private JTextField texta6
    • b0CheckBox

      private JCheckBox b0CheckBox
    • b1CheckBox

      private JCheckBox b1CheckBox
    • b2CheckBox

      private JCheckBox b2CheckBox
    • b3CheckBox

      private JCheckBox b3CheckBox
    • b4CheckBox

      private JCheckBox b4CheckBox
    • b5CheckBox

      private JCheckBox b5CheckBox
    • b6CheckBox

      private JCheckBox b6CheckBox
    • low0Label

      private JLabel low0Label
    • low0TextField

      private JTextField low0TextField
    • high0Label

      private JLabel high0Label
    • high0TextField

      private JTextField high0TextField
    • low1Label

      private JLabel low1Label
    • low1TextField

      private JTextField low1TextField
    • high1Label

      private JLabel high1Label
    • high1TextField

      private JTextField high1TextField
    • low2Label

      private JLabel low2Label
    • low2TextField

      private JTextField low2TextField
    • high2Label

      private JLabel high2Label
    • high2TextField

      private JTextField high2TextField
    • low3Label

      private JLabel low3Label
    • low3TextField

      private JTextField low3TextField
    • high3Label

      private JLabel high3Label
    • high3TextField

      private JTextField high3TextField
    • low4Label

      private JLabel low4Label
    • low4TextField

      private JTextField low4TextField
    • high4Label

      private JLabel high4Label
    • high4TextField

      private JTextField high4TextField
    • low5Label

      private JLabel low5Label
    • low5TextField

      private JTextField low5TextField
    • high5Label

      private JLabel high5Label
    • high5TextField

      private JTextField high5TextField
    • low6Label

      private JLabel low6Label
    • low6TextField

      private JTextField low6TextField
    • high6Label

      private JLabel high6Label
    • high6TextField

      private JTextField high6TextField
    • initial

      private double[] initial
    • useBounds

      private boolean[] useBounds
    • lowBounds

      private double[] lowBounds
    • highBounds

      private double[] highBounds
  • Constructor Details

    • JDialogTimeFitting

      public JDialogTimeFitting()
  • Method Details